Commit ef1dbc88 authored by Gabriel Detraz's avatar Gabriel Detraz Committed by chirac
Browse files

Poc de acl mixin, factorisation du code

parent 72e70e74
......@@ -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
......@@ -161,7 +162,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"
......@@ -190,33 +191,6 @@ class MachineType(models.Model):
: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 +205,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"
......@@ -384,56 +341,11 @@ class IpType(models.Model):
: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"
......@@ -453,55 +365,11 @@ class Vlan(models.Model):
: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"""
......@@ -542,56 +410,11 @@ class Nas(models.Model):
: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 :
......@@ -634,50 +457,6 @@ class SOA(models.Model):
: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 +497,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"
......@@ -772,56 +551,12 @@ class Extension(models.Model):
: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 +566,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 """
......@@ -858,55 +593,11 @@ class Mx(models.Model):
: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"
......@@ -929,55 +620,11 @@ class Ns(models.Model):
: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"
......@@ -996,50 +643,6 @@ class Txt(models.Model):
: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 +653,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'
......@@ -1104,50 +707,6 @@ class Srv(models.Model):
: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) +\
......@@ -1719,7 +1278,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)
......@@ -1753,58 +1312,11 @@ class IpList(models.Model):
: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