diff options
| author | 2018-05-19 20:20:51 +0100 | |
|---|---|---|
| committer | 2018-05-19 20:20:51 +0100 | |
| commit | c438ec429c0d9f2bb8b7fffd0dc97041445b97a3 (patch) | |
| tree | 2feff91c88780a9d60f9e60bead51838187bff30 /pysite/views/main/jams/profile.py | |
| parent | Fix infractions setup (diff) | |
Jammer profiles
Diffstat (limited to 'pysite/views/main/jams/profile.py')
| -rw-r--r-- | pysite/views/main/jams/profile.py | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/pysite/views/main/jams/profile.py b/pysite/views/main/jams/profile.py new file mode 100644 index 00000000..407f842e --- /dev/null +++ b/pysite/views/main/jams/profile.py @@ -0,0 +1,59 @@ +import datetime + +from flask import redirect, request, url_for +from werkzeug.exceptions import BadRequest + +from pysite.base_route import RouteView +from pysite.decorators import csrf +from pysite.mixins import DBMixin, OauthMixin + + +class JamsProfileView(RouteView, DBMixin, OauthMixin): + path = "/jams/profile" + name = "jams.profile" + + table_name = "code_jam_participants" + + def get(self): + if not self.user_data: + return redirect(url_for("discord.login")) + + participant = self.db.get(self.table_name, self.user_data["user_id"]) + + if not participant: + participant = {"id": self.user_data["user_id"]} + + return self.render( + "main/jams/profile.html", participant=participant + ) + + @csrf + def post(self): + if not self.user_data: + return redirect(url_for("discord.login")) + + participant = self.db.get(self.table_name, self.user_data["user_id"]) + + if not participant: + participant = {"id": self.user_data["user_id"]} + + dob = request.form.get("dob") + github_username = request.form.get("github_username") + timezone = request.form.get("timezone") + + if not dob or not github_username or not timezone: + return BadRequest() + + # Convert given datetime strings into actual objects, adding timezones to keep rethinkdb happy + dob = datetime.datetime.strptime(dob, "%Y-%m-%d") + dob = dob.replace(tzinfo=datetime.timezone.utc) + + participant["dob"] = dob + participant["github_username"] = github_username + participant["timezone"] = timezone + + self.db.insert(self.table_name, participant, conflict="replace") + + return self.render( + "main/jams/profile.html", participant=participant, done=True + ) |