123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- # coding=utf-8
- import typing
- from copy import copy
-
- from tracim_backend.models.applications import applications
- from tracim_backend.models.data import Workspace
-
-
- class WorkspaceMenuEntry(object):
- """
- Application class with data needed for frontend
- """
- def __init__(
- self,
- label: str,
- slug: str,
- fa_icon: str,
- hexcolor: str,
- route: str,
- ) -> None:
- self.slug = slug
- self.label = label
- self.route = route
- self.hexcolor = hexcolor
- self.fa_icon = fa_icon
-
- dashboard_menu_entry = WorkspaceMenuEntry(
- slug='dashboard',
- label='Dashboard',
- route='/#/workspaces/{workspace_id}/dashboard',
- hexcolor='#252525',
- fa_icon="signal",
- )
- all_content_menu_entry = WorkspaceMenuEntry(
- slug="contents/all",
- label="All Contents",
- route="/#/workspaces/{workspace_id}/contents",
- hexcolor="#fdfdfd",
- fa_icon="th",
- )
-
- # TODO - G.M - 08-06-2018 - This is hardcoded default menu entry,
- # of app, make this dynamic (and loaded from application system)
- def default_workspace_menu_entry(
- workspace: Workspace,
- )-> typing.List[WorkspaceMenuEntry]:
- """
- Get default menu entry for a workspace
- """
- menu_entries = [
- copy(dashboard_menu_entry),
- copy(all_content_menu_entry),
- ]
- for app in applications:
- if app.main_route:
- new_entry = WorkspaceMenuEntry(
- slug=app.slug,
- label=app.label,
- hexcolor=app.hexcolor,
- fa_icon=app.fa_icon,
- route=app.main_route
- )
- menu_entries.append(new_entry)
-
- for entry in menu_entries:
- entry.route = entry.route.replace(
- '{workspace_id}',
- str(workspace.workspace_id)
- )
-
- return menu_entries
|