From b4f1706a6b71f50d93326daf024ff01a65141e9e Mon Sep 17 00:00:00 2001 From: Hendrik L Date: Wed, 11 Dec 2024 16:33:42 +0100 Subject: [PATCH] user_notes relationship, caching, cleanup --- app/models.py | 4 +++- app/templates/base.html | 2 +- app/templates/user/edit_note.html | 21 ++++++++++----------- app/user/routes.py | 11 +++++------ 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/app/models.py b/app/models.py index bdb596ba..a95d026a 100644 --- a/app/models.py +++ b/app/models.py @@ -710,6 +710,7 @@ class User(UserMixin, db.Model): cover = db.relationship('File', lazy='joined', foreign_keys=[cover_id], single_parent=True, cascade="all, delete-orphan") instance = db.relationship('Instance', lazy='joined', foreign_keys=[instance_id]) conversations = db.relationship('Conversation', lazy='dynamic', secondary=conversation_member, backref=db.backref('members', lazy='joined')) + user_notes = db.relationship('UserNote', lazy='dynamic', foreign_keys="UserNote.target_id") ap_id = db.Column(db.String(255), index=True) # e.g. username@server ap_profile_id = db.Column(db.String(255), index=True, unique=True) # e.g. https://server/u/username @@ -1079,8 +1080,9 @@ class User(UserMixin, db.Model): def has_read_post(self, post): return self.read_post.filter(read_posts.c.read_post_id == post.id).count() > 0 + @cache.memoize(timeout=500) def get_note(self, by_user): - user_note = UserNote.query.filter(UserNote.target_id == self.id, UserNote.user_id == by_user.id).first() + user_note = self.user_notes.filter(UserNote.target_id == self.id, UserNote.user_id == by_user.id).first() if user_note: return user_note.body else: diff --git a/app/templates/base.html b/app/templates/base.html index dff76458..320d8bd5 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -30,7 +30,7 @@ {% if current_user.is_authenticated -%} {% set user_note = user.get_note(current_user) %} {% if user_note -%} - [{{ user_note | truncate(12, True) }}] + [{{ user_note | truncate(12, True) }}] {% endif -%} {% endif -%} {% endif -%} diff --git a/app/templates/user/edit_note.html b/app/templates/user/edit_note.html index 6ab886a6..5f003e0e 100644 --- a/app/templates/user/edit_note.html +++ b/app/templates/user/edit_note.html @@ -12,9 +12,8 @@
{{ _('Edit note for "%(user_name)s"', user_name=user.display_name()) }}
+ {{ _('Emoji quick access') }}
- Emoji quick access -
@@ -23,27 +22,27 @@ -
+
+ - -
+
+ + + + + - - - - -
{{ render_form(form) }} -
This note appears next to the username. It's just for you and not displayed to anyone else.
+
{{ _('This note appears next to their username. It\'s meant just for you and not displayed to anyone else.') }}
diff --git a/app/user/routes.py b/app/user/routes.py index 12a6e7a9..fbde47f4 100644 --- a/app/user/routes.py +++ b/app/user/routes.py @@ -1337,7 +1337,7 @@ def user_read_posts_delete(): def edit_user_note(actor): actor = actor.strip() if '@' in actor: - user: User = User.query.filter_by(ap_id=actor, deleted=False, banned=False).first() + user: User = User.query.filter_by(ap_id=actor, deleted=False).first() else: user: User = User.query.filter_by(user_name=actor, deleted=False, ap_id=None).first() if user is None: @@ -1352,13 +1352,12 @@ def edit_user_note(actor): usernote = UserNote(target_id=user.id, user_id=current_user.id, body=text) db.session.add(usernote) db.session.commit() + cache.delete_memoized(User.get_note, user, current_user) flash(_('Your changes have been saved.'), 'success') - referrer = request.headers.get('Referer', None) - if referrer is not None: - return redirect(referrer) - else: - return redirect(url_for('user.edit_user_note', actor=actor)) + goto = request.args.get('redirect') if 'redirect' in request.args else f'/u/{actor}' + return redirect(goto) + elif request.method == 'GET': form.note.data = user.get_note(current_user)