|
1 | 1 | class Menu:
|
2 | 2 | active_url = None
|
3 | 3 |
|
4 |
| - def __init__(self, name, url=None, icon=None, *submenu, **kwargs): |
| 4 | + def __init__(self, name, url=None, icon=None, *submenu): |
| 5 | + if self.active_url is None: |
| 6 | + raise RuntimeError("Active url is not set when menu item is created") |
| 7 | + |
5 | 8 | self.name = name
|
6 | 9 | self.icon = icon if icon else ''
|
7 |
| - self.url = url if url else '' |
| 10 | + self.url = url |
8 | 11 | self.submenu = submenu
|
9 | 12 | self.active = (url == self.active_url or
|
10 | 13 | any(sm.active for sm in self.submenu))
|
| 14 | + print(self.name, self.url) |
| 15 | + |
| 16 | + @classmethod |
| 17 | + def set_url(cls, url): |
| 18 | + cls.active_url = '' if url is None else url |
11 | 19 |
|
12 | 20 | @property
|
13 | 21 | def menu_class(self):
|
14 | 22 | return 'sub-menu' if self.submenu else 'mf'
|
15 | 23 |
|
16 | 24 |
|
17 | 25 | def navigation(request):
|
18 |
| - Menu.active_url = request.resolver_match.url_name |
19 |
| - print(Menu.active_url) |
20 |
| - menu = [Menu("Dashboard", icon='fa-dashboard'), |
| 26 | + Menu.set_url(request.resolver_match.url_name) |
| 27 | + |
| 28 | + menu = [Menu("Dashboard", 'index', icon='fa-dashboard'), |
| 29 | + |
21 | 30 | Menu("Collaboration", None, 'fa-cogs',
|
22 | 31 | Menu("Projects", url='project-list'),
|
23 | 32 | Menu("Files", url='file-list'),
|
24 | 33 | Menu("Tasks", url='task-list'),
|
25 |
| - Menu("Instances", url='instance-list')), |
| 34 | + Menu("Instances", url='instance-list'))] |
26 | 35 |
|
27 |
| - Menu("Account", None, 'fa-desktop', |
28 |
| - Menu("Your profile", url='profile'), |
29 |
| - # Menu("Settings", url='settings'), |
30 |
| - Menu("Logout", url='auth_logout'))] |
| 36 | + if request.user.is_authenticated(): |
| 37 | + account = Menu("Account", None, 'fa-desktop', |
| 38 | + Menu("Your profile", url='profile'), |
| 39 | + # Menu("Settings", url='settings'), |
| 40 | + Menu("Logout", url='auth_logout')) |
| 41 | + else: |
| 42 | + account = Menu("Login", 'auth_login') |
| 43 | + menu.append(account) |
31 | 44 |
|
32 | 45 | return {'navigation': menu}
|
0 commit comments