aboutsummaryrefslogtreecommitdiffstats
path: root/pysite/views/api
diff options
context:
space:
mode:
authorGravatar Gareth Coles <[email protected]>2018-06-17 21:31:00 +0000
committerGravatar Gareth Coles <[email protected]>2018-06-17 21:31:00 +0000
commitdc2a5013fb93141f50dc92b4b8cc4d6004b8e814 (patch)
tree07a3c381d9b58890c14049f8a23e8154b33e0003 /pysite/views/api
parent[Wiki] Quick-fix for broken editor (diff)
Backend for team assignment
Diffstat (limited to 'pysite/views/api')
-rw-r--r--pysite/views/api/bot/user.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/pysite/views/api/bot/user.py b/pysite/views/api/bot/user.py
index d9efb829..ced39306 100644
--- a/pysite/views/api/bot/user.py
+++ b/pysite/views/api/bot/user.py
@@ -41,6 +41,7 @@ class UserView(APIView, DBMixin):
infractions_table = "code_jam_infractions"
jams_table = "code_jams"
responses_table = "code_jam_responses"
+ teams_table = "code_jam_teams"
@api_key
@api_params(schema=SCHEMA, validation_type=ValidationTypes.json)
@@ -92,6 +93,16 @@ class UserView(APIView, DBMixin):
self.db.delete(self.responses_table, response["id"], durability="soft")
response_deletions += 1
+ teams = self.db.run(
+ self.db.query(self.teams_table).filter(lambda row: row["members"].contains(user_id)),
+ coerce=list
+ )
+
+ for team in teams:
+ team["members"].remove(user_id)
+
+ self.db.insert(self.teams_table, team, conflict="replace", durability="soft")
+
if banned:
self.db.insert(
self.infractions_table, {
@@ -116,6 +127,7 @@ class UserView(APIView, DBMixin):
self.db.sync(self.participants_table)
self.db.sync(self.responses_table)
self.db.sync(self.table_name)
+ self.db.sync(self.teams_table)
changes["deleted"] = deletions
changes["deleted_oauth"] = oauth_deletions
@@ -176,6 +188,18 @@ class UserView(APIView, DBMixin):
self.db.delete(self.responses_table, response["id"])
response_deletions += 1
+ teams = self.db.run(
+ self.db.query(self.teams_table).filter(lambda row: row["members"].contains(user_id)),
+ coerce=list
+ )
+
+ for team in teams:
+ team["members"].remove(user_id)
+
+ self.db.insert(self.teams_table, team, conflict="replace", durability="soft")
+
+ self.db.sync(self.teams_table)
+
if banned:
self.db.insert(
self.infractions_table, {