diff options
| author | 2018-06-17 21:31:00 +0000 | |
|---|---|---|
| committer | 2018-06-17 21:31:00 +0000 | |
| commit | 915f073b4c0979845a9d70c4482a253d447354eb (patch) | |
| tree | 07a3c381d9b58890c14049f8a23e8154b33e0003 /pysite/views/api | |
| parent | [Wiki] Quick-fix for broken editor (diff) | |
| parent | Backend for team assignment (diff) | |
Merge branch 'code-jam-backend-teams' into 'master'
Backend for team assignment
See merge request python-discord/projects/site!6
Diffstat (limited to 'pysite/views/api')
| -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, { | 
