Add bulk notification sending

This commit is contained in:
rubenwardy 2020-12-05 21:41:53 +00:00
parent da3175e7bd
commit 79230c1b0e
3 changed files with 49 additions and 1 deletions

View File

@ -22,11 +22,12 @@ from flask import *
from flask_login import current_user
from flask_wtf import FlaskForm
from wtforms import *
from wtforms.validators import InputRequired, Length
from app.models import *
from app.tasks.forumtasks import importTopicList, checkAllForumAccounts
from app.tasks.importtasks import importRepoScreenshot, checkZipRelease, updateMetaFromRelease, importForeignDownloads
from app.utils import loginUser, rank_required
from app.utils import loginUser, rank_required, addAuditLog, addNotification
from . import bp
@ -189,3 +190,26 @@ def switch_user():
# Process GET or invalid POST
return render_template("admin/switch_user.html", form=form)
class SendNotificationForm(FlaskForm):
title = StringField("Title", [InputRequired(), Length(1, 300)])
url = StringField("URL", [InputRequired(), Length(1, 100)], default="/")
submit = SubmitField("Send")
@bp.route("/admin/send-notification/", methods=["GET", "POST"])
@rank_required(UserRank.ADMIN)
def send_bulk_notification():
form = SendNotificationForm(request.form)
if form.validate_on_submit():
addAuditLog(AuditSeverity.MODERATION, current_user,
"Sent bulk notification", None, None, form.title.data)
users = User.query.filter(User.rank >= UserRank.NEW_MEMBER).all()
addNotification(users, current_user, NotificationType.OTHER, form.title.data, form.url.data, None)
db.session.commit()
return redirect(url_for("admin.admin_page"))
return render_template("admin/send_bulk_notification.html", form=form)

View File

@ -14,6 +14,7 @@
<a class="list-group-item list-group-item-action" href="{{ url_for('admin.version_list') }}">Version Editor</a>
<a class="list-group-item list-group-item-action" href="{{ url_for('admin.warning_list') }}">Warning Editor</a>
<a class="list-group-item list-group-item-action" href="{{ url_for('admin.send_bulk_email') }}">Send bulk email</a>
<a class="list-group-item list-group-item-action" href="{{ url_for('admin.send_bulk_notification') }}">Send bulk notification</a>
<a class="list-group-item list-group-item-action" href="{{ url_for('admin.switch_user') }}">Sign in as another user</a>
</div>
</div>

View File

@ -0,0 +1,23 @@
{% extends "base.html" %}
{% block title %}
{{ _("Send bulk notification") }}
{% endblock %}
{% block content %}
<h1>{{ self.title() }}</h1>
<p class="alert alert-danger">
<b>BE VERY CAREFUL.</b>
This will send a notification to all active users.
</p>
{% from "macros/forms.html" import render_field, render_submit_field %}
<form action="" method="POST" class="form" role="form">
{{ form.hidden_tag() }}
{{ render_field(form.title) }}
{{ render_field(form.url) }}
{{ render_submit_field(form.submit) }}
</form>
{% endblock %}