On crée une permission pour administrer les élections

This commit is contained in:
Tom Hubrecht 2021-03-20 20:07:12 +01:00
parent e3c195cc14
commit 71e22a139f
3 changed files with 30 additions and 6 deletions

View file

@ -0,0 +1,17 @@
# Generated by Django 2.2.19 on 2021-03-20 18:57
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("elections", "0012_auto_20210319_1613"),
]
operations = [
migrations.AlterModelOptions(
name="user",
options={"permissions": [("is_admin", "Peut administrer des élections")]},
),
]

View file

@ -1,4 +1,4 @@
from django.contrib.auth.mixins import LoginRequiredMixin from django.contrib.auth.mixins import PermissionRequiredMixin
from django.urls import reverse from django.urls import reverse
from django.utils import timezone from django.utils import timezone
from django.views.generic.detail import SingleObjectMixin from django.views.generic.detail import SingleObjectMixin
@ -6,6 +6,12 @@ from django.views.generic.detail import SingleObjectMixin
from .models import Election, Option, Question from .models import Election, Option, Question
class AdminOnlyMixin(PermissionRequiredMixin):
"""Restreint l'accès aux admins"""
permission_required = "elections.is_admin"
class SelectElectionMixin: class SelectElectionMixin:
"""Sélectionne automatiquement les foreignkeys voulues""" """Sélectionne automatiquement les foreignkeys voulues"""
@ -53,7 +59,7 @@ class OpenElectionOnlyMixin(RestrictAccessMixin):
return filters return filters
class CreatorOnlyMixin(LoginRequiredMixin, RestrictAccessMixin): class CreatorOnlyMixin(AdminOnlyMixin, RestrictAccessMixin):
"""Restreint l'accès au créateurice de l'élection""" """Restreint l'accès au créateurice de l'élection"""
def get_next_url(self): def get_next_url(self):
@ -76,9 +82,5 @@ class CreatorOnlyEditMixin(CreatorOnlyMixin, SingleObjectMixin):
return filters return filters
class AdministratorOnlyMixin(LoginRequiredMixin):
"""Restreint l'accès aux admins"""
class VoterOnlyMixin: class VoterOnlyMixin:
"""Restreint l'accès aux voteureuses de l'élection""" """Restreint l'accès aux voteureuses de l'élection"""

View file

@ -153,3 +153,8 @@ class User(AbstractUser):
def connection_method(self): def connection_method(self):
method = self.username.split("__")[0] method = self.username.split("__")[0]
return CONNECTION_METHODS.get(method, _("identifiants spécifiques")) return CONNECTION_METHODS.get(method, _("identifiants spécifiques"))
class Meta:
permissions = [
("is_admin", _("Peut administrer des élections")),
]