aboutsummaryrefslogtreecommitdiffstats
path: root/pysite/views/main/jams/retract.py
diff options
context:
space:
mode:
Diffstat (limited to 'pysite/views/main/jams/retract.py')
-rw-r--r--pysite/views/main/jams/retract.py83
1 files changed, 0 insertions, 83 deletions
diff --git a/pysite/views/main/jams/retract.py b/pysite/views/main/jams/retract.py
deleted file mode 100644
index 277426b5..00000000
--- a/pysite/views/main/jams/retract.py
+++ /dev/null
@@ -1,83 +0,0 @@
-from werkzeug.exceptions import BadRequest
-
-from pysite.base_route import RouteView
-from pysite.decorators import csrf
-from pysite.mixins import DBMixin, OAuthMixin
-
-BANNABLE_STATES = ("preparing", "running")
-
-
-class JamsProfileView(RouteView, DBMixin, OAuthMixin):
- path = "/jams/retract"
- name = "jams.retract"
-
- table_name = "code_jam_participants"
- infractions_table = "code_jam_infractions"
- jams_table = "code_jams"
- responses_table = "code_jam_responses"
-
- def get(self):
- if not self.user_data:
- return self.redirect_login()
-
- user_id = self.user_data["user_id"]
- participant = self.db.get(self.table_name, user_id)
-
- banned = False
-
- if participant:
- responses = self.db.run(self.db.query(self.responses_table).filter({"snowflake": user_id}), coerce=list)
-
- for response in responses:
- jam = response["jam"]
- jam_obj = self.db.get(self.jams_table, jam)
-
- if jam_obj:
- if jam_obj["state"] in BANNABLE_STATES:
- banned = True
- break
-
- return self.render(
- "main/jams/retract.html", participant=participant, banned=banned
- )
-
- @csrf
- def post(self):
- if not self.user_data:
- return self.redirect_login()
-
- user_id = self.user_data["user_id"]
- participant = self.db.get(self.table_name, user_id)
-
- if not participant:
- return BadRequest()
-
- banned = False
-
- responses = self.db.run(self.db.query(self.responses_table).filter({"snowflake": user_id}), coerce=list)
-
- for response in responses:
- jam = response["jam"]
- jam_obj = self.db.get(self.jams_table, jam)
-
- if jam_obj:
- if jam_obj["state"] in BANNABLE_STATES:
- banned = True
-
- self.db.delete(self.responses_table, response["id"])
-
- self.db.delete(self.table_name, participant["id"])
-
- if banned:
- self.db.insert(
- self.infractions_table, {
- "participant": user_id,
- "reason": "Automatic ban: Removed jammer profile in the middle of a code jam",
- "number": -1,
- "decremented_for": []
- }
- )
-
- return self.render(
- "main/jams/retracted.html", participant=participant, banned=banned
- )