template: new "xmlui_class" filter compute class names from name/values of requested fields.
This commit is contained in:
parent
c7984f60ec
commit
07d5a18b79
1 changed files with 28 additions and 0 deletions
|
|
@ -196,6 +196,7 @@ class Renderer(object):
|
|||
self.env.filters['next_gidx'] = self._next_gidx
|
||||
self.env.filters['cur_gidx'] = self._cur_gidx
|
||||
self.env.filters['date_days'] = self._date_days
|
||||
self.env.filters['xmlui_class'] = self._xmlui_class
|
||||
|
||||
def installTranslations(self):
|
||||
i18n_dir = os.path.join(self.base_dir, 'i18n')
|
||||
|
|
@ -328,6 +329,33 @@ class Renderer(object):
|
|||
def _date_days(self, timestamp):
|
||||
return int(time.time() - int(timestamp))/(3600*24)
|
||||
|
||||
def attr_escape(self, text):
|
||||
"""escape a text to a value usable as an attribute
|
||||
|
||||
remove spaces, and put in lower case
|
||||
"""
|
||||
return text.strip().lower().replace(' ', '_')
|
||||
|
||||
def _xmlui_class(self, xmlui_item, fields):
|
||||
"""return classes computed from XMLUI fields name
|
||||
|
||||
will return a string with a series of escaped {name}_{value} separated by spaces.
|
||||
@param xmlui_item(xmlui.XMLUIPanel): XMLUI containing the widgets to use
|
||||
@param fields(iterable(unicode)): names of the widgets to use
|
||||
@return (unicode, None): computer string to use as class attribute value
|
||||
None if no field was specified
|
||||
"""
|
||||
classes = []
|
||||
for name in fields:
|
||||
escaped_name = self.attr_escape(name)
|
||||
try:
|
||||
for value in xmlui_item.widgets[name].values:
|
||||
classes.append(escaped_name + '_' + self.attr_escape(value))
|
||||
except KeyError:
|
||||
log.debug(_(u"ignoring field \"{name}\": it doesn't exists").format(name=name))
|
||||
continue
|
||||
return u' '.join(classes) or None
|
||||
|
||||
def render(self, template, theme=None, locale=DEFAULT_LOCALE, root_path=u'', css_files=None, css_inline=False, **kwargs):
|
||||
"""render a template
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue