mirror of
https://gitlab2.federez.net/re2o/re2o
synced 2024-11-25 22:22:26 +00:00
Factorise les get_instance dans le mixin acl
This commit is contained in:
parent
46ba34ec0b
commit
007ad3310a
5 changed files with 24 additions and 243 deletions
|
@ -59,7 +59,7 @@ from machines.models import regen
|
||||||
from re2o.field_permissions import FieldPermissionModelMixin
|
from re2o.field_permissions import FieldPermissionModelMixin
|
||||||
from re2o.mixins import AclMixin
|
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
|
""" 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
|
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
|
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))
|
).values_list('name', flat=True))
|
||||||
return name
|
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):
|
def can_edit(self, user_request, *args, **kwargs):
|
||||||
if not user_request.has_perm('cotisations.change_facture'):
|
if not user_request.has_perm('cotisations.change_facture'):
|
||||||
return False, u"Vous n'avez pas le droit d'éditer les factures"
|
return False, u"Vous n'avez pas le droit d'éditer les factures"
|
||||||
|
@ -144,11 +137,6 @@ class Facture(FieldPermissionModelMixin, models.Model):
|
||||||
else:
|
else:
|
||||||
return True, None
|
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):
|
def can_view(self, user_request, *args, **kwargs):
|
||||||
if not user_request.has_perm('cotisations.view_facture') and\
|
if not user_request.has_perm('cotisations.view_facture') and\
|
||||||
self.user != user_request:
|
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)
|
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,
|
"""Objet vente, contient une quantité, une facture parente, un nom,
|
||||||
un prix. Peut-être relié à un objet cotisation, via le boolean
|
un prix. Peut-être relié à un objet cotisation, via le boolean
|
||||||
iscotisation"""
|
iscotisation"""
|
||||||
|
@ -277,14 +265,6 @@ class Vente(models.Model):
|
||||||
self.update_cotisation()
|
self.update_cotisation()
|
||||||
super(Vente, self).save(*args, **kwargs)
|
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):
|
def can_edit(self, user_request, *args, **kwargs):
|
||||||
if not user_request.has_perm('cotisations.change_vente'):
|
if not user_request.has_perm('cotisations.change_vente'):
|
||||||
return False, u"Vous n'avez pas le droit d'éditer les ventes"
|
return False, u"Vous n'avez pas le droit d'éditer les ventes"
|
||||||
|
@ -308,11 +288,6 @@ class Vente(models.Model):
|
||||||
else:
|
else:
|
||||||
return True, None
|
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):
|
def can_view(self, user_request, *args, **kwargs):
|
||||||
if not user_request.has_perm('cotisations.view_vente') and\
|
if not user_request.has_perm('cotisations.view_vente') and\
|
||||||
self.facture.user != user_request:
|
self.facture.user != user_request:
|
||||||
|
@ -402,9 +377,6 @@ class Article(AclMixin, models.Model):
|
||||||
"La durée est obligatoire si il s'agit d'une cotisation"
|
"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 __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
@ -420,9 +392,6 @@ class Banque(AclMixin, models.Model):
|
||||||
("view_banque", "Peut voir un objet banque"),
|
("view_banque", "Peut voir un objet banque"),
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_instance(banqueid, *args, **kwargs):
|
|
||||||
return Banque.objects.get(pk=banqueid)
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
@ -443,9 +412,6 @@ class Paiement(AclMixin, models.Model):
|
||||||
("view_paiement", "Peut voir un objet paiement"),
|
("view_paiement", "Peut voir un objet paiement"),
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_instance(paiementid, *args, **kwargs):
|
|
||||||
return Paiement.objects.get(pk=paiementid)
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.moyen
|
return self.moyen
|
||||||
|
|
||||||
|
@ -460,7 +426,7 @@ class Paiement(AclMixin, models.Model):
|
||||||
super(Paiement, self).save(*args, **kwargs)
|
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"""
|
"""Objet cotisation, debut et fin, relié en onetoone à une vente"""
|
||||||
PRETTY_NAME = "Cotisations"
|
PRETTY_NAME = "Cotisations"
|
||||||
|
|
||||||
|
@ -485,14 +451,6 @@ class Cotisation(models.Model):
|
||||||
("change_all_cotisation", "Superdroit, peut modifier toutes les cotisations"),
|
("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):
|
def can_edit(self, user_request, *args, **kwargs):
|
||||||
if not user_request.has_perm('cotisations.change_cotisation'):
|
if not user_request.has_perm('cotisations.change_cotisation'):
|
||||||
return False, u"Vous n'avez pas le droit d'éditer les cotisations"
|
return False, u"Vous n'avez pas le droit d'éditer les cotisations"
|
||||||
|
@ -512,11 +470,6 @@ class Cotisation(models.Model):
|
||||||
else:
|
else:
|
||||||
return True, None
|
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):
|
def can_view(self, user_request, *args, **kwargs):
|
||||||
if not user_request.has_perm('cotisations.view_cotisation') and\
|
if not user_request.has_perm('cotisations.view_cotisation') and\
|
||||||
self.vente.facture.user != user_request:
|
self.vente.facture.user != user_request:
|
||||||
|
|
|
@ -65,12 +65,6 @@ class Machine(FieldPermissionModelMixin, models.Model):
|
||||||
("change_machine_user", "Peut changer le propriétaire d'une machine"),
|
("change_machine_user", "Peut changer le propriétaire d'une machine"),
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_instance(machineid, *args, **kwargs):
|
|
||||||
"""Récupère une instance
|
|
||||||
:param machineid: Instance id à trouver
|
|
||||||
:return: Une instance machine évidemment"""
|
|
||||||
return Machine.objects.get(pk=machineid)
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def can_change_user(user_request, *args, **kwargs):
|
def can_change_user(user_request, *args, **kwargs):
|
||||||
"""Checks if an user is allowed to change the user who owns a
|
"""Checks if an user is allowed to change the user who owns a
|
||||||
|
@ -85,6 +79,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."
|
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):
|
def can_create(user_request, userid, *args, **kwargs):
|
||||||
"""Vérifie qu'un user qui fait la requète peut bien créer la machine
|
"""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
|
et n'a pas atteint son quota, et crée bien une machine à lui
|
||||||
|
@ -132,15 +135,6 @@ class Machine(FieldPermissionModelMixin, models.Model):
|
||||||
d'un autre user que vous sans droit"
|
d'un autre user que vous sans droit"
|
||||||
return True, None
|
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):
|
def can_view(self, user_request, *args, **kwargs):
|
||||||
"""Vérifie qu'on peut bien voir cette instance particulière (soit
|
"""Vérifie qu'on peut bien voir cette instance particulière (soit
|
||||||
machine de soi, soit droit particulier
|
machine de soi, soit droit particulier
|
||||||
|
@ -185,13 +179,6 @@ class MachineType(AclMixin, models.Model):
|
||||||
machinetype"""
|
machinetype"""
|
||||||
return Interface.objects.filter(type=self)
|
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_use_all(user_request, *args, **kwargs):
|
def can_use_all(user_request, *args, **kwargs):
|
||||||
"""Check if an user can use every MachineType.
|
"""Check if an user can use every MachineType.
|
||||||
|
|
||||||
|
@ -329,12 +316,6 @@ class IpType(AclMixin, models.Model):
|
||||||
self.clean()
|
self.clean()
|
||||||
super(IpType, self).save(*args, **kwargs)
|
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):
|
def can_use_all(user_request, *args, **kwargs):
|
||||||
"""Superdroit qui permet d'utiliser toutes les extensions sans restrictions
|
"""Superdroit qui permet d'utiliser toutes les extensions sans restrictions
|
||||||
:param user_request: instance user qui fait l'edition
|
:param user_request: instance user qui fait l'edition
|
||||||
|
@ -359,12 +340,6 @@ class Vlan(AclMixin, models.Model):
|
||||||
("view_vlan", "Peut voir un objet vlan"),
|
("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 __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
@ -404,12 +379,6 @@ class Nas(AclMixin, models.Model):
|
||||||
("view_nas", "Peut voir un objet Nas"),
|
("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 __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
@ -451,12 +420,6 @@ class SOA(AclMixin, models.Model):
|
||||||
("view_soa", "Peut voir un objet soa"),
|
("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 __str__(self):
|
def __str__(self):
|
||||||
return str(self.name)
|
return str(self.name)
|
||||||
|
|
||||||
|
@ -545,12 +508,6 @@ class Extension(AclMixin, models.Model):
|
||||||
entry += "@ IN AAAA " + str(self.origin_v6)
|
entry += "@ IN AAAA " + str(self.origin_v6)
|
||||||
return entry
|
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_use_all(user_request, *args, **kwargs):
|
def can_use_all(user_request, *args, **kwargs):
|
||||||
"""Superdroit qui permet d'utiliser toutes les extensions sans restrictions
|
"""Superdroit qui permet d'utiliser toutes les extensions sans restrictions
|
||||||
:param user_request: instance user qui fait l'edition
|
:param user_request: instance user qui fait l'edition
|
||||||
|
@ -587,12 +544,6 @@ class Mx(AclMixin, models.Model):
|
||||||
fichiers de zones"""
|
fichiers de zones"""
|
||||||
return "@ IN MX " + str(self.priority).ljust(3) + " " + str(self.name)
|
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 __str__(self):
|
def __str__(self):
|
||||||
return str(self.zone) + ' ' + str(self.priority) + ' ' + str(self.name)
|
return str(self.zone) + ' ' + str(self.priority) + ' ' + str(self.name)
|
||||||
|
|
||||||
|
@ -614,12 +565,6 @@ class Ns(AclMixin, models.Model):
|
||||||
"""Renvoie un enregistrement NS complet pour les filezones"""
|
"""Renvoie un enregistrement NS complet pour les filezones"""
|
||||||
return "@ IN NS " + str(self.ns)
|
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 __str__(self):
|
def __str__(self):
|
||||||
return str(self.zone) + ' ' + str(self.ns)
|
return str(self.zone) + ' ' + str(self.ns)
|
||||||
|
|
||||||
|
@ -637,12 +582,6 @@ class Txt(AclMixin, models.Model):
|
||||||
("view_txt", "Peut voir un objet txt"),
|
("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 __str__(self):
|
def __str__(self):
|
||||||
return str(self.zone) + " : " + str(self.field1) + " " +\
|
return str(self.zone) + " : " + str(self.field1) + " " +\
|
||||||
str(self.field2)
|
str(self.field2)
|
||||||
|
@ -701,12 +640,6 @@ class Srv(AclMixin, models.Model):
|
||||||
("view_soa", "Peut voir un objet soa"),
|
("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 __str__(self):
|
def __str__(self):
|
||||||
return str(self.service) + ' ' + str(self.protocole) + ' ' +\
|
return str(self.service) + ' ' + str(self.protocole) + ' ' +\
|
||||||
str(self.extension) + ' ' + str(self.priority) +\
|
str(self.extension) + ' ' + str(self.priority) +\
|
||||||
|
@ -721,7 +654,7 @@ class Srv(AclMixin, models.Model):
|
||||||
str(self.port) + ' ' + str(self.target) + '.'
|
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 interface. Objet clef de l'application machine :
|
||||||
- une address mac unique. Possibilité de la rendre unique avec le
|
- une address mac unique. Possibilité de la rendre unique avec le
|
||||||
typemachine
|
typemachine
|
||||||
|
@ -879,12 +812,6 @@ class Interface(FieldPermissionModelMixin,models.Model):
|
||||||
correspondent pas")
|
correspondent pas")
|
||||||
super(Interface, self).save(*args, **kwargs)
|
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):
|
def can_create(user_request, machineid, *args, **kwargs):
|
||||||
"""Verifie que l'user a les bons droits infra pour créer
|
"""Verifie que l'user a les bons droits infra pour créer
|
||||||
une interface, ou bien que la machine appartient bien à l'user
|
une interface, ou bien que la machine appartient bien à l'user
|
||||||
|
@ -936,16 +863,6 @@ class Interface(FieldPermissionModelMixin,models.Model):
|
||||||
d'un autre user que vous sans droit"
|
d'un autre user que vous sans droit"
|
||||||
return True, None
|
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):
|
def can_view(self, user_request, *args, **kwargs):
|
||||||
"""Vérifie qu'on peut bien voir cette instance particulière avec
|
"""Vérifie qu'on peut bien voir cette instance particulière avec
|
||||||
droit view objet ou qu'elle appartient à l'user
|
droit view objet ou qu'elle appartient à l'user
|
||||||
|
@ -984,7 +901,7 @@ class Interface(FieldPermissionModelMixin,models.Model):
|
||||||
return self.ipv4 and not self.has_private_ip()
|
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'
|
PRETTY_NAME = 'Enregistrements Ipv6 des machines'
|
||||||
|
|
||||||
ipv6 = models.GenericIPAddressField(
|
ipv6 = models.GenericIPAddressField(
|
||||||
|
@ -1000,12 +917,6 @@ class Ipv6List(FieldPermissionModelMixin, models.Model):
|
||||||
("change_ipv6list_slaac_ip", "Peut changer la valeur slaac sur une ipv6"),
|
("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):
|
def can_create(user_request, interfaceid, *args, **kwargs):
|
||||||
"""Verifie que l'user a les bons droits infra pour créer
|
"""Verifie que l'user a les bons droits infra pour créer
|
||||||
une ipv6, ou possède l'interface associée
|
une ipv6, ou possède l'interface associée
|
||||||
|
@ -1050,16 +961,6 @@ class Ipv6List(FieldPermissionModelMixin, models.Model):
|
||||||
d'un autre user que vous sans droit"
|
d'un autre user que vous sans droit"
|
||||||
return True, None
|
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):
|
def can_view(self, user_request, *args, **kwargs):
|
||||||
"""Vérifie qu'on peut bien voir cette instance particulière avec
|
"""Vérifie qu'on peut bien voir cette instance particulière avec
|
||||||
droit view objet ou qu'elle appartient à l'user
|
droit view objet ou qu'elle appartient à l'user
|
||||||
|
@ -1104,7 +1005,7 @@ class Ipv6List(FieldPermissionModelMixin, models.Model):
|
||||||
return str(self.ipv6)
|
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
|
""" Objet domain. Enregistrement A et CNAME en même temps : permet de
|
||||||
stocker les alias et les nom de machines, suivant si interface_parent
|
stocker les alias et les nom de machines, suivant si interface_parent
|
||||||
ou cname sont remplis"""
|
ou cname sont remplis"""
|
||||||
|
@ -1197,12 +1098,6 @@ class Domain(models.Model):
|
||||||
else:
|
else:
|
||||||
return self.cname.get_parent_interface()
|
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):
|
def can_create(user_request, interfaceid, *args, **kwargs):
|
||||||
"""Verifie que l'user a les bons droits infra pour créer
|
"""Verifie que l'user a les bons droits infra pour créer
|
||||||
un domain, ou possède l'interface associée
|
un domain, ou possède l'interface associée
|
||||||
|
@ -1252,16 +1147,6 @@ class Domain(models.Model):
|
||||||
d'un autre user que vous sans droit"
|
d'un autre user que vous sans droit"
|
||||||
return True, None
|
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):
|
def can_view(self, user_request, *args, **kwargs):
|
||||||
"""Vérifie qu'on peut bien voir cette instance particulière avec
|
"""Vérifie qu'on peut bien voir cette instance particulière avec
|
||||||
droit view objet ou qu'elle appartient à l'user
|
droit view objet ou qu'elle appartient à l'user
|
||||||
|
@ -1306,12 +1191,6 @@ class IpList(AclMixin, models.Model):
|
||||||
self.clean()
|
self.clean()
|
||||||
super(IpList, self).save(*args, **kwargs)
|
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 __str__(self):
|
def __str__(self):
|
||||||
return self.ipv4
|
return self.ipv4
|
||||||
|
|
||||||
|
@ -1357,12 +1236,6 @@ class Service(AclMixin, models.Model):
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
super(Service, self).save(*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 __str__(self):
|
def __str__(self):
|
||||||
return str(self.service_type)
|
return str(self.service_type)
|
||||||
|
|
||||||
|
@ -1403,12 +1276,6 @@ class Service_link(AclMixin, models.Model):
|
||||||
) < timezone.now()
|
) < 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 __str__(self):
|
def __str__(self):
|
||||||
return str(self.server) + " " + str(self.service)
|
return str(self.server) + " " + str(self.service)
|
||||||
|
|
||||||
|
@ -1427,12 +1294,6 @@ class OuverturePortList(AclMixin, models.Model):
|
||||||
("view_ouvertureportlist", "Peut voir un objet ouvertureport"),
|
("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_delete(self, user_request, *args, **kwargs):
|
def can_delete(self, user_request, *args, **kwargs):
|
||||||
"""Verifie que l'user a les bons droits bureau pour delete
|
"""Verifie que l'user a les bons droits bureau pour delete
|
||||||
cette instance ouvertureportlist
|
cette instance ouvertureportlist
|
||||||
|
@ -1516,12 +1377,6 @@ class OuverturePort(AclMixin, models.Model):
|
||||||
default=OUT,
|
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 __str__(self):
|
def __str__(self):
|
||||||
if self.begin == self.end:
|
if self.begin == self.end:
|
||||||
return str(self.begin)
|
return str(self.begin)
|
||||||
|
|
|
@ -3,9 +3,7 @@
|
||||||
# se veut agnostique au réseau considéré, de manière à être installable en
|
# se veut agnostique au réseau considéré, de manière à être installable en
|
||||||
# quelques clics.
|
# quelques clics.
|
||||||
#
|
#
|
||||||
# Copyright © 2017 Gabriel Détraz
|
# Copyright © 2018 Gabriel Détraz
|
||||||
# Copyright © 2017 Goulven Kermarec
|
|
||||||
# Copyright © 2017 Augustin Lemesle
|
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# 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
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
@ -30,6 +28,14 @@ class AclMixin(object):
|
||||||
def get_modulename(cls):
|
def get_modulename(cls):
|
||||||
return str(cls.__module__).split('.')[0].lower()
|
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
|
@classmethod
|
||||||
def can_create(cls, user_request, *args, **kwargs):
|
def can_create(cls, user_request, *args, **kwargs):
|
||||||
"""Verifie que l'user a les bons droits infra pour créer
|
"""Verifie que l'user a les bons droits infra pour créer
|
||||||
|
|
|
@ -67,9 +67,6 @@ class Stack(AclMixin, models.Model):
|
||||||
("view_stack", "Peut voir un objet stack"),
|
("view_stack", "Peut voir un objet stack"),
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_instance(stack_id, *args, **kwargs):
|
|
||||||
return Stack.objects.get(pk=stack_id)
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return " ".join([self.name, self.stack_id])
|
return " ".join([self.name, self.stack_id])
|
||||||
|
|
||||||
|
@ -105,9 +102,6 @@ class AccessPoint(AclMixin, Machine):
|
||||||
("view_accesspoint", "Peut voir une borne"),
|
("view_accesspoint", "Peut voir une borne"),
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_instance(ap_id, *args, **kwargs):
|
|
||||||
return AccessPoint.objects.get(pk=ap_id)
|
|
||||||
|
|
||||||
|
|
||||||
class Switch(AclMixin, Machine):
|
class Switch(AclMixin, Machine):
|
||||||
""" Definition d'un switch. Contient un nombre de ports (number),
|
""" Definition d'un switch. Contient un nombre de ports (number),
|
||||||
|
@ -146,9 +140,6 @@ class Switch(AclMixin, Machine):
|
||||||
("view_switch", "Peut voir un objet switch"),
|
("view_switch", "Peut voir un objet switch"),
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_instance(switch_id, *args, **kwargs):
|
|
||||||
return Switch.objects.get(pk=switch_id)
|
|
||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
""" Verifie que l'id stack est dans le bon range
|
""" Verifie que l'id stack est dans le bon range
|
||||||
Appelle également le clean de la classe parente"""
|
Appelle également le clean de la classe parente"""
|
||||||
|
@ -210,9 +201,6 @@ class ModelSwitch(AclMixin, models.Model):
|
||||||
("view_modelswitch", "Peut voir un objet modelswitch"),
|
("view_modelswitch", "Peut voir un objet modelswitch"),
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_instance(model_switch_id, *args, **kwargs):
|
|
||||||
return ModelSwitch.objects.get(pk=model_switch_id)
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return str(self.constructor) + ' ' + self.reference
|
return str(self.constructor) + ' ' + self.reference
|
||||||
|
|
||||||
|
@ -227,9 +215,6 @@ class ConstructorSwitch(AclMixin, models.Model):
|
||||||
("view_constructorswitch", "Peut voir un objet constructorswitch"),
|
("view_constructorswitch", "Peut voir un objet constructorswitch"),
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_instance(constructor_switch_id, *args, **kwargs):
|
|
||||||
return ConstructorSwitch.objects.get(pk=constructor_switch_id)
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
@ -363,9 +348,6 @@ class Room(AclMixin, models.Model):
|
||||||
("view_room", "Peut voir un objet chambre"),
|
("view_room", "Peut voir un objet chambre"),
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_instance(room_id, *args, **kwargs):
|
|
||||||
return Room.objects.get(pk=room_id)
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
|
|
@ -990,9 +990,6 @@ class ServiceUser(AclMixin, AbstractBaseUser):
|
||||||
)]).values_list('dn', flat=True))
|
)]).values_list('dn', flat=True))
|
||||||
group.save()
|
group.save()
|
||||||
|
|
||||||
def get_instance(userid, *args, **kwargs):
|
|
||||||
return ServiceUser.objects.get(pk=userid)
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.pseudo
|
return self.pseudo
|
||||||
|
|
||||||
|
@ -1021,9 +1018,6 @@ class School(AclMixin, models.Model):
|
||||||
("view_school", "Peut voir un objet school"),
|
("view_school", "Peut voir un objet school"),
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_instance(schoolid, *args, **kwargs):
|
|
||||||
return School.objects.get(pk=schoolid)
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
@ -1058,9 +1052,6 @@ class ListRight(AclMixin, Group):
|
||||||
("view_listright", "Peut voir un objet Group/ListRight"),
|
("view_listright", "Peut voir un objet Group/ListRight"),
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_instance(listrightid, *args, **kwargs):
|
|
||||||
return ListRight.objects.get(pk=listrightid)
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
@ -1110,9 +1101,6 @@ class ListShell(AclMixin, models.Model):
|
||||||
("view_listshell", "Peut voir un objet shell quelqu'il soit"),
|
("view_listshell", "Peut voir un objet shell quelqu'il soit"),
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_instance(shellid, *args, **kwargs):
|
|
||||||
return ListShell.objects.get(pk=shellid)
|
|
||||||
|
|
||||||
def get_pretty_name(self):
|
def get_pretty_name(self):
|
||||||
"""Return the canonical name of the shell"""
|
"""Return the canonical name of the shell"""
|
||||||
return self.shell.split("/")[-1]
|
return self.shell.split("/")[-1]
|
||||||
|
@ -1236,9 +1224,6 @@ class Whitelist(AclMixin, models.Model):
|
||||||
def is_active(self):
|
def is_active(self):
|
||||||
return self.date_end > timezone.now()
|
return self.date_end > timezone.now()
|
||||||
|
|
||||||
def get_instance(whitelistid, *args, **kwargs):
|
|
||||||
return Whitelist.objects.get(pk=whitelistid)
|
|
||||||
|
|
||||||
def can_view(self, user_request, *args, **kwargs):
|
def can_view(self, user_request, *args, **kwargs):
|
||||||
"""Check if an user can view a Whitelist object.
|
"""Check if an user can view a Whitelist object.
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue