8
0
Fork 0
mirror of https://gitlab2.federez.net/re2o/re2o synced 2024-09-12 01:03:09 +00:00

Applique nouveau système acl sur machines

This commit is contained in:
Gabriel Detraz 2017-12-31 19:47:22 +01:00 committed by root
parent 88d336816e
commit d7ab3e7291
2 changed files with 255 additions and 94 deletions

View file

@ -0,0 +1,79 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2017-12-31 18:47
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('machines', '0069_auto_20171116_0822'),
]
operations = [
migrations.AlterModelOptions(
name='domain',
options={'permissions': (('view_domain', 'Peut voir un objet domain'),)},
),
migrations.AlterModelOptions(
name='extension',
options={'permissions': (('view_extension', 'Peut voir un objet extension'), ('use_all_extension', 'Peut utiliser toutes les extension'))},
),
migrations.AlterModelOptions(
name='interface',
options={'permissions': (('view_interface', 'Peut voir un objet interface'),)},
),
migrations.AlterModelOptions(
name='iplist',
options={'permissions': (('view_iplist', 'Peut voir un objet iplist'),)},
),
migrations.AlterModelOptions(
name='iptype',
options={'permissions': (('view_iptype', 'Peut voir un objet iptype'), ('use_all_iptype', 'Peut utiliser tous les iptype'))},
),
migrations.AlterModelOptions(
name='machine',
options={'permissions': (('view_machine', 'Peut voir un objet machine quelquonque'), ('change_machine_user', "Peut changer le propriétaire d'une machine"))},
),
migrations.AlterModelOptions(
name='machinetype',
options={'permissions': (('view_machinetype', 'Peut voir un objet machinetype'), ('use_all_machinetype', "Peut utiliser n'importe quel type de machine"))},
),
migrations.AlterModelOptions(
name='mx',
options={'permissions': (('view_mx', 'Peut voir un objet mx'),)},
),
migrations.AlterModelOptions(
name='nas',
options={'permissions': (('view_nas', 'Peut voir un objet Nas'),)},
),
migrations.AlterModelOptions(
name='ns',
options={'permissions': (('view_nx', 'Peut voir un objet nx'),)},
),
migrations.AlterModelOptions(
name='ouvertureportlist',
options={'permissions': (('view_ouvertureportlist', 'Peut voir un objet ouvertureport'),)},
),
migrations.AlterModelOptions(
name='service',
options={'permissions': (('view_service', 'Peut voir un objet service'),)},
),
migrations.AlterModelOptions(
name='soa',
options={'permissions': (('view_soa', 'Peut voir un objet soa'),)},
),
migrations.AlterModelOptions(
name='srv',
options={'permissions': (('view_soa', 'Peut voir un objet soa'),)},
),
migrations.AlterModelOptions(
name='txt',
options={'permissions': (('view_txt', 'Peut voir un objet txt'),)},
),
migrations.AlterModelOptions(
name='vlan',
options={'permissions': (('view_vlan', 'Peut voir un objet vlan'),)},
),
]

View file

@ -57,6 +57,12 @@ class Machine(FieldPermissionModelMixin, models.Model):
)
active = models.BooleanField(default=True)
class Meta:
permissions = (
("view_machine", "Peut voir un objet machine quelquonque"),
("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
@ -75,7 +81,7 @@ class Machine(FieldPermissionModelMixin, models.Model):
A tuple with a boolean stating if edition is allowed and an
explanation message.
"""
return user_request.has_perms(('infra',)), "Vous ne pouvez pas \
return user_request.has_perm('machines.change_machine_user'), "Vous ne pouvez pas \
modifier l'utilisateur de la machine."
def can_create(user_request, userid, *args, **kwargs):
@ -90,7 +96,7 @@ class Machine(FieldPermissionModelMixin, models.Model):
return False, u"Utilisateur inexistant"
options, created = preferences.models.OptionalMachine.objects.get_or_create()
max_lambdauser_interfaces = options.max_lambdauser_interfaces
if not user_request.has_perms(('cableur',)):
if not user_request.has_perm('machines.add_machine'):
if user != user_request:
return False, u"Vous ne pouvez pas ajouter une machine à un\
autre user que vous sans droit"
@ -106,7 +112,7 @@ class Machine(FieldPermissionModelMixin, models.Model):
:param self: instance machine à éditer
:param user_request: instance user qui fait l'edition
:return: True ou False avec la raison le cas échéant"""
if not user_request.has_perms(('cableur',)) and self.user != user_request:
if not user_request.has_perm('machines.change_machine') and self.user != user_request:
return False, u"Vous ne pouvez pas éditer une machine d'un autre user\
que vous sans droit"
return True, None
@ -117,7 +123,7 @@ class Machine(FieldPermissionModelMixin, models.Model):
:param self: instance machine à 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_perms(('cableur',)) and self.user != user_request:
if not user_request.has_perm('machines.delete_machine') and self.user != user_request:
return False, u"Vous ne pouvez pas éditer une machine d'un autre user\
que vous sans droit"
return True, None
@ -127,7 +133,7 @@ class Machine(FieldPermissionModelMixin, models.Model):
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_perms(('cableur',)):
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
@ -137,7 +143,7 @@ class Machine(FieldPermissionModelMixin, models.Model):
:param self: instance machine à éditer
: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_perms(('cableur',)) and self.user != user_request:
if not user_request.has_perm('machines.view_machine') and self.user != user_request:
return False, u"Vous n'avez pas droit de voir les machines autre\
que les vôtres"
return True, None
@ -158,6 +164,12 @@ class MachineType(models.Model):
null=True
)
class Meta:
permissions = (
("view_machinetype", "Peut voir un objet machinetype"),
("use_all_machinetype", "Peut utiliser n'importe quel type de machine"),
)
def all_interfaces(self):
""" Renvoie toutes les interfaces (cartes réseaux) de type
machinetype"""
@ -174,7 +186,7 @@ class MachineType(models.Model):
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_perms(('infra',)), u"Vous n'avez pas le droit\
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):
@ -183,7 +195,7 @@ class MachineType(models.Model):
: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_perms(('infra',)):
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
@ -193,7 +205,7 @@ class MachineType(models.Model):
: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_perms(('infra',)):
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
@ -206,7 +218,7 @@ class MachineType(models.Model):
A tuple with a boolean stating if user can acces and an explanation
message is acces is not allowed.
"""
if not user_request.has_perms(('infra',)):
if not user_request.has_perm('machines.use_all_machinetype'):
return False, u"Vous n'avez pas le droit d'utiliser tout types de machines"
return True, None
@ -215,7 +227,7 @@ class MachineType(models.Model):
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_perms(('cableur',)), u"Vous n'avez pas le droit\
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):
@ -224,7 +236,7 @@ class MachineType(models.Model):
: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_perms(('cableur',)), u"Vous n'avez pas le droit\
return user_request.has_perm('machines.view_machinetype'), u"Vous n'avez pas le droit\
de voir les types de machines"
def __str__(self):
@ -257,6 +269,12 @@ class IpType(models.Model):
null=True
)
class Meta:
permissions = (
("view_iptype", "Peut voir un objet iptype"),
("use_all_iptype", "Peut utiliser tous les iptype"),
)
@cached_property
def ip_range(self):
""" Renvoie un objet IPRange à partir de l'objet IpType"""
@ -347,7 +365,7 @@ class IpType(models.Model):
"""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_perms(('infra',)), None
return user_request.has_perm('machines.use_all_iptype'), None
def can_create(user_request, *args, **kwargs):
@ -355,7 +373,7 @@ class IpType(models.Model):
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_perms(('infra',)), u"Vous n'avez pas le droit\
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):
@ -364,7 +382,7 @@ class IpType(models.Model):
: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_perms(('infra',)):
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
@ -374,7 +392,7 @@ class IpType(models.Model):
: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_perms(('infra',)), u"Vous n'avez pas le droit\
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):
@ -382,7 +400,7 @@ class IpType(models.Model):
droit particulier cableur 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_perms(('cableur',)), u"Vous n'avez pas le droit\
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):
@ -391,7 +409,7 @@ class IpType(models.Model):
: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_perms(('cableur',)), u"Vous n'avez pas le droit\
return user_request.has_perm('machines.view_iptype'), u"Vous n'avez pas le droit\
de voir les types d'ip"
def __str__(self):
@ -407,6 +425,11 @@ class Vlan(models.Model):
name = models.CharField(max_length=256)
comment = models.CharField(max_length=256, blank=True)
class Meta:
permissions = (
("view_vlan", "Peut voir un objet vlan"),
)
def get_instance(vlanid, *args, **kwargs):
"""Récupère une instance
:param vlanid: Instance id à trouver
@ -418,7 +441,7 @@ class Vlan(models.Model):
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_perms(('infra',)), u"Vous n'avez pas le droit\
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):
@ -427,7 +450,7 @@ class Vlan(models.Model):
: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_perms(('infra',)):
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
@ -437,7 +460,7 @@ class Vlan(models.Model):
: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_perms(('infra',)), u"Vous n'avez pas le droit\
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):
@ -445,7 +468,7 @@ class Vlan(models.Model):
droit particulier cableur 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_perms(('cableur',)), u"Vous n'avez pas le droit\
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):
@ -454,7 +477,7 @@ class Vlan(models.Model):
: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_perms(('cableur',)), u"Vous n'avez pas le droit\
return user_request.has_perm('machines.view_vlan'), u"Vous n'avez pas le droit\
de voir les vlans"
def __str__(self):
@ -491,6 +514,11 @@ class Nas(models.Model):
)
autocapture_mac = models.BooleanField(default=False)
class Meta:
permissions = (
("view_nas", "Peut voir un objet Nas"),
)
def get_instance(nasid, *args, **kwargs):
"""Récupère une instance
:param nasid: Instance id à trouver
@ -502,7 +530,7 @@ class Nas(models.Model):
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_perms(('infra',)), u"Vous n'avez pas le droit\
return user_request.has_perm('machines.create_nas'), u"Vous n'avez pas le droit\
de créer un nas"
def can_edit(self, user_request, *args, **kwargs):
@ -511,7 +539,7 @@ class Nas(models.Model):
: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_perms(('infra',)):
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
@ -521,7 +549,7 @@ class Nas(models.Model):
: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_perms(('infra',)), u"Vous n'avez pas le droit\
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):
@ -530,7 +558,7 @@ class Nas(models.Model):
: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_perms(('cableur',)), u"Vous n'avez pas le droit\
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):
@ -539,7 +567,7 @@ class Nas(models.Model):
: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_perms(('cableur',)), u"Vous n'avez pas le droit\
return user_request.has_perm('machines.view_nas'), u"Vous n'avez pas le droit\
de voir les nas"
def __str__(self):
@ -578,6 +606,11 @@ class SOA(models.Model):
help_text='Time To Live'
)
class Meta:
permissions = (
("view_soa", "Peut voir un objet soa"),
)
def get_instance(soaid, *args, **kwargs):
"""Récupère une instance
:param soaid: Instance id à trouver
@ -589,7 +622,7 @@ class SOA(models.Model):
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_perms(('infra',)), u"Vous n'avez pas le droit\
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):
@ -598,7 +631,7 @@ class SOA(models.Model):
: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_perms(('infra',)):
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
@ -608,7 +641,7 @@ class SOA(models.Model):
: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_perms(('infra',)), u"Vous n'avez pas le droit\
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):
@ -616,7 +649,7 @@ class SOA(models.Model):
droit particulier cableur 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_perms(('cableur',)), u"Vous n'avez pas le droit\
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):
@ -625,7 +658,7 @@ class SOA(models.Model):
: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_perms(('cableur',)), u"Vous n'avez pas le droit\
return user_request.has_perm('machines.view_soa'), u"Vous n'avez pas le droit\
de voir les enreistrement SOA"
def __str__(self):
@ -698,6 +731,12 @@ class Extension(models.Model):
default=SOA.new_default_soa
)
class Meta:
permissions = (
("view_extension", "Peut voir un objet extension"),
("use_all_extension", "Peut utiliser toutes les extension"),
)
@cached_property
def dns_entry(self):
""" Une entrée DNS A et AAAA sur origin (zone self)"""
@ -721,7 +760,7 @@ class Extension(models.Model):
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_perms(('infra',)), u"Vous n'avez pas le droit\
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):
@ -730,7 +769,7 @@ class Extension(models.Model):
: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_perms(('infra',)):
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
@ -740,7 +779,7 @@ class Extension(models.Model):
: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_perms(('infra',)), u"Vous n'avez pas le droit\
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):
@ -748,14 +787,14 @@ class Extension(models.Model):
droit particulier cableur 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_perms(('cableur',)), u"Vous n'avez pas le droit\
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_perms(('infra',)), None
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
@ -763,7 +802,7 @@ class Extension(models.Model):
: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_perms(('cableur',)), u"Vous n'avez pas le droit\
return user_request.has_perm('machines.view_extension'), u"Vous n'avez pas le droit\
de voir les extensions"
def __str__(self):
@ -785,6 +824,11 @@ class Mx(models.Model):
priority = models.PositiveIntegerField(unique=True)
name = models.OneToOneField('Domain', on_delete=models.PROTECT)
class Meta:
permissions = (
("view_mx", "Peut voir un objet mx"),
)
@cached_property
def dns_entry(self):
"""Renvoie l'entrée DNS complète pour un MX à mettre dans les
@ -802,7 +846,7 @@ class Mx(models.Model):
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_perms(('infra',)), u"Vous n'avez pas le droit\
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):
@ -811,7 +855,7 @@ class Mx(models.Model):
: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_perms(('infra',)):
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
@ -821,7 +865,7 @@ class Mx(models.Model):
: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_perms(('infra',)), u"Vous n'avez pas le droit\
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):
@ -829,7 +873,7 @@ class Mx(models.Model):
droit particulier cableur 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_perms(('cableur',)), u"Vous n'avez pas le droit\
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):
@ -838,7 +882,7 @@ class Mx(models.Model):
: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_perms(('cableur',)), u"Vous n'avez pas le droit\
return user_request.has_perm('machines.view_mx'), u"Vous n'avez pas le droit\
de voir les enregistrements MX"
def __str__(self):
@ -852,6 +896,11 @@ class Ns(models.Model):
zone = models.ForeignKey('Extension', on_delete=models.PROTECT)
ns = models.OneToOneField('Domain', on_delete=models.PROTECT)
class Meta:
permissions = (
("view_nx", "Peut voir un objet nx"),
)
@cached_property
def dns_entry(self):
"""Renvoie un enregistrement NS complet pour les filezones"""
@ -868,7 +917,7 @@ class Ns(models.Model):
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_perms(('infra',)), u"Vous n'avez pas le droit\
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):
@ -877,7 +926,7 @@ class Ns(models.Model):
: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_perms(('infra',)):
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
@ -887,7 +936,7 @@ class Ns(models.Model):
: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_perms(('infra',)), u"Vous n'avez pas le droit\
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):
@ -895,7 +944,7 @@ class Ns(models.Model):
droit particulier cableur 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_perms(('cableur',)), u"Vous n'avez pas le droit\
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):
@ -904,7 +953,7 @@ class Ns(models.Model):
: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_perms(('cableur',)), u"Vous n'avez pas le droit\
return user_request.has_perm('machines.view_ns'), u"Vous n'avez pas le droit\
de voir les enregistrements NS"
def __str__(self):
@ -919,6 +968,11 @@ class Txt(models.Model):
field1 = models.CharField(max_length=255)
field2 = models.TextField(max_length=2047)
class Meta:
permissions = (
("view_txt", "Peut voir un objet txt"),
)
def get_instance(txtid, *args, **kwargs):
"""Récupère une instance
:param txtid: Instance id à trouver
@ -930,7 +984,7 @@ class Txt(models.Model):
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_perms(('infra',)), u"Vous n'avez pas le droit\
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):
@ -939,7 +993,7 @@ class Txt(models.Model):
: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_perms(('infra',)):
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
@ -949,7 +1003,7 @@ class Txt(models.Model):
: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_perms(('infra',)), u"Vous n'avez pas le droit\
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):
@ -957,7 +1011,7 @@ class Txt(models.Model):
droit particulier cableur 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_perms(('cableur',)), u"Vous n'avez pas le droit\
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):
@ -966,7 +1020,7 @@ class Txt(models.Model):
: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_perms(('cableur',)), u"Vous n'avez pas le droit\
return user_request.has_perm('machines.view_txt'), u"Vous n'avez pas le droit\
de voir les enregistrements TXT"
def __str__(self):
@ -1022,6 +1076,11 @@ class Srv(models.Model):
help_text="Serveur cible"
)
class Meta:
permissions = (
("view_soa", "Peut voir un objet soa"),
)
def get_instance(srvid, *args, **kwargs):
"""Récupère une instance
:param srvid: Instance id à trouver
@ -1033,7 +1092,7 @@ class Srv(models.Model):
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_perms(('infra',)), u"Vous n'avez pas le droit\
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):
@ -1042,7 +1101,7 @@ class Srv(models.Model):
: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_perms(('infra',)):
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
@ -1052,7 +1111,7 @@ class Srv(models.Model):
: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_perms(('infra',)), u"Vous n'avez pas le droit\
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):
@ -1060,7 +1119,7 @@ class Srv(models.Model):
droit particulier cableur 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_perms(('cableur',)), u"Vous n'avez pas le droit\
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):
@ -1069,7 +1128,7 @@ class Srv(models.Model):
: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_perms(('cableur',)), u"Vous n'avez pas le droit\
return user_request.has_perm('machines.view_soa'), u"Vous n'avez pas le droit\
de voir les enregistrements SRV"
def __str__(self):
@ -1108,6 +1167,11 @@ class Interface(models.Model):
details = models.CharField(max_length=255, blank=True)
port_lists = models.ManyToManyField('OuverturePortList', blank=True)
class Meta:
permissions = (
("view_interface", "Peut voir un objet interface"),
)
@cached_property
def is_active(self):
""" Renvoie si une interface doit avoir accès ou non """
@ -1205,7 +1269,7 @@ class Interface(models.Model):
machine = Machine.objects.get(pk=machineid)
except Machine.DoesNotExist:
return False, u"Machine inexistante"
if not user_request.has_perms(('cableur',)):
if not user_request.has_perm('machines.add_interface'):
options, created = preferences.models.OptionalMachine.objects.get_or_create()
max_lambdauser_interfaces = options.max_lambdauser_interfaces
if machine.user != user_request:
@ -1223,7 +1287,7 @@ class Interface(models.Model):
:param self: Instance interface à 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_perms(('cableur',)) and self.machine.user != user_request:
if not user_request.has_perm('machines.change_interface') and self.machine.user != user_request:
return False, u"Vous ne pouvez pas éditer une machine\
d'un autre user que vous sans droit"
return True, None
@ -1234,7 +1298,7 @@ class Interface(models.Model):
:param self: Instance interface à del
: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_perms(('cableur',)) and self.machine.user != user_request:
if not user_request.has_perm('machines.delete_interface') and self.machine.user != user_request:
return False, u"Vous ne pouvez pas éditer une machine d'un autre\
user que vous sans droit"
return True, None
@ -1244,7 +1308,7 @@ class Interface(models.Model):
droit particulier cableur 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_perms(('cableur',)):
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
@ -1255,7 +1319,7 @@ class Interface(models.Model):
:param self: instance interface à 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_perms(('cableur',)) and self.machine.user != user_request:
if not user_request.has_perm('machines.view_interface') and self.machine.user != user_request:
return False, u"Vous n'avez pas le droit de voir des machines autre\
que les vôtres"
return True, None
@ -1307,6 +1371,9 @@ class Domain(models.Model):
class Meta:
unique_together = (("name", "extension"),)
permissions = (
("view_domain", "Peut voir un objet domain"),
)
def get_extension(self):
""" Retourne l'extension de l'interface parente si c'est un A
@ -1387,7 +1454,7 @@ class Domain(models.Model):
interface = Interface.objects.get(pk=interfaceid)
except Interface.DoesNotExist:
return False, u"Interface inexistante"
if not user_request.has_perms(('cableur',)):
if not user_request.has_perm('machines.add_domain'):
options, created = preferences.models.OptionalMachine.objects.get_or_create()
max_lambdauser_aliases = options.max_lambdauser_aliases
if interface.machine.user != user_request:
@ -1409,7 +1476,7 @@ class Domain(models.Model):
:param self: Instance domain à 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_perms(('cableur',)) and\
if not user_request.has_perm('machines.change_domain') and\
self.get_source_interface.machine.user != user_request:
return False, u"Vous ne pouvez pas editer un alias à une machine\
d'un autre user que vous sans droit"
@ -1421,7 +1488,7 @@ class Domain(models.Model):
:param self: Instance domain à del
: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_perms(('cableur',)) and\
if not user_request.has_perm('machines.delete_domain') and\
self.get_source_interface.machine.user != user_request:
return False, u"Vous ne pouvez pas supprimer un alias à une machine\
d'un autre user que vous sans droit"
@ -1432,7 +1499,7 @@ class Domain(models.Model):
droit particulier cableur 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_perms(('cableur',)):
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
@ -1443,7 +1510,7 @@ class Domain(models.Model):
:param self: instance domain à 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_perms(('cableur',)) and\
if not user_request.has_perm('machines.view_domain') and\
self.get_source_interface.machine.user != user_request:
return False, u"Vous n'avez pas le droit de voir des machines autre\
que les vôtres"
@ -1459,6 +1526,11 @@ class IpList(models.Model):
ipv4 = models.GenericIPAddressField(protocol='IPv4', unique=True)
ip_type = models.ForeignKey('IpType', on_delete=models.CASCADE)
class Meta:
permissions = (
("view_iplist", "Peut voir un objet iplist"),
)
@cached_property
def need_infra(self):
""" Permet de savoir si un user basique peut assigner cette ip ou
@ -1487,7 +1559,7 @@ class IpList(models.Model):
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_perms(('infra',)), u"Vous n'avez pas le droit\
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):
@ -1496,7 +1568,7 @@ class IpList(models.Model):
: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_perms(('infra',)):
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
@ -1506,7 +1578,7 @@ class IpList(models.Model):
: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_perms(('infra',)):
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
@ -1515,7 +1587,7 @@ class IpList(models.Model):
droit particulier cableur 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_perms(('infra',)):
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
@ -1525,7 +1597,7 @@ class IpList(models.Model):
: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_perms(('infra',)):
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
@ -1548,6 +1620,11 @@ class Service(models.Model):
)
servers = models.ManyToManyField('Interface', through='Service_link')
class Meta:
permissions = (
("view_service", "Peut voir un objet service"),
)
def ask_regen(self):
""" Marque à True la demande de régénération pour un service x """
Service_link.objects.filter(service=self).exclude(asked_regen=True)\
@ -1580,7 +1657,7 @@ class Service(models.Model):
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_perms(('infra',)), u"Vous n'avez pas le droit\
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):
@ -1589,7 +1666,7 @@ class Service(models.Model):
: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_perms(('infra',)):
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
@ -1599,7 +1676,7 @@ class Service(models.Model):
: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_perms(('infra',)), u"Vous n'avez pas le droit\
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):
@ -1607,7 +1684,7 @@ class Service(models.Model):
droit particulier cableur 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_perms(('cableur',)), u"Vous n'avez pas le droit\
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):
@ -1616,7 +1693,7 @@ class Service(models.Model):
: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_perms(('cableur',)), u"Vous n'avez pas le droit\
return user_request.has_perm('machines.view_service'), u"Vous n'avez pas le droit\
de voir des services"
def __str__(self):
@ -1670,7 +1747,7 @@ class Service_link(models.Model):
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_perms(('infra',)), u"Vous n'avez pas le droit\
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):
@ -1679,7 +1756,7 @@ class Service_link(models.Model):
: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_perms(('infra',)):
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
@ -1689,7 +1766,7 @@ class Service_link(models.Model):
: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_perms(('infra',)):
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
@ -1698,7 +1775,7 @@ class Service_link(models.Model):
droit particulier cableur 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_perms(('cableur',)), u"Vous n'avez pas le droit\
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):
@ -1707,7 +1784,7 @@ class Service_link(models.Model):
: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_perms(('cableur',)), u"Vous n'avez pas le droit\
return user_request.has_perm('machines.view_service'), u"Vous n'avez pas le droit\
de voir des liens de services"
def __str__(self):
@ -1723,6 +1800,11 @@ class OuverturePortList(models.Model):
max_length=255
)
class Meta:
permissions = (
("view_ouvertureportlist", "Peut voir un objet ouvertureport"),
)
def get_instance(ouvertureportlistid, *args, **kwargs):
"""Récupère une instance
:param ouvertureportlistid: Instance id à trouver
@ -1734,7 +1816,7 @@ class OuverturePortList(models.Model):
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_perms(('bureau',)) , u"Vous n'avez pas le droit\
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):
@ -1743,7 +1825,7 @@ class OuverturePortList(models.Model):
: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_perms(('bureau',)):
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
@ -1753,7 +1835,7 @@ class OuverturePortList(models.Model):
:param self: Instance ouvertureportlist à 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_perms(('bureau',)):
if not user_request.has_perm('machines.delete_ouvertureportlist'):
return False, u"Vous n'avez pas le droit de supprimer une ouverture\
de port"
if self.interface_set.all():
@ -1765,7 +1847,7 @@ class OuverturePortList(models.Model):
droit particulier cableur 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_perms(('cableur',)), u"Vous n'avez pas le droit\
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):
@ -1774,7 +1856,7 @@ class OuverturePortList(models.Model):
: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_perms(('cableur',)), u"Vous n'avez pas le droit\
return user_request.has_perm('machines.view_ouvertureportlist'), u"Vous n'avez pas le droit\
de voir des ouverture de ports"
def __str__(self):
@ -1858,7 +1940,7 @@ class OuverturePort(models.Model):
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_perms(('bureau',)) , u"Vous n'avez pas le droit\
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):
@ -1867,7 +1949,7 @@ class OuverturePort(models.Model):
: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_perms(('bureau',)):
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
@ -1877,7 +1959,7 @@ class OuverturePort(models.Model):
: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_perms(('bureau',)):
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
@ -1886,7 +1968,7 @@ class OuverturePort(models.Model):
droit particulier cableur 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_perms(('cableur',)):
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
@ -1896,7 +1978,7 @@ class OuverturePort(models.Model):
: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_perms(('cableur',)):
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