roundabout,
created on Thursday, 11 January 2024, 14:59:51 (1704985191),
received on Wednesday, 31 July 2024, 06:54:40 (1722408880)
Author identity: vlad <vlad.muntoiu@gmail.com>
d24b75ab40c1d8543e77f7f711c42e6f82fcf47e
app.py
@@ -42,6 +42,8 @@ bcrypt = Bcrypt(app)
migrate = Migrate(app, db)
from models import *
import celeryTasks
def gitCommand(repo, data, *args):
if not os.path.isdir(repo):
@@ -329,6 +331,15 @@ def userProfile(username):
)
db.session.add(relationship)
user = db.session.get(User, username)
author = db.session.get(User, flask.session.get("username"))
notification = Notification({"type": "update", "version": "0.0.0"})
db.session.add(notification)
db.session.commit()
result = celeryTasks.sendNotification.delay(notification.id, [username], 1)
flask.flash(f"Sending notification in task {result.id}", "success")
db.session.commit()
return flask.redirect("?", code=303)
celeryTasks.py
@@ -0,0 +1,15 @@
import time
from celery import shared_task
from app import db
from models import *
@shared_task(ignore_result=False)
def sendNotification(notificationID, users, level):
notification = db.session.get(Notification, notificationID)
for user in users:
db.session.add(UserNotification(db.session.get(User, user), notification, level))
db.session.commit()
return 0 # notification sent successfully
models.py
@@ -5,6 +5,19 @@ from enum import Enum
from PIL import Image
from cairosvg import svg2png
__all__ = [
"RepoAccess",
"RepoFavourite",
"Repo",
"UserFollow",
"UserNotification",
"User",
"Notification",
"PostVote",
"Post",
"Commit",
]
with app.app_context():
class RepoAccess(db.Model):
id = db.Column(db.Integer, primary_key=True)
@@ -240,7 +253,7 @@ with app.app_context():
def __init__(self, json):
self.data = json
def sendTo(self, users, level):
for user in users:
db.session.add(UserNotification(user, self, level))
# def sendTo(self, users, level):
# for user in users:
# db.session.add(UserNotification(user, self, level))
templates/notifications.html
@@ -3,7 +3,7 @@
Notifications
{% endblock %}
{% block breadcrumbs %}
<li><a href="/favourites">Notifications</a></li>
<li><a href="/notifications">Notifications</a></li>
{% endblock %}
{% block content %}
<x-vbox>
@@ -12,7 +12,7 @@
{% for notification in notifications %}
<article class="card">
<section class="card-main">
{{ notification.notification.author.username }}
{{ notification.notification.json }}
</section>
</article>
{% endfor %}