from django.contrib.auth.models import ( Group as DjangoGroup, Permission as DjangoPermission, ) from django.db import models from django.utils.crypto import get_random_string from django.utils.translation import ugettext_lazy as _ from kfet.cms.models import CmsPermissionManager class GenericTeamTokenManager(models.Manager): def create_token(self): token = get_random_string(50) while self.filter(token=token).exists(): token = get_random_string(50) return self.create(token=token) class GenericTeamToken(models.Model): token = models.CharField(max_length=50, unique=True) objects = GenericTeamTokenManager() class Meta: default_permissions = () class Group(DjangoGroup): def give_admin_access(self): perms = Permission.kfetcore.all() self.permissions.add(*perms) def give_staff_access(self): perms = Permission.kfetcore.filter( codename__in=['is_team', 'perform_deposit']) self.permissions.add(*perms) class Meta: verbose_name = _("Groupe") verbose_name_plural = _("Groupes") default_permissions = ('view', 'add', 'change') KFET_CORE_APP_LABELS = ['kfet', 'kfetauth'] class CorePermissionManager(models.Manager): def get_queryset(self): return super().get_queryset().filter( content_type__app_label__in=KFET_CORE_APP_LABELS) class Permission(DjangoPermission): kfetcore = CorePermissionManager() kfetcms = CmsPermissionManager() class Meta: proxy = True verbose_name = _("Permission") verbose_name_plural = _("Permissions")