From 05aa1fc038305720b660e683a3b82404b1c2bb03 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Wed, 11 Apr 2018 04:16:57 -0400 Subject: [PATCH] Add support for icon drivers. Add a driver for Font Awesome. Signed-off-by: Roberto Rosario --- mayan/apps/appearance/classes.py | 52 +++++++++++++++++++------------- 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/mayan/apps/appearance/classes.py b/mayan/apps/appearance/classes.py index aa7503b22a..7089779201 100644 --- a/mayan/apps/appearance/classes.py +++ b/mayan/apps/appearance/classes.py @@ -1,29 +1,39 @@ from __future__ import unicode_literals -from django.template import Template, Context +from django.template import Context, Template + + +class IconDriver(object): + _registry = {} + + @classmethod + def get(cls, name): + return cls._registry[name] + + @classmethod + def register(cls, driver_class): + cls._registry[driver_class.name] = driver_class + + +class FontAwesomeDriver(IconDriver): + name = 'fontawesome' + template_text = '' + + def __init__(self, symbol): + self.symbol = symbol + + def render(self): + return Template(self.template_text).render( + context=Context({'symbol': self.symbol}) + ) class Icon(object): - templates = { - 'classes': '', - 'symbol': '' - } + def __init__(self, driver_name, **kwargs): + self.driver = IconDriver.get(name=driver_name)(**kwargs) - def __init__(self, classes=None, symbol=None): - self.classes = classes - self.symbol = symbol + def render(self, **kwargs): + return self.driver.render(**kwargs) - if self.classes: - self.template = self.templates['classes'] - else: - self.template = self.templates['symbol'] - def render(self): - return Template(self.template).render( - context=Context( - { - 'classes': self.classes, - 'symbol': self.symbol, - } - ) - ) +IconDriver.register(driver_class=FontAwesomeDriver)