diff --git a/api/__init__.py b/api/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/cotisations/models.py b/cotisations/models.py
index 11df1712..cbf44b79 100644
--- a/cotisations/models.py
+++ b/cotisations/models.py
@@ -57,9 +57,9 @@ from django.utils import timezone
from machines.models import regen
from re2o.field_permissions import FieldPermissionModelMixin
+from re2o.mixins import AclMixin
-
-class Facture(FieldPermissionModelMixin, models.Model):
+class Facture(AclMixin, FieldPermissionModelMixin, models.Model):
""" Définition du modèle des factures. Une facture regroupe une ou
plusieurs ventes, rattachée à un user, et reliée à un moyen de paiement
et si il y a lieu un numero pour les chèques. Possède les valeurs
@@ -114,13 +114,6 @@ class Facture(FieldPermissionModelMixin, models.Model):
).values_list('name', flat=True))
return name
- def get_instance(factureid, *args, **kwargs):
- return Facture.objects.get(pk=factureid)
-
- def can_create(user_request, *args, **kwargs):
- return user_request.has_perm('cotisations.add_facture'), u"Vous n'avez pas le\
- droit de créer des factures"
-
def can_edit(self, user_request, *args, **kwargs):
if not user_request.has_perm('cotisations.change_facture'):
return False, u"Vous n'avez pas le droit d'éditer les factures"
@@ -144,11 +137,6 @@ class Facture(FieldPermissionModelMixin, models.Model):
else:
return True, None
- def can_view_all(user_request, *args, **kwargs):
- if not user_request.has_perm('cotisations.view_facture'):
- return False, u"Vous n'avez pas le droit de voir les factures"
- return True, None
-
def can_view(self, user_request, *args, **kwargs):
if not user_request.has_perm('cotisations.view_facture') and\
self.user != user_request:
@@ -192,7 +180,7 @@ def facture_post_delete(sender, **kwargs):
user.ldap_sync(base=False, access_refresh=True, mac_refresh=False)
-class Vente(models.Model):
+class Vente(AclMixin, models.Model):
"""Objet vente, contient une quantité, une facture parente, un nom,
un prix. Peut-être relié à un objet cotisation, via le boolean
iscotisation"""
@@ -277,14 +265,6 @@ class Vente(models.Model):
self.update_cotisation()
super(Vente, self).save(*args, **kwargs)
- def get_instance(venteid, *args, **kwargs):
- return Vente.objects.get(pk=venteid)
-
- def can_create(user_request, *args, **kwargs):
- return user_request.has_perm('cotisations.add_vente'), u"Vous n'avez pas le\
- droit de créer des ventes"
- return True, None
-
def can_edit(self, user_request, *args, **kwargs):
if not user_request.has_perm('cotisations.change_vente'):
return False, u"Vous n'avez pas le droit d'éditer les ventes"
@@ -308,11 +288,6 @@ class Vente(models.Model):
else:
return True, None
- def can_view_all(user_request, *args, **kwargs):
- if not user_request.has_perm('cotisations.view_vente'):
- return False, u"Vous n'avez pas le droit de voir les ventes"
- return True, None
-
def can_view(self, user_request, *args, **kwargs):
if not user_request.has_perm('cotisations.view_vente') and\
self.facture.user != user_request:
@@ -350,7 +325,7 @@ def vente_post_delete(sender, **kwargs):
user.ldap_sync(base=False, access_refresh=True, mac_refresh=False)
-class Article(models.Model):
+class Article(AclMixin, models.Model):
"""Liste des articles en vente : prix, nom, et attribut iscotisation
et duree si c'est une cotisation"""
PRETTY_NAME = "Articles en vente"
@@ -402,34 +377,11 @@ class Article(models.Model):
"La durée est obligatoire si il s'agit d'une cotisation"
)
- def get_instance(articleid, *args, **kwargs):
- return Article.objects.get(pk=articleid)
-
- def can_create(user_request, *args, **kwargs):
- return user_request.has_perm('cotisations.add_article'), u"Vous n'avez pas le\
- droit d'ajouter des articles"
-
- def can_edit(self, user_request, *args, **kwargs):
- return user_request.has_perm('cotisations.change_article'), u"Vous n'avez pas le\
- droit d'éditer des articles"
-
- def can_delete(self, user_request, *args, **kwargs):
- return user_request.has_perm('cotisations.delete_article'), u"Vous n'avez pas le\
- droit de supprimer des articles"
-
- def can_view_all(user_request, *args, **kwargs):
- return user_request.has_perm('cotisations.view_article'), u"Vous n'avez pas le\
- droit de voir des articles"
-
- def can_view(self, user_request, *args, **kwargs):
- return user_request.has_perm('cotisations.view_article'), u"Vous n'avez pas le\
- droit de voir des articles"
-
def __str__(self):
return self.name
-class Banque(models.Model):
+class Banque(AclMixin, models.Model):
"""Liste des banques"""
PRETTY_NAME = "Banques enregistrées"
@@ -440,34 +392,11 @@ class Banque(models.Model):
("view_banque", "Peut voir un objet banque"),
)
- def get_instance(banqueid, *args, **kwargs):
- return Banque.objects.get(pk=banqueid)
-
- def can_create(user_request, *args, **kwargs):
- return user_request.has_perm('cotisations.add_banque'), u"Vous n'avez pas le\
- droit d'ajouter des banques"
-
- def can_edit(self, user_request, *args, **kwargs):
- return user_request.has_perm('cotisations.change_banque'), u"Vous n'avez pas le\
- droit d'éditer des banques"
-
- def can_delete(self, user_request, *args, **kwargs):
- return user_request.has_perm('cotisations.delete_banque'), u"Vous n'avez pas le\
- droit de supprimer des banques"
-
- def can_view_all(user_request, *args, **kwargs):
- return user_request.has_perm('cotisations.view_banque'), u"Vous n'avez pas le\
- droit de voir des banques"
-
- def can_view(self, user_request, *args, **kwargs):
- return user_request.has_perm('cotisations.view_banque'), u"Vous n'avez pas le\
- droit de voir des banques"
-
def __str__(self):
return self.name
-class Paiement(models.Model):
+class Paiement(AclMixin, models.Model):
"""Moyens de paiement"""
PRETTY_NAME = "Moyens de paiement"
PAYMENT_TYPES = (
@@ -483,29 +412,6 @@ class Paiement(models.Model):
("view_paiement", "Peut voir un objet paiement"),
)
- def get_instance(paiementid, *args, **kwargs):
- return Paiement.objects.get(pk=paiementid)
-
- def can_create(user_request, *args, **kwargs):
- return user_request.has_perm('cotisations.add_paiement'), u"Vous n'avez pas le\
- droit d'ajouter des paiements"
-
- def can_edit(self, user_request, *args, **kwargs):
- return user_request.has_perm('cotisations.change_paiement'), u"Vous n'avez pas le\
- droit d'éditer des paiements"
-
- def can_delete(self, user_request, *args, **kwargs):
- return user_request.has_perm('cotisations.delete_paiement'), u"Vous n'avez pas le\
- droit de supprimer des paiements"
-
- def can_view_all(user_request, *args, **kwargs):
- return user_request.has_perm('cotisations.view_paiement'), u"Vous n'avez pas le\
- droit de voir des paiements"
-
- def can_view(self, user_request, *args, **kwargs):
- return user_request.has_perm('cotisations.view_paiement'), u"Vous n'avez pas le\
- droit de voir des paiements"
-
def __str__(self):
return self.moyen
@@ -520,7 +426,7 @@ class Paiement(models.Model):
super(Paiement, self).save(*args, **kwargs)
-class Cotisation(models.Model):
+class Cotisation(AclMixin, models.Model):
"""Objet cotisation, debut et fin, relié en onetoone à une vente"""
PRETTY_NAME = "Cotisations"
@@ -545,14 +451,6 @@ class Cotisation(models.Model):
("change_all_cotisation", "Superdroit, peut modifier toutes les cotisations"),
)
- def get_instance(cotisationid, *args, **kwargs):
- return Cotisations.objects.get(pk=cotisationid)
-
- def can_create(user_request, *args, **kwargs):
- return user_request.has_perm('cotisations.add_cotisation'), u"Vous n'avez pas le\
- droit de créer des cotisations"
- return True, None
-
def can_edit(self, user_request, *args, **kwargs):
if not user_request.has_perm('cotisations.change_cotisation'):
return False, u"Vous n'avez pas le droit d'éditer les cotisations"
@@ -572,11 +470,6 @@ class Cotisation(models.Model):
else:
return True, None
- def can_view_all(user_request, *args, **kwargs):
- if not user_request.has_perm('cotisations.view_cotisation'):
- return False, u"Vous n'avez pas le droit de voir les cotisations"
- return True, None
-
def can_view(self, user_request, *args, **kwargs):
if not user_request.has_perm('cotisations.view_cotisation') and\
self.vente.facture.user != user_request:
diff --git a/logs/views.py b/logs/views.py
index 6ab48706..5dd87eaa 100644
--- a/logs/views.py
+++ b/logs/views.py
@@ -90,7 +90,8 @@ from topologie.models import (
Room,
Stack,
ModelSwitch,
- ConstructorSwitch
+ ConstructorSwitch,
+ AccessPoint
)
from preferences.models import GeneralOption
from re2o.views import form
@@ -360,6 +361,7 @@ def stats_models(request):
},
'Topologie': {
'switch': [Switch.PRETTY_NAME, Switch.objects.count()],
+ 'bornes': [AccessPoint.PRETTY_NAME, AccessPoint.objects.count()],
'port': [Port.PRETTY_NAME, Port.objects.count()],
'chambre': [Room.PRETTY_NAME, Room.objects.count()],
'stack': [Stack.PRETTY_NAME, Stack.objects.count()],
diff --git a/machines/admin.py b/machines/admin.py
index e6165672..9a2d5133 100644
--- a/machines/admin.py
+++ b/machines/admin.py
@@ -38,6 +38,7 @@ from .models import (
Nas,
Service,
OuverturePort,
+ Ipv6List,
OuverturePortList
)
@@ -46,6 +47,10 @@ class MachineAdmin(VersionAdmin):
pass
+class Ipv6ListAdmin(VersionAdmin):
+ pass
+
+
class IpTypeAdmin(VersionAdmin):
pass
@@ -124,6 +129,7 @@ admin.site.register(Interface, InterfaceAdmin)
admin.site.register(Domain, DomainAdmin)
admin.site.register(Service, ServiceAdmin)
admin.site.register(Vlan, VlanAdmin)
+admin.site.register(Ipv6List, Ipv6ListAdmin)
admin.site.register(Nas, NasAdmin)
admin.site.register(OuverturePort, OuverturePortAdmin)
admin.site.register(OuverturePortList, OuverturePortListAdmin)
diff --git a/machines/models.py b/machines/models.py
index 43906bab..d4368b2e 100644
--- a/machines/models.py
+++ b/machines/models.py
@@ -39,6 +39,7 @@ from django.core.validators import MaxValueValidator
from macaddress.fields import MACAddressField
from re2o.field_permissions import FieldPermissionModelMixin
+from re2o.mixins import AclMixin
import users.models
import preferences.models
@@ -65,9 +66,10 @@ class Machine(FieldPermissionModelMixin, models.Model):
)
def get_instance(machineid, *args, **kwargs):
- """Récupère une instance
- :param machineid: Instance id à trouver
- :return: Une instance machine évidemment"""
+ """Get the Machine instance with machineid.
+ :param userid: The id
+ :return: The user
+ """
return Machine.objects.get(pk=machineid)
@staticmethod
@@ -84,6 +86,15 @@ class Machine(FieldPermissionModelMixin, models.Model):
"""
return user_request.has_perm('machines.change_machine_user'), "Vous ne pouvez pas modifier l'utilisateur de la machine."
+ def can_view_all(user_request, *args, **kwargs):
+ """Vérifie qu'on peut bien afficher l'ensemble des machines,
+ droit particulier correspondant
+ :param user_request: instance user qui fait l'edition
+ :return: True ou False avec la raison de l'échec le cas échéant"""
+ if not user_request.has_perm('machines.view_machine'):
+ return False, u"Vous ne pouvez pas afficher l'ensemble des machines sans permission"
+ return True, None
+
def can_create(user_request, userid, *args, **kwargs):
"""Vérifie qu'un user qui fait la requète peut bien créer la machine
et n'a pas atteint son quota, et crée bien une machine à lui
@@ -131,15 +142,6 @@ class Machine(FieldPermissionModelMixin, models.Model):
d'un autre user que vous sans droit"
return True, None
- def can_view_all(user_request, *args, **kwargs):
- """Vérifie qu'on peut bien afficher l'ensemble des machines,
- droit particulier correspondant
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- if not user_request.has_perm('machines.view_machine'):
- return False, u"Vous ne pouvez pas afficher l'ensemble des machines sans permission"
- return True, None
-
def can_view(self, user_request, *args, **kwargs):
"""Vérifie qu'on peut bien voir cette instance particulière (soit
machine de soi, soit droit particulier
@@ -161,7 +163,7 @@ class Machine(FieldPermissionModelMixin, models.Model):
return str(self.user) + ' - ' + str(self.id) + ' - ' + str(self.name)
-class MachineType(models.Model):
+class MachineType(AclMixin, models.Model):
""" Type de machine, relié à un type d'ip, affecté aux interfaces"""
PRETTY_NAME = "Type de machine"
@@ -184,40 +186,6 @@ class MachineType(models.Model):
machinetype"""
return Interface.objects.filter(type=self)
- def get_instance(machinetypeid, *args, **kwargs):
- """Récupère une instance
- :param machinetypeid: Instance id à trouver
- :return: Une instance machinetype évidemment"""
- return MachineType.objects.get(pk=machinetypeid)
-
- def can_create(user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour créer
- un type de machine
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- return user_request.has_perm('machines.add_machinetype'), u"Vous n'avez pas le droit\
- de créer un type de machine"
-
- def can_edit(self, user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour editer
- cette instance type de machine
- :param self: Instance machinetype à editer
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- if not user_request.has_perm('machines.change_machinetype'):
- return False, u"Vous n'avez pas le droit d'éditer des types de machine"
- return True, None
-
- def can_delete(self, user_request, *args, **kwargs):
- """Vérifie qu'on peut bien supprimer cette instance particulière (soit
- machinetype de soi, soit droit particulier
- :param self: instance machinetype à supprimer
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- if not user_request.has_perm('machines.delete_machinetype'):
- return False, u"Vous n'avez pas le droit de supprimer des types de machines"
- return True, None
-
def can_use_all(user_request, *args, **kwargs):
"""Check if an user can use every MachineType.
@@ -231,28 +199,11 @@ class MachineType(models.Model):
return False, u"Vous n'avez pas le droit d'utiliser tout types de machines"
return True, None
- def can_view_all(user_request, *args, **kwargs):
- """Vérifie qu'on peut bien afficher l'ensemble des machinetype,
- droit particulier correspondant
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- return user_request.has_perm('machines.view_machinetype'), u"Vous n'avez pas le droit\
- de voir les types de machines"
-
- def can_view(self, user_request, *args, **kwargs):
- """Vérifie qu'on peut bien voir cette instance particulière avec
- droit view objet
- :param self: instance machinetype à voir
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- return user_request.has_perm('machines.view_machinetype'), u"Vous n'avez pas le droit\
- de voir les types de machines"
-
def __str__(self):
return self.type
-class IpType(models.Model):
+class IpType(AclMixin, models.Model):
""" Type d'ip, définissant un range d'ip, affecté aux machine types"""
PRETTY_NAME = "Type d'ip"
@@ -372,68 +323,17 @@ class IpType(models.Model):
self.clean()
super(IpType, self).save(*args, **kwargs)
- def get_instance(iptypeid, *args, **kwargs):
- """Récupère une instance
- :param iptypeid: Instance id à trouver
- :return: Une instance iptype évidemment"""
- return IpType.objects.get(pk=iptypeid)
-
def can_use_all(user_request, *args, **kwargs):
"""Superdroit qui permet d'utiliser toutes les extensions sans restrictions
:param user_request: instance user qui fait l'edition
:return: True ou False avec la raison de l'échec le cas échéant"""
return user_request.has_perm('machines.use_all_iptype'), None
-
- def can_create(user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour créer
- un type d'ip
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- return user_request.has_perm('machines.add_iptype'), u"Vous n'avez pas le droit\
- de créer un type d'ip"
-
- def can_edit(self, user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour editer
- cette instance iptype
- :param self: Instance iptype à editer
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- if not user_request.has_perm('machines.change_iptype'):
- return False, u"Vous n'avez pas le droit d'éditer des types d'ip"
- return True, None
-
- def can_delete(self, user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour supprimer
- cette instance iptype
- :param self: Instance iptype à delete
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- return user_request.has_perm('machines.delete_iptype'), u"Vous n'avez pas le droit\
- de supprimer un type d'ip"
-
- def can_view_all(user_request, *args, **kwargs):
- """Vérifie qu'on peut bien afficher l'ensemble des iptype,
- droit particulier view objet correspondant
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- return user_request.has_perm('machines.view_iptype'), u"Vous n'avez pas le droit\
- de voir les types d'ip"
-
- def can_view(self, user_request, *args, **kwargs):
- """Vérifie qu'on peut bien voir cette instance particulière avec
- droit view objet
- :param self: instance iptype à voir
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- return user_request.has_perm('machines.view_iptype'), u"Vous n'avez pas le droit\
- de voir les types d'ip"
-
def __str__(self):
return self.type
-class Vlan(models.Model):
+class Vlan(AclMixin, models.Model):
""" Un vlan : vlan_id et nom
On limite le vlan id entre 0 et 4096, comme défini par la norme"""
PRETTY_NAME = "Vlans"
@@ -447,61 +347,11 @@ class Vlan(models.Model):
("view_vlan", "Peut voir un objet vlan"),
)
- def get_instance(vlanid, *args, **kwargs):
- """Récupère une instance
- :param vlanid: Instance id à trouver
- :return: Une instance vlan évidemment"""
- return Vlan.objects.get(pk=vlanid)
-
- def can_create(user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour créer
- un vlan
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- return user_request.has_perm('machines.add_vlan'), u"Vous n'avez pas le droit\
- de créer un vlan"
-
- def can_edit(self, user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour editer
- cette instance vlan
- :param self: Instance vlan à editer
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- if not user_request.has_perm('machines.change_vlan'):
- return False, u"Vous n'avez pas le droit d'éditer des vlans"
- return True, None
-
- def can_delete(self, user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour supprimer
- cette instance vlan
- :param self: Instance vlan à delete
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- return user_request.has_perm('machines.delete_vlan'), u"Vous n'avez pas le droit\
- de suprimer un vlan"
-
- def can_view_all(user_request, *args, **kwargs):
- """Vérifie qu'on peut bien afficher l'ensemble des vlan,
- droit particulier view objet correspondant
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- return user_request.has_perm('machines.view_vlan'), u"Vous n'avez pas le droit\
- de voir les vlans"
-
- def can_view(self, user_request, *args, **kwargs):
- """Vérifie qu'on peut bien voir cette instance particulière avec
- droit view objet
- :param self: instance vlan à voir
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- return user_request.has_perm('machines.view_vlan'), u"Vous n'avez pas le droit\
- de voir les vlans"
-
def __str__(self):
return self.name
-class Nas(models.Model):
+class Nas(AclMixin, models.Model):
""" Les nas. Associé à un machine_type.
Permet aussi de régler le port_access_mode (802.1X ou mac-address) pour
le radius. Champ autocapture de la mac à true ou false"""
@@ -536,62 +386,11 @@ class Nas(models.Model):
("view_nas", "Peut voir un objet Nas"),
)
- def get_instance(nasid, *args, **kwargs):
- """Récupère une instance
- :param nasid: Instance id à trouver
- :return: Une instance nas évidemment"""
- return Nas.objects.get(pk=nasid)
-
- def can_create(user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour créer
- un nas
- :param user_request: instance utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- return user_request.has_perm('machines.add_nas'), u"Vous n'avez pas le droit\
- de créer un nas"
-
- def can_edit(self, user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour editer
- cette instance nas
- :param self: Instance nas à editer
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- if not user_request.has_perm('machines.change_nas'):
- return False, u"Vous n'avez pas le droit d'éditer des nas"
- return True, None
-
- def can_delete(self, user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour supprimer
- cette instance nas
- :param self: Instance nas à delete
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- return user_request.has_perm('machines.delete_nas'), u"Vous n'avez pas le droit\
- de supprimer un nas"
-
- def can_view_all(user_request, *args, **kwargs):
- """Vérifie qu'on peut bien afficher l'ensemble des nas,
- droit particulier view objet correspondant
-
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- return user_request.has_perm('machines.view_nas'), u"Vous n'avez pas le droit\
- de voir les nas"
-
- def can_view(self, user_request, *args, **kwargs):
- """Vérifie qu'on peut bien voir cette instance particulière avec
- droit view objet
- :param self: instance nas à voir
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- return user_request.has_perm('machines.view_nas'), u"Vous n'avez pas le droit\
- de voir les nas"
-
def __str__(self):
return self.name
-class SOA(models.Model):
+class SOA(AclMixin, models.Model):
"""
Un enregistrement SOA associé à une extension
Les valeurs par défault viennent des recommandations RIPE :
@@ -628,56 +427,6 @@ class SOA(models.Model):
("view_soa", "Peut voir un objet soa"),
)
- def get_instance(soaid, *args, **kwargs):
- """Récupère une instance
- :param soaid: Instance id à trouver
- :return: Une instance soa évidemment"""
- return SOA.objects.get(pk=soaid)
-
- def can_create(user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour créer
- un soa
- :param user_request: instance utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- return user_request.has_perm('machines.add_soa'), u"Vous n'avez pas le droit\
- de créer un enregistrement SOA"
-
- def can_edit(self, user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour editer
- cette instance soa
- :param self: Instance soa à editer
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- if not user_request.has_perm('machines.change_soa'):
- return False, u"Vous n'avez pas le droit d'éditer des enregistrements SOA"
- return True, None
-
- def can_delete(self, user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour supprimer
- cette instance soa
- :param self: Instance soa à delete
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- return user_request.has_perm('machines.delete_soa'), u"Vous n'avez pas le droit\
- de supprimer des enregistrements SOA"
-
- def can_view_all(user_request, *args, **kwargs):
- """Vérifie qu'on peut bien afficher l'ensemble des soa,
- droit particulier view objet correspondant
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- return user_request.has_perm('machines.view_soa'), u"Vous n'avez pas le droit\
- de voir les enreistrement SOA"
-
- def can_view(self, user_request, *args, **kwargs):
- """Vérifie qu'on peut bien voir cette instance particulière avec
- droit view objet
- :param self: instance soa à voir
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- return user_request.has_perm('machines.view_soa'), u"Vous n'avez pas le droit\
- de voir les enreistrement SOA"
-
def __str__(self):
return str(self.name)
@@ -718,7 +467,7 @@ class SOA(models.Model):
-class Extension(models.Model):
+class Extension(AclMixin, models.Model):
""" Extension dns type example.org. Précise si tout le monde peut
l'utiliser, associé à un origin (ip d'origine)"""
PRETTY_NAME = "Extensions dns"
@@ -766,62 +515,12 @@ class Extension(models.Model):
entry += "@ IN AAAA " + str(self.origin_v6)
return entry
- def get_instance(extensionid, *args, **kwargs):
- """Récupère une instance
- :param extensionid: Instance id à trouver
- :return: Une instance extension évidemment"""
- return Extension.objects.get(pk=extensionid)
-
- def can_create(user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour créer
- une extension
- :param user_request: instance utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- return user_request.has_perm('machines.add_extension'), u"Vous n'avez pas le droit\
- de créer une extension"
-
- def can_edit(self, user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour editer
- cette instance extension
- :param self: Instance extension à editer
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- if not user_request.has_perm('machines.change_extension'):
- return False, u"Vous n'avez pas le droit d'éditer des extensions"
- return True, None
-
- def can_delete(self, user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour supprimer
- cette instance extension
- :param self: Instance extension à delete
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- return user_request.has_perm('machines.delete_extension'), u"Vous n'avez pas le droit\
- de supprimer des extension"
-
- def can_view_all(user_request, *args, **kwargs):
- """Vérifie qu'on peut bien afficher l'ensemble des extension,
- droit particulier view objet correspondant
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- return user_request.has_perm('machines.view_extension'), u"Vous n'avez pas le droit\
- de voir les extensions"
-
def can_use_all(user_request, *args, **kwargs):
"""Superdroit qui permet d'utiliser toutes les extensions sans restrictions
:param user_request: instance user qui fait l'edition
:return: True ou False avec la raison de l'échec le cas échéant"""
return user_request.has_perm('machines.use_all_extension'), None
- def can_view(self, user_request, *args, **kwargs):
- """Vérifie qu'on peut bien voir cette instance particulière avec
- droit view objet
- :param self: instance extension à voir
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- return user_request.has_perm('machines.view_extension'), u"Vous n'avez pas le droit\
- de voir les extensions"
-
def __str__(self):
return self.name
@@ -831,7 +530,7 @@ class Extension(models.Model):
super(Extension, self).clean(*args, **kwargs)
-class Mx(models.Model):
+class Mx(AclMixin, models.Model):
""" Entrées des MX. Enregistre la zone (extension) associée et la
priorité
Todo : pouvoir associer un MX à une interface """
@@ -852,61 +551,11 @@ class Mx(models.Model):
fichiers de zones"""
return "@ IN MX " + str(self.priority).ljust(3) + " " + str(self.name)
- def get_instance(mxid, *args, **kwargs):
- """Récupère une instance
- :param mxid: Instance id à trouver
- :return: Une instance mx évidemment"""
- return Mx.objects.get(pk=mxid)
-
- def can_create(user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour créer
- un mx
- :param user_request: instance utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- return user_request.has_perm('machines.add_mx'), u"Vous n'avez pas le droit\
- de créer un enregistrement MX"
-
- def can_edit(self, user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour editer
- cette instance mx
- :param self: Instance mx à editer
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- if not user_request.has_perm('machines.change_mx'):
- return False, u"Vous n'avez pas le droit d'éditer des enregstrements MX"
- return True, None
-
- def can_delete(self, user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour del
- cette instance mx
- :param self: Instance mx à delete
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- return user_request.has_perm('machines.delete_mx'), u"Vous n'avez pas le droit\
- de supprimer un enregistrement MX"
-
- def can_view_all(user_request, *args, **kwargs):
- """Vérifie qu'on peut bien afficher l'ensemble des mx,
- droit particulier view objet correspondant
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- return user_request.has_perm('machines.view_mx'), u"Vous n'avez pas le droit\
- de voir les enregistrements MX"
-
- def can_view(self, user_request, *args, **kwargs):
- """Vérifie qu'on peut bien voir cette instance particulière avec
- droit view objet
- :param self: instance mx à voir
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- return user_request.has_perm('machines.view_mx'), u"Vous n'avez pas le droit\
- de voir les enregistrements MX"
-
def __str__(self):
return str(self.zone) + ' ' + str(self.priority) + ' ' + str(self.name)
-class Ns(models.Model):
+class Ns(AclMixin, models.Model):
"""Liste des enregistrements name servers par zone considéérée"""
PRETTY_NAME = "Enregistrements NS"
@@ -923,61 +572,11 @@ class Ns(models.Model):
"""Renvoie un enregistrement NS complet pour les filezones"""
return "@ IN NS " + str(self.ns)
- def get_instance(nsid, *args, **kwargs):
- """Récupère une instance
- :param nsid: Instance id à trouver
- :return: Une instance ns évidemment"""
- return Ns.objects.get(pk=nsid)
-
- def can_create(user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour créer
- un ns
- :param user_request: instance utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- return user_request.has_perm('machines.add_ns'), u"Vous n'avez pas le droit\
- de créer un enregistrement NS"
-
- def can_edit(self, user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour editer
- cette instance ns
- :param self: Instance ns à editer
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- if not user_request.has_perm('machines.change_ns'):
- return False, u"Vous n'avez pas le droit d'éditer des enregistrements NS"
- return True, None
-
- def can_delete(self, user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour del
- cette instance ns
- :param self: Instance ns à delete
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- return user_request.has_perm('machines.del_ns'), u"Vous n'avez pas le droit\
- de supprimer un enregistrement NS"
-
- def can_view_all(user_request, *args, **kwargs):
- """Vérifie qu'on peut bien afficher l'ensemble des ns,
- droit particulier view objet correspondant
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- return user_request.has_perm('machines.view_ns'), u"Vous n'avez pas le droit\
- de voir les enregistrements NS"
-
- def can_view(self, user_request, *args, **kwargs):
- """Vérifie qu'on peut bien voir cette instance particulière avec
- droit view objet
- :param self: instance ns à voir
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- return user_request.has_perm('machines.view_ns'), u"Vous n'avez pas le droit\
- de voir les enregistrements NS"
-
def __str__(self):
return str(self.zone) + ' ' + str(self.ns)
-class Txt(models.Model):
+class Txt(AclMixin, models.Model):
""" Un enregistrement TXT associé à une extension"""
PRETTY_NAME = "Enregistrement TXT"
@@ -990,56 +589,6 @@ class Txt(models.Model):
("view_txt", "Peut voir un objet txt"),
)
- def get_instance(txtid, *args, **kwargs):
- """Récupère une instance
- :param txtid: Instance id à trouver
- :return: Une instance txt évidemment"""
- return Txt.objects.get(pk=txtid)
-
- def can_create(user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour créer
- un txt
- :param user_request: instance utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- return user_request.has_perm('machines.add_txt'), u"Vous n'avez pas le droit\
- de créer un enregistrement TXT"
-
- def can_edit(self, user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour editer
- cette instance txt
- :param self: Instance txt à editer
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- if not user_request.has_perm('machines.change_txt'):
- return False, u"Vous n'avez pas le droit d'éditer des enregistrement TXT"
- return True, None
-
- def can_delete(self, user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour del
- cette instance txt
- :param self: Instance txt à delete
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- return user_request.has_perm('machines.delete_txt'), u"Vous n'avez pas le droit\
- de supprimer des enregistrements TXT"
-
- def can_view_all(user_request, *args, **kwargs):
- """Vérifie qu'on peut bien afficher l'ensemble des txt,
- droit particulier view objet correspondant
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- return user_request.has_perm('machines.view_txt'), u"Vous n'avez pas le droit\
- de voir les enregistrements TXT"
-
- def can_view(self, user_request, *args, **kwargs):
- """Vérifie qu'on peut bien voir cette instance particulière avec
- droit view objet
- :param self: instance txt à voir
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- return user_request.has_perm('machines.view_txt'), u"Vous n'avez pas le droit\
- de voir les enregistrements TXT"
-
def __str__(self):
return str(self.zone) + " : " + str(self.field1) + " " +\
str(self.field2)
@@ -1050,7 +599,7 @@ class Txt(models.Model):
return str(self.field1).ljust(15) + " IN TXT " + str(self.field2)
-class Srv(models.Model):
+class Srv(AclMixin, models.Model):
PRETTY_NAME = "Enregistrement Srv"
TCP = 'TCP'
@@ -1098,56 +647,6 @@ class Srv(models.Model):
("view_soa", "Peut voir un objet soa"),
)
- def get_instance(srvid, *args, **kwargs):
- """Récupère une instance
- :param srvid: Instance id à trouver
- :return: Une instance srv évidemment"""
- return Srv.objects.get(pk=srvid)
-
- def can_create(user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour créer
- un srv
- :param user_request: instance utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- return user_request.has_perm('machines.add_soa'), u"Vous n'avez pas le droit\
- de créer un enregistrement SRV"
-
- def can_edit(self, user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour editer
- cette instance srv
- :param self: Instance srv à editer
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- if not user_request.has_perm('machines.change_soa'):
- return False, u"Vous n'avez pas le droit d'éditer des enregistrements SRV"
- return True, None
-
- def can_delete(self, user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour del
- cette instance srv
- :param self: Instance srv à delete
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- return user_request.has_perm('machines.delete_soa'), u"Vous n'avez pas le droit\
- de supprimer un enregistrement SRV"
-
- def can_view_all(user_request, *args, **kwargs):
- """Vérifie qu'on peut bien afficher l'ensemble des srv,
- droit particulier view objet correspondant
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- return user_request.has_perm('machines.view_soa'), u"Vous n'avez pas le droit\
- de voir les enregistrements SRV"
-
- def can_view(self, user_request, *args, **kwargs):
- """Vérifie qu'on peut bien voir cette instance particulière avec
- droit view objet
- :param self: instance srv à voir
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- return user_request.has_perm('machines.view_soa'), u"Vous n'avez pas le droit\
- de voir les enregistrements SRV"
-
def __str__(self):
return str(self.service) + ' ' + str(self.protocole) + ' ' +\
str(self.extension) + ' ' + str(self.priority) +\
@@ -1162,7 +661,7 @@ class Srv(models.Model):
str(self.port) + ' ' + str(self.target) + '.'
-class Interface(FieldPermissionModelMixin,models.Model):
+class Interface(AclMixin, FieldPermissionModelMixin,models.Model):
""" Une interface. Objet clef de l'application machine :
- une address mac unique. Possibilité de la rendre unique avec le
typemachine
@@ -1320,12 +819,6 @@ class Interface(FieldPermissionModelMixin,models.Model):
correspondent pas")
super(Interface, self).save(*args, **kwargs)
- def get_instance(interfaceid, *args, **kwargs):
- """Récupère une instance
- :param interfaceid: Instance id à trouver
- :return: Une instance interface évidemment"""
- return Interface.objects.get(pk=interfaceid)
-
def can_create(user_request, machineid, *args, **kwargs):
"""Verifie que l'user a les bons droits infra pour créer
une interface, ou bien que la machine appartient bien à l'user
@@ -1377,16 +870,6 @@ class Interface(FieldPermissionModelMixin,models.Model):
d'un autre user que vous sans droit"
return True, None
- def can_view_all(user_request, *args, **kwargs):
- """Vérifie qu'on peut bien afficher l'ensemble des interfaces,
- droit particulier view objet correspondant
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- if not user_request.has_perm('machines.view_interface'):
- return False, u"Vous n'avez pas le droit de voir des machines autre\
- que les vôtres"
- return True, None
-
def can_view(self, user_request, *args, **kwargs):
"""Vérifie qu'on peut bien voir cette instance particulière avec
droit view objet ou qu'elle appartient à l'user
@@ -1425,7 +908,7 @@ class Interface(FieldPermissionModelMixin,models.Model):
return self.ipv4 and not self.has_private_ip()
-class Ipv6List(FieldPermissionModelMixin, models.Model):
+class Ipv6List(AclMixin, FieldPermissionModelMixin, models.Model):
PRETTY_NAME = 'Enregistrements Ipv6 des machines'
ipv6 = models.GenericIPAddressField(
@@ -1441,12 +924,6 @@ class Ipv6List(FieldPermissionModelMixin, models.Model):
("change_ipv6list_slaac_ip", "Peut changer la valeur slaac sur une ipv6"),
)
- def get_instance(ipv6listid, *args, **kwargs):
- """Récupère une instance
- :param interfaceid: Instance id à trouver
- :return: Une instance interface évidemment"""
- return Ipv6List.objects.get(pk=ipv6listid)
-
def can_create(user_request, interfaceid, *args, **kwargs):
"""Verifie que l'user a les bons droits infra pour créer
une ipv6, ou possède l'interface associée
@@ -1491,16 +968,6 @@ class Ipv6List(FieldPermissionModelMixin, models.Model):
d'un autre user que vous sans droit"
return True, None
- def can_view_all(user_request, *args, **kwargs):
- """Vérifie qu'on peut bien afficher l'ensemble des interfaces,
- droit particulier view objet correspondant
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- if not user_request.has_perm('machines.view_ipv6list'):
- return False, u"Vous n'avez pas le droit de voir des machines autre\
- que les vôtres"
- return True, None
-
def can_view(self, user_request, *args, **kwargs):
"""Vérifie qu'on peut bien voir cette instance particulière avec
droit view objet ou qu'elle appartient à l'user
@@ -1545,7 +1012,7 @@ class Ipv6List(FieldPermissionModelMixin, models.Model):
return str(self.ipv6)
-class Domain(models.Model):
+class Domain(AclMixin, models.Model):
""" Objet domain. Enregistrement A et CNAME en même temps : permet de
stocker les alias et les nom de machines, suivant si interface_parent
ou cname sont remplis"""
@@ -1638,12 +1105,6 @@ class Domain(models.Model):
else:
return self.cname.get_parent_interface()
- def get_instance(domainid, *args, **kwargs):
- """Récupère une instance
- :param domainid: Instance id à trouver
- :return: Une instance domain évidemment"""
- return Domain.objects.get(pk=domainid)
-
def can_create(user_request, interfaceid, *args, **kwargs):
"""Verifie que l'user a les bons droits infra pour créer
un domain, ou possède l'interface associée
@@ -1693,16 +1154,6 @@ class Domain(models.Model):
d'un autre user que vous sans droit"
return True, None
- def can_view_all(user_request, *args, **kwargs):
- """Vérifie qu'on peut bien afficher l'ensemble des domain,
- droit particulier view objet correspondant
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- if not user_request.has_perm('machines.view_domain'):
- return False, u"Vous ne pouvez pas supprimer un alias à une machine\
- d'un autre user que vous sans droit"
- return True, None
-
def can_view(self, user_request, *args, **kwargs):
"""Vérifie qu'on peut bien voir cette instance particulière avec
droit view objet ou qu'elle appartient à l'user
@@ -1719,7 +1170,7 @@ class Domain(models.Model):
return str(self.name) + str(self.extension)
-class IpList(models.Model):
+class IpList(AclMixin, models.Model):
PRETTY_NAME = "Addresses ipv4"
ipv4 = models.GenericIPAddressField(protocol='IPv4', unique=True)
@@ -1747,64 +1198,11 @@ class IpList(models.Model):
self.clean()
super(IpList, self).save(*args, **kwargs)
- def get_instance(iplistid, *args, **kwargs):
- """Récupère une instance
- :param iplistid: Instance id à trouver
- :return: Une instance iplist évidemment"""
- return IpList.objects.get(pk=iplistid)
-
- def can_create(user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour créer
- une ip
- :param user_request: instance utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- return user_request.has_perm('machines.add_iplist'), u"Vous n'avez pas le droit\
- de créer une ip"
-
- def can_edit(self, user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour editer
- cette instance ip
- :param self: Instance ip à editer
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- if not user_request.has_perm('machines.change_iplist'):
- return False, u"Vous n'avez pas le droit d'éditer des enregistrements ip"
- return True, None
-
- def can_delete(self, user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour delete
- cette instance ip
- :param self: Instance ip à delete
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- if not user_request.has_perm('machines.delete_iplist'):
- return False, u"Vous n'avez pas le droit d'éditer des enregistrements ip"
- return True, None
-
- def can_view_all(user_request, *args, **kwargs):
- """Vérifie qu'on peut bien afficher l'ensemble des ip,
- droit particulier view objet correspondant
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- if not user_request.has_perm('machines.view_iplist'):
- return False, u"Vous n'avez pas le droit de voir des enregistrements ip"
- return True, None
-
- def can_view(self, user_request, *args, **kwargs):
- """Vérifie qu'on peut bien voir cette instance particulière avec
- droit infra
- :param self: instance iplist à voir
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- if not user_request.has_perm('machines.view_iplist'):
- return False, u"Vous n'avez pas le droit de voir des enregistrements ip"
- return True, None
-
def __str__(self):
return self.ipv4
-class Service(models.Model):
+class Service(AclMixin, models.Model):
""" Definition d'un service (dhcp, dns, etc)"""
PRETTY_NAME = "Services à générer (dhcp, dns, etc)"
@@ -1845,56 +1243,6 @@ class Service(models.Model):
def save(self, *args, **kwargs):
super(Service, self).save(*args, **kwargs)
- def get_instance(serviceid, *args, **kwargs):
- """Récupère une instance
- :param serviceid: Instance id à trouver
- :return: Une instance service évidemment"""
- return Service.objects.get(pk=serviceid)
-
- def can_create(user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour créer
- un service
- :param user_request: instance utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- return user_request.has_perm('machines.add_service'), u"Vous n'avez pas le droit\
- de créer un service"
-
- def can_edit(self, user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour editer
- cette instance service
- :param self: Instance service à editer
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- if not user_request.has_perm('machines.change_service'):
- return False, u"Vous n'avez pas le droit d'éditer des services"
- return True, None
-
- def can_delete(self, user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour delete
- cette instance service
- :param self: Instance service à delete
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- return user_request.has_perm('machines.delete_service'), u"Vous n'avez pas le droit\
- de supprimer un service"
-
- def can_view_all(user_request, *args, **kwargs):
- """Vérifie qu'on peut bien afficher l'ensemble des services,
- droit particulier view objet correspondant
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- return user_request.has_perm('machines.view_service'), u"Vous n'avez pas le droit\
- de voir des services"
-
- def can_view(self, user_request, *args, **kwargs):
- """Vérifie qu'on peut bien voir cette instance particulière avec
- droit view objet
- :param self: instance service à voir
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- return user_request.has_perm('machines.view_service'), u"Vous n'avez pas le droit\
- de voir des services"
-
def __str__(self):
return str(self.service_type)
@@ -1908,7 +1256,7 @@ def regen(service):
return
-class Service_link(models.Model):
+class Service_link(AclMixin, models.Model):
""" Definition du lien entre serveurs et services"""
PRETTY_NAME = "Relation entre service et serveur"
@@ -1935,62 +1283,11 @@ class Service_link(models.Model):
) < timezone.now()
)
- def get_instance(servicelinkid, *args, **kwargs):
- """Récupère une instance
- :param servicelinkid: Instance id à trouver
- :return: Une instance servicelink évidemment"""
- return ServiceLink.objects.get(pk=servicelinkid)
-
- def can_create(user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour créer
- un servicelink
- :param user_request: instance utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- return user_request.has_perm('machines.add_service'), u"Vous n'avez pas le droit\
- de créer un service"
-
- def can_edit(self, user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour editer
- cette instance servicelink
- :param self: Instance servicelink à editer
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- if not user_request.has_perm('machines.change_service'):
- return False, u"Vous n'avez pas le droit d'éditer des services"
- return True, None
-
- def can_delete(self, user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits infra pour delete
- cette instance servicelink
- :param self: Instance servicelink à delete
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- if not user_request.has_perm('machines.delete_service'):
- return False, u"Vous n'avez pas le droit d'éditer des services"
- return True, None
-
- def can_view_all(user_request, *args, **kwargs):
- """Vérifie qu'on peut bien afficher l'ensemble des services,
- droit particulier view objet correspondant
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- return user_request.has_perm('machines.view_service'), u"Vous n'avez pas le droit\
- de voir des liens de services"
-
- def can_view(self, user_request, *args, **kwargs):
- """Vérifie qu'on peut bien voir cette instance particulière avec
- droit view objet
- :param self: instance service à voir
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- return user_request.has_perm('machines.view_service'), u"Vous n'avez pas le droit\
- de voir des liens de services"
-
def __str__(self):
return str(self.server) + " " + str(self.service)
-class OuverturePortList(models.Model):
+class OuverturePortList(AclMixin, models.Model):
"""Liste des ports ouverts sur une interface."""
PRETTY_NAME = "Profil d'ouverture de ports"
@@ -2004,30 +1301,6 @@ class OuverturePortList(models.Model):
("view_ouvertureportlist", "Peut voir un objet ouvertureport"),
)
- def get_instance(ouvertureportlistid, *args, **kwargs):
- """Récupère une instance
- :param ouvertureportlistid: Instance id à trouver
- :return: Une instance ouvertureportlist évidemment"""
- return OuverturePortList.objects.get(pk=ouvertureportlistid)
-
- def can_create(user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits bureau pour créer
- une ouverture de port
- :param user_request: instance utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- return user_request.has_perm('machines.add_ouvertureportlist') , u"Vous n'avez pas le droit\
- d'ouvrir un port"
-
- def can_edit(self, user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits bureau pour editer
- cette instance ouvertureportlist
- :param self: Instance ouvertureportlist à editer
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- if not user_request.has_perm('machines.change_ouvertureportlist'):
- return False, u"Vous n'avez pas le droit d'éditer des ouvertures de port"
- return True, None
-
def can_delete(self, user_request, *args, **kwargs):
"""Verifie que l'user a les bons droits bureau pour delete
cette instance ouvertureportlist
@@ -2041,23 +1314,6 @@ class OuverturePortList(models.Model):
return False, u"Cette liste de ports est utilisée"
return True, None
- def can_view_all(user_request, *args, **kwargs):
- """Vérifie qu'on peut bien afficher l'ensemble des ouvertureport,
- droit particulier view objet correspondant
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- return user_request.has_perm('machines.view_ouvertureportlist'), u"Vous n'avez pas le droit\
- de voir des ouverture de ports"
-
- def can_view(self, user_request, *args, **kwargs):
- """Vérifie qu'on peut bien voir cette instance particulière avec
- droit view objet
- :param self: instance ouvertureport à voir
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- return user_request.has_perm('machines.view_ouvertureportlist'), u"Vous n'avez pas le droit\
- de voir des ouverture de ports"
-
def __str__(self):
return self.name
@@ -2090,7 +1346,7 @@ class OuverturePortList(models.Model):
)
-class OuverturePort(models.Model):
+class OuverturePort(AclMixin, models.Model):
"""
Représente un simple port ou une plage de ports.
@@ -2128,60 +1384,6 @@ class OuverturePort(models.Model):
default=OUT,
)
- def get_instance(ouvertureportid, *args, **kwargs):
- """Récupère une instance
- :param ouvertureportid: Instance id à trouver
- :return: Une instance ouvertureport évidemment"""
- return OuverturePort.objects.get(pk=ouvertureportid)
-
- def can_create(user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits bureau pour créer
- une ouverture de port
- :param user_request: instance utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- return user_request.has_perm('machines.add_ouvertureportlist') , u"Vous n'avez pas le droit\
- d'ouvrir un port"
-
- def can_edit(self, user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits bureau pour editer
- cette instance ouvertureport
- :param self: Instance ouvertureport à editer
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- if not user_request.has_perm('machines.change_ouvertureportlist'):
- return False, u"Vous n'avez pas le droit d'éditer des ouvertures de port"
- return True, None
-
- def can_delete(self, user_request, *args, **kwargs):
- """Verifie que l'user a les bons droits bureau pour delete
- cette instance ouvertureport
- :param self: Instance ouvertureport à delete
- :param user_request: Utilisateur qui fait la requête
- :return: soit True, soit False avec la raison de l'échec"""
- if not user_request.has_perm('machines.delete_ouvertureportlist'):
- return False, u"Vous n'avez pas le droit d'éditer des ouvertures de port"
- return True, None
-
- def can_view_all(user_request, *args, **kwargs):
- """Vérifie qu'on peut bien afficher l'ensemble des ouvertureport,
- droit particulier view objet correspondant
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- if not user_request.has_perm('machines.view_ouvertureportlist'):
- return False, u"Vous n'avez pas le droit d'éditer des ouvertures de port"
- return True, None
-
- def can_view(self, user_request, *args, **kwargs):
- """Vérifie qu'on peut bien voir cette instance particulière avec
- droit view objet
- :param self: instance ouvertureport à voir
- :param user_request: instance user qui fait l'edition
- :return: True ou False avec la raison de l'échec le cas échéant"""
- if not user_request.has_perm('machines.view_ouvertureportlist'):
- return False, u"Vous n'avez pas le droit d'éditer des ouvertures de port"
- return True, None
-
-
def __str__(self):
if self.begin == self.end:
return str(self.begin)
diff --git a/machines/templates/machines/aff_extension.html b/machines/templates/machines/aff_extension.html
index 0da5a08e..44061b1b 100644
--- a/machines/templates/machines/aff_extension.html
+++ b/machines/templates/machines/aff_extension.html
@@ -24,6 +24,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
{% load acl %}
+
@@ -38,7 +39,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
{% for extension in extension_list %}
-
+
{{ extension.name }} |
{{ extension.need_infra }} |
{{ extension.soa}} |
@@ -47,7 +48,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
{{ extension.origin_v6 }} |
{% endif %}
- {% can_create Extension %}
+ {% can_edit extension %}
{% include 'buttons/edit.html' with href='machines:edit-extension' id=extension.id %}
{% acl_end %}
{% include 'buttons/history.html' with href='machines:history' name='extension' id=extension.id %}
@@ -55,4 +56,4 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
{% endfor %}
-
+
diff --git a/machines/templates/machines/aff_iptype.html b/machines/templates/machines/aff_iptype.html
index c5ed4c10..1a76e303 100644
--- a/machines/templates/machines/aff_iptype.html
+++ b/machines/templates/machines/aff_iptype.html
@@ -23,15 +23,14 @@ with this program; if not, write to the Free Software Foundation, Inc.,
{% endcomment %}
{% load acl %}
-
+
Type d'ip |
Extension |
Nécessite l'autorisation infra |
- Début |
- Fin |
+ Plage ipv4 |
Préfixe v6 |
Sur vlan |
Ouverture ports par défault |
@@ -44,8 +43,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
{{ type.type }} |
{{ type.extension }} |
{{ type.need_infra }} |
- {{ type.domaine_ip_start }} |
- {{ type.domaine_ip_stop }} |
+ {{ type.domaine_ip_start }}-{{ type.domaine_ip_stop }} |
{{ type.prefix_v6 }} |
{{ type.vlan }} |
{{ type.ouverture_ports }} |
@@ -58,4 +56,4 @@ with this program; if not, write to the Free Software Foundation, Inc.,
{% endfor %}
-
+
diff --git a/machines/templates/machines/aff_vlan.html b/machines/templates/machines/aff_vlan.html
index deb8cb11..de49c7a6 100644
--- a/machines/templates/machines/aff_vlan.html
+++ b/machines/templates/machines/aff_vlan.html
@@ -24,6 +24,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
{% load acl %}
+
@@ -41,7 +42,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
{{ vlan.comment }} |
{% for range in vlan.iptype_set.all %}{{ range }}, {% endfor%} |
- {% can_create Vlan %}
+ {% can_edit vlan %}
{% include 'buttons/edit.html' with href='machines:edit-vlan' id=vlan.id %}
{% acl_end %}
{% include 'buttons/history.html' with href='machines:history' name='vlan' id=vlan.id %}
@@ -49,4 +50,4 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
{% endfor %}
-
+
diff --git a/preferences/models.py b/preferences/models.py
index 5238e1a5..c0d761e6 100644
--- a/preferences/models.py
+++ b/preferences/models.py
@@ -34,7 +34,7 @@ from django.dispatch import receiver
from django.core.cache import cache
from .aes_field import AESEncryptedField
-
+from re2o.mixins import AclMixin
class PreferencesModel(models.Model):
@classmethod
@@ -54,7 +54,7 @@ class PreferencesModel(models.Model):
abstract = True
-class OptionalUser(PreferencesModel):
+class OptionalUser(AclMixin, PreferencesModel):
"""Options pour l'user : obligation ou nom du telephone,
activation ou non du solde, autorisation du negatif, fingerprint etc"""
PRETTY_NAME = "Options utilisateur"
@@ -101,58 +101,6 @@ class OptionalUser(PreferencesModel):
("view_optionaluser", "Peut voir les options de l'user"),
)
- def get_instance(*args, **kwargs):
- return OptionalUser.objects.get_or_create()
-
- def can_create(user_request, *args, **kwargs):
- """Check if an user can create a OptionalUser object.
-
- :param user_request: The user who wants to create a user object.
- :return: a message and a boolean which is True if the user can create.
- """
- return user_request.has_perm('preferences.add_optionaluser'), u"Vous n'avez pas le droit\
- de créer les préférences concernant les users"
-
- def can_edit(self, user_request, *args, **kwargs):
- """Check if an user can edit a OptionalUser object.
-
- :param self: The OptionalUser which is to be edited.
- :param user_request: The user who requests to edit self.
- :return: a message and a boolean which is True if edition is granted.
- """
- return user_request.has_perm('preferences.change_optionaluser'), u"Vous n'avez pas le droit\
- d'éditer les préférences concernant les users"
-
- def can_delete(self, user_request, *args, **kwargs):
- """Check if an user can delete a OptionalUser object.
-
- :param self: The OptionalUser which is to be deleted.
- :param user_request: The user who requests deletion.
- :return: True if deletion is granted, and a message.
- """
- return user_request.has_perm('preferences.delete_optionaluser'), u"Vous n'avez pas le droit\
- de supprimer les préférences concernant les users"
-
- def can_view_all(user_request, *args, **kwargs):
- """Check if an user can access to the list of every OptionalUser objects
-
- :param user_request: The user who wants to view the list.
- :return: True if the user can view the list and an explanation message.
- """
- return user_request.has_perm('preferences.view_optionaluser'), u"Vous n'avez pas le droit\
- de voir les préférences concernant les utilisateurs"
-
- def can_view(self, user_request, *args, **kwargs):
- """Check if an user can view a OptionalUser object.
-
- :param self: The targeted OptionalUser.
- :param user_request: The user who ask for viewing the target.
- :return: A boolean telling if the acces is granted and an explanation
- text
- """
- return user_request.has_perm('preferences.view_optionaluser'), u"Vous n'avez pas le droit\
- de voir les préférences concernant les utilisateurs"
-
def clean(self):
"""Creation du mode de paiement par solde"""
if self.user_solde:
@@ -169,7 +117,7 @@ def optionaluser_post_save(sender, **kwargs):
user_pref.set_in_cache()
-class OptionalMachine(PreferencesModel):
+class OptionalMachine(AclMixin, PreferencesModel):
"""Options pour les machines : maximum de machines ou d'alias par user
sans droit, activation de l'ipv6"""
PRETTY_NAME = "Options machines"
@@ -205,59 +153,6 @@ class OptionalMachine(PreferencesModel):
("view_optionalmachine", "Peut voir les options de machine"),
)
- def get_instance(*args, **kwargs):
- return OptionalMachine.objects.get_or_create()
-
- def can_create(user_request, *args, **kwargs):
- """Check if an user can create a OptionalMachine object.
-
- :param user_request: The user who wants to create an object.
- :return: a message and a boolean which is True if the user can create.
- """
- return user_request.has_perm('preferences.add_optionalmachine'), u"Vous n'avez pas le droit\
- de créer les préférences concernant les machines"
-
- def can_edit(self, user_request, *args, **kwargs):
- """Check if an user can edit a OptionalMachine object.
-
- :param self: The OptionalMachine which is to be edited.
- :param user_request: The user who requests to edit self.
- :return: a message and a boolean which is True if edition is granted.
- """
- return user_request.has_perm('preferences.change_optionalmachine'), u"Vous n'avez pas le droit\
- d'éditer les préférences concernant les machines"
-
- def can_delete(self, user_request, *args, **kwargs):
- """Check if an user can delete a OptionalMachine object.
-
- :param self: The OptionalMachine which is to be deleted.
- :param user_request: The user who requests deletion.
- :return: True if deletion is granted, and a message.
- """
-
- return user_request.has_perm('preferences.delete_optionalmachine'), u"Vous n'avez pas le droit\
- de supprimer les préférences concernant les machines"
-
- def can_view_all(user_request, *args, **kwargs):
- """Check if an user can access to the list of every OptionalMachine objects
-
- :param user_request: The user who wants to view the list.
- :return: True if the user can view the list and an explanation message.
- """
- return user_request.has_perm('preferences.view_optionalmachine'), u"Vous n'avez pas le droit\
- de voir les préférences concernant les machines"
-
- def can_view(self, user_request, *args, **kwargs):
- """Check if an user can view a OptionalMachine object.
-
- :param self: The targeted OptionalMachine.
- :param user_request: The user who ask for viewing the target.
- :return: A boolean telling if the acces is granted and an explanation
- text
- """
- return user_request.has_perm('preferences.view_optionalmachine'), u"Vous n'avez pas le droit\
- de voir les préférences concernant les machines"
-
@receiver(post_save, sender=OptionalMachine)
def optionalmachine_post_save(sender, **kwargs):
@@ -269,7 +164,7 @@ def optionalmachine_post_save(sender, **kwargs):
interface.sync_ipv6()
-class OptionalTopologie(PreferencesModel):
+class OptionalTopologie(AclMixin, PreferencesModel):
"""Reglages pour la topologie : mode d'accès radius, vlan où placer
les machines en accept ou reject"""
PRETTY_NAME = "Options topologie"
@@ -306,58 +201,6 @@ class OptionalTopologie(PreferencesModel):
("view_optionaltopologie", "Peut voir les options de topologie"),
)
- def get_instance(*args, **kwargs):
- return OptionalTopologie.objects.get_or_create()
-
- def can_create(user_request, *args, **kwargs):
- """Check if an user can create a OptionalTopologie object.
-
- :param user_request: The user who wants to create an object.
- :return: a message and a boolean which is True if the user can create.
- """
- return user_request.has_perm('preferences.add_optionaltopologie'), u"Vous n'avez pas le droit\
- de créer les préférences concernant la topologie"
-
- def can_edit(self, user_request, *args, **kwargs):
- """Check if an user can edit a OptionalTopologie object.
-
- :param self: The OptionalTopologie which is to be edited.
- :param user_request: The user who requests to edit self.
- :return: a message and a boolean which is True if edition is granted.
- """
- return user_request.has_perm('preferences.change_optionaltopologie'), u"Vous n'avez pas le droit\
- d'éditer les préférences concernant la topologie"
-
- def can_delete(self, user_request, *args, **kwargs):
- """Check if an user can delete a OptionalTopologie object.
-
- :param self: The OptionalTopologie which is to be deleted.
- :param user_request: The user who requests deletion.
- :return: True if deletion is granted, and a message.
- """
- return user_request.has_perm('preferences.delete_optionaltoplogie'), u"Vous n'avez pas le droit\
- d'éditer les préférences concernant la topologie"
-
- def can_view_all(user_request, *args, **kwargs):
- """Check if an user can access to the list of every OptionalTopologie objects
-
- :param user_request: The user who wants to view the list.
- :return: True if the user can view the list and an explanation message.
- """
- return user_request.has_perm('preferences.view_optionaltopologie'), u"Vous n'avez pas le droit\
- de voir les préférences concernant la topologie"
-
- def can_view(self, user_request, *args, **kwargs):
- """Check if an user can view a OptionalTopologie object.
-
- :param self: The targeted OptionalTopologie.
- :param user_request: The user who ask for viewing the target.
- :return: A boolean telling if the acces is granted and an explanation
- text
- """
- return user_request.has_perm('preferences.view_optionaltopologie'), u"Vous n'avez pas le droit\
- de voir les préférences concernant la topologie"
-
@receiver(post_save, sender=OptionalTopologie)
def optionaltopologie_post_save(sender, **kwargs):
@@ -366,7 +209,7 @@ def optionaltopologie_post_save(sender, **kwargs):
topologie_pref.set_in_cache()
-class GeneralOption(PreferencesModel):
+class GeneralOption(AclMixin, PreferencesModel):
"""Options générales : nombre de resultats par page, nom du site,
temps où les liens sont valides"""
PRETTY_NAME = "Options générales"
@@ -398,59 +241,6 @@ class GeneralOption(PreferencesModel):
("view_generaloption", "Peut voir les options générales"),
)
- def get_instance(*args, **kwargs):
- return GeneralOption.objects.get_or_create()
-
- def can_create(user_request, *args, **kwargs):
- """Check if an user can create a GeneralOption object.
-
- :param user_request: The user who wants to create an object.
- :return: a message and a boolean which is True if the user can create.
- """
- return user_request.has_perm('preferences.add_generaloption'), u"Vous n'avez pas le droit\
- de créer les préférences générales"
-
- def can_edit(self, user_request, *args, **kwargs):
- """Check if an user can edit a GeneralOption object.
-
- :param self: The GeneralOption which is to be edited.
- :param user_request: The user who requests to edit self.
- :return: a message and a boolean which is True if edition is granted.
- """
- return user_request.has_perm('preferences.change_generaloption'), u"Vous n'avez pas le droit\
- d'éditer les préférences générales"
-
- def can_delete(self, user_request, *args, **kwargs):
- """Check if an user can delete a GeneralOption object.
-
- :param self: The GeneralOption which is to be deleted.
- :param user_request: The user who requests deletion.
- :return: True if deletion is granted, and a message.
- """
- return user_request.has_perm('preferences.delete_generaloption'), u"Vous n'avez pas le droit\
- d'éditer les préférences générales"
-
- def can_view_all(user_request, *args, **kwargs):
- """Check if an user can access to the list of every GeneralOption objects
-
- :param user_request: The user who wants to view the list.
- :return: True if the user can view the list and an explanation message.
- """
-
- return user_request.has_perm('preferences.view_generaloption'), u"Vous n'avez pas le droit\
- de voir les préférences générales"
-
- def can_view(self, user_request, *args, **kwargs):
- """Check if an user can view a GeneralOption object.
-
- :param self: The targeted GeneralOption.
- :param user_request: The user who ask for viewing the target.
- :return: A boolean telling if the acces is granted and an explanation
- text
- """
- return user_request.has_perm('preferences.view_generaloption'), u"Vous n'avez pas le droit\
- de voir les préférences générales"
-
@receiver(post_save, sender=GeneralOption)
def generaloption_post_save(sender, **kwargs):
@@ -459,7 +249,7 @@ def generaloption_post_save(sender, **kwargs):
general_pref.set_in_cache()
-class Service(models.Model):
+class Service(AclMixin, models.Model):
"""Liste des services affichés sur la page d'accueil : url, description,
image et nom"""
name = models.CharField(max_length=32)
@@ -472,65 +262,11 @@ class Service(models.Model):
("view_service", "Peut voir les options de service"),
)
- def get_instance(serviceid, *args, **kwargs):
- return Service.objects.get(pk=serviceid)
-
- def can_create(user_request, *args, **kwargs):
- """Check if an user can create a Service object.
-
- :param user_request: The user who wants to create an object.
- :return: a message and a boolean which is True if the user can create.
- """
-
- return user_request.has_perm('preferences.add_service'), u"Vous n'avez pas le droit\
- de créer un service pour la page d'accueil"
-
- def can_edit(self, user_request, *args, **kwargs):
- """Check if an user can edit a Service object.
-
- :param self: The Service which is to be edited.
- :param user_request: The user who requests to edit self.
- :return: a message and a boolean which is True if edition is granted.
- """
- return user_request.has_perm('preferences.change_service'), u"Vous n'avez pas le droit\
- d'éditer les services pour la page d'accueil"
-
- def can_delete(self, user_request, *args, **kwargs):
- """Check if an user can delete a Service object.
-
- :param self: The Right which is to be deleted.
- :param user_request: The user who requests deletion.
- :return: True if deletion is granted, and a message.
- """
- return user_request.has_perm('preferences.delete_service'), u"Vous n'avez pas le droit\
- de supprimer les services pour la page d'accueil"
-
- def can_view_all(user_request, *args, **kwargs):
- """Check if an user can access to the list of every Service objects
-
- :param user_request: The user who wants to view the list.
- :return: True if the user can view the list and an explanation message.
- """
-
- return user_request.has_perm('preferences.view_service'), u"Vous n'avez pas le droit\
- de voir les services pour la page d'accueil"
-
- def can_view(self, user_request, *args, **kwargs):
- """Check if an user can view a Service object.
-
- :param self: The targeted Service.
- :param user_request: The user who ask for viewing the target.
- :return: A boolean telling if the acces is granted and an explanation
- text
- """
- return user_request.has_perm('preferences.view_service'), u"Vous n'avez pas le droit\
- de voir les services pour la page d'accueil"
-
def __str__(self):
return str(self.name)
-class AssoOption(PreferencesModel):
+class AssoOption(AclMixin, PreferencesModel):
"""Options générales de l'asso : siret, addresse, nom, etc"""
PRETTY_NAME = "Options de l'association"
@@ -579,58 +315,6 @@ class AssoOption(PreferencesModel):
("view_assooption", "Peut voir les options de l'asso"),
)
- def get_instance(*args, **kwargs):
- return AssoOption.objects.get_or_create()
-
- def can_create(user_request, *args, **kwargs):
- """Check if an user can create a AssoOption object.
-
- :param user_request: The user who wants to create an object.
- :return: a message and a boolean which is True if the user can create.
- """
- return user_request.has_perm('preferences.add_assooption'), u"Vous n'avez pas le droit\
- d'éditer les préférences concernant l'association"
-
- def can_edit(self, user_request, *args, **kwargs):
- """Check if an user can edit a AssoOption object.
-
- :param self: The AssoOption which is to be edited.
- :param user_request: The user who requests to edit self.
- :return: a message and a boolean which is True if edition is granted.
- """
- return user_request.has_perm('preferences.change_assooption'), u"Vous n'avez pas le droit\
- d'éditer les préférences concernant l'association"
-
- def can_delete(self, user_request, *args, **kwargs):
- """Check if an user can delete a AssoOption object.
-
- :param self: The AssoOption which is to be deleted.
- :param user_request: The user who requests deletion.
- :return: True if deletion is granted, and a message.
- """
- return user_request.has_perm('preferences.delete_assooption'), u"Vous n'avez pas le droit\
- d'éditer les préférences concernant l'association"
-
- def can_view_all(user_request, *args, **kwargs):
- """Check if an user can access to the list of every AssoOption objects
-
- :param user_request: The user who wants to view the list.
- :return: True if the user can view the list and an explanation message.
- """
- return user_request.has_perm('preferences.view_assooption'), u"Vous n'avez pas le droit\
- de voir les préférences concernant l'association"
-
- def can_view(self, user_request, *args, **kwargs):
- """Check if an user can view a AssoOption object.
-
- :param self: The targeted AssoOption.
- :param user_request: The user who ask for viewing the target.
- :return: A boolean telling if the acces is granted and an explanation
- text
- """
- return user_request.has_perm('preferences.view_assooption'), u"Vous n'avez pas le droit\
- de voir les préférences concernant l'association"
-
@receiver(post_save, sender=AssoOption)
def assooption_post_save(sender, **kwargs):
@@ -639,7 +323,7 @@ def assooption_post_save(sender, **kwargs):
asso_pref.set_in_cache()
-class MailMessageOption(models.Model):
+class MailMessageOption(AclMixin, models.Model):
"""Reglages, mail de bienvenue et autre"""
PRETTY_NAME = "Options de corps de mail"
@@ -650,56 +334,3 @@ class MailMessageOption(models.Model):
permissions = (
("view_mailmessageoption", "Peut voir les options de mail"),
)
-
- def get_instance(*args, **kwargs):
- return MailMessageOption.objects.get_or_create()
-
- def can_create(user_request, *args, **kwargs):
- """Check if an user can create a MailMessageOption object.
-
- :param user_request: The user who wants to create an object.
- :return: a message and a boolean which is True if the user can create.
- """
- return user_request.has_perm('preferences.add_mailmessageoption'), u"Vous n'avez pas le droit\
- d'éditer les préférences concernant les mails"
-
- def can_edit(self, user_request, *args, **kwargs):
- """Check if an user can edit a MailMessageOption object.
-
- :param self: The MailMessageOption which is to be edited.
- :param user_request: The user who requests to edit self.
- :return: a message and a boolean which is True if edition is granted.
- """
-
- return user_request.has_perm('preferences.change_mailmessageoption'), u"Vous n'avez pas le droit\
- d'éditer les préférences concernant les mails"
-
- def can_delete(self, user_request, *args, **kwargs):
- """Check if an user can delete a AssoOption object.
-
- :param self: The AssoOption which is to be deleted.
- :param user_request: The user who requests deletion.
- :return: True if deletion is granted, and a message.
- """
- return user_request.has_perm('preferences.delete_mailmessageoption'), u"Vous n'avez pas le droit\
- d'éditer les préférences concernant les mails"
-
- def can_view_all(user_request, *args, **kwargs):
- """Check if an user can access to the list of every AssoOption objects
-
- :param user_request: The user who wants to view the list.
- :return: True if the user can view the list and an explanation message.
- """
- return user_request.has_perm('preferences.view_mailmessageoption'), u"Vous n'avez pas le droit\
- de voir les préférences concernant les mails"
-
- def can_view(self, user_request, *args, **kwargs):
- """Check if an user can view a AssoOption object.
-
- :param self: The targeted AssoOption.
- :param user_request: The user who ask for viewing the target.
- :return: A boolean telling if the acces is granted and an explanation
- text
- """
- return user_request.has_perm('preferences.view_mailmessageoption'), u"Vous n'avez pas le droit\
- de voir les préférences concernant les mails"
diff --git a/re2o/mixins.py b/re2o/mixins.py
new file mode 100644
index 00000000..09c197d5
--- /dev/null
+++ b/re2o/mixins.py
@@ -0,0 +1,88 @@
+# -*- mode: python; coding: utf-8 -*-
+# Re2o est un logiciel d'administration développé initiallement au rezometz. Il
+# se veut agnostique au réseau considéré, de manière à être installable en
+# quelques clics.
+#
+# Copyright © 2018 Gabriel Détraz
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+class AclMixin(object):
+ """This mixin is used in nearly every class/models defined in re2o apps.
+ It is used by acl, in models (decorators can_...) and in templates tags
+ :get_instance: Applied on a class, take an id argument, return an instance
+ :can_create: Applied on a class, take the requested user, return if the user
+ can do the creation
+ :can_edit: Applied on an instance, return if the user can edit the instance
+ :can_delete: Applied on an instance, return if the user can delete the instance
+ :can_view: Applied on an instance, return if the user can view the instance
+ :can_view_all: Applied on a class, return if the user can view all instances"""
+
+ @classmethod
+ def get_classname(cls):
+ return str(cls.__name__).lower()
+
+ @classmethod
+ def get_modulename(cls):
+ return str(cls.__module__).split('.')[0].lower()
+
+ @classmethod
+ def get_instance(cls, *args, **kwargs):
+ """Récupère une instance
+ :param objectid: Instance id à trouver
+ :return: Une instance de la classe évidemment"""
+ object_id = kwargs.get(cls.get_classname() + 'id')
+ return cls.objects.get(pk=object_id)
+
+ @classmethod
+ def can_create(cls, user_request, *args, **kwargs):
+ """Verifie que l'user a les bons droits pour créer
+ un object
+ :param user_request: instance utilisateur qui fait la requête
+ :return: soit True, soit False avec la raison de l'échec"""
+ return user_request.has_perm(cls.get_modulename() + '.add_' + cls.get_classname()), u"Vous n'avez pas le droit\
+ de créer un " + cls.get_classname()
+
+ def can_edit(self, user_request, *args, **kwargs):
+ """Verifie que l'user a les bons droits pour editer
+ cette instance
+ :param self: Instance à editer
+ :param user_request: Utilisateur qui fait la requête
+ :return: soit True, soit False avec la raison de l'échec"""
+ return user_request.has_perm(self.get_modulename() + '.change_' + self.get_classname()), u"Vous n'avez pas le droit d'éditer des " + self.get_classname()
+
+ def can_delete(self, user_request, *args, **kwargs):
+ """Verifie que l'user a les bons droits pour delete
+ cette instance
+ :param self: Instance à delete
+ :param user_request: Utilisateur qui fait la requête
+ :return: soit True, soit False avec la raison de l'échec"""
+ return user_request.has_perm(self.get_modulename() + '.delete_' + self.get_classname()), u"Vous n'avez pas le droit d'éditer des " + self.get_classname()
+
+ @classmethod
+ def can_view_all(cls, user_request, *args, **kwargs):
+ """Vérifie qu'on peut bien afficher l'ensemble des objets,
+ droit particulier view objet correspondant
+ :param user_request: instance user qui fait l'edition
+ :return: True ou False avec la raison de l'échec le cas échéant"""
+ return user_request.has_perm(cls.get_modulename() + '.view_' + cls.get_classname()), u"Vous n'avez pas le droit de voir des " + cls.get_classname()
+
+ def can_view(self, user_request, *args, **kwargs):
+ """Vérifie qu'on peut bien voir cette instance particulière avec
+ droit view objet
+ :param self: instance à voir
+ :param user_request: instance user qui fait l'edition
+ :return: True ou False avec la raison de l'échec le cas échéant"""
+ return user_request.has_perm(self.get_modulename() + '.view_' + self.get_classname()), u"Vous n'avez pas le droit de voir des " + self.get_classname()
diff --git a/re2o/utils.py b/re2o/utils.py
index 32be2432..aaefca8d 100644
--- a/re2o/utils.py
+++ b/re2o/utils.py
@@ -190,6 +190,10 @@ class SortTable:
'white_end': ['date_end'],
'default': ['-date_end']
}
+ USERS_INDEX_SCHOOL = {
+ 'school_name': ['name'],
+ 'default': ['name']
+ }
MACHINES_INDEX = {
'machine_name': ['name'],
'default': ['pk']
diff --git a/re2o/views.py b/re2o/views.py
index 9a987e5a..9965dcda 100644
--- a/re2o/views.py
+++ b/re2o/views.py
@@ -65,7 +65,7 @@ HISTORY_BIND = {
'school' : users.models.School,
'listright' : users.models.ListRight,
'serviceuser' : users.models.ServiceUser,
- 'shell' : users.models.ListShell,
+ 'listshell' : users.models.ListShell,
},
'preferences' : {
'service' : preferences.models.Service,
@@ -81,9 +81,9 @@ HISTORY_BIND = {
'port' : topologie.models.Port,
'room' : topologie.models.Room,
'stack' : topologie.models.Stack,
- 'model_switch' : topologie.models.ModelSwitch,
- 'constructor_switch' : topologie.models.ConstructorSwitch,
- 'ap' : topologie.models.AccessPoint,
+ 'modelswitch' : topologie.models.ModelSwitch,
+ 'constructorswitch' : topologie.models.ConstructorSwitch,
+ 'accesspoint' : topologie.models.AccessPoint,
},
'machines' : {
'machine' : machines.models.Machine,
@@ -99,7 +99,7 @@ HISTORY_BIND = {
'ns' : machines.models.Ns,
'service' : machines.models.Service,
'vlan' : machines.models.Vlan,
- 'nas' : machines.models.Vlan,
+ 'nas' : machines.models.Nas,
'ipv6list' : machines.models.Ipv6List,
},
}
@@ -128,8 +128,10 @@ def history(request, application, object_name, object_id):
model = HISTORY_BIND[application][object_name]
except KeyError as e:
raise Http404(u"Il n'existe pas d'historique pour ce modèle.")
+ object_name_id = object_name + 'id'
+ kwargs = {object_name_id: object_id}
try:
- instance = model.get_instance(object_id)
+ instance = model.get_instance(**kwargs)
except model.DoesNotExist:
messages.error(request, u"Entrée inexistante")
return redirect(reverse('users:profil',
diff --git a/templates/base.html b/templates/base.html
index 740881bf..6961e583 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -83,9 +83,10 @@ with this program; if not, write to the Free Software Foundation, Inc.,
Adhérents