]> git.lizzy.rs Git - cheatdb.git/commitdiff
Rename triggerNotif to addNotification, add array support
authorrubenwardy <rw@rubenwardy.com>
Thu, 9 Jul 2020 03:16:45 +0000 (04:16 +0100)
committerrubenwardy <rw@rubenwardy.com>
Thu, 9 Jul 2020 03:16:45 +0000 (04:16 +0100)
app/blueprints/admin/admin.py
app/blueprints/packages/editrequests.py
app/blueprints/packages/packages.py
app/blueprints/packages/releases.py
app/blueprints/packages/reviews.py
app/blueprints/packages/screenshots.py
app/blueprints/threads/__init__.py
app/utils.py

index 9c5ad568b029470715758494a636147f49d0892f..ff509f9775b777cc2febe982bf52edaa66be119a 100644 (file)
@@ -25,7 +25,7 @@ from app.tasks.importtasks import importRepoScreenshot, makeVCSRelease, checkZip
 from app.tasks.forumtasks  import importTopicList, checkAllForumAccounts
 from flask_wtf import FlaskForm
 from wtforms import *
-from app.utils import loginUser, rank_required, triggerNotif
+from app.utils import loginUser, rank_required, addNotification
 import datetime, os
 
 @bp.route("/admin/", methods=["GET", "POST"])
@@ -108,7 +108,7 @@ def admin_page():
                                makeVCSRelease.apply_async((rel.id, "master"), task_id=rel.task_id)
 
                                msg = "{}: Release {} created".format(package.title, rel.title)
-                               triggerNotif(package.author, current_user, msg, rel.getEditURL())
+                               addNotification(package.maintainers, current_user, msg, rel.getEditURL())
                                db.session.commit()
 
                elif action == "cleanuploads":
index ee0d16215c53fa38dbe4d098a45fdea7dc99eae2..f50a8120d2ccf9d817b966f395970d68a2f632da 100644 (file)
@@ -99,8 +99,8 @@ def create_edit_editrequest_page(package, id=None):
                if wasChangeMade:
                        msg = "{}: Edit request #{} {}" \
                                        .format(package.title, erequest.id, "created" if id is None else "edited")
-                       triggerNotif(package.author, current_user, msg, erequest.getURL())
-                       triggerNotif(erequest.author, current_user, msg, erequest.getURL())
+                       addNotification(package.maintainers, current_user, msg, erequest.getURL())
+                       addNotification(erequest.author, current_user, msg, erequest.getURL())
                        db.session.commit()
                        return redirect(erequest.getURL())
                else:
@@ -142,8 +142,8 @@ def approve_editrequest_page(package, id):
                erequest.applyAll(package)
 
                msg = "{}: Edit request #{} merged".format(package.title, erequest.id)
-               triggerNotif(erequest.author, current_user, msg, erequest.getURL())
-               triggerNotif(package.author, current_user, msg, erequest.getURL())
+               addNotification(erequest.author, current_user, msg, erequest.getURL())
+               addNotification(package.maintainers, current_user, msg, erequest.getURL())
                db.session.commit()
 
        return redirect(package.getDetailsURL())
@@ -166,8 +166,8 @@ def reject_editrequest_page(package, id):
                erequest.status = 2
 
                msg = "{}: Edit request #{} rejected".format(package.title, erequest.id)
-               triggerNotif(erequest.author, current_user, msg, erequest.getURL())
-               triggerNotif(package.author, current_user, msg, erequest.getURL())
+               addNotification(erequest.author, current_user, msg, erequest.getURL())
+               addNotification(package.maintainers, current_user, msg, erequest.getURL())
                db.session.commit()
 
        return redirect(package.getDetailsURL())
index 4ba2a738a351b5585149816f9e8e6ded56c2074c..bfa3dd902d0132ff1028fd6d668ecf65c2c1177c 100644 (file)
@@ -265,7 +265,7 @@ def create_edit(author=None, name=None):
                        return redirect(url_for("packages.create_edit", author=author, name=name))
 
                else:
-                       triggerNotif(package.author, current_user,
+                       addNotification(package.maintainers, current_user,
                                        "{} edited".format(package.title), package.getDetailsURL())
 
                form.populate_obj(package) # copy to row
@@ -337,7 +337,7 @@ def approve(package):
                for s in screenshots:
                        s.approved = True
 
-               triggerNotif(package.author, current_user,
+               addNotification(package.maintainers, current_user,
                                "{} approved".format(package.title), package.getDetailsURL())
                db.session.commit()
 
@@ -359,7 +359,7 @@ def remove(package):
                package.soft_deleted = True
 
                url = url_for("users.profile", username=package.author.username)
-               triggerNotif(package.author, current_user,
+               addNotification(package.maintainers, current_user,
                                "{} deleted".format(package.title), url)
                db.session.commit()
 
@@ -373,7 +373,7 @@ def remove(package):
 
                package.approved = False
 
-               triggerNotif(package.author, current_user,
+               addNotification(package.maintainers, current_user,
                                "{} unapproved".format(package.title), package.getDetailsURL())
                db.session.commit()
 
@@ -408,19 +408,19 @@ def edit_maintainers(package):
 
                for user in users:
                        if not user in package.maintainers:
-                               triggerNotif(user, current_user,
+                               addNotification(user, current_user,
                                                "Added you as a maintainer of {}".format(package.title), package.getDetailsURL())
 
                for user in package.maintainers:
                        if user != package.author and not user in users:
-                               triggerNotif(user, current_user,
+                               addNotification(user, current_user,
                                                "Removed you as a maintainer of {}".format(package.title), package.getDetailsURL())
 
                package.maintainers.clear()
                package.maintainers.extend(users)
                package.maintainers.append(package.author)
 
-               triggerNotif(package.author, current_user,
+               addNotification(package.author, current_user,
                                "Edited {} maintainers".format(package.title), package.getDetailsURL())
 
                db.session.commit()
@@ -446,7 +446,7 @@ def remove_self_maintainers(package):
        else:
                package.maintainers.remove(current_user)
 
-               triggerNotif(package.author, current_user,
+               addNotification(package.author, current_user,
                                "Removed themself as a maintainer of {}".format(package.title), package.getDetailsURL())
 
                db.session.commit()
index 12be8f6570e8f3088faf72348eb757c0ede759f6..449873807eb6d52ab7fb449348eaf5f8a259b764 100644 (file)
@@ -93,7 +93,7 @@ def create_release(package):
                        makeVCSRelease.apply_async((rel.id, form["vcsLabel"].data), task_id=rel.task_id)
 
                        msg = "{}: Release {} created".format(package.title, rel.title)
-                       triggerNotif(package.author, current_user, msg, rel.getEditURL())
+                       addNotification(package.maintainers, current_user, msg, rel.getEditURL())
                        db.session.commit()
 
                        return redirect(url_for("tasks.check", id=rel.task_id, r=rel.getEditURL()))
@@ -113,7 +113,7 @@ def create_release(package):
                                checkZipRelease.apply_async((rel.id, uploadedPath), task_id=rel.task_id)
 
                                msg = "{}: Release {} created".format(package.title, rel.title)
-                               triggerNotif(package.author, current_user, msg, rel.getEditURL())
+                               addNotification(package.maintainers, current_user, msg, rel.getEditURL())
                                db.session.commit()
 
                                return redirect(url_for("tasks.check", id=rel.task_id, r=rel.getEditURL()))
index 4322e8d4114e22b184723bacebb41b5ff573500a..114afae5e910009f54388c8a689fb0341a097414 100644 (file)
@@ -22,7 +22,7 @@ from flask_wtf import FlaskForm
 from wtforms import *
 from wtforms.validators import *
 from app.models import db, PackageReview, Thread, ThreadReply
-from app.utils import is_package_page, triggerNotif
+from app.utils import is_package_page, addNotification
 
 class ReviewForm(FlaskForm):
        title   = StringField("Title", [InputRequired(), Length(3,100)])
@@ -88,8 +88,7 @@ def review(package):
                else:
                        notif_msg = "Updated review '{}' on package {}".format(form.title.data, package.title)
 
-               for maintainer in package.maintainers:
-                       triggerNotif(maintainer, current_user, notif_msg, url_for("threads.view", id=thread.id))
+               addNotification(package.maintainers, current_user, notif_msg, url_for("threads.view", id=thread.id))
 
                db.session.commit()
 
index 2646e2927501ec6d00d1ebd5807698f35dfecf32..68a3075a4067a4c181afd6847d91d0dc20e68f6f 100644 (file)
@@ -62,7 +62,7 @@ def create_screenshot(package, id=None):
 
                        msg = "{}: Screenshot added {}" \
                                        .format(package.title, ss.title)
-                       triggerNotif(package.author, current_user, msg, package.getDetailsURL())
+                       addNotification(package.maintainers, current_user, msg, package.getDetailsURL())
                        db.session.commit()
                        return redirect(package.getDetailsURL())
 
index c0b878ccb329f15556b04e1febcb90b670db45eb..09b5eb78fab4ad05e92575aad929f5f7ccbca85a 100644 (file)
@@ -21,7 +21,7 @@ bp = Blueprint("threads", __name__)
 
 from flask_user import *
 from app.models import *
-from app.utils import triggerNotif, clearNotifications
+from app.utils import addNotification, clearNotifications
 
 import datetime
 
@@ -113,10 +113,7 @@ def view(id):
                                msg = "New comment on '{}' on package {}".format(thread.title, thread.package.title)
 
 
-                       for user in thread.watchers:
-                               if user != current_user:
-                                       triggerNotif(user, current_user, msg, url_for("threads.view", id=thread.id))
-
+                       addNotification(thread.watchers, current_user, msg, url_for("threads.view", id=thread.id))
                        db.session.commit()
 
                        return redirect(url_for("threads.view", id=id))
@@ -206,13 +203,12 @@ def new():
                notif_msg = None
                if package is not None:
                        notif_msg = "New thread '{}' on package {}".format(thread.title, package.title)
-                       for maintainer in package.maintainers:
-                               triggerNotif(maintainer, current_user, notif_msg, url_for("threads.view", id=thread.id))
+                       addNotification(package.maintainers, current_user, notif_msg, url_for("threads.view", id=thread.id))
                else:
                        notif_msg = "New thread '{}'".format(thread.title)
 
-               for user in User.query.filter(User.rank >= UserRank.EDITOR).all():
-                       triggerNotif(user, current_user, notif_msg, url_for("threads.view", id=thread.id))
+               editors = User.query.filter(User.rank >= UserRank.EDITOR).all()
+               addNotification(editors, current_user, notif_msg, url_for("threads.view", id=thread.id))
 
                db.session.commit()
 
index d6e6eaa631d718a7701f2bbed01c2e754e71c634..67b4015e811ea9084123dd24efe8ef8ced2db3f1 100644 (file)
@@ -188,12 +188,19 @@ def is_package_page(f):
 
        return decorated_function
 
-def triggerNotif(owner, causer, title, url):
-       if owner.rank.atLeast(UserRank.NEW_MEMBER) and owner != causer:
-               Notification.query.filter_by(user=owner, causer=causer, title=title, url=url).delete()
-               notif = Notification(owner, causer, title, url)
+
+def addNotification(target, causer, title, url):
+       if not isinstance(target, User):
+               for x in target:
+                       addNotification(x, causer, title, url)
+               return
+
+       if target.rank.atLeast(UserRank.NEW_MEMBER) and target != causer:
+               Notification.query.filter_by(user=target, causer=causer, title=title, url=url).delete()
+               notif = Notification(target, causer, title, url)
                db.session.add(notif)
 
+
 def clearNotifications(url):
        if current_user.is_authenticated:
                Notification.query.filter_by(user=current_user, url=url).delete()