roundabout,
created on Monday, 24 June 2024, 19:06:27 (1719255987),
received on Monday, 24 June 2024, 19:06:33 (1719255993)
Author identity: vlad <vlad.muntoiu@gmail.com>
df574e0d42c8f686b2bca97eca3ac3433d37a380
celery_tasks.py
@@ -14,7 +14,7 @@ from datetime import datetime
@shared_task(ignore_result=False) def send_notification(user_notification_id): from models import UserNotification, Commit, Postfrom models import UserNotification, Commit, Post, PullRequestuser_notification = db.session.get(UserNotification, user_notification_id) user = user_notification.user notification = user_notification.notification
@@ -54,6 +54,17 @@ def send_notification(user_notification_id):
post=post, url="https://" if config.suggest_https else "http://" + config.BASE_DOMAIN + "/repo/" + notification.data.get("repo") + "/post/" + notification.data.get("post") ) case "pr": pr = db.session.get(PullRequest, notification.data.get("pr")) message = email_send.make_multipart_message( f"[PR in {notification.data.get('repo')}] {pr.head_route}:{pr.head_branch} -> {pr.base_route}:{pr.base_branch}", config.NOTIFICATION_EMAIL, user.email, "pr", username=user.username, pr=pr, url="https://" if config.suggest_https else "http://" + config.BASE_DOMAIN + "/repo/" + notification.data.get("repo") + "/prs/" )mail.sendmail(config.NOTIFICATION_EMAIL, user.email, message)
email_templates/commit.html
@@ -2,7 +2,7 @@
{% block content %} <h1>New commit in {{ repo }}</h1> <p> Commited by <a href="/{{ commit.owner.username }}">{{ commit.owner.username }}</a>Commited by {{ commit.owner.username }}</p> <h2> <a href="{{ config.url_prefix }}{{ repo + '/commit/' + commit.sha }}">
email_templates/pr.html
@@ -0,0 +1,7 @@
{% extends "mail.html" %} {% block content %} <h1>Merge {{ pr.head_route }}:{{ pr.head_branch }} into {{ pr.base_route }}:{{ pr.base_branch }}?</h1> <p> Requested by {{ pr.owner.username }} </p> {% endblock %}
email_templates/pr.txt
@@ -0,0 +1,6 @@
{% extends "mail.txt" %} {% block content %} # Merge {{ pr.head_route }}:{{ pr.head_branch }} into {{ pr.base_route }}:{{ pr.base_branch }}?</h1> Requested by {{ pr.owner.username }} {% endblock %}
email_templates/welcome.html
@@ -7,7 +7,4 @@
<p> You've just registered for an account at this server. If it wasn't you, write to us and we'll remove this email from our database. </p> <p>No email verification is required; email notifications are provided only for your convenience.</p>{% endblock %}
models.py
@@ -424,6 +424,19 @@ with (app.app_context()):
self.base_branch = base_branch self.owner = owner # Create the notification notification = Notification({"type": "pr", "head": head.route, "base": base.route, "pr": self.id}) db.session.add(notification) db.session.commit() # save the notification to get the ID # Send a notification to all users who have enabled PR notifications for this repo for relationship in RepoFavourite.query.filter_by(repo_route=base.route, notify_pr=True).all(): user = relationship.user user_notification = UserNotification(user, notification, 1) db.session.add(user_notification) db.session.commit() celery_tasks.send_notification.apply_async(args=[user_notification.id]) class EmailChangeRequest(db.Model): id = db.Column(db.BigInteger, primary_key=True, autoincrement=True) user_username = db.Column(db.String(32), db.ForeignKey("user.username"), nullable=False)
templates/notifications.html
@@ -33,6 +33,13 @@
{% trans %}Posted by{% endtrans %} <a href="/{{ post.owner.username }}">{{ post.owner.username }}</a> {% trans %}in{% endtrans %} <a href="{{ post.repo.route }}">{{ post.repo.owner.username }}/{{ post.repo.name }}</a> </p> {% elif notification.notification.data["type"] == "pr" %} {% set pr = db.session.get(PullRequest, notification.notification.data["repo"] + "/" + notification.notification.data["pr"]) %} <h2><a href="{{ notification.notification.data['repo'] + '/prs/' }}">{{ pr.head_route }}:{{ pr.head_branch }} → {{ pr.base_route }}:{{ pr.base_branch }}</a></h2> <p> {% trans %}Requested by{% endtrans %} <a href="/{{ pr.owner.username }}">{{ pr.owner.username }}</a> {% trans %}in{% endtrans %} <a href="{{ pr.base_route }}">{{ pr.base.username }}/{{ pr.base.name }}</a> </p>{% endif %} </section> <section>