diff options
author | 2018-05-31 15:40:06 +0100 | |
---|---|---|
committer | 2018-05-31 15:40:06 +0100 | |
commit | f3e8b42aa9c56430d77168bc861d8e958c788686 (patch) | |
tree | 859c22e5e9f8593f22853575a395f0dba0b3ca45 | |
parent | [RMQ] Finish events implementation; add jammer role to constants (diff) |
[Jams] Add mod-log logging of code jam application status
-rw-r--r-- | pysite/views/main/jams/join.py | 50 |
1 files changed, 48 insertions, 2 deletions
diff --git a/pysite/views/main/jams/join.py b/pysite/views/main/jams/join.py index c4011170..546a0444 100644 --- a/pysite/views/main/jams/join.py +++ b/pysite/views/main/jams/join.py @@ -4,11 +4,12 @@ from flask import redirect, request, url_for from werkzeug.exceptions import BadRequest, NotFound from pysite.base_route import RouteView +from pysite.constants import BotEventTypes from pysite.decorators import csrf -from pysite.mixins import DBMixin, OAuthMixin +from pysite.mixins import DBMixin, OAuthMixin, RMQMixin -class JamsJoinView(RouteView, DBMixin, OAuthMixin): +class JamsJoinView(RouteView, DBMixin, OAuthMixin, RMQMixin): path = "/jams/join/<int:jam>" name = "jams.join" @@ -82,6 +83,7 @@ class JamsJoinView(RouteView, DBMixin, OAuthMixin): for infraction in infractions: if infraction["number"] == -1: # Indefinite ban + self.log_banned(infraction["number"], infraction["reason"]) return self.render("main/jams/banned.html", infraction=infraction) if infraction["number"]: # Got some jams left @@ -92,10 +94,12 @@ class JamsJoinView(RouteView, DBMixin, OAuthMixin): self.db.insert(self.infractions_table, infraction, conflict="replace") + self.log_banned(infraction["number"], infraction["reason"]) return self.render("main/jams/banned.html", infraction=infraction, jam=jam_obj) if jam in infraction["decremented_for"]: # They already tried to apply for this jam + self.log_banned(infraction["number"], infraction["reason"]) return self.render("main/jams/banned.html", infraction=infraction, jam=jam_obj) participant = self.db.get(self.participants_table, self.user_data["user_id"]) @@ -173,6 +177,8 @@ class JamsJoinView(RouteView, DBMixin, OAuthMixin): } self.db.insert(self.responses_table, response) + self.log_success() + return self.render("main/jams/thanks.html", jam=jam_obj) def get_response(self, jam, user_id): @@ -186,3 +192,43 @@ class JamsJoinView(RouteView, DBMixin, OAuthMixin): def get_infractions(self, user_id): query = self.db.query(self.infractions_table).filter({"participant": user_id}) return self.db.run(query, coerce=list) + + def log_banned(self, number, reason): + user_data = self.user_data + + user_id = user_data["user_id"] + username = user_data["username"] + discriminator = user_data["discriminator"] + + message = f"Failed code jam signup from banned user: {user_id} ({username}#{discriminator})\n\n" + + if number == -1: + message += f"This user has been banned indefinitely. Reason: '{reason}'" + elif number < 1: + message += f"This application has expired the infraction. Reason: '{reason}'" + else: + message += f"This user has {number} more applications left before they're unbanned. Reason: '{reason}'" + + self.rmq_bot_event( + BotEventTypes.mod_log, + { + "level": "warning", "title": "Code Jams: Applications", + "message": message + } + ) + + def log_success(self): + user_data = self.user_data + + user_id = user_data["user_id"] + username = user_data["username"] + discriminator = user_data["discriminator"] + + self.rmq_bot_event( + BotEventTypes.mod_log, + { + "level": "info", "title": "Code Jams: Applications", + "message": f"Successful code jam signup from user: {user_id} " + f"({username}#{discriminator})" + } + ) |