import logging from flask_admin import AdminIndexView, expose from flask_admin.contrib.sqla import ModelView from flask_admin.menu import MenuLink from wtforms.fields import IntegerField from wtforms.validators import DataRequired from src.auth import Auth from src.utils import has_basic_access log = logging.getLogger(__name__) class HomeView(AdminIndexView): @expose("/") def index(self): template = "admin/login.html" if has_basic_access(): template = self._template return self.render(template, is_access_granted=has_basic_access()) class LoginMenuLink(MenuLink): def is_accessible(self): return not has_basic_access() class LogoutMenuLink(MenuLink): def is_accessible(self): return has_basic_access() class CampaignPlacementsView(Auth, ModelView): column_sortable_list = ("name",) column_searchable_list = ["name"] page_size = 100 can_view_details = True can_set_page_size = True can_create = True can_edit = True can_delete = True can_export = True class CampaignPlatformsView(Auth, ModelView): column_sortable_list = ("name",) column_searchable_list = ["name"] page_size = 100 can_view_details = True can_set_page_size = True can_create = True can_edit = True can_delete = True can_export = True class CampaignPlatformGroupsView(Auth, ModelView): page_size = 100 can_view_details = True can_set_page_size = True can_create = True can_edit = True can_delete = True can_export = True class LabelView(Auth, ModelView): column_list = ["id", "name", "external_name", "country", "abbreviation"] column_sortable_list = ("name", "id") column_searchable_list = ["name", "id"] page_size = 100 can_view_details = True can_set_page_size = True can_create = True can_edit = True can_delete = True can_export = True form_extra_fields = { 'id': IntegerField('id', [DataRequired()]) } class MarketingAccountView(Auth, ModelView): column_list = ["id", "name", "external_id", "label", "source"] column_sortable_list = ("name", "id") column_searchable_list = ["name", "id", "external_id"] page_size = 100 can_view_details = True can_set_page_size = True can_create = True can_edit = True can_delete = True can_export = True class ProfitCenterView(Auth, ModelView): column_sortable_list = ("name", "id") column_searchable_list = ["name", "id"] page_size = 100 can_view_details = True can_set_page_size = True can_create = True can_edit = True can_delete = True can_export = True