import ldap
import tornado.web
-from .. import countries
-
from . import base
from . import ui_modules
self.render("people/sip.html", account=account)
-class UserEditHandler(base.BaseHandler):
- @tornado.web.authenticated
- def get(self, uid):
- account = self.backend.accounts.get_by_uid(uid)
- if not account:
- raise tornado.web.HTTPError(404, "Could not find account %s" % uid)
-
- # Check for permissions
- if not account.can_be_managed_by(self.current_user):
- raise tornado.web.HTTPError(403, "%s cannot manage %s" % (self.current_user, account))
-
- self.render("people/user-edit.html", account=account, countries=countries.get_all())
-
- @tornado.web.authenticated
- def post(self, uid):
- account = self.backend.accounts.get_by_uid(uid)
- if not account:
- raise tornado.web.HTTPError(404, "Could not find account %s" % uid)
-
- # Check for permissions
- if not account.can_be_managed_by(self.current_user):
- raise tornado.web.HTTPError(403, "%s cannot manage %s" % (self.current_user, account))
-
- # Unfortunately this cannot be wrapped into a transaction
- try:
- account.first_name = self.get_argument("first_name")
- account.last_name = self.get_argument("last_name")
- account.nickname = self.get_argument("nickname", None)
- account.street = self.get_argument("street", None)
- account.city = self.get_argument("city", None)
- account.postal_code = self.get_argument("postal_code", None)
- account.country_code = self.get_argument("country_code", None)
- account.description = self.get_argument("description", None)
-
- # 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 TypeError:
- pass
-
- # Email
- account.mail_routing_address = self.get_argument("mail_routing_address", None)
-
- # Telephone
- account.phone_numbers = self.get_argument("phone_numbers", "").splitlines()
- account.sip_routing_address = self.get_argument("sip_routing_address", None)
- except ldap.STRONG_AUTH_REQUIRED as e:
- raise tornado.web.HTTPError(403, "%s" % e) from e
-
- # Redirect back to user page
- self.redirect("/users/%s" % account.uid)
-
-
class AgentModule(ui_modules.UIModule):
def render(self, account):
return self.render_string("people/modules/agent.html", account=account)