forked from rDrama/rDrama
1
0
Fork 0

don't cache user objects in redis

master
Aevann 2022-12-24 18:53:13 +02:00
parent 6ab9f2324c
commit 7da9a224e9
2 changed files with 11 additions and 7 deletions

View File

@ -17,7 +17,7 @@ from files.helpers.settings import get_settings, toggle_setting
from files.helpers.useractions import *
from files.routes.routehelpers import check_for_alts
from files.routes.wrappers import *
from files.routes.routehelpers import get_alt_graph
from files.routes.routehelpers import get_alt_graph, get_alt_graph_ids
from .front import frontlist
@ -699,8 +699,8 @@ def admin_add_alt(v:User, username):
g.db.add(a)
g.db.flush()
cache.delete_memoized(get_alt_graph, user1.id)
cache.delete_memoized(get_alt_graph, user2.id)
cache.delete_memoized(get_alt_graph_ids, user1.id)
cache.delete_memoized(get_alt_graph_ids, user2.id)
check_for_alts(user1, include_current_session=False)
check_for_alts(user2, include_current_session=False)

View File

@ -30,7 +30,7 @@ def validate_formkey(u:User, formkey:Optional[str]) -> bool:
return validate_hash(get_raw_formkey(u), formkey)
@cache.memoize(timeout=604800)
def get_alt_graph(uid:int) -> List[User]:
def get_alt_graph_ids(uid:int) -> List[int]:
alt_graph_cte = g.db.query(literal(uid).label('user_id')).select_from(Alt).cte('alt_graph', recursive=True)
alt_graph_cte_inner = g.db.query(
@ -43,7 +43,11 @@ def get_alt_graph(uid:int) -> List[User]:
)
alt_graph_cte = alt_graph_cte.union(alt_graph_cte_inner)
return g.db.query(User).filter(User.id == alt_graph_cte.c.user_id, User.id != uid).order_by(User.username).all()
return set([x[0] for x in g.db.query(User.id).filter(User.id == alt_graph_cte.c.user_id, User.id != uid).all()])
def get_alt_graph(uid:int) -> List[User]:
alt_ids = get_alt_graph_ids(uid)
return g.db.query(User).filter(User.id.in_(alt_ids)).order_by(User.username)
def add_alt(user1:int, user2:int):
li = [user1, user2]
@ -52,8 +56,8 @@ def add_alt(user1:int, user2:int):
new_alt = Alt(user1=user1, user2=user2)
g.db.add(new_alt)
g.db.flush()
cache.delete_memoized(get_alt_graph, user1)
cache.delete_memoized(get_alt_graph, user2)
cache.delete_memoized(get_alt_graph_ids, user1)
cache.delete_memoized(get_alt_graph_ids, user2)
def check_for_alts(current:User, include_current_session=True):
current_id = current.id