From 793de849ef1c414929079bf4aa539b76d2740384 Mon Sep 17 00:00:00 2001 From: Patrick Jentsch Date: Tue, 6 Jun 2023 13:44:02 +0200 Subject: [PATCH] Allow to change role by using a corpus follow link --- app/models.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/app/models.py b/app/models.py index 22969c2f..b3294b00 100644 --- a/app/models.py +++ b/app/models.py @@ -787,11 +787,17 @@ class User(HashidMixin, UserMixin, db.Model): #endregion Profile Privacy settings def follow_corpus(self, corpus, role=None): + if role is None: + cfr = CorpusFollowerRole.query.filter_by(default=True).first() + else: + cfr = role if self.is_following_corpus(corpus): - return - r = CorpusFollowerRole.query.filter_by(default=True).first() if role is None else role - cfa = CorpusFollowerAssociation(corpus=corpus, role=r, follower=self) - db.session.add(cfa) + cfa = CorpusFollowerAssociation.query.filter_by(corpus=corpus, follower=self).first() + if cfa.role != cfr: + cfa.role = cfr + else: + cfa = CorpusFollowerAssociation(corpus=corpus, role=cfr, follower=self) + db.session.add(cfa) def unfollow_corpus(self, corpus): if not self.is_following_corpus(corpus): @@ -840,7 +846,7 @@ class User(HashidMixin, UserMixin, db.Model): if role is None: return False self.follow_corpus(corpus, role) - db.session.add(self) + # db.session.add(self) return True def to_json_serializeable(self, backrefs=False, relationships=False, filter_by_privacy_settings=False):