diff --git a/files/__main__.py b/files/__main__.py index 53f939843..3d808cb09 100644 --- a/files/__main__.py +++ b/files/__main__.py @@ -79,7 +79,7 @@ Base = declarative_base() engine = create_engine(app.config['DATABASE_URL']) -db_session = scoped_session(sessionmaker(engine)) +db_session = scoped_session(sessionmaker(bind=engine, autoflush=False)) @app.before_request diff --git a/files/classes/award.py b/files/classes/award.py index 9b8e68f0c..8c9d46086 100644 --- a/files/classes/award.py +++ b/files/classes/award.py @@ -65,10 +65,10 @@ class AwardRelationship(Base): comment_id = Column(Integer, ForeignKey("comments.id"), default=None) kind = Column(String(20)) - user = relationship("User", primaryjoin="AwardRelationship.user_id==User.id", lazy="joined", viewonly=True) + user = relationship("User", primaryjoin="AwardRelationship.user_id==User.id", lazy="joined") - post = relationship("Submission", primaryjoin="AwardRelationship.submission_id==Submission.id", lazy="joined", viewonly=True) - comment = relationship("Comment", primaryjoin="AwardRelationship.comment_id==Comment.id", lazy="joined", viewonly=True) + post = relationship("Submission", primaryjoin="AwardRelationship.submission_id==Submission.id", lazy="joined") + comment = relationship("Comment", primaryjoin="AwardRelationship.comment_id==Comment.id", lazy="joined") @property diff --git a/files/classes/badges.py b/files/classes/badges.py index 22ef03531..36f2ea874 100644 --- a/files/classes/badges.py +++ b/files/classes/badges.py @@ -48,7 +48,7 @@ class Badge(Base): badge_id = Column(Integer, ForeignKey("badge_defs.id")) description = Column(String(64)) url = Column(String(256)) - badge = relationship("BadgeDef", lazy="joined", innerjoin=True, viewonly=True) + badge = relationship("BadgeDef", lazy="joined", innerjoin=True) def __repr__(self): diff --git a/files/classes/clients.py b/files/classes/clients.py index 78ed21e41..e4cd49855 100644 --- a/files/classes/clients.py +++ b/files/classes/clients.py @@ -17,7 +17,7 @@ class OauthApp(Base): redirect_uri = Column(String(4096)) description = Column(String(256)) author_id = Column(Integer, ForeignKey("users.id")) - author = relationship("User", viewonly=True) + author = relationship("User") def __repr__(self): return f"" @@ -68,8 +68,8 @@ class ClientAuth(Base): oauth_client = Column(Integer, ForeignKey("oauth_apps.id")) access_token = Column(String(128)) user_id = Column(Integer, ForeignKey("users.id")) - user = relationship("User", lazy="joined", viewonly=True) - application = relationship("OauthApp", lazy="joined", viewonly=True) + user = relationship("User", lazy="joined") + application = relationship("OauthApp", lazy="joined") @property @lazy diff --git a/files/classes/comment.py b/files/classes/comment.py index 67172b336..79d0244c5 100644 --- a/files/classes/comment.py +++ b/files/classes/comment.py @@ -28,7 +28,7 @@ class Comment(Base): __tablename__ = "comments" id = Column(Integer, primary_key=True) - comment_aux = relationship("CommentAux", lazy="joined", uselist=False, innerjoin=True, primaryjoin="Comment.id==CommentAux.id", viewonly=True) + comment_aux = relationship("CommentAux", lazy="joined", uselist=False, innerjoin=True, primaryjoin="Comment.id==CommentAux.id") author_id = Column(Integer, ForeignKey("users.id")) parent_submission = Column(Integer, ForeignKey("submissions.id")) # this column is foreignkeyed to comment(id) but we can't do that yet as @@ -50,19 +50,19 @@ class Comment(Base): sentto=Column(Integer) app_id = Column(Integer, ForeignKey("oauth_apps.id")) - oauth_app=relationship("OauthApp", viewonly=True) + oauth_app=relationship("OauthApp") - post = relationship("Submission", viewonly=True) - flags = relationship("CommentFlag", lazy="dynamic", viewonly=True) - author = relationship("User", lazy="joined", innerjoin=True, primaryjoin="User.id==Comment.author_id", viewonly=True) + post = relationship("Submission") + flags = relationship("CommentFlag", lazy="dynamic") + author = relationship("User", lazy="joined", innerjoin=True, primaryjoin="User.id==Comment.author_id") upvotes = Column(Integer, default=1) downvotes = Column(Integer, default=0) - parent_comment = relationship("Comment", remote_side=[id], viewonly=True) - child_comments = relationship("Comment", remote_side=[parent_comment_id], viewonly=True) + parent_comment = relationship("Comment", remote_side=[id]) + child_comments = relationship("Comment", remote_side=[parent_comment_id]) - awards = relationship("AwardRelationship", lazy="joined", viewonly=True) + awards = relationship("AwardRelationship", lazy="joined") def __init__(self, *args, **kwargs): @@ -408,8 +408,8 @@ class Notification(Base): blocksender = Column(Integer) unblocksender = Column(Integer) - comment = relationship("Comment", lazy="joined", innerjoin=True, viewonly=True) - user=relationship("User", innerjoin=True, viewonly=True) + comment = relationship("Comment", lazy="joined", innerjoin=True) + user=relationship("User", innerjoin=True) def __repr__(self): diff --git a/files/classes/flags.py b/files/classes/flags.py index a32ed69e5..f33d5da48 100644 --- a/files/classes/flags.py +++ b/files/classes/flags.py @@ -13,7 +13,7 @@ class Flag(Base): user_id = Column(Integer, ForeignKey("users.id")) reason = Column(String(100)) - user = relationship("User", lazy = "joined", primaryjoin = "Flag.user_id == User.id", uselist = False, viewonly=True) + user = relationship("User", lazy = "joined", primaryjoin = "Flag.user_id == User.id", uselist = False) def __repr__(self): @@ -39,7 +39,7 @@ class CommentFlag(Base): comment_id = Column(Integer, ForeignKey("comments.id")) reason = Column(String(100)) - user = relationship("User", lazy = "joined", primaryjoin = "CommentFlag.user_id == User.id", uselist = False, viewonly=True) + user = relationship("User", lazy = "joined", primaryjoin = "CommentFlag.user_id == User.id", uselist = False) def __repr__(self): diff --git a/files/classes/mod_logs.py b/files/classes/mod_logs.py index 98a434d43..8d4246d97 100644 --- a/files/classes/mod_logs.py +++ b/files/classes/mod_logs.py @@ -17,10 +17,10 @@ class ModAction(Base): created_utc = Column(Integer, default=0) - user = relationship("User", lazy="joined", primaryjoin="User.id==ModAction.user_id", viewonly=True) - target_user = relationship("User", lazy="joined", primaryjoin="User.id==ModAction.target_user_id", viewonly=True) - target_post = relationship("Submission", lazy="joined", viewonly=True) - target_comment = relationship("Comment", lazy="joined", viewonly=True) + user = relationship("User", lazy="joined", primaryjoin="User.id==ModAction.user_id") + target_user = relationship("User", lazy="joined", primaryjoin="User.id==ModAction.target_user_id") + target_post = relationship("Submission", lazy="joined") + target_comment = relationship("Comment", lazy="joined") def __init__(self, *args, **kwargs): diff --git a/files/classes/submission.py b/files/classes/submission.py index ca2ad1d73..18d2bdb5a 100644 --- a/files/classes/submission.py +++ b/files/classes/submission.py @@ -33,7 +33,7 @@ class Submission(Base): __tablename__ = "submissions" id = Column(BigInteger, primary_key=True) - submission_aux = relationship("SubmissionAux", lazy="joined", uselist=False, innerjoin=True, primaryjoin="Submission.id==SubmissionAux.id", viewonly=True) + submission_aux = relationship("SubmissionAux", lazy="joined", uselist=False, innerjoin=True, primaryjoin="Submission.id==SubmissionAux.id") author_id = Column(BigInteger, ForeignKey("users.id")) edited_utc = Column(BigInteger, default=0) created_utc = Column(BigInteger, default=0) @@ -51,11 +51,11 @@ class Submission(Base): private = Column(Boolean, default=False) club = Column(Boolean, default=False) comment_count = Column(Integer, default=0) - comments = relationship("Comment", lazy="joined", primaryjoin="Comment.parent_submission==Submission.id", viewonly=True) - flags = relationship("Flag", lazy="dynamic", viewonly=True) + comments = relationship("Comment", lazy="joined", primaryjoin="Comment.parent_submission==Submission.id") + flags = relationship("Flag", lazy="dynamic") is_approved = Column(Integer, ForeignKey("users.id"), default=0) over_18 = Column(Boolean, default=False) - author = relationship("User", lazy="joined", innerjoin=True, primaryjoin="Submission.author_id==User.id", viewonly=True) + author = relationship("User", lazy="joined", innerjoin=True, primaryjoin="Submission.author_id==User.id") is_pinned = Column(Boolean, default=False) is_bot = Column(Boolean, default=False) @@ -63,11 +63,11 @@ class Submission(Base): downvotes = Column(Integer, default=0) app_id=Column(Integer, ForeignKey("oauth_apps.id")) - oauth_app=relationship("OauthApp", viewonly=True) + oauth_app=relationship("OauthApp") - approved_by = relationship("User", uselist=False, primaryjoin="Submission.is_approved==User.id", viewonly=True) + approved_by = relationship("User", uselist=False, primaryjoin="Submission.is_approved==User.id") - awards = relationship("AwardRelationship", lazy="joined", viewonly=True) + awards = relationship("AwardRelationship", lazy="joined") def __init__(self, *args, **kwargs): diff --git a/files/classes/subscriptions.py b/files/classes/subscriptions.py index 88f7cbe66..032d05015 100644 --- a/files/classes/subscriptions.py +++ b/files/classes/subscriptions.py @@ -9,7 +9,7 @@ class Subscription(Base): user_id = Column(BigInteger, ForeignKey("users.id")) submission_id = Column(BigInteger, default=0) - user = relationship("User", uselist=False, viewonly=True) + user = relationship("User", uselist=False) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) @@ -24,8 +24,8 @@ class Follow(Base): user_id = Column(BigInteger, ForeignKey("users.id")) target_id = Column(BigInteger, ForeignKey("users.id")) - user = relationship("User", uselist=False, primaryjoin="User.id==Follow.user_id", viewonly=True) - target = relationship("User", lazy="joined", primaryjoin="User.id==Follow.target_id", viewonly=True) + user = relationship("User", uselist=False, primaryjoin="User.id==Follow.user_id") + target = relationship("User", lazy="joined", primaryjoin="User.id==Follow.target_id") def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) diff --git a/files/classes/user.py b/files/classes/user.py index 44045ea89..512976607 100644 --- a/files/classes/user.py +++ b/files/classes/user.py @@ -123,12 +123,12 @@ class User(Base): oldreddit = Column(Boolean) nitter = Column(Boolean) controversial = Column(Boolean, default=False) - submissions = relationship("Submission", lazy="dynamic", primaryjoin="Submission.author_id==User.id", viewonly=True) - comments = relationship("Comment", lazy="dynamic", primaryjoin="Comment.author_id==User.id", viewonly=True) + submissions = relationship("Submission", lazy="dynamic", primaryjoin="Submission.author_id==User.id") + comments = relationship("Comment", lazy="dynamic", primaryjoin="Comment.author_id==User.id") bio = Column(String) bio_html = Column(String) - badges = relationship("Badge", lazy="dynamic", viewonly=True) - notifications = relationship("Notification", lazy="dynamic", viewonly=True) + badges = relationship("Badge", lazy="dynamic") + notifications = relationship("Notification", lazy="dynamic") is_banned = Column(Integer, default=0) unban_utc = Column(Integer, default=0) @@ -151,24 +151,24 @@ class User(Base): discord_id = Column(String(64)) ban_evade = Column(Integer, default=0) original_username = deferred(Column(String(255))) - subscriptions = relationship("Subscription", viewonly=True) + subscriptions = relationship("Subscription") - following = relationship("Follow", primaryjoin="Follow.user_id==User.id", viewonly=True) - followers = relationship("Follow", primaryjoin="Follow.target_id==User.id", viewonly=True) + following = relationship("Follow", primaryjoin="Follow.user_id==User.id") + followers = relationship("Follow", primaryjoin="Follow.target_id==User.id") - viewers = relationship("ViewerRelationship", primaryjoin="User.id == ViewerRelationship.user_id", viewonly=True) + viewers = relationship("ViewerRelationship", primaryjoin="User.id == ViewerRelationship.user_id") - blocking = relationship("UserBlock", lazy="dynamic", primaryjoin="User.id==UserBlock.user_id", viewonly=True) - blocked = relationship("UserBlock", lazy="dynamic", primaryjoin="User.id==UserBlock.target_id", viewonly=True) + blocking = relationship("UserBlock", lazy="dynamic", primaryjoin="User.id==UserBlock.user_id") + blocked = relationship("UserBlock", lazy="dynamic", primaryjoin="User.id==UserBlock.target_id") - _applications = relationship("OauthApp", lazy="dynamic", viewonly=True) - authorizations = relationship("ClientAuth", lazy="dynamic", viewonly=True) + _applications = relationship("OauthApp", lazy="dynamic") + authorizations = relationship("ClientAuth", lazy="dynamic") - awards = relationship("AwardRelationship", lazy="dynamic", primaryjoin="User.id==AwardRelationship.user_id", viewonly=True) + awards = relationship("AwardRelationship", lazy="dynamic", primaryjoin="User.id==AwardRelationship.user_id") referred_by = Column(Integer, ForeignKey("users.id")) - referrals = relationship("User", lazy="joined", viewonly=True) + referrals = relationship("User", lazy="joined") def __init__(self, **kwargs): @@ -623,7 +623,7 @@ class ViewerRelationship(Base): viewer_id = Column(Integer, ForeignKey('users.id')) last_view_utc = Column(Integer) - viewer = relationship("User", lazy="joined", primaryjoin="ViewerRelationship.viewer_id == User.id", viewonly=True) + viewer = relationship("User", lazy="joined", primaryjoin="ViewerRelationship.viewer_id == User.id") def __init__(self, **kwargs): diff --git a/files/classes/userblock.py b/files/classes/userblock.py index d848eeb4c..9ec93d43b 100644 --- a/files/classes/userblock.py +++ b/files/classes/userblock.py @@ -11,8 +11,8 @@ class UserBlock(Base): user_id = Column(Integer, ForeignKey("users.id")) target_id = Column(Integer, ForeignKey("users.id")) - user = relationship("User", innerjoin=True, primaryjoin="User.id==UserBlock.user_id", viewonly=True) - target = relationship("User", innerjoin=True, primaryjoin="User.id==UserBlock.target_id", viewonly=True) + user = relationship("User", innerjoin=True, primaryjoin="User.id==UserBlock.user_id") + target = relationship("User", innerjoin=True, primaryjoin="User.id==UserBlock.target_id") def __repr__(self): diff --git a/files/classes/votes.py b/files/classes/votes.py index 58e4bdeb2..54c694ba2 100644 --- a/files/classes/votes.py +++ b/files/classes/votes.py @@ -14,8 +14,8 @@ class Vote(Base): submission_id = Column(Integer, ForeignKey("submissions.id")) app_id = Column(Integer, ForeignKey("oauth_apps.id")) - user = relationship("User", lazy="subquery", viewonly=True) - post = relationship("Submission", lazy="subquery", viewonly=True) + user = relationship("User", lazy="subquery") + post = relationship("Submission", lazy="subquery") def __init__(self, *args, **kwargs): @@ -54,8 +54,8 @@ class CommentVote(Base): comment_id = Column(Integer, ForeignKey("comments.id")) app_id = Column(Integer, ForeignKey("oauth_apps.id")) - user = relationship("User", lazy="subquery", viewonly=True) - comment = relationship("Comment", lazy="subquery", viewonly=True) + user = relationship("User", lazy="subquery") + comment = relationship("Comment", lazy="subquery") def __init__(self, *args, **kwargs):