return f.getvalue()
+ def upload_avatar(self, avatar):
+ self._set("jpegPhoto", avatar)
+
if __name__ == "__main__":
a = Accounts()
<div class="col-6">
<h4 class="mb-4">{{ _("Edit %s") % account }}</h4>
- <form method="POST" action="">
+ <form method="POST" action="" enctype="multipart/form-data">
{% raw xsrf_form_html() %}
<div class="form-row mb-3">
</small>
</div>
+ <div class="form-group">
+ <label>{{ _("Avatar") }}</label>
+
+ <input type="file" class="form-control-file" name="avatar">
+
+ <small class="form-text text-muted">
+ {{ _("Upload a new avatar") }}
+ </small>
+ </div>
+
+
<fieldset>
<legend>{{ _("Email") }}</legend>
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):
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)