models.py 1.59 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):
  return user.usersettings.filter_search