Make it possible to set the instance admin

This commit is contained in:
2018-07-25 20:50:12 +02:00
parent 4b1fff6544
commit 029d29ffb1
2 changed files with 80 additions and 4 deletions

View File

@@ -19,8 +19,10 @@
from datetime import datetime
import os
from warnings import warn
from flask import Flask, abort, current_app, redirect, render_template, request, url_for
from flask import Flask, abort, current_app, has_app_context, redirect, render_template, request, \
url_for
from flask_babelex import Babel, get_locale as babel_get_locale
from flask_security import SQLAlchemyUserDatastore, current_user, login_required
from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound
@@ -127,9 +129,6 @@ class CalendarSocialApp(Flask, RoutedMixin):
"""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
@@ -148,6 +147,32 @@ class CalendarSocialApp(Flask, RoutedMixin):
return self._timezone
@property
def instance_admin(self):
"""The admin user of this instance
"""
from calsocial.models import AppState, User
if not has_app_context():
return None
admin_id = AppState['instance_admin']
try:
admin_id = int(admin_id)
except (TypeError, ValueError):
warn(f'Instance admin is not set correctly (value is {admin_id})')
return None
try:
return User.query.filter(User.id == admin_id).one()
except NoResultFound:
warn(f'Instance admin is not set correctly (value is {admin_id})')
return None
@staticmethod
def _current_calendar():
from .calendar_system.gregorian import GregorianCalendar