forked from rc/aircox
52 lines
1.5 KiB
Python
52 lines
1.5 KiB
Python
import aircox_cms.routes as routes
|
|
|
|
class Website:
|
|
name = ''
|
|
domain = ''
|
|
description = 'An aircox website' # public description (used in meta info)
|
|
tags = 'aircox,radio,music' # public keywords (used in meta info)
|
|
|
|
styles = '' # relative url to stylesheet file
|
|
menus = None # list of menus
|
|
menu_layouts = ['top', 'left', # available positions
|
|
'right', 'bottom',
|
|
'header', 'footer']
|
|
router = None
|
|
|
|
@property
|
|
def urls (self):
|
|
return self.router.get_urlpatterns()
|
|
|
|
def __init__ (self, **kwargs):
|
|
self.__dict__.update(kwargs)
|
|
if not self.router:
|
|
self.router = routes.Router()
|
|
|
|
def register_set (self, view_set):
|
|
"""
|
|
Register a ViewSet (or subclass) to the router,
|
|
and connect it to self.
|
|
"""
|
|
view_set = view_set(website = self)
|
|
self.router.register_set(view_set)
|
|
|
|
def get_menu (self, position):
|
|
"""
|
|
Get an enabled menu by its position
|
|
"""
|
|
for menu in self.menus:
|
|
if menu.enabled and menu.position == position:
|
|
self.check_menu_tag(menu)
|
|
return menu
|
|
|
|
def check_menu_tag (self, menu):
|
|
"""
|
|
Update menu tag if it is a footer or a header
|
|
"""
|
|
if menu.position in ('footer','header'):
|
|
menu.tag = menu.position
|
|
if menu.position in ('left', 'right'):
|
|
menu.tag = 'side'
|
|
|
|
|