diff --git a/app/corpora/followers/json_routes.py b/app/corpora/followers/json_routes.py index 9b31f8ee..87299862 100644 --- a/app/corpora/followers/json_routes.py +++ b/app/corpora/followers/json_routes.py @@ -11,6 +11,7 @@ from app.models import ( from ..decorators import corpus_follower_permission_required from . import bp + @bp.route('//followers', methods=['POST']) @corpus_follower_permission_required('MANAGE_FOLLOWERS') @content_negotiation(consumes='application/json', produces='application/json') 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): diff --git a/app/templates/corpora/corpus.html.j2 b/app/templates/corpora/corpus.html.j2 index 2e38b88d..07cb330d 100644 --- a/app/templates/corpora/corpus.html.j2 +++ b/app/templates/corpora/corpus.html.j2 @@ -192,7 +192,7 @@
badge