diff options
author | 2018-06-17 21:31:00 +0000 | |
---|---|---|
committer | 2018-06-17 21:31:00 +0000 | |
commit | dc2a5013fb93141f50dc92b4b8cc4d6004b8e814 (patch) | |
tree | 07a3c381d9b58890c14049f8a23e8154b33e0003 /pysite/views/api/bot/user.py | |
parent | [Wiki] Quick-fix for broken editor (diff) |
Backend for team assignment
Diffstat (limited to 'pysite/views/api/bot/user.py')
-rw-r--r-- | pysite/views/api/bot/user.py | 24 |
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, { |