e7851254660754457585dbd4c9f677a37d457d2b
[django-migdal.git] / migdal / __init__.py
1 # -*- coding: utf-8 -*-
2 """
3 Migdal (מִגְדָּל) is a multilingual blog Django app.
4
5 Author: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>
6 """
7 from django.conf import settings
8 from fnpdjango.utils.app import AppSettings
9 from django.utils.translation import ugettext_lazy as _
10 from migdal.helpers import EntryType
11
12
13 class Settings(AppSettings):
14     # Types of entries:
15     # (slug, commentable, on main)
16     TYPES = (
17             EntryType('news', _('news'), commentable=True, on_main=True, promotable=True),
18             EntryType('publications', _('publications')),
19             EntryType('info', _('info')),
20             EntryType('event', _('events')),
21         )
22     TYPE_SUBMIT = 'news'
23     TAXONOMIES = (
24         ('topics', _('topics')),
25         ('types', _('types')),
26     )
27     LAST_COMMENTS = 5
28
29     MAIN_PAGE_ENTRY = None
30
31     def _more_TYPES_DICT(self, value):
32         return dict((t.db, t) for t in self.TYPES)
33     TYPES_DICT = None
34
35     def _more_TYPES_ON_MAIN(self, value):
36         return tuple(t.db for t in self.TYPES if t.on_main)
37     TYPES_ON_MAIN = None
38
39     def _more_TYPES_PROMOTABLE(self, value):
40         return tuple(t.db for t in self.TYPES if t.promotable)
41     TYPES_PROMOTABLE = None
42
43     def _more_OBLIGATORY_LANGUAGES(self, value):
44         return value or tuple(lang for lang in settings.LANGUAGES if lang[0] == settings.LANGUAGE_CODE)
45     OBLIGATORY_LANGUAGES = None
46
47     def _more_OPTIONAL_LANGUAGES(self, value):
48         return tuple(lang for lang in settings.LANGUAGES if lang not in self.OBLIGATORY_LANGUAGES)
49     OPTIONAL_LANGUAGES = None
50
51     PUBLISH_DATE_EDITABLE = False
52
53 app_settings = Settings('MIGDAL')