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

from django.dispatch import receiver
from django.db.models import *
from django.contrib.auth.models import User, Group
from registration import signals
from dictionary.models import Vocabulary, PartOfSpeech

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')

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


@receiver(signal=signals.user_registered)
def add_to_default_group(sender, **kwargs):
    user = kwargs['user']
    default_group = Group.objects.get(name=settings.DEFAULT_GROUP_NAME)
    user.groups.add(default_group)
    UserSettings.objects.create(user=user)