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)