forked from gergely/calendar-social
Add the timezone property to app
It will make it easier to get a default time zone.
This commit is contained in:
parent
ba7c766316
commit
943021e152
@ -80,6 +80,8 @@ class CalendarSocialApp(Flask):
|
|||||||
|
|
||||||
Flask.__init__(self, name)
|
Flask.__init__(self, name)
|
||||||
|
|
||||||
|
self._timezone = None
|
||||||
|
|
||||||
config_name = os.environ.get('ENV', config or 'dev')
|
config_name = os.environ.get('ENV', config or 'dev')
|
||||||
self.config.from_pyfile(f'config_{config_name}.py', True)
|
self.config.from_pyfile(f'config_{config_name}.py', True)
|
||||||
# Make sure we look up users both by their usernames and email addresses
|
# Make sure we look up users both by their usernames and email addresses
|
||||||
@ -106,6 +108,32 @@ class CalendarSocialApp(Flask):
|
|||||||
|
|
||||||
self.route(*args, **kwargs)(attr)
|
self.route(*args, **kwargs)(attr)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def timezone(self):
|
||||||
|
"""The default time zone of the app
|
||||||
|
"""
|
||||||
|
|
||||||
|
from warnings import warn
|
||||||
|
|
||||||
|
from flask import has_app_context
|
||||||
|
from pytz import timezone, utc
|
||||||
|
from pytz.exceptions import UnknownTimeZoneError
|
||||||
|
|
||||||
|
if not has_app_context():
|
||||||
|
return utc
|
||||||
|
|
||||||
|
if not self._timezone:
|
||||||
|
timezone_str = current_app.settings.get('DEFAULT_TIMEZONE', 'UTC')
|
||||||
|
|
||||||
|
try:
|
||||||
|
self._timezone = timezone(timezone_str)
|
||||||
|
except UnknownTimeZoneError:
|
||||||
|
warn(f'Timezone of {self} (or the default timezone) "{timezone_str}" is invalid')
|
||||||
|
|
||||||
|
self._timezone = utc
|
||||||
|
|
||||||
|
return self._timezone
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@route('/')
|
@route('/')
|
||||||
def hello():
|
def hello():
|
||||||
|
@ -111,19 +111,18 @@ class User(db.Model, UserMixin):
|
|||||||
@property
|
@property
|
||||||
def timezone(self):
|
def timezone(self):
|
||||||
from flask import current_app
|
from flask import current_app
|
||||||
from pytz import timezone, UTC
|
from pytz import timezone
|
||||||
from pytz.exceptions import UnknownTimeZoneError
|
from pytz.exceptions import UnknownTimeZoneError
|
||||||
|
|
||||||
timezone_str = self.settings['timezone']
|
timezone_str = self.settings['timezone']
|
||||||
|
|
||||||
if not timezone_str:
|
if timezone_str:
|
||||||
timezone_str = current_app.settings.get('DEFAULT_TIMEZONE', 'UTC')
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return timezone(timezone_str)
|
return timezone(timezone_str)
|
||||||
except pytz.exceptions.UnknownTimeZoneError:
|
except UnknownTimeZoneError:
|
||||||
warn(f'Timezone of {user} (or the default timezone) "{timezone_str}" is invalid')
|
warn(f'Timezone of {self} (or the default timezone) "{timezone_str}" is invalid')
|
||||||
return UTC
|
|
||||||
|
return current_app.timezone
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f'<User {self.id}({self.username})>'
|
return f'<User {self.id}({self.username})>'
|
||||||
|
Loading…
Reference in New Issue
Block a user