|
@@ -18,8 +18,7 @@ from flaskbb.exceptions import AuthenticationError
|
|
|
from flaskbb.utils.helpers import time_utcnow
|
|
|
from flaskbb.utils.settings import flaskbb_config
|
|
|
from flaskbb.utils.database import CRUDMixin, UTCDateTime, make_comparable
|
|
|
-from flaskbb.forum.models import (Post, Topic, Forum, topictracker, TopicsRead,
|
|
|
- ForumsRead)
|
|
|
+from flaskbb.forum.models import Post, Topic, Forum, topictracker
|
|
|
from flaskbb.message.models import Conversation, Message
|
|
|
|
|
|
|
|
@@ -117,32 +116,57 @@ class User(db.Model, UserMixin, CRUDMixin):
|
|
|
theme = db.Column(db.String(15), nullable=True)
|
|
|
language = db.Column(db.String(15), default="en", nullable=True)
|
|
|
|
|
|
- posts = db.relationship("Post", backref="user", lazy="dynamic",
|
|
|
- primaryjoin="User.id == Post.user_id")
|
|
|
- topics = db.relationship("Topic", backref="user", lazy="dynamic",
|
|
|
- primaryjoin="User.id == Topic.user_id")
|
|
|
-
|
|
|
post_count = db.Column(db.Integer, default=0)
|
|
|
|
|
|
primary_group_id = db.Column(db.Integer, db.ForeignKey('groups.id'),
|
|
|
nullable=False)
|
|
|
|
|
|
- primary_group = db.relationship('Group', lazy="joined",
|
|
|
- backref="user_group", uselist=False,
|
|
|
- foreign_keys=[primary_group_id])
|
|
|
-
|
|
|
- secondary_groups = \
|
|
|
- db.relationship('Group',
|
|
|
- secondary=groups_users,
|
|
|
- primaryjoin=(groups_users.c.user_id == id),
|
|
|
- backref=db.backref('users', lazy='dynamic'),
|
|
|
- lazy='dynamic')
|
|
|
-
|
|
|
- tracked_topics = \
|
|
|
- db.relationship("Topic", secondary=topictracker,
|
|
|
- primaryjoin=(topictracker.c.user_id == id),
|
|
|
- backref=db.backref("topicstracked", lazy="dynamic"),
|
|
|
- lazy="dynamic")
|
|
|
+ posts = db.relationship(
|
|
|
+ "Post",
|
|
|
+ backref="user",
|
|
|
+ primaryjoin="User.id == Post.user_id",
|
|
|
+ lazy="dynamic"
|
|
|
+ )
|
|
|
+
|
|
|
+ topics = db.relationship(
|
|
|
+ "Topic",
|
|
|
+ backref="user",
|
|
|
+ primaryjoin="User.id == Topic.user_id",
|
|
|
+ lazy="dynamic"
|
|
|
+ )
|
|
|
+
|
|
|
+ primary_group = db.relationship(
|
|
|
+ "Group",
|
|
|
+ backref="user_group",
|
|
|
+ uselist=False,
|
|
|
+ lazy="joined",
|
|
|
+ foreign_keys=[primary_group_id]
|
|
|
+ )
|
|
|
+
|
|
|
+ secondary_groups = db.relationship(
|
|
|
+ "Group",
|
|
|
+ secondary=groups_users,
|
|
|
+ primaryjoin=(groups_users.c.user_id == id),
|
|
|
+ backref=db.backref("users", lazy="dynamic"),
|
|
|
+ lazy="dynamic"
|
|
|
+ )
|
|
|
+
|
|
|
+ tracked_topics = db.relationship(
|
|
|
+ "Topic",
|
|
|
+ secondary=topictracker,
|
|
|
+ primaryjoin=(topictracker.c.user_id == id),
|
|
|
+ backref=db.backref("topicstracked", lazy="dynamic"),
|
|
|
+ lazy="dynamic",
|
|
|
+ cascade="all, delete-orphan",
|
|
|
+ single_parent=True
|
|
|
+ )
|
|
|
+
|
|
|
+ conversations = db.relationship(
|
|
|
+ "Conversation",
|
|
|
+ primaryjoin="Conversation.user_id == User.id",
|
|
|
+ lazy="dynamic",
|
|
|
+ passive_deletes="all" # let the dbms handle the foreignkeys
|
|
|
+ )
|
|
|
|
|
|
# Properties
|
|
|
@property
|
|
@@ -483,15 +507,6 @@ class User(db.Model, UserMixin, CRUDMixin):
|
|
|
|
|
|
def delete(self):
|
|
|
"""Deletes the User."""
|
|
|
-
|
|
|
- # This should actually be handeld by the dbms.. but dunno why it doesnt
|
|
|
- # work here
|
|
|
- #from flaskbb.forum.models import Forum
|
|
|
- #last_post_forums = Forum.query.\
|
|
|
- # filter_by(last_post_user_id=self.id).all()
|
|
|
- #for forum in last_post_forums:
|
|
|
- # forum.last_post_user_id = None
|
|
|
- # forum.save()
|
|
|
db.session.delete(self)
|
|
|
db.session.commit()
|
|
|
|