3 changed files with 39 additions and 32 deletions
@ -0,0 +1,38 @@
|
||||
from django.db import models |
||||
from django.utils.translation import ugettext_lazy as _ |
||||
|
||||
|
||||
class StyleMixin(models.Model): |
||||
class StyleField(models.CharField): |
||||
""" |
||||
Allows overriding of STYLE_CHOICES in subclasses. |
||||
""" |
||||
|
||||
def contribute_to_class(self, cls, name, **kwargs): |
||||
if hasattr(cls, 'STYLE_CHOICES'): |
||||
self.choices = cls.STYLE_CHOICES |
||||
super().contribute_to_class(cls, name, **kwargs) |
||||
|
||||
STYLE_CHOICES = ( |
||||
('default', _("default")), |
||||
) |
||||
|
||||
style = StyleField(_("style"), max_length=50, null=True, blank=True) |
||||
|
||||
class Meta: |
||||
abstract = True |
||||
|
||||
def get_style_slug(self): |
||||
return getattr(self, 'style', None) or 'default' |
||||
|
||||
def get_template_names(self): |
||||
# Should only be called by classes using filesystem templates |
||||
template_names = super().get_template_names() or [] |
||||
template_names.extend([ |
||||
"{path_prefix}style/_{style}.html".format( |
||||
path_prefix=self.get_path_prefix(), |
||||
style=self.get_style_slug()), |
||||
]) |
||||
return template_names |
||||
|
||||
|
Loading…
Reference in new issue