roundabout,
created on Tuesday, 26 December 2023, 10:23:41 (1703586221),
received on Wednesday, 31 July 2024, 06:54:40 (1722408880)
Author identity: vlad <vlad.muntoiu@gmail.com>
22d1cc6809503112bcea0f7459f803d542a95fb0
models.py
@@ -71,10 +71,12 @@ with app.app_context():
repositories = db.relationship("Repo", back_populates="owner")
repoAccess = db.relationship("RepoAccess", back_populates="user")
votes = db.relationship("PostVote", back_populates="user")
generatedNotifications = db.relationship("Notification", back_populates="author")
favourites = db.relationship("RepoFavourite", back_populates="user")
commits = db.relationship("Commit", back_populates="owner")
posts = db.relationship("Post", back_populates="owner")
notifications = db.relationship("UserNotification", back_populates="user")
def __init__(self, username, password, email=None, displayName=None):
self.username = username
@@ -113,6 +115,7 @@ with app.app_context():
commits = db.relationship("Commit", back_populates="repo")
posts = db.relationship("Post", back_populates="repo")
generatedNotifications = db.relationship("Notification", back_populates="repo")
repoAccess = db.relationship("RepoAccess", back_populates="repo")
favourites = db.relationship("RepoFavourite", back_populates="repo")
@@ -191,3 +194,46 @@ with app.app_context():
with db.session.no_autoflush:
if self.parent is not None:
self.parent.updateDate()
class UserNotification(db.Model):
id = db.Column(db.Integer, primary_key=True)
userUsername = db.Column(db.String(32), db.ForeignKey("user.username"), nullable=False)
notificationID = db.Column(db.BigInteger, db.ForeignKey("notification.id"), nullable=False)
attentionLevel = db.Column(db.SmallInteger, nullable=False) # 0 is read
readTime = db.Column(db.DateTime, nullable=True)
user = db.relationship("User", back_populates="notifications")
notification = db.relationship("Notification", back_populates="notifications")
__table_args__ = (db.UniqueConstraint("userUsername", "notificationID", name="_user_notification_uc"),)
def __init__(self, user, notification, level):
self.userUsername = user.username
self.notificationID = notification.id
self.attentionLevel = level
def read(self):
self.readTime = datetime.utcnow
self.attentionLevel = 0
class Notification(db.Model):
id = db.Column(db.BigInteger, primary_key=True)
message = db.Column(db.UnicodeText)
repoName = db.Column(db.String(98), db.ForeignKey("repo.route"), nullable=False)
authorName = db.Column(db.String(32), db.ForeignKey("user.username"), nullable=False)
timestamp = db.Column(db.DateTime, nullable=False, default=datetime.now)
author = db.relationship("User", back_populates="generatedNotifications")
repo = db.relationship("Repo", back_populates="generatedNotifications")
notifications = db.relationship("UserNotification", back_populates="notification")
def __init__(self, users, message, level, author, repo):
self.message = message
self.authorName = author.username
self.repoName = repo.route
for user in users:
db.session.add(UserNotification(user, self, level))