From: Michael Tremer Date: Tue, 16 Oct 2018 23:47:17 +0000 (+0100) Subject: people: Allow uploading an avatar X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5cc1042180efc2fef96f64c96f5f6a9cb5ffc1ed;p=ipfire.org.git people: Allow uploading an avatar Signed-off-by: Michael Tremer --- diff --git a/src/backend/accounts.py b/src/backend/accounts.py index aa8b5024..89163084 100644 --- a/src/backend/accounts.py +++ b/src/backend/accounts.py @@ -544,6 +544,9 @@ class Account(Object): return f.getvalue() + def upload_avatar(self, avatar): + self._set("jpegPhoto", avatar) + if __name__ == "__main__": a = Accounts() diff --git a/src/templates/people/user-edit.html b/src/templates/people/user-edit.html index 24b4521e..57e4e28f 100644 --- a/src/templates/people/user-edit.html +++ b/src/templates/people/user-edit.html @@ -7,7 +7,7 @@

{{ _("Edit %s") % account }}

-
+ {% raw xsrf_form_html() %}
@@ -37,6 +37,17 @@
+
+ + + + + + {{ _("Upload a new avatar") }} + +
+ +
{{ _("Email") }} diff --git a/src/web/handlers_base.py b/src/web/handlers_base.py index 0e26bbb0..67bee54c 100644 --- a/src/web/handlers_base.py +++ b/src/web/handlers_base.py @@ -105,6 +105,14 @@ class BaseHandler(tornado.web.RequestHandler): except ValueError: raise tornado.web.HTTPError(400) + def get_file(self, name): + try: + file = self.request.files[name][0] + + return file["filename"], file["body"], file["content_type"] + except KeyError: + return None + # Login stuff def get_current_user(self): diff --git a/src/web/people.py b/src/web/people.py index bcaae6f3..c4d00989 100644 --- a/src/web/people.py +++ b/src/web/people.py @@ -150,6 +150,17 @@ class UserEditHandler(base.BaseHandler): account.last_name = self.get_argument("last_name") account.address = self.get_argument("address") + # Avatar + try: + filename, data, mimetype = self.get_file("avatar") + + if not mimetype.startswith("image/"): + raise tornado.web.HTTPError(400, "Avatar is not an image file: %s" % mimetype) + + account.upload_avatar(data) + except ValueError: + pass + # Email account.mail_routing_address = self.get_argument("mail_routing_address", None)