from mezzanine.core.models import Displayable, Slugged
+COLOR_CHOICES = (('black', _('black')), ('yellow', _('yellow')), ('red', _('red')))
+
+
class Description(models.Model):
- """Base object description"""
+ """Abstract model providing a description field"""
description = models.TextField(_('description'), blank=True)
abstract = True
-class Named(Description):
- """Named object with description"""
+class Named(models.Model):
+ """Abstract model providing a name field"""
name = models.CharField(_('name'), max_length=512)
return slugify(self.__unicode__())
-class Titled(Slugged, Description):
- """Base object with title, slug and description"""
+class Titled(models.Model):
+ """Abstract model providing a title field"""
+
+ title = models.CharField(_('name'), max_length=1024)
class Meta:
abstract = True
+ def __str__(self):
+ return self.title
+
class SubTitle(models.Model):
abstract = True
-class BasicPage(Page, RichText, SubTitle):
+class Category(Named):
+ """Category description)"""
+
+ class Meta:
+ verbose_name = _('category')
+
+ def __str__(self):
+ return self.name
+
+
+class BasicPage(Page, SubTitle, RichText):
class Meta:
verbose_name = 'basic page'
+
+
+class PageBlock(Titled, RichText):
+
+ background_color = models.CharField(_('background color'), max_length=32, choices=COLOR_CHOICES, blank=True)
+
+ class Meta:
+ verbose_name = 'page block'
from django import forms
from copy import deepcopy
from mezzanine.core.admin import DisplayableAdmin
-from organization.magazine.models import Article, Brief
+from organization.magazine.models import Article, Brief, Topic
class ArticleAdmin(admin.ModelAdmin):
model = Brief
+
class BriefAdminDisplayable(DisplayableAdmin):
fieldsets = deepcopy(BriefAdmin.fieldsets)
+
admin.site.register(Article, ArticleAdminDisplayable)
admin.site.register(Brief, BriefAdminDisplayable)
+admin.site.register(Topic)
from django.core.urlresolvers import reverse, reverse_lazy
from mezzanine.core.models import RichText, Displayable, Slugged
from mezzanine.blog.models import BlogPost
-from organization.core.models import Named
+from organization.core.models import Named, Description
class Article(BlogPost):
verbose_name = _('brief')
-class Category(Named):
- """(Category description)"""
-
- class Meta:
- verbose_name = _('category')
-
- def __unicode__(self):
- return self.name
-
-
-class Topic(Named):
- """(Topic description)"""
+class Topic(Named, Description):
+ """Topic for magazine menu"""
class Meta:
verbose_name = _('topic')
-
- def __unicode__(self):
- return self.name
return self.videos.published().count()+1
-class Playlist(Titled):
+class Playlist(Slugged, Description):
"""(Playlist description)"""
audios = models.ManyToManyField('Audio', verbose_name=_('audios'), related_name='playlists', blank=True)
@register(Department)
class DepartmentTranslationOptions(TranslationOptions):
-
- fields = ('title', 'description',)
-
+ pass
@register(Team)
class TeamTranslationOptions(TranslationOptions):
-
- fields = ('title', 'description',)
-
+ pass
@register(Person)
class PersonTranslationOptions(TranslationOptions):