models.py 1.86 KB
# -*- coding: utf-8 -*-

from django.db.models import *
from django.contrib.auth.models import User, Group
from django.utils.translation import gettext as _
from dictionary.models import Vocabulary, PartOfSpeech, editable_vocabularies

MANAGER_GROUPS = ('Obserwator', 'Leksykograf', 'Superleksykograf')


def manager_groups():
    return Group.objects.filter(name__in=MANAGER_GROUPS)


class UserSettings(Model):
    user = OneToOneField(User)
    incremental_search = BooleanField(
        default=True,
        verbose_name=_(u'wyszukiwanie przyrostowe'),
        help_text=_(u'Wyszukiwanie odbywa się automatycznie w miarę wpisywania '
                    u'szukanego hasła. Sugerujemy wyłączenie w wypadku wolnego '
                    u'połączenia internetowego.'))
    default_owner = ForeignKey(
        Vocabulary, blank=True, null=True,
        verbose_name=_(u'domyślny słownik właściciel dodawanych leksemów'))
    default_pos = ForeignKey(
        PartOfSpeech, blank=True, null=True,
        verbose_name=_(u'domyślna część mowy dodawanych leksemów'))

    def views_lexeme(self):
        return self.user.has_perm('dictionary.view_lexeme')

    def views_all_lexemes(self):
        return self.user.has_perm('dictionary.view_all_lexemes')

    def changes_lexeme(self):
        return self.user.has_perm('dictionary.change_lexeme')

    def manages_vocabulary(self):
        return self.user.has_perm('dictionary.manage_vocabulary')

    def manages_all_vocabs(self):
        return self.user.has_perm('dictionary.manage_all_vocabularies')

    def get_default_owner(self):
        if self.default_owner:
            return self.default_owner
        editable = editable_vocabularies(self.user)
        if len(editable) == 1:
            return editable.get()

    class Meta:
        permissions = (
            ('create_admin', _(u'Może nadawać dowolne role')),
        )