import itertools
import os.path
import phonenumbers
+import phonenumbers.geocoder
import tornado.locale
import tornado.options
import tornado.web
# 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
(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)
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):
"""