manager: add verbose name to cells

This commit is contained in:
Frédéric Péters 2014-12-08 17:06:57 +01:00
parent 43930fe4d4
commit d9dcbb8bc9
2 changed files with 12 additions and 2 deletions

View File

@ -37,13 +37,17 @@ class CellBase(models.Model):
objects = InheritanceManager()
@classmethod
def get_verbose_name(cls):
return cls._meta.verbose_name
@classmethod
def get_cell_content_types(cls):
content_types = []
for symbol in globals().values():
if inspect.isclass(symbol) and issubclass(symbol, cls) and symbol is not cls:
content_types.append({
'name': symbol.__name__, # XXX: add support for verbose name
'name': symbol.get_verbose_name(),
'content_type': ContentType.objects.get_for_model(symbol),
})
return content_types
@ -52,12 +56,18 @@ class CellBase(models.Model):
class TextCell(CellBase):
text = RichTextField(_('Text'), null=True)
class Meta:
verbose_name = _('Text')
def render(self):
from django.utils.safestring import mark_safe
return mark_safe(self.text or '')
class FortuneCell(CellBase):
class Meta:
verbose_name = _('Fortune')
def render(self):
import subprocess
return subprocess.check_output(['fortune'])

View File

@ -39,7 +39,7 @@
<div class="cell-list">
{% for cell in placeholder.cells %}
<div class="cell" data-cell-id="{{ cell.id }}">
<h3>{{ cell }}</h3>
<h3>{{ cell.get_verbose_name }}</h3>
<div>{% cell_form cell %}</div>
</div>
{% endfor %}