diff --git a/app/models.py b/app/models.py
index 870b7f71b4a4e94d781ddac18a8adc11eb6b348d..74d82410c1e377bd6f5c4be20dfcb3969fa5aa59 100644
--- a/app/models.py
+++ b/app/models.py
@@ -775,14 +775,16 @@ class User(HashidMixin, UserMixin, db.Model):
     #endregion Profile Privacy settings
 
     def follow_corpus(self, corpus, role=None):
-        if role is None:
-            r = CorpusFollowerRole.query.filter_by(default=True).first()
+        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)
 
     def unfollow_corpus(self, corpus):
-        if self.is_following_corpus(corpus):
-            self.followed_corpora.remove(corpus)
+        if not self.is_following_corpus(corpus):
+            return
+        self.followed_corpora.remove(corpus)
 
     def is_following_corpus(self, corpus):
         return corpus in self.followed_corpora