]> git.ipfire.org Git - ipfire.org.git/blobdiff - src/web/__init__.py
people: Add page to edit user accounts
[ipfire.org.git] / src / web / __init__.py
index c6af8296079d26bcf80ce8d238b2b3e208bca535..0162d49a7ba3a1497b3a9484ced4cab41afd0944 100644 (file)
@@ -4,6 +4,7 @@ import logging
 import itertools
 import os.path
 import phonenumbers
+import phonenumbers.geocoder
 import tornado.locale
 import tornado.options
 import tornado.web
@@ -41,9 +42,11 @@ class Application(tornado.web.Application):
 
                        # UI Modules
                        "ui_methods" : {
-                               "format_month_name"   : self.format_month_name,
-                               "format_phone_number" : self.format_phone_number,
-                               "grouper"             : grouper,
+                               "format_month_name"            : self.format_month_name,
+                               "format_phone_number"          : self.format_phone_number,
+                               "format_phone_number_to_e164"  : self.format_phone_number_to_e164,
+                               "format_phone_number_location" : self.format_phone_number_location,
+                               "grouper"                      : grouper,
                        },
                        "ui_modules" : {
                                # Blog
@@ -252,6 +255,7 @@ class Application(tornado.web.Application):
                        (r"/users/(\w+)", people.UserHandler),
                        (r"/users/(\w+)\.jpg", people.AvatarHandler),
                        (r"/users/(\w+)/calls(?:/(\d{4}-\d{2}-\d{2}))?", people.CallsHandler),
+                       (r"/users/(\w+)/edit", people.UserEditHandler),
                        (r"/users/(\w+)/registrations", people.RegistrationsHandler),
                ]  + authentication_handlers)
 
@@ -292,14 +296,26 @@ class Application(tornado.web.Application):
 
                return month
 
-       def format_phone_number(self, handler, s):
-               try:
-                       number = phonenumbers.parse(s, None)
-               except phonenumbers.phonenumberutil.NumberParseException:
-                       return s
+       def format_phone_number(self, handler, number):
+               if not isinstance(number, phonenumbers.PhoneNumber):
+                       try:
+                               number = phonenumbers.parse(s, None)
+                       except phonenumbers.phonenumberutil.NumberParseException:
+                               return number
 
                return phonenumbers.format_number(number, phonenumbers.PhoneNumberFormat.INTERNATIONAL)
 
+       def format_phone_number_to_e164(self, handler, number):
+               return phonenumbers.format_number(number, phonenumbers.PhoneNumberFormat.E164)
+
+       def format_phone_number_location(self, handler, number):
+               s = [
+                       phonenumbers.geocoder.description_for_number(number, handler.locale.code),
+                       phonenumbers.region_code_for_number(number),
+               ]
+
+               return ", ".join((e for e in s if e))
+
 
 def grouper(handler, iterator, n):
        """