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):