from os import environ from django.utils.translation import gettext_lazy as _ from grappelli.dashboard import Dashboard, modules from grappelli.dashboard.utils import get_admin_site_name from tgbot.models import TelegramBot server = environ.get("DATA_ACQUISITION_URL") class AdminDashboard(Dashboard): """ Custom index dashboard for admin page. """ css_collapse_closed = 'collapse closed' css_grp_closed = 'grp-closed' def init_with_context(self, context): telegram_bot = TelegramBot.objects.filter(is_polling=True).first() tgbot_link = getattr(telegram_bot, 'link', 'https://t.me/') # append a group for Taskbar self.children.append( modules.AppList( _('Taskbar'), column=1, collapsible=True, models=( 'links.models.*', 'taskbar.models.*', ), )) # append a group for Helpdesk self.children.append( modules.AppList( _('Helpdesk'), column=1, collapsible=True, css_classes=( self.css_collapse_closed, self.css_grp_closed, ), models=('helpdesk.models.*', ), )) # append a group for Informing self.children.append( modules.AppList( _('Informing'), column=1, collapsible=True, css_classes=( self.css_collapse_closed, self.css_grp_closed, ), models=('informing.models.*', ), )) # append a group for additional functions or links self.children.append( modules.LinkList( _('Features'), column=3, collapsible=False, children=[ { 'title': _('FileBrowser'), 'url': 'filebrowser/browse/', 'external': False, }, { 'title': _('Telegram password'), 'url': 'tgpassword/', 'external': False, }, { 'title': _('Telegram bot'), 'url': tgbot_link, 'external': True, 'target': '_blank', }, { 'title': _('Projects'), 'url': f'{server}homer/', 'external': True, 'target': '_blank', }, { 'title': _('Download client'), 'url': f'{server}media/releases/sebn-taskbar-client/', 'external': True, 'target': '_blank', }, { 'title': _('Manual'), 'url': f'../backend/attachments/docs/manual.pptx', 'external': True, }, ]), ) # append a group for users and groups self.children.append( modules.AppList( _('Users'), column=2, collapsible=True, models=( 'django.contrib.*', 'tgbot.models.*', ), css_classes=( self.css_collapse_closed, self.css_grp_closed, ), ), ) # append a group for users and groups self.children.append( modules.AppList( _('API'), column=2, collapsible=True, models=('rest_framework_api_key.models.APIKey', ), css_classes=( self.css_collapse_closed, self.css_grp_closed, ), ), ) # append a group for celery self.children.append( modules.AppList( _('Celery'), column=2, collapsible=True, models=('*celery*', ), css_classes=( self.css_collapse_closed, self.css_grp_closed, ), )) # append a recent actions module self.children.append( modules.RecentActions( _('Recent actions'), limit=15, collapsible=True, column=3, css_classes=( self.css_collapse_closed, self.css_grp_closed, ), ))