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

from django.db.models import *
from django.contrib.auth.models import User, Group
from dictionary.models import Vocabulary

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.')
    filter_search = BooleanField(
        default=False,
        verbose_name=u'wyszukiwanie przez filtrowanie',
        help_text=u'Wyszukiwanie powoduje zawężenie listy haseł do pasujących '
                  u'do zapytania.')
    default_owner = ForeignKey(
        Vocabulary, blank=True, null=True,
        verbose_name=u'domyślny słownik właściciel 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')

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


def filtering_mode(user):
    if user.is_authenticated():
        return user.usersettings.filter_search
    else:
        return False