123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- from django.conf import settings
- from django.templatetags.static import static
- from django.forms.models import model_to_dict
- from django.utils.translation import gettext as _
- import time
-
-
- available_themes = [
- ('default', 'Default'),
- ('clear-red', 'Clear Red'),
- ('clear-green', 'Clear Green'),
- ('clear-blue', 'Clear Blue'),
- ]
- default_theme = 'default'
-
-
- class ThemeSettings(object):
- def __init__(self):
- from .models import Setting
- s = Setting.objects.filter(id=1).first()
- if s is None:
- s = Setting(id=1)
- s.save()
- for attr_name in model_to_dict(s):
- attr = getattr(s, attr_name)
- if attr_name == 'page_theme' and attr == 'default':
- setattr(self, attr_name, settings.DEFAULT_THEME)
- else:
- setattr(self, attr_name, attr)
-
-
- class bar(list):
- def __init__(self, turn_around=False):
- self.time_measurement = time_measurement()
- list.__init__(self)
- self.turn_around = turn_around
- self.debug = False
-
- def index(self, entry_uid):
- for i in range(0, len(self)):
- if self[i].uid == entry_uid:
- return i
- raise ValueError('not in list')
-
- def append_entry(self, *args, **kwargs):
- self.append(entry(*args, **kwargs))
-
- def replace_entry(self, entry_uid, *args, **kwargs):
- i = self.index(entry_uid)
- self[i] = entry(*args, **kwargs)
-
- def append_entry_to_entry(self, entry_uid, *args, **kwargs):
- i = self.index(entry_uid)
- self[i].append(entry(*args, **kwargs))
-
- @property
- def entries(self):
- rv = self[:]
- if self.turn_around is True:
- rv.reverse()
- if self.debug is True:
- rv.append(entry('time_measurement', self.time_measurement.time_str, None, None, True, False))
- return rv
-
-
- class Context(dict):
- ACTIONBAR = 'actionbar'
- BOTTOMBAR = 'bottombar'
- MENUBAR = 'menubar'
- NAVIGATIONBAR = 'navigationbar'
- SETTINGS = 'settings'
- TITLE = 'title'
-
- def __init__(self, request):
- from .models import BottomBar
- #
- dict.__init__(
- self,
- bottombar=bar(),
- actionbar=bar(),
- navigationbar=bar(turn_around=True),
- menubar=bar(),
- settings=ThemeSettings(),
- title=ThemeSettings().page_title,
- )
- #
- for i in range(1, 6):
- for e in BottomBar.objects.filter(sequence_number=i):
- if e.icon:
- icon_url = e.icon.url
- else:
- icon_url = None
- self[self.BOTTOMBAR].append(entry(
- 'bootombar-%d' % e.id,
- e.name,
- icon_url,
- e.url,
- e.left,
- False
- ))
- if settings.DEBUG:
- self[self.BOTTOMBAR].debug = True
- self[self.BOTTOMBAR].append(entry('bottombar-w3-validator', _('W3-Validator'), None, 'https://validator.w3.org/nu/?doc=' + request.build_absolute_uri(), False, False))
-
- def set_additional_title(self, at):
- if self[self.SETTINGS].page_title and at:
- self[self.TITLE] = self[self.SETTINGS].page_title + ' - ' + at
- else:
- self[self.TITLE] = self[self.SETTINGS].page_title + at
-
-
- class entry(list):
- def __init__(self, uid, name, icon, url, left, active):
- list.__init__(self)
- self.uid = uid
- self.name = name
- self.icon = icon
- self.url = url
- self.left = left
- self.active = active
-
- @property
- def is_dropdownmenu(self):
- return len(self) > 0
-
- def __str__(self):
- return 'barentry: %s' % self.uid
-
-
- def empty_entry_parameters(request):
- return (
- 'empty', # uid
- '', # name
- transparency_icon_url(request), # icon
- None, # url
- True, # left
- False # active
- )
-
-
- def get_themename(request):
- return ThemeSettings().page_theme
-
-
- class time_measurement(object):
- def __init__(self):
- self._start_time = time.time()
-
- @property
- def time_str(self):
- return _('Time consumption') + ': %.2fs' % (time.time() - self._start_time)
-
-
- def transparency_icon_url(request):
- return static('themes/' + get_themename(request) + '/transparency.png')
-
-
- def color_icon_url(request, icon_filename):
- return static('themes/' + get_themename(request) + '/1st-color/%s' % icon_filename)
-
-
- def gray_icon_url(request, icon_filename):
- return static('themes/' + get_themename(request) + '/2nd-color/%s' % icon_filename)
|