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 _ 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 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") 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() class Meta: proxy = True verbose_name = _("Permission") verbose_name_plural = _("Permissions")