From 0609e2cd7239c74e1ffb9a7c2c15294e6797cb65 Mon Sep 17 00:00:00 2001
From: Patrick Jentsch
Date: Fri, 24 Feb 2023 09:27:20 +0100
Subject: [PATCH] Fix follow corpus mechanics
---
app/models.py | 21 +++++++++------------
1 file changed, 9 insertions(+), 12 deletions(-)
diff --git a/app/models.py b/app/models.py
index 01e7c09a..ed36a8ff 100644
--- a/app/models.py
+++ b/app/models.py
@@ -378,8 +378,7 @@ class CorpusFollowerRole(HashidMixin, db.Model):
# Relationships
corpus_follower_associations = db.relationship(
'CorpusFollowerAssociation',
- back_populates='role',
- lazy='dynamic'
+ back_populates='role'
)
def __repr__(self):
@@ -481,11 +480,9 @@ class CorpusFollowerAssociation(HashidMixin, db.Model):
def __init__(self, **kwargs):
super().__init__(**kwargs)
- if self.role is None:
- self.role = CorpusFollowerRole.query.filter_by(default=True).first()
def __repr__(self):
- return f''
+ return f''
def to_json_serializeable(self, backrefs=False, relationships=False):
json_serializeable = {
@@ -545,8 +542,7 @@ class User(HashidMixin, UserMixin, db.Model):
)
followed_corpora = association_proxy(
'corpus_follower_associations',
- 'corpus',
- creator=lambda c: CorpusFollowerAssociation(corpus=c)
+ 'corpus'
)
jobs = db.relationship(
'Job',
@@ -778,9 +774,11 @@ class User(HashidMixin, UserMixin, db.Model):
self.profile_privacy_settings = 0
#endregion Profile Privacy settings
- def follow_corpus(self, corpus):
- if not self.is_following_corpus(corpus):
- self.followed_corpora.append(corpus)
+ def follow_corpus(self, corpus, role=None):
+ if role is None:
+ r = CorpusFollowerRole.query.filter_by(default=True).first()
+ cfa = CorpusFollowerAssociation(corpus=corpus, role=r, follower=self)
+ db.session.add(cfa)
def unfollow_corpus(self, corpus):
if self.is_following_corpus(corpus):
@@ -1499,8 +1497,7 @@ class Corpus(HashidMixin, db.Model):
)
followers = association_proxy(
'corpus_follower_associations',
- 'follower',
- creator=lambda u: CorpusFollowerAssociation(followers=u)
+ 'follower'
)
user = db.relationship('User', back_populates='corpora')
# "static" attributes