fix pfp caching

pull/98/head
Aevann 2023-01-25 05:18:17 +02:00
parent b23dc76d78
commit ca1b716010
3 changed files with 18 additions and 6 deletions

View File

@ -6,6 +6,7 @@ from sqlalchemy.orm import joinedload, selectinload, Query
from files.classes import Comment, CommentVote, Hat, Sub, Submission, User, UserBlock, Vote from files.classes import Comment, CommentVote, Hat, Sub, Submission, User, UserBlock, Vote
from files.helpers.config.const import AUTOJANNY_ID from files.helpers.config.const import AUTOJANNY_ID
from files.__main__ import cache
def sanitize_username(username:str) -> str: def sanitize_username(username:str) -> str:
if not username: return username if not username: return username
@ -351,3 +352,13 @@ def get_sub_by_name(sub:str, v:Optional[User]=None, graceful=False) -> Optional[
if graceful: return None if graceful: return None
else: abort(404) else: abort(404)
return sub return sub
@cache.memoize(timeout=8640000)
def get_profile_picture(identifier:Union[int, str]) -> str:
print(identifier, flush=True)
if isinstance(identifier, int):
x = get_account(identifier, graceful=True)
else:
x = get_user(identifier, graceful=True)
return x.profile_url if x else 'not_found'

View File

@ -571,6 +571,9 @@ def settings_images_profile(v):
v.profileurl = imageurl v.profileurl = imageurl
g.db.add(v) g.db.add(v)
cache.delete_memoized(get_profile_picture, v.id)
cache.delete_memoized(get_profile_picture, v.username)
cache.delete_memoized(get_profile_picture, v.original_username)
return render_template("settings/personal.html", v=v, msg="Profile picture successfully updated.") return render_template("settings/personal.html", v=v, msg="Profile picture successfully updated.")

View File

@ -1135,21 +1135,19 @@ def remove_follow(username, v):
return {"message": f"@{target.username} has been removed as a follower!"} return {"message": f"@{target.username} has been removed as a follower!"}
@app.get("/pp/<int:id>") @app.get("/pp/<int:id>")
@app.get("/uid/<int:id>/pic") @app.get("/uid/<int:id>/pic")
@app.get("/uid/<int:id>/pic/profile") @app.get("/uid/<int:id>/pic/profile")
@cache.memoize(timeout=86400)
@limiter.exempt @limiter.exempt
def user_profile_uid(id): def user_profile_uid(id):
x = get_account(id) return redirect(get_profile_picture(id))
return redirect(x.profile_url)
@app.get("/@<username>/pic") @app.get("/@<username>/pic")
@cache.memoize(timeout=86400)
@limiter.exempt @limiter.exempt
def user_profile_name(username): def user_profile_name(username):
x = get_user(username) return redirect(get_profile_picture(username))
return redirect(x.profile_url)
def get_saves_and_subscribes(v, template, relationship_cls, page:int, standalone=False): def get_saves_and_subscribes(v, template, relationship_cls, page:int, standalone=False):
if relationship_cls in {SaveRelationship, Subscription}: if relationship_cls in {SaveRelationship, Subscription}: