add decorators 'webpage' decorator for 'website', rewrite views
This commit is contained in:
29
website/decorators.py
Normal file
29
website/decorators.py
Normal file
@@ -0,0 +1,29 @@
|
||||
from .mixins import *
|
||||
|
||||
def _insert_bases(cls, bases):
|
||||
old_bases = cls.__bases__
|
||||
new_bases = tuple(bases) + old_bases
|
||||
print(new_bases)
|
||||
cls.__bases__ = new_bases
|
||||
|
||||
def webpage(**options):
|
||||
try: ajax = options.pop('ajax')
|
||||
except KeyError: ajax = False
|
||||
try: permissions = options.pop('permissions')
|
||||
except KeyError: permissions = []
|
||||
|
||||
new_bases = []
|
||||
if ajax:
|
||||
new_bases.append(WebsiteAjaxTemplateMixin)
|
||||
else:
|
||||
new_bases.append(WebsiteTemplateMixin)
|
||||
if permissions:
|
||||
new_bases.append(PermissionRequiredMixin)
|
||||
|
||||
def update_class(cls):
|
||||
_insert_bases(cls, new_bases)
|
||||
if permissions:
|
||||
cls.permissions = permissions
|
||||
return cls
|
||||
|
||||
return update_class
|
||||
Reference in New Issue
Block a user