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))