mirror of
https://gitlab2.federez.net/re2o/re2o
synced 2024-11-22 11:23:10 +00:00
Pylint compliance on machines
This commit is contained in:
parent
2114a6ebba
commit
e88141db56
8 changed files with 385 additions and 199 deletions
|
@ -20,5 +20,8 @@
|
||||||
# You should have received a copy of the GNU General Public License along
|
# You should have received a copy of the GNU General Public License along
|
||||||
# with this program; if not, write to the Free Software Foundation, Inc.,
|
# with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
"""machines
|
||||||
|
The app in charge of everything related to the machines, the interface, ...
|
||||||
|
"""
|
||||||
|
|
||||||
from .acl import *
|
from .acl import *
|
||||||
|
|
|
@ -20,6 +20,9 @@
|
||||||
# You should have received a copy of the GNU General Public License along
|
# You should have received a copy of the GNU General Public License along
|
||||||
# with this program; if not, write to the Free Software Foundation, Inc.,
|
# with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
"""machines.admin
|
||||||
|
The objects, fields and datastructures visible in the Django admin view
|
||||||
|
"""
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
@ -44,74 +47,92 @@ from .models import (
|
||||||
|
|
||||||
|
|
||||||
class MachineAdmin(VersionAdmin):
|
class MachineAdmin(VersionAdmin):
|
||||||
|
""" Admin view of a Machine object """
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class Ipv6ListAdmin(VersionAdmin):
|
class Ipv6ListAdmin(VersionAdmin):
|
||||||
|
""" Admin view of a Ipv6List object """
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class IpTypeAdmin(VersionAdmin):
|
class IpTypeAdmin(VersionAdmin):
|
||||||
|
""" Admin view of a IpType object """
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class MachineTypeAdmin(VersionAdmin):
|
class MachineTypeAdmin(VersionAdmin):
|
||||||
|
""" Admin view of a MachineType object """
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class VlanAdmin(VersionAdmin):
|
class VlanAdmin(VersionAdmin):
|
||||||
|
""" Admin view of a Vlan object """
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class ExtensionAdmin(VersionAdmin):
|
class ExtensionAdmin(VersionAdmin):
|
||||||
|
""" Admin view of a Extension object """
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class SOAAdmin(VersionAdmin):
|
class SOAAdmin(VersionAdmin):
|
||||||
|
""" Admin view of a SOA object """
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class MxAdmin(VersionAdmin):
|
class MxAdmin(VersionAdmin):
|
||||||
|
""" Admin view of a MX object """
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class NsAdmin(VersionAdmin):
|
class NsAdmin(VersionAdmin):
|
||||||
|
""" Admin view of a NS object """
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class TxtAdmin(VersionAdmin):
|
class TxtAdmin(VersionAdmin):
|
||||||
|
""" Admin view of a TXT object """
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class SrvAdmin(VersionAdmin):
|
class SrvAdmin(VersionAdmin):
|
||||||
|
""" Admin view of a SRV object """
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class NasAdmin(VersionAdmin):
|
class NasAdmin(VersionAdmin):
|
||||||
|
""" Admin view of a Nas object """
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class IpListAdmin(VersionAdmin):
|
class IpListAdmin(VersionAdmin):
|
||||||
|
""" Admin view of a Ipv4List object """
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class OuverturePortAdmin(VersionAdmin):
|
class OuverturePortAdmin(VersionAdmin):
|
||||||
|
""" Admin view of a OuverturePort object """
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class OuverturePortListAdmin(VersionAdmin):
|
class OuverturePortListAdmin(VersionAdmin):
|
||||||
|
""" Admin view of a OuverturePortList object """
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class InterfaceAdmin(VersionAdmin):
|
class InterfaceAdmin(VersionAdmin):
|
||||||
|
""" Admin view of a Interface object """
|
||||||
list_display = ('machine', 'type', 'mac_address', 'ipv4', 'details')
|
list_display = ('machine', 'type', 'mac_address', 'ipv4', 'details')
|
||||||
|
|
||||||
|
|
||||||
class DomainAdmin(VersionAdmin):
|
class DomainAdmin(VersionAdmin):
|
||||||
|
""" Admin view of a Domain object """
|
||||||
list_display = ('interface_parent', 'name', 'extension', 'cname')
|
list_display = ('interface_parent', 'name', 'extension', 'cname')
|
||||||
|
|
||||||
|
|
||||||
class ServiceAdmin(VersionAdmin):
|
class ServiceAdmin(VersionAdmin):
|
||||||
|
""" Admin view of a ServiceAdmin object """
|
||||||
list_display = ('service_type', 'min_time_regen', 'regular_time_regen')
|
list_display = ('service_type', 'min_time_regen', 'regular_time_regen')
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -137,10 +137,10 @@ class AliasForm(FormRevMixin, ModelForm):
|
||||||
prefix = kwargs.pop('prefix', self.Meta.model.__name__)
|
prefix = kwargs.pop('prefix', self.Meta.model.__name__)
|
||||||
user = kwargs.pop('user')
|
user = kwargs.pop('user')
|
||||||
super(AliasForm, self).__init__(*args, prefix=prefix, **kwargs)
|
super(AliasForm, self).__init__(*args, prefix=prefix, **kwargs)
|
||||||
can_use_all, reason = Extension.can_use_all(user)
|
can_use_all, _reason = Extension.can_use_all(user)
|
||||||
if not can_use_all:
|
if not can_use_all:
|
||||||
self.fields['extension'].queryset = Extension.objects.filter(
|
self.fields['extension'].queryset = Extension.objects.filter(
|
||||||
need_infra=False
|
need_infra=False
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -480,6 +480,8 @@ class ServiceForm(FormRevMixin, ModelForm):
|
||||||
))
|
))
|
||||||
|
|
||||||
def save(self, commit=True):
|
def save(self, commit=True):
|
||||||
|
# TODO : None of the parents of ServiceForm use the commit
|
||||||
|
# parameter in .save()
|
||||||
instance = super(ServiceForm, self).save(commit=False)
|
instance = super(ServiceForm, self).save(commit=False)
|
||||||
if commit:
|
if commit:
|
||||||
instance.save()
|
instance.save()
|
||||||
|
|
|
@ -20,14 +20,17 @@
|
||||||
# You should have received a copy of the GNU General Public License along
|
# You should have received a copy of the GNU General Public License along
|
||||||
# with this program; if not, write to the Free Software Foundation, Inc.,
|
# with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
"""machines.models
|
||||||
|
The models definitions for the Machines app
|
||||||
|
"""
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
import re
|
import re
|
||||||
from netaddr import mac_bare, EUI, IPSet, IPRange, IPNetwork, IPAddress
|
|
||||||
from ipaddress import IPv6Address
|
from ipaddress import IPv6Address
|
||||||
from itertools import chain
|
from itertools import chain
|
||||||
|
from netaddr import mac_bare, EUI, IPSet, IPRange, IPNetwork, IPAddress
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.db.models.signals import post_save, post_delete
|
from django.db.models.signals import post_save, post_delete
|
||||||
|
@ -67,12 +70,13 @@ class Machine(RevMixin, FieldPermissionModelMixin, models.Model):
|
||||||
"Peut changer le propriétaire d'une machine"),
|
"Peut changer le propriétaire d'une machine"),
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_instance(machineid, *args, **kwargs):
|
@classmethod
|
||||||
|
def get_instance(cls, machineid, *_args, **_kwargs):
|
||||||
"""Get the Machine instance with machineid.
|
"""Get the Machine instance with machineid.
|
||||||
:param userid: The id
|
:param userid: The id
|
||||||
:return: The user
|
:return: The user
|
||||||
"""
|
"""
|
||||||
return Machine.objects.get(pk=machineid)
|
return cls.objects.get(pk=machineid)
|
||||||
|
|
||||||
def linked_objects(self):
|
def linked_objects(self):
|
||||||
"""Return linked objects : machine and domain.
|
"""Return linked objects : machine and domain.
|
||||||
|
@ -85,7 +89,7 @@ class Machine(RevMixin, FieldPermissionModelMixin, models.Model):
|
||||||
)
|
)
|
||||||
|
|
||||||
@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
|
||||||
Machine.
|
Machine.
|
||||||
|
|
||||||
|
@ -99,7 +103,8 @@ class Machine(RevMixin, FieldPermissionModelMixin, models.Model):
|
||||||
return (user_request.has_perm('machines.change_machine_user'),
|
return (user_request.has_perm('machines.change_machine_user'),
|
||||||
"Vous ne pouvez pas modifier l'utilisateur de la machine.")
|
"Vous ne pouvez pas modifier l'utilisateur de la machine.")
|
||||||
|
|
||||||
def can_view_all(user_request, *args, **kwargs):
|
@staticmethod
|
||||||
|
def can_view_all(user_request, *_args, **_kwargs):
|
||||||
"""Vérifie qu'on peut bien afficher l'ensemble des machines,
|
"""Vérifie qu'on peut bien afficher l'ensemble des machines,
|
||||||
droit particulier correspondant
|
droit particulier correspondant
|
||||||
:param user_request: instance user qui fait l'edition
|
:param user_request: instance user qui fait l'edition
|
||||||
|
@ -109,7 +114,8 @@ class Machine(RevMixin, FieldPermissionModelMixin, models.Model):
|
||||||
"machines sans permission")
|
"machines sans permission")
|
||||||
return True, None
|
return True, None
|
||||||
|
|
||||||
def can_create(user_request, userid, *args, **kwargs):
|
@staticmethod
|
||||||
|
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
|
||||||
:param user_request: Utilisateur qui fait la requête
|
:param user_request: Utilisateur qui fait la requête
|
||||||
|
@ -172,7 +178,7 @@ class Machine(RevMixin, 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(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
|
||||||
:param self: instance machine à éditer
|
:param self: instance machine à éditer
|
||||||
|
@ -218,7 +224,8 @@ class MachineType(RevMixin, AclMixin, models.Model):
|
||||||
machinetype"""
|
machinetype"""
|
||||||
return Interface.objects.filter(type=self)
|
return Interface.objects.filter(type=self)
|
||||||
|
|
||||||
def can_use_all(user_request, *args, **kwargs):
|
@staticmethod
|
||||||
|
def can_use_all(user_request, *_args, **_kwargs):
|
||||||
"""Check if an user can use every MachineType.
|
"""Check if an user can use every MachineType.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
|
@ -328,10 +335,10 @@ class IpType(RevMixin, AclMixin, models.Model):
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
for ipv6 in Ipv6List.objects.filter(
|
for ipv6 in Ipv6List.objects.filter(
|
||||||
interface__in=Interface.objects.filter(
|
interface__in=Interface.objects.filter(
|
||||||
type__in=MachineType.objects.filter(ip_type=self)
|
type__in=MachineType.objects.filter(ip_type=self)
|
||||||
)
|
)
|
||||||
):
|
):
|
||||||
ipv6.check_and_replace_prefix(prefix=self.prefix_v6)
|
ipv6.check_and_replace_prefix(prefix=self.prefix_v6)
|
||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
|
@ -360,7 +367,8 @@ class IpType(RevMixin, AclMixin, models.Model):
|
||||||
self.clean()
|
self.clean()
|
||||||
super(IpType, self).save(*args, **kwargs)
|
super(IpType, self).save(*args, **kwargs)
|
||||||
|
|
||||||
def can_use_all(user_request, *args, **kwargs):
|
@staticmethod
|
||||||
|
def can_use_all(user_request, *_args, **_kwargs):
|
||||||
"""Superdroit qui permet d'utiliser toutes les extensions sans
|
"""Superdroit qui permet d'utiliser toutes les extensions sans
|
||||||
restrictions
|
restrictions
|
||||||
:param user_request: instance user qui fait l'edition
|
:param user_request: instance user qui fait l'edition
|
||||||
|
@ -555,7 +563,8 @@ class Extension(RevMixin, AclMixin, models.Model):
|
||||||
entry += "@ IN AAAA " + str(self.origin_v6)
|
entry += "@ IN AAAA " + str(self.origin_v6)
|
||||||
return entry
|
return entry
|
||||||
|
|
||||||
def can_use_all(user_request, *args, **kwargs):
|
@staticmethod
|
||||||
|
def can_use_all(user_request, *_args, **_kwargs):
|
||||||
"""Superdroit qui permet d'utiliser toutes les extensions sans
|
"""Superdroit qui permet d'utiliser toutes les extensions sans
|
||||||
restrictions
|
restrictions
|
||||||
:param user_request: instance user qui fait l'edition
|
:param user_request: instance user qui fait l'edition
|
||||||
|
@ -644,6 +653,7 @@ class Txt(RevMixin, AclMixin, models.Model):
|
||||||
|
|
||||||
|
|
||||||
class Srv(RevMixin, AclMixin, models.Model):
|
class Srv(RevMixin, AclMixin, models.Model):
|
||||||
|
""" A SRV record """
|
||||||
PRETTY_NAME = "Enregistrement Srv"
|
PRETTY_NAME = "Enregistrement Srv"
|
||||||
|
|
||||||
TCP = 'TCP'
|
TCP = 'TCP'
|
||||||
|
@ -874,7 +884,8 @@ class Interface(RevMixin, AclMixin, FieldPermissionModelMixin, models.Model):
|
||||||
correspondent pas")
|
correspondent pas")
|
||||||
super(Interface, self).save(*args, **kwargs)
|
super(Interface, self).save(*args, **kwargs)
|
||||||
|
|
||||||
def can_create(user_request, machineid, *args, **kwargs):
|
@staticmethod
|
||||||
|
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
|
||||||
:param macineid: Id de la machine parente de l'interface
|
:param macineid: Id de la machine parente de l'interface
|
||||||
|
@ -903,7 +914,9 @@ class Interface(RevMixin, AclMixin, FieldPermissionModelMixin, models.Model):
|
||||||
return True, None
|
return True, None
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def can_change_machine(user_request, *args, **kwargs):
|
def can_change_machine(user_request, *_args, **_kwargs):
|
||||||
|
"""Check if a user can change the machine associated with an
|
||||||
|
Interface object """
|
||||||
return (user_request.has_perm('machines.change_interface_machine'),
|
return (user_request.has_perm('machines.change_interface_machine'),
|
||||||
"Droit requis pour changer la machine")
|
"Droit requis pour changer la machine")
|
||||||
|
|
||||||
|
@ -941,7 +954,7 @@ class Interface(RevMixin, AclMixin, 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(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
|
||||||
:param self: instance interface à voir
|
:param self: instance interface à voir
|
||||||
|
@ -981,6 +994,7 @@ class Interface(RevMixin, AclMixin, FieldPermissionModelMixin, models.Model):
|
||||||
|
|
||||||
|
|
||||||
class Ipv6List(RevMixin, AclMixin, FieldPermissionModelMixin, models.Model):
|
class Ipv6List(RevMixin, AclMixin, FieldPermissionModelMixin, models.Model):
|
||||||
|
""" A list of IPv6 """
|
||||||
PRETTY_NAME = 'Enregistrements Ipv6 des machines'
|
PRETTY_NAME = 'Enregistrements Ipv6 des machines'
|
||||||
|
|
||||||
ipv6 = models.GenericIPAddressField(
|
ipv6 = models.GenericIPAddressField(
|
||||||
|
@ -1001,7 +1015,8 @@ class Ipv6List(RevMixin, AclMixin, FieldPermissionModelMixin, models.Model):
|
||||||
"Peut changer la valeur slaac sur une ipv6"),
|
"Peut changer la valeur slaac sur une ipv6"),
|
||||||
)
|
)
|
||||||
|
|
||||||
def can_create(user_request, interfaceid, *args, **kwargs):
|
@staticmethod
|
||||||
|
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
|
||||||
:param interfaceid: Id de l'interface associée à cet objet domain
|
:param interfaceid: Id de l'interface associée à cet objet domain
|
||||||
|
@ -1018,7 +1033,8 @@ class Ipv6List(RevMixin, AclMixin, FieldPermissionModelMixin, models.Model):
|
||||||
return True, None
|
return True, None
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def can_change_slaac_ip(user_request, *args, **kwargs):
|
def can_change_slaac_ip(user_request, *_args, **_kwargs):
|
||||||
|
""" Check if a user can change the slaac value """
|
||||||
return (user_request.has_perm('machines.change_ipv6list_slaac_ip'),
|
return (user_request.has_perm('machines.change_ipv6list_slaac_ip'),
|
||||||
"Droit requis pour changer la valeur slaac ip")
|
"Droit requis pour changer la valeur slaac ip")
|
||||||
|
|
||||||
|
@ -1056,7 +1072,7 @@ class Ipv6List(RevMixin, AclMixin, 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(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
|
||||||
:param self: instance interface à voir
|
:param self: instance interface à voir
|
||||||
|
@ -1165,7 +1181,7 @@ class Domain(RevMixin, AclMixin, models.Model):
|
||||||
if self.cname == self:
|
if self.cname == self:
|
||||||
raise ValidationError("On ne peut créer un cname sur lui même")
|
raise ValidationError("On ne peut créer un cname sur lui même")
|
||||||
HOSTNAME_LABEL_PATTERN = re.compile(
|
HOSTNAME_LABEL_PATTERN = re.compile(
|
||||||
"(?!-)[A-Z\d-]+(?<!-)$",
|
r"(?!-)[A-Z\d-]+(?<!-)$",
|
||||||
re.IGNORECASE
|
re.IGNORECASE
|
||||||
)
|
)
|
||||||
dns = self.name.lower()
|
dns = self.name.lower()
|
||||||
|
@ -1207,7 +1223,8 @@ class Domain(RevMixin, AclMixin, models.Model):
|
||||||
else:
|
else:
|
||||||
return self.cname.get_parent_interface()
|
return self.cname.get_parent_interface()
|
||||||
|
|
||||||
def can_create(user_request, interfaceid, *args, **kwargs):
|
@staticmethod
|
||||||
|
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
|
||||||
:param interfaceid: Id de l'interface associée à cet objet domain
|
:param interfaceid: Id de l'interface associée à cet objet domain
|
||||||
|
@ -1226,17 +1243,17 @@ class Domain(RevMixin, AclMixin, models.Model):
|
||||||
return False, (u"Vous ne pouvez pas ajouter un alias à une "
|
return False, (u"Vous ne pouvez pas ajouter un alias à une "
|
||||||
"machine d'un autre user que vous sans droit")
|
"machine d'un autre user que vous sans droit")
|
||||||
if Domain.objects.filter(
|
if Domain.objects.filter(
|
||||||
cname__in=Domain.objects.filter(
|
cname__in=Domain.objects.filter(
|
||||||
interface_parent__in=(interface.machine.user
|
interface_parent__in=(interface.machine.user
|
||||||
.user_interfaces())
|
.user_interfaces())
|
||||||
)
|
)
|
||||||
).count() >= max_lambdauser_aliases:
|
).count() >= max_lambdauser_aliases:
|
||||||
return False, (u"Vous avez atteint le maximum d'alias "
|
return False, (u"Vous avez atteint le maximum d'alias "
|
||||||
"autorisés que vous pouvez créer vous même "
|
"autorisés que vous pouvez créer vous même "
|
||||||
"(%s) " % max_lambdauser_aliases)
|
"(%s) " % max_lambdauser_aliases)
|
||||||
return True, None
|
return True, None
|
||||||
|
|
||||||
def can_edit(self, user_request, *args, **kwargs):
|
def can_edit(self, user_request, *_args, **_kwargs):
|
||||||
"""Verifie que l'user a les bons droits pour editer
|
"""Verifie que l'user a les bons droits pour editer
|
||||||
cette instance domain
|
cette instance domain
|
||||||
:param self: Instance domain à editer
|
:param self: Instance domain à editer
|
||||||
|
@ -1248,7 +1265,7 @@ class Domain(RevMixin, AclMixin, 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_delete(self, user_request, *args, **kwargs):
|
def can_delete(self, user_request, *_args, **_kwargs):
|
||||||
"""Verifie que l'user a les bons droits delete object pour del
|
"""Verifie que l'user a les bons droits delete object pour del
|
||||||
cette instance domain, ou qu'elle lui appartient
|
cette instance domain, ou qu'elle lui appartient
|
||||||
:param self: Instance domain à del
|
:param self: Instance domain à del
|
||||||
|
@ -1260,7 +1277,7 @@ class Domain(RevMixin, AclMixin, models.Model):
|
||||||
"machine d'un autre user que vous sans droit")
|
"machine d'un autre user que vous sans droit")
|
||||||
return True, None
|
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
|
||||||
:param self: instance domain à voir
|
:param self: instance domain à voir
|
||||||
|
@ -1277,6 +1294,7 @@ class Domain(RevMixin, AclMixin, models.Model):
|
||||||
|
|
||||||
|
|
||||||
class IpList(RevMixin, AclMixin, models.Model):
|
class IpList(RevMixin, AclMixin, models.Model):
|
||||||
|
""" A list of IPv4 """
|
||||||
PRETTY_NAME = "Addresses ipv4"
|
PRETTY_NAME = "Addresses ipv4"
|
||||||
|
|
||||||
ipv4 = models.GenericIPAddressField(protocol='IPv4', unique=True)
|
ipv4 = models.GenericIPAddressField(protocol='IPv4', unique=True)
|
||||||
|
@ -1338,8 +1356,8 @@ class Service(RevMixin, AclMixin, models.Model):
|
||||||
""" Django ne peut créer lui meme les relations manytomany avec table
|
""" Django ne peut créer lui meme les relations manytomany avec table
|
||||||
intermediaire explicite"""
|
intermediaire explicite"""
|
||||||
for serv in servers.exclude(
|
for serv in servers.exclude(
|
||||||
pk__in=Interface.objects.filter(service=self)
|
pk__in=Interface.objects.filter(service=self)
|
||||||
):
|
):
|
||||||
link = Service_link(service=self, server=serv)
|
link = Service_link(service=self, server=serv)
|
||||||
link.save()
|
link.save()
|
||||||
Service_link.objects.filter(service=self).exclude(server__in=servers)\
|
Service_link.objects.filter(service=self).exclude(server__in=servers)\
|
||||||
|
@ -1407,7 +1425,7 @@ class OuverturePortList(RevMixin, AclMixin, models.Model):
|
||||||
("view_ouvertureportlist", "Peut voir un objet ouvertureport"),
|
("view_ouvertureportlist", "Peut voir un objet ouvertureport"),
|
||||||
)
|
)
|
||||||
|
|
||||||
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
|
||||||
:param self: Instance ouvertureportlist à delete
|
:param self: Instance ouvertureportlist à delete
|
||||||
|
@ -1501,7 +1519,7 @@ class OuverturePort(RevMixin, AclMixin, models.Model):
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_save, sender=Machine)
|
@receiver(post_save, sender=Machine)
|
||||||
def machine_post_save(sender, **kwargs):
|
def machine_post_save(_sender, **kwargs):
|
||||||
"""Synchronisation ldap et régen parefeu/dhcp lors de la modification
|
"""Synchronisation ldap et régen parefeu/dhcp lors de la modification
|
||||||
d'une machine"""
|
d'une machine"""
|
||||||
user = kwargs['instance'].user
|
user = kwargs['instance'].user
|
||||||
|
@ -1511,7 +1529,7 @@ def machine_post_save(sender, **kwargs):
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_delete, sender=Machine)
|
@receiver(post_delete, sender=Machine)
|
||||||
def machine_post_delete(sender, **kwargs):
|
def machine_post_delete(_sender, **kwargs):
|
||||||
"""Synchronisation ldap et régen parefeu/dhcp lors de la suppression
|
"""Synchronisation ldap et régen parefeu/dhcp lors de la suppression
|
||||||
d'une machine"""
|
d'une machine"""
|
||||||
machine = kwargs['instance']
|
machine = kwargs['instance']
|
||||||
|
@ -1522,7 +1540,7 @@ def machine_post_delete(sender, **kwargs):
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_save, sender=Interface)
|
@receiver(post_save, sender=Interface)
|
||||||
def interface_post_save(sender, **kwargs):
|
def interface_post_save(_sender, **kwargs):
|
||||||
"""Synchronisation ldap et régen parefeu/dhcp lors de la modification
|
"""Synchronisation ldap et régen parefeu/dhcp lors de la modification
|
||||||
d'une interface"""
|
d'une interface"""
|
||||||
interface = kwargs['instance']
|
interface = kwargs['instance']
|
||||||
|
@ -1535,7 +1553,7 @@ def interface_post_save(sender, **kwargs):
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_delete, sender=Interface)
|
@receiver(post_delete, sender=Interface)
|
||||||
def interface_post_delete(sender, **kwargs):
|
def interface_post_delete(_sender, **kwargs):
|
||||||
"""Synchronisation ldap et régen parefeu/dhcp lors de la suppression
|
"""Synchronisation ldap et régen parefeu/dhcp lors de la suppression
|
||||||
d'une interface"""
|
d'une interface"""
|
||||||
interface = kwargs['instance']
|
interface = kwargs['instance']
|
||||||
|
@ -1544,7 +1562,7 @@ def interface_post_delete(sender, **kwargs):
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_save, sender=IpType)
|
@receiver(post_save, sender=IpType)
|
||||||
def iptype_post_save(sender, **kwargs):
|
def iptype_post_save(_sender, **kwargs):
|
||||||
"""Generation des objets ip après modification d'un range ip"""
|
"""Generation des objets ip après modification d'un range ip"""
|
||||||
iptype = kwargs['instance']
|
iptype = kwargs['instance']
|
||||||
iptype.gen_ip_range()
|
iptype.gen_ip_range()
|
||||||
|
@ -1552,7 +1570,7 @@ def iptype_post_save(sender, **kwargs):
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_save, sender=MachineType)
|
@receiver(post_save, sender=MachineType)
|
||||||
def machinetype_post_save(sender, **kwargs):
|
def machinetype_post_save(_sender, **kwargs):
|
||||||
"""Mise à jour des interfaces lorsque changement d'attribution
|
"""Mise à jour des interfaces lorsque changement d'attribution
|
||||||
d'une machinetype (changement iptype parent)"""
|
d'une machinetype (changement iptype parent)"""
|
||||||
machinetype = kwargs['instance']
|
machinetype = kwargs['instance']
|
||||||
|
@ -1561,84 +1579,84 @@ def machinetype_post_save(sender, **kwargs):
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_save, sender=Domain)
|
@receiver(post_save, sender=Domain)
|
||||||
def domain_post_save(sender, **kwargs):
|
def domain_post_save(_sender, **_kwargs):
|
||||||
"""Regeneration dns après modification d'un domain object"""
|
"""Regeneration dns après modification d'un domain object"""
|
||||||
regen('dns')
|
regen('dns')
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_delete, sender=Domain)
|
@receiver(post_delete, sender=Domain)
|
||||||
def domain_post_delete(sender, **kwargs):
|
def domain_post_delete(_sender, **_kwargs):
|
||||||
"""Regeneration dns après suppression d'un domain object"""
|
"""Regeneration dns après suppression d'un domain object"""
|
||||||
regen('dns')
|
regen('dns')
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_save, sender=Extension)
|
@receiver(post_save, sender=Extension)
|
||||||
def extension_post_save(sender, **kwargs):
|
def extension_post_save(_sender, **_kwargs):
|
||||||
"""Regeneration dns après modification d'une extension"""
|
"""Regeneration dns après modification d'une extension"""
|
||||||
regen('dns')
|
regen('dns')
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_delete, sender=Extension)
|
@receiver(post_delete, sender=Extension)
|
||||||
def extension_post_selete(sender, **kwargs):
|
def extension_post_selete(_sender, **_kwargs):
|
||||||
"""Regeneration dns après suppression d'une extension"""
|
"""Regeneration dns après suppression d'une extension"""
|
||||||
regen('dns')
|
regen('dns')
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_save, sender=SOA)
|
@receiver(post_save, sender=SOA)
|
||||||
def soa_post_save(sender, **kwargs):
|
def soa_post_save(_sender, **_kwargs):
|
||||||
"""Regeneration dns après modification d'un SOA"""
|
"""Regeneration dns après modification d'un SOA"""
|
||||||
regen('dns')
|
regen('dns')
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_delete, sender=SOA)
|
@receiver(post_delete, sender=SOA)
|
||||||
def soa_post_delete(sender, **kwargs):
|
def soa_post_delete(_sender, **_kwargs):
|
||||||
"""Regeneration dns après suppresson d'un SOA"""
|
"""Regeneration dns après suppresson d'un SOA"""
|
||||||
regen('dns')
|
regen('dns')
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_save, sender=Mx)
|
@receiver(post_save, sender=Mx)
|
||||||
def mx_post_save(sender, **kwargs):
|
def mx_post_save(_sender, **_kwargs):
|
||||||
"""Regeneration dns après modification d'un MX"""
|
"""Regeneration dns après modification d'un MX"""
|
||||||
regen('dns')
|
regen('dns')
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_delete, sender=Mx)
|
@receiver(post_delete, sender=Mx)
|
||||||
def mx_post_delete(sender, **kwargs):
|
def mx_post_delete(_sender, **_kwargs):
|
||||||
"""Regeneration dns après suppresson d'un MX"""
|
"""Regeneration dns après suppresson d'un MX"""
|
||||||
regen('dns')
|
regen('dns')
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_save, sender=Ns)
|
@receiver(post_save, sender=Ns)
|
||||||
def ns_post_save(sender, **kwargs):
|
def ns_post_save(_sender, **_kwargs):
|
||||||
"""Regeneration dns après modification d'un NS"""
|
"""Regeneration dns après modification d'un NS"""
|
||||||
regen('dns')
|
regen('dns')
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_delete, sender=Ns)
|
@receiver(post_delete, sender=Ns)
|
||||||
def ns_post_delete(sender, **kwargs):
|
def ns_post_delete(_sender, **_kwargs):
|
||||||
"""Regeneration dns après modification d'un NS"""
|
"""Regeneration dns après modification d'un NS"""
|
||||||
regen('dns')
|
regen('dns')
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_save, sender=Txt)
|
@receiver(post_save, sender=Txt)
|
||||||
def text_post_save(sender, **kwargs):
|
def text_post_save(_sender, **_kwargs):
|
||||||
"""Regeneration dns après modification d'un TXT"""
|
"""Regeneration dns après modification d'un TXT"""
|
||||||
regen('dns')
|
regen('dns')
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_delete, sender=Txt)
|
@receiver(post_delete, sender=Txt)
|
||||||
def text_post_delete(sender, **kwargs):
|
def text_post_delete(_sender, **_kwargs):
|
||||||
"""Regeneration dns après modification d'un TX"""
|
"""Regeneration dns après modification d'un TX"""
|
||||||
regen('dns')
|
regen('dns')
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_save, sender=Srv)
|
@receiver(post_save, sender=Srv)
|
||||||
def srv_post_save(sender, **kwargs):
|
def srv_post_save(_sender, **_kwargs):
|
||||||
"""Regeneration dns après modification d'un SRV"""
|
"""Regeneration dns après modification d'un SRV"""
|
||||||
regen('dns')
|
regen('dns')
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_delete, sender=Srv)
|
@receiver(post_delete, sender=Srv)
|
||||||
def srv_post_delete(sender, **kwargs):
|
def srv_post_delete(_sender, **_kwargs):
|
||||||
"""Regeneration dns après modification d'un SRV"""
|
"""Regeneration dns après modification d'un SRV"""
|
||||||
regen('dns')
|
regen('dns')
|
||||||
|
|
|
@ -22,6 +22,10 @@
|
||||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
|
||||||
# Augustin Lemesle
|
# Augustin Lemesle
|
||||||
|
"""machines.serializers
|
||||||
|
Serializers for the Machines app
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from machines.models import (
|
from machines.models import (
|
||||||
|
@ -29,28 +33,30 @@ from machines.models import (
|
||||||
IpType,
|
IpType,
|
||||||
Extension,
|
Extension,
|
||||||
IpList,
|
IpList,
|
||||||
MachineType,
|
|
||||||
Domain,
|
Domain,
|
||||||
Txt,
|
Txt,
|
||||||
Mx,
|
Mx,
|
||||||
Srv,
|
Srv,
|
||||||
Service_link,
|
Service_link,
|
||||||
Ns,
|
Ns,
|
||||||
OuverturePortList,
|
|
||||||
OuverturePort,
|
OuverturePort,
|
||||||
Ipv6List
|
Ipv6List
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class IpTypeField(serializers.RelatedField):
|
class IpTypeField(serializers.RelatedField):
|
||||||
"""Serialisation d'une iptype, renvoie son evaluation str"""
|
""" Serializer for an IpType object field """
|
||||||
|
|
||||||
def to_representation(self, value):
|
def to_representation(self, value):
|
||||||
return value.type
|
return value.type
|
||||||
|
|
||||||
|
def to_internal_value(self, data):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class IpListSerializer(serializers.ModelSerializer):
|
class IpListSerializer(serializers.ModelSerializer):
|
||||||
"""Serialisation d'une iplist, ip_type etant une foreign_key,
|
""" Serializer for an Ipv4List obejct using the IpType serialization """
|
||||||
on evalue sa methode str"""
|
|
||||||
ip_type = IpTypeField(read_only=True)
|
ip_type = IpTypeField(read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
@ -59,16 +65,19 @@ class IpListSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
|
|
||||||
class Ipv6ListSerializer(serializers.ModelSerializer):
|
class Ipv6ListSerializer(serializers.ModelSerializer):
|
||||||
|
""" Serializer for an Ipv6List object """
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Ipv6List
|
model = Ipv6List
|
||||||
fields = ('ipv6', 'slaac_ip')
|
fields = ('ipv6', 'slaac_ip')
|
||||||
|
|
||||||
|
|
||||||
class InterfaceSerializer(serializers.ModelSerializer):
|
class InterfaceSerializer(serializers.ModelSerializer):
|
||||||
"""Serialisation d'une interface, ipv4, domain et extension sont
|
""" Serializer for an Interface object. Use SerializerMethodField
|
||||||
des foreign_key, on les override et on les evalue avec des fonctions
|
to get ForeignKey values """
|
||||||
get_..."""
|
|
||||||
ipv4 = IpListSerializer(read_only=True)
|
ipv4 = IpListSerializer(read_only=True)
|
||||||
|
# TODO : use serializer.RelatedField to avoid duplicate code
|
||||||
mac_address = serializers.SerializerMethodField('get_macaddress')
|
mac_address = serializers.SerializerMethodField('get_macaddress')
|
||||||
domain = serializers.SerializerMethodField('get_dns')
|
domain = serializers.SerializerMethodField('get_dns')
|
||||||
extension = serializers.SerializerMethodField('get_interface_extension')
|
extension = serializers.SerializerMethodField('get_interface_extension')
|
||||||
|
@ -77,20 +86,29 @@ class InterfaceSerializer(serializers.ModelSerializer):
|
||||||
model = Interface
|
model = Interface
|
||||||
fields = ('ipv4', 'mac_address', 'domain', 'extension')
|
fields = ('ipv4', 'mac_address', 'domain', 'extension')
|
||||||
|
|
||||||
def get_dns(self, obj):
|
@staticmethod
|
||||||
|
def get_dns(obj):
|
||||||
|
""" The name of the associated DNS object """
|
||||||
return obj.domain.name
|
return obj.domain.name
|
||||||
|
|
||||||
def get_interface_extension(self, obj):
|
@staticmethod
|
||||||
|
def get_interface_extension(obj):
|
||||||
|
""" The name of the associated Interface object """
|
||||||
return obj.domain.extension.name
|
return obj.domain.extension.name
|
||||||
|
|
||||||
def get_macaddress(self, obj):
|
@staticmethod
|
||||||
|
def get_macaddress(obj):
|
||||||
|
""" The string representation of the associated MAC address """
|
||||||
return str(obj.mac_address)
|
return str(obj.mac_address)
|
||||||
|
|
||||||
|
|
||||||
class FullInterfaceSerializer(serializers.ModelSerializer):
|
class FullInterfaceSerializer(serializers.ModelSerializer):
|
||||||
"""Serialisation complete d'une interface avec les ipv6 en plus"""
|
""" Serializer for an Interface obejct. Use SerializerMethodField
|
||||||
|
to get ForeignKey values """
|
||||||
|
|
||||||
ipv4 = IpListSerializer(read_only=True)
|
ipv4 = IpListSerializer(read_only=True)
|
||||||
ipv6 = Ipv6ListSerializer(read_only=True, many=True)
|
ipv6 = Ipv6ListSerializer(read_only=True, many=True)
|
||||||
|
# TODO : use serializer.RelatedField to avoid duplicate code
|
||||||
mac_address = serializers.SerializerMethodField('get_macaddress')
|
mac_address = serializers.SerializerMethodField('get_macaddress')
|
||||||
domain = serializers.SerializerMethodField('get_dns')
|
domain = serializers.SerializerMethodField('get_dns')
|
||||||
extension = serializers.SerializerMethodField('get_interface_extension')
|
extension = serializers.SerializerMethodField('get_interface_extension')
|
||||||
|
@ -99,26 +117,36 @@ class FullInterfaceSerializer(serializers.ModelSerializer):
|
||||||
model = Interface
|
model = Interface
|
||||||
fields = ('ipv4', 'ipv6', 'mac_address', 'domain', 'extension')
|
fields = ('ipv4', 'ipv6', 'mac_address', 'domain', 'extension')
|
||||||
|
|
||||||
def get_dns(self, obj):
|
@staticmethod
|
||||||
|
def get_dns(obj):
|
||||||
|
""" The name of the associated DNS object """
|
||||||
return obj.domain.name
|
return obj.domain.name
|
||||||
|
|
||||||
def get_interface_extension(self, obj):
|
@staticmethod
|
||||||
|
def get_interface_extension(obj):
|
||||||
|
""" The name of the associated Extension object """
|
||||||
return obj.domain.extension.name
|
return obj.domain.extension.name
|
||||||
|
|
||||||
def get_macaddress(self, obj):
|
@staticmethod
|
||||||
|
def get_macaddress(obj):
|
||||||
|
""" The string representation of the associated MAC address """
|
||||||
return str(obj.mac_address)
|
return str(obj.mac_address)
|
||||||
|
|
||||||
|
|
||||||
class ExtensionNameField(serializers.RelatedField):
|
class ExtensionNameField(serializers.RelatedField):
|
||||||
"""Evaluation str d'un objet extension (.example.org)"""
|
""" Serializer for Extension object field """
|
||||||
|
|
||||||
def to_representation(self, value):
|
def to_representation(self, value):
|
||||||
return value.name
|
return value.name
|
||||||
|
|
||||||
|
def to_internal_value(self, data):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class TypeSerializer(serializers.ModelSerializer):
|
class TypeSerializer(serializers.ModelSerializer):
|
||||||
"""Serialisation d'un iptype : extension et la liste des
|
""" Serializer for an IpType object. Use SerializerMethodField to
|
||||||
ouvertures de port son evalués en get_... etant des
|
get ForeignKey values. Infos about the general port policy is added """
|
||||||
foreign_key ou des relations manytomany"""
|
|
||||||
extension = ExtensionNameField(read_only=True)
|
extension = ExtensionNameField(read_only=True)
|
||||||
ouverture_ports_tcp_in = serializers\
|
ouverture_ports_tcp_in = serializers\
|
||||||
.SerializerMethodField('get_port_policy_input_tcp')
|
.SerializerMethodField('get_port_policy_input_tcp')
|
||||||
|
@ -136,7 +164,10 @@ class TypeSerializer(serializers.ModelSerializer):
|
||||||
'ouverture_ports_tcp_in', 'ouverture_ports_tcp_out',
|
'ouverture_ports_tcp_in', 'ouverture_ports_tcp_out',
|
||||||
'ouverture_ports_udp_in', 'ouverture_ports_udp_out',)
|
'ouverture_ports_udp_in', 'ouverture_ports_udp_out',)
|
||||||
|
|
||||||
def get_port_policy(self, obj, protocole, io):
|
@staticmethod
|
||||||
|
def get_port_policy(obj, protocole, io):
|
||||||
|
""" Generic utility function to get the policy for a given
|
||||||
|
port, protocole and IN or OUT """
|
||||||
if obj.ouverture_ports is None:
|
if obj.ouverture_ports is None:
|
||||||
return []
|
return []
|
||||||
return map(
|
return map(
|
||||||
|
@ -174,13 +205,19 @@ class ExtensionSerializer(serializers.ModelSerializer):
|
||||||
model = Extension
|
model = Extension
|
||||||
fields = ('name', 'origin', 'origin_v6', 'zone_entry', 'soa')
|
fields = ('name', 'origin', 'origin_v6', 'zone_entry', 'soa')
|
||||||
|
|
||||||
def get_origin_ip(self, obj):
|
@staticmethod
|
||||||
return getattr(obj.origin, 'ipv4', None)
|
def get_origin_ip(obj):
|
||||||
|
""" The IP of the associated origin for the zone """
|
||||||
|
return obj.origin.ipv4
|
||||||
|
|
||||||
def get_zone_name(self, obj):
|
@staticmethod
|
||||||
|
def get_zone_name(obj):
|
||||||
|
""" The name of the associated zone """
|
||||||
return str(obj.dns_entry)
|
return str(obj.dns_entry)
|
||||||
|
|
||||||
def get_soa_data(self, obj):
|
@staticmethod
|
||||||
|
def get_soa_data(obj):
|
||||||
|
""" The representation of the associated SOA """
|
||||||
return {'mail': obj.soa.dns_soa_mail, 'param': obj.soa.dns_soa_param}
|
return {'mail': obj.soa.dns_soa_mail, 'param': obj.soa.dns_soa_param}
|
||||||
|
|
||||||
|
|
||||||
|
@ -195,13 +232,19 @@ class MxSerializer(serializers.ModelSerializer):
|
||||||
model = Mx
|
model = Mx
|
||||||
fields = ('zone', 'priority', 'name', 'mx_entry')
|
fields = ('zone', 'priority', 'name', 'mx_entry')
|
||||||
|
|
||||||
def get_entry_name(self, obj):
|
@staticmethod
|
||||||
|
def get_entry_name(obj):
|
||||||
|
""" The name of the DNS MX entry """
|
||||||
return str(obj.name)
|
return str(obj.name)
|
||||||
|
|
||||||
def get_zone_name(self, obj):
|
@staticmethod
|
||||||
|
def get_zone_name(obj):
|
||||||
|
""" The name of the associated zone of the MX record """
|
||||||
return obj.zone.name
|
return obj.zone.name
|
||||||
|
|
||||||
def get_mx_name(self, obj):
|
@staticmethod
|
||||||
|
def get_mx_name(obj):
|
||||||
|
""" The string representation of the entry to add to the DNS """
|
||||||
return str(obj.dns_entry)
|
return str(obj.dns_entry)
|
||||||
|
|
||||||
|
|
||||||
|
@ -215,10 +258,14 @@ class TxtSerializer(serializers.ModelSerializer):
|
||||||
model = Txt
|
model = Txt
|
||||||
fields = ('zone', 'txt_entry', 'field1', 'field2')
|
fields = ('zone', 'txt_entry', 'field1', 'field2')
|
||||||
|
|
||||||
def get_zone_name(self, obj):
|
@staticmethod
|
||||||
|
def get_zone_name(obj):
|
||||||
|
""" The name of the associated zone """
|
||||||
return str(obj.zone.name)
|
return str(obj.zone.name)
|
||||||
|
|
||||||
def get_txt_name(self, obj):
|
@staticmethod
|
||||||
|
def get_txt_name(obj):
|
||||||
|
""" The string representation of the entry to add to the DNS """
|
||||||
return str(obj.dns_entry)
|
return str(obj.dns_entry)
|
||||||
|
|
||||||
|
|
||||||
|
@ -241,10 +288,14 @@ class SrvSerializer(serializers.ModelSerializer):
|
||||||
'srv_entry'
|
'srv_entry'
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_extension_name(self, obj):
|
@staticmethod
|
||||||
|
def get_extension_name(obj):
|
||||||
|
""" The name of the associated extension """
|
||||||
return str(obj.extension.name)
|
return str(obj.extension.name)
|
||||||
|
|
||||||
def get_srv_name(self, obj):
|
@staticmethod
|
||||||
|
def get_srv_name(obj):
|
||||||
|
""" The string representation of the entry to add to the DNS """
|
||||||
return str(obj.dns_entry)
|
return str(obj.dns_entry)
|
||||||
|
|
||||||
|
|
||||||
|
@ -259,13 +310,19 @@ class NsSerializer(serializers.ModelSerializer):
|
||||||
model = Ns
|
model = Ns
|
||||||
fields = ('zone', 'ns', 'ns_entry')
|
fields = ('zone', 'ns', 'ns_entry')
|
||||||
|
|
||||||
def get_zone_name(self, obj):
|
@staticmethod
|
||||||
|
def get_zone_name(obj):
|
||||||
|
""" The name of the associated zone """
|
||||||
return obj.zone.name
|
return obj.zone.name
|
||||||
|
|
||||||
def get_domain_name(self, obj):
|
@staticmethod
|
||||||
|
def get_domain_name(obj):
|
||||||
|
""" The name of the associated NS target """
|
||||||
return str(obj.ns)
|
return str(obj.ns)
|
||||||
|
|
||||||
def get_text_name(self, obj):
|
@staticmethod
|
||||||
|
def get_text_name(obj):
|
||||||
|
""" The string representation of the entry to add to the DNS """
|
||||||
return str(obj.dns_entry)
|
return str(obj.dns_entry)
|
||||||
|
|
||||||
|
|
||||||
|
@ -280,13 +337,19 @@ class DomainSerializer(serializers.ModelSerializer):
|
||||||
model = Domain
|
model = Domain
|
||||||
fields = ('name', 'extension', 'cname', 'cname_entry')
|
fields = ('name', 'extension', 'cname', 'cname_entry')
|
||||||
|
|
||||||
def get_zone_name(self, obj):
|
@staticmethod
|
||||||
|
def get_zone_name(obj):
|
||||||
|
""" The name of the associated zone """
|
||||||
return obj.extension.name
|
return obj.extension.name
|
||||||
|
|
||||||
def get_alias_name(self, obj):
|
@staticmethod
|
||||||
|
def get_alias_name(obj):
|
||||||
|
""" The name of the associated alias """
|
||||||
return str(obj.cname)
|
return str(obj.cname)
|
||||||
|
|
||||||
def get_cname_name(self, obj):
|
@staticmethod
|
||||||
|
def get_cname_name(obj):
|
||||||
|
""" The name of the associated CNAME target """
|
||||||
return str(obj.dns_entry)
|
return str(obj.dns_entry)
|
||||||
|
|
||||||
|
|
||||||
|
@ -300,13 +363,19 @@ class ServiceServersSerializer(serializers.ModelSerializer):
|
||||||
model = Service_link
|
model = Service_link
|
||||||
fields = ('server', 'service', 'need_regen')
|
fields = ('server', 'service', 'need_regen')
|
||||||
|
|
||||||
def get_server_name(self, obj):
|
@staticmethod
|
||||||
|
def get_server_name(obj):
|
||||||
|
""" The name of the associated server """
|
||||||
return str(obj.server.domain.name)
|
return str(obj.server.domain.name)
|
||||||
|
|
||||||
def get_service_name(self, obj):
|
@staticmethod
|
||||||
|
def get_service_name(obj):
|
||||||
|
""" The name of the service name """
|
||||||
return str(obj.service)
|
return str(obj.service)
|
||||||
|
|
||||||
def get_regen_status(self, obj):
|
@staticmethod
|
||||||
|
def get_regen_status(obj):
|
||||||
|
""" The string representation of the regen status """
|
||||||
return obj.need_regen()
|
return obj.need_regen()
|
||||||
|
|
||||||
|
|
||||||
|
@ -315,7 +384,19 @@ class OuverturePortsSerializer(serializers.Serializer):
|
||||||
ipv4 = serializers.SerializerMethodField()
|
ipv4 = serializers.SerializerMethodField()
|
||||||
ipv6 = serializers.SerializerMethodField()
|
ipv6 = serializers.SerializerMethodField()
|
||||||
|
|
||||||
|
def create(self, validated_data):
|
||||||
|
""" Creates a new object based on the un-serialized data.
|
||||||
|
Used to implement an abstract inherited method """
|
||||||
|
pass
|
||||||
|
|
||||||
|
def update(self, instance, validated_data):
|
||||||
|
""" Updates an object based on the un-serialized data.
|
||||||
|
Used to implement an abstract inherited method """
|
||||||
|
pass
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
def get_ipv4():
|
def get_ipv4():
|
||||||
|
""" The representation of the policy for the IPv4 addresses """
|
||||||
return {
|
return {
|
||||||
i.ipv4.ipv4: {
|
i.ipv4.ipv4: {
|
||||||
"tcp_in": [j.tcp_ports_in() for j in i.port_lists.all()],
|
"tcp_in": [j.tcp_ports_in() for j in i.port_lists.all()],
|
||||||
|
@ -326,7 +407,9 @@ class OuverturePortsSerializer(serializers.Serializer):
|
||||||
for i in Interface.objects.all() if i.ipv4
|
for i in Interface.objects.all() if i.ipv4
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
def get_ipv6():
|
def get_ipv6():
|
||||||
|
""" The representation of the policy for the IPv6 addresses """
|
||||||
return {
|
return {
|
||||||
i.ipv6: {
|
i.ipv6: {
|
||||||
"tcp_in": [j.tcp_ports_in() for j in i.port_lists.all()],
|
"tcp_in": [j.tcp_ports_in() for j in i.port_lists.all()],
|
||||||
|
|
|
@ -20,7 +20,10 @@
|
||||||
# You should have received a copy of the GNU General Public License along
|
# You should have received a copy of the GNU General Public License along
|
||||||
# with this program; if not, write to the Free Software Foundation, Inc.,
|
# with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
"""machines.tests
|
||||||
|
The tests for the API module.
|
||||||
|
"""
|
||||||
|
|
||||||
from django.test import TestCase
|
# from django.test import TestCase
|
||||||
|
|
||||||
# Create your tests here.
|
# Create your tests here.
|
||||||
|
|
|
@ -20,6 +20,9 @@
|
||||||
# You should have received a copy of the GNU General Public License along
|
# You should have received a copy of the GNU General Public License along
|
||||||
# with this program; if not, write to the Free Software Foundation, Inc.,
|
# with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
"""machines.urls
|
||||||
|
The defined URLs for the Cotisations app
|
||||||
|
"""
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
|
|
@ -25,24 +25,41 @@
|
||||||
# App de gestion des machines pour re2o
|
# App de gestion des machines pour re2o
|
||||||
# Gabriel Détraz, Augustin Lemesle
|
# Gabriel Détraz, Augustin Lemesle
|
||||||
# Gplv2
|
# Gplv2
|
||||||
|
"""machines.views
|
||||||
|
The views for the Machines app
|
||||||
|
"""
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.http import HttpResponse
|
from django.http import HttpResponse
|
||||||
from django.shortcuts import render, redirect
|
from django.shortcuts import render, redirect
|
||||||
from django.shortcuts import get_object_or_404
|
|
||||||
from django.template.context_processors import csrf
|
|
||||||
from django.template import Context, RequestContext, loader
|
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from django.contrib.auth.decorators import login_required, permission_required
|
from django.contrib.auth.decorators import login_required, permission_required
|
||||||
from django.db.models import ProtectedError, F
|
from django.db.models import ProtectedError, F
|
||||||
from django.forms import ValidationError, modelformset_factory
|
from django.forms import modelformset_factory
|
||||||
from django.contrib.auth import authenticate, login
|
|
||||||
from django.views.decorators.csrf import csrf_exempt
|
from django.views.decorators.csrf import csrf_exempt
|
||||||
|
|
||||||
from rest_framework.renderers import JSONRenderer
|
from rest_framework.renderers import JSONRenderer
|
||||||
from machines.serializers import (
|
|
||||||
|
from users.models import User
|
||||||
|
from preferences.models import GeneralOption
|
||||||
|
from re2o.utils import (
|
||||||
|
all_active_assigned_interfaces,
|
||||||
|
filter_active_interfaces,
|
||||||
|
SortTable,
|
||||||
|
re2o_paginator,
|
||||||
|
)
|
||||||
|
from re2o.acl import (
|
||||||
|
can_create,
|
||||||
|
can_edit,
|
||||||
|
can_delete,
|
||||||
|
can_view_all,
|
||||||
|
can_delete_set,
|
||||||
|
)
|
||||||
|
from re2o.views import form
|
||||||
|
|
||||||
|
from .serializers import (
|
||||||
FullInterfaceSerializer,
|
FullInterfaceSerializer,
|
||||||
InterfaceSerializer,
|
InterfaceSerializer,
|
||||||
TypeSerializer,
|
TypeSerializer,
|
||||||
|
@ -53,12 +70,8 @@ from machines.serializers import (
|
||||||
ExtensionSerializer,
|
ExtensionSerializer,
|
||||||
ServiceServersSerializer,
|
ServiceServersSerializer,
|
||||||
NsSerializer,
|
NsSerializer,
|
||||||
OuverturePortsSerializer
|
|
||||||
)
|
)
|
||||||
from reversion import revisions as reversion
|
|
||||||
from reversion.models import Version
|
|
||||||
|
|
||||||
import re
|
|
||||||
from .forms import (
|
from .forms import (
|
||||||
NewMachineForm,
|
NewMachineForm,
|
||||||
EditMachineForm,
|
EditMachineForm,
|
||||||
|
@ -68,8 +81,6 @@ from .forms import (
|
||||||
DelMachineTypeForm,
|
DelMachineTypeForm,
|
||||||
ExtensionForm,
|
ExtensionForm,
|
||||||
DelExtensionForm,
|
DelExtensionForm,
|
||||||
)
|
|
||||||
from .forms import (
|
|
||||||
EditIpTypeForm,
|
EditIpTypeForm,
|
||||||
IpTypeForm,
|
IpTypeForm,
|
||||||
DelIpTypeForm,
|
DelIpTypeForm,
|
||||||
|
@ -93,13 +104,13 @@ from .forms import (
|
||||||
SrvForm,
|
SrvForm,
|
||||||
DelSrvForm,
|
DelSrvForm,
|
||||||
Ipv6ListForm,
|
Ipv6ListForm,
|
||||||
|
EditOuverturePortListForm,
|
||||||
|
EditOuverturePortConfigForm
|
||||||
)
|
)
|
||||||
from .forms import EditOuverturePortListForm, EditOuverturePortConfigForm
|
|
||||||
from .models import (
|
from .models import (
|
||||||
IpType,
|
IpType,
|
||||||
Machine,
|
Machine,
|
||||||
Interface,
|
Interface,
|
||||||
IpList,
|
|
||||||
MachineType,
|
MachineType,
|
||||||
Extension,
|
Extension,
|
||||||
SOA,
|
SOA,
|
||||||
|
@ -116,24 +127,6 @@ from .models import (
|
||||||
OuverturePort,
|
OuverturePort,
|
||||||
Ipv6List,
|
Ipv6List,
|
||||||
)
|
)
|
||||||
from users.models import User
|
|
||||||
from preferences.models import GeneralOption, OptionalMachine
|
|
||||||
from re2o.utils import (
|
|
||||||
all_active_assigned_interfaces,
|
|
||||||
all_has_access,
|
|
||||||
filter_active_interfaces,
|
|
||||||
SortTable,
|
|
||||||
re2o_paginator,
|
|
||||||
)
|
|
||||||
from re2o.acl import (
|
|
||||||
can_create,
|
|
||||||
can_edit,
|
|
||||||
can_delete,
|
|
||||||
can_view,
|
|
||||||
can_view_all,
|
|
||||||
can_delete_set,
|
|
||||||
)
|
|
||||||
from re2o.views import form
|
|
||||||
|
|
||||||
|
|
||||||
def f_type_id(is_type_tt):
|
def f_type_id(is_type_tt):
|
||||||
|
@ -143,10 +136,10 @@ def f_type_id(is_type_tt):
|
||||||
return 'id_Interface-type_hidden' if is_type_tt else 'id_Interface-type'
|
return 'id_Interface-type_hidden' if is_type_tt else 'id_Interface-type'
|
||||||
|
|
||||||
|
|
||||||
def generate_ipv4_choices(form):
|
def generate_ipv4_choices(form_obj):
|
||||||
""" Generate the parameter choices for the massive_bootstrap_form tag
|
""" Generate the parameter choices for the massive_bootstrap_form tag
|
||||||
"""
|
"""
|
||||||
f_ipv4 = form.fields['ipv4']
|
f_ipv4 = form_obj.fields['ipv4']
|
||||||
used_mtype_id = []
|
used_mtype_id = []
|
||||||
choices = '{"":[{key:"",value:"Choisissez d\'abord un type de machine"},'
|
choices = '{"":[{key:"",value:"Choisissez d\'abord un type de machine"},'
|
||||||
mtype_id = -1
|
mtype_id = -1
|
||||||
|
@ -166,7 +159,7 @@ def generate_ipv4_choices(form):
|
||||||
v=ip.ipv4
|
v=ip.ipv4
|
||||||
)
|
)
|
||||||
|
|
||||||
for t in form.fields['type'].queryset.exclude(id__in=used_mtype_id):
|
for t in form_obj.fields['type'].queryset.exclude(id__in=used_mtype_id):
|
||||||
choices += '], "'+str(t.id)+'": ['
|
choices += '], "'+str(t.id)+'": ['
|
||||||
choices += '{key: "", value: "' + str(f_ipv4.empty_label) + '"},'
|
choices += '{key: "", value: "' + str(f_ipv4.empty_label) + '"},'
|
||||||
choices += ']}'
|
choices += ']}'
|
||||||
|
@ -206,10 +199,10 @@ def generate_ipv4_match_func(is_type_tt):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def generate_ipv4_mbf_param(form, is_type_tt):
|
def generate_ipv4_mbf_param(form_obj, is_type_tt):
|
||||||
""" Generate all the parameters to use with the massive_bootstrap_form
|
""" Generate all the parameters to use with the massive_bootstrap_form
|
||||||
tag """
|
tag """
|
||||||
i_choices = {'ipv4': generate_ipv4_choices(form)}
|
i_choices = {'ipv4': generate_ipv4_choices(form_obj)}
|
||||||
i_engine = {'ipv4': generate_ipv4_engine(is_type_tt)}
|
i_engine = {'ipv4': generate_ipv4_engine(is_type_tt)}
|
||||||
i_match_func = {'ipv4': generate_ipv4_match_func(is_type_tt)}
|
i_match_func = {'ipv4': generate_ipv4_match_func(is_type_tt)}
|
||||||
i_update_on = {'ipv4': [f_type_id(is_type_tt)]}
|
i_update_on = {'ipv4': [f_type_id(is_type_tt)]}
|
||||||
|
@ -227,7 +220,7 @@ def generate_ipv4_mbf_param(form, is_type_tt):
|
||||||
@login_required
|
@login_required
|
||||||
@can_create(Machine)
|
@can_create(Machine)
|
||||||
@can_edit(User)
|
@can_edit(User)
|
||||||
def new_machine(request, user, userid):
|
def new_machine(request, user, _userid):
|
||||||
""" Fonction de creation d'une machine. Cree l'objet machine,
|
""" Fonction de creation d'une machine. Cree l'objet machine,
|
||||||
le sous objet interface et l'objet domain à partir de model forms.
|
le sous objet interface et l'objet domain à partir de model forms.
|
||||||
Trop complexe, devrait être simplifié"""
|
Trop complexe, devrait être simplifié"""
|
||||||
|
@ -239,16 +232,16 @@ def new_machine(request, user, userid):
|
||||||
)
|
)
|
||||||
domain = DomainForm(request.POST or None, user=user)
|
domain = DomainForm(request.POST or None, user=user)
|
||||||
if machine.is_valid() and interface.is_valid():
|
if machine.is_valid() and interface.is_valid():
|
||||||
new_machine = machine.save(commit=False)
|
new_machine_obj = machine.save(commit=False)
|
||||||
new_machine.user = user
|
new_machine_obj.user = user
|
||||||
new_interface = interface.save(commit=False)
|
new_interface_obj = interface.save(commit=False)
|
||||||
domain.instance.interface_parent = new_interface
|
domain.instance.interface_parent = new_interface_obj
|
||||||
if domain.is_valid():
|
if domain.is_valid():
|
||||||
new_domain = domain.save(commit=False)
|
new_domain = domain.save(commit=False)
|
||||||
new_machine.save()
|
new_machine_obj.save()
|
||||||
new_interface.machine = new_machine
|
new_interface_obj.machine = new_machine_obj
|
||||||
new_interface.save()
|
new_interface_obj.save()
|
||||||
new_domain.interface_parent = new_interface
|
new_domain.interface_parent = new_interface_obj
|
||||||
new_domain.save()
|
new_domain.save()
|
||||||
messages.success(request, "La machine a été créée")
|
messages.success(request, "La machine a été créée")
|
||||||
return redirect(reverse(
|
return redirect(reverse(
|
||||||
|
@ -271,7 +264,7 @@ def new_machine(request, user, userid):
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@can_edit(Interface)
|
@can_edit(Interface)
|
||||||
def edit_interface(request, interface_instance, interfaceid):
|
def edit_interface(request, interface_instance, _interfaceid):
|
||||||
""" Edition d'une interface. Distingue suivant les droits les valeurs
|
""" Edition d'une interface. Distingue suivant les droits les valeurs
|
||||||
de interfaces et machines que l'user peut modifier infra permet de
|
de interfaces et machines que l'user peut modifier infra permet de
|
||||||
modifier le propriétaire"""
|
modifier le propriétaire"""
|
||||||
|
@ -293,15 +286,15 @@ def edit_interface(request, interface_instance, interfaceid):
|
||||||
if (machine_form.is_valid() and
|
if (machine_form.is_valid() and
|
||||||
interface_form.is_valid() and
|
interface_form.is_valid() and
|
||||||
domain_form.is_valid()):
|
domain_form.is_valid()):
|
||||||
new_machine = machine_form.save(commit=False)
|
new_machine_obj = machine_form.save(commit=False)
|
||||||
new_interface = interface_form.save(commit=False)
|
new_interface_obj = interface_form.save(commit=False)
|
||||||
new_domain = domain_form.save(commit=False)
|
new_domain_obj = domain_form.save(commit=False)
|
||||||
if machine_form.changed_data:
|
if machine_form.changed_data:
|
||||||
new_machine.save()
|
new_machine_obj.save()
|
||||||
if interface_form.changed_data:
|
if interface_form.changed_data:
|
||||||
new_interface.save()
|
new_interface_obj.save()
|
||||||
if domain_form.changed_data:
|
if domain_form.changed_data:
|
||||||
new_domain.save()
|
new_domain_obj.save()
|
||||||
messages.success(request, "La machine a été modifiée")
|
messages.success(request, "La machine a été modifiée")
|
||||||
return redirect(reverse(
|
return redirect(reverse(
|
||||||
'users:profil',
|
'users:profil',
|
||||||
|
@ -323,7 +316,7 @@ def edit_interface(request, interface_instance, interfaceid):
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@can_delete(Machine)
|
@can_delete(Machine)
|
||||||
def del_machine(request, machine, machineid):
|
def del_machine(request, machine, _machineid):
|
||||||
""" Supprime une machine, interfaces en mode cascade"""
|
""" Supprime une machine, interfaces en mode cascade"""
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
machine.delete()
|
machine.delete()
|
||||||
|
@ -342,20 +335,20 @@ def del_machine(request, machine, machineid):
|
||||||
@login_required
|
@login_required
|
||||||
@can_create(Interface)
|
@can_create(Interface)
|
||||||
@can_edit(Machine)
|
@can_edit(Machine)
|
||||||
def new_interface(request, machine, machineid):
|
def new_interface(request, machine, _machineid):
|
||||||
""" Ajoute une interface et son domain associé à une machine existante"""
|
""" Ajoute une interface et son domain associé à une machine existante"""
|
||||||
|
|
||||||
interface_form = AddInterfaceForm(request.POST or None, user=request.user)
|
interface_form = AddInterfaceForm(request.POST or None, user=request.user)
|
||||||
domain_form = DomainForm(request.POST or None)
|
domain_form = DomainForm(request.POST or None)
|
||||||
if interface_form.is_valid():
|
if interface_form.is_valid():
|
||||||
new_interface = interface_form.save(commit=False)
|
new_interface_obj = interface_form.save(commit=False)
|
||||||
domain_form.instance.interface_parent = new_interface
|
domain_form.instance.interface_parent = new_interface_obj
|
||||||
new_interface.machine = machine
|
new_interface_obj.machine = machine
|
||||||
if domain_form.is_valid():
|
if domain_form.is_valid():
|
||||||
new_domain = domain_form.save(commit=False)
|
new_domain_obj = domain_form.save(commit=False)
|
||||||
new_interface.save()
|
new_interface_obj.save()
|
||||||
new_domain.interface_parent = new_interface
|
new_domain_obj.interface_parent = new_interface_obj
|
||||||
new_domain.save()
|
new_domain_obj.save()
|
||||||
messages.success(request, "L'interface a été ajoutée")
|
messages.success(request, "L'interface a été ajoutée")
|
||||||
return redirect(reverse(
|
return redirect(reverse(
|
||||||
'users:profil',
|
'users:profil',
|
||||||
|
@ -376,7 +369,7 @@ def new_interface(request, machine, machineid):
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@can_delete(Interface)
|
@can_delete(Interface)
|
||||||
def del_interface(request, interface, interfaceid):
|
def del_interface(request, interface, _interfaceid):
|
||||||
""" Supprime une interface. Domain objet en mode cascade"""
|
""" Supprime une interface. Domain objet en mode cascade"""
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
machine = interface.machine
|
machine = interface.machine
|
||||||
|
@ -398,7 +391,7 @@ def del_interface(request, interface, interfaceid):
|
||||||
@login_required
|
@login_required
|
||||||
@can_create(Ipv6List)
|
@can_create(Ipv6List)
|
||||||
@can_edit(Interface)
|
@can_edit(Interface)
|
||||||
def new_ipv6list(request, interface, interfaceid):
|
def new_ipv6list(request, interface, _interfaceid):
|
||||||
"""Nouvelle ipv6"""
|
"""Nouvelle ipv6"""
|
||||||
ipv6list_instance = Ipv6List(interface=interface)
|
ipv6list_instance = Ipv6List(interface=interface)
|
||||||
ipv6 = Ipv6ListForm(
|
ipv6 = Ipv6ListForm(
|
||||||
|
@ -422,7 +415,7 @@ def new_ipv6list(request, interface, interfaceid):
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@can_edit(Ipv6List)
|
@can_edit(Ipv6List)
|
||||||
def edit_ipv6list(request, ipv6list_instance, ipv6listid):
|
def edit_ipv6list(request, ipv6list_instance, _ipv6listid):
|
||||||
"""Edition d'une ipv6"""
|
"""Edition d'une ipv6"""
|
||||||
ipv6 = Ipv6ListForm(
|
ipv6 = Ipv6ListForm(
|
||||||
request.POST or None,
|
request.POST or None,
|
||||||
|
@ -446,7 +439,7 @@ def edit_ipv6list(request, ipv6list_instance, ipv6listid):
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@can_delete(Ipv6List)
|
@can_delete(Ipv6List)
|
||||||
def del_ipv6list(request, ipv6list, ipv6listid):
|
def del_ipv6list(request, ipv6list, _ipv6listid):
|
||||||
""" Supprime une ipv6"""
|
""" Supprime une ipv6"""
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
interfaceid = ipv6list.interface.id
|
interfaceid = ipv6list.interface.id
|
||||||
|
@ -483,7 +476,7 @@ def add_iptype(request):
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@can_edit(IpType)
|
@can_edit(IpType)
|
||||||
def edit_iptype(request, iptype_instance, iptypeid):
|
def edit_iptype(request, iptype_instance, _iptypeid):
|
||||||
""" Edition d'un range. Ne permet pas de le redimensionner pour éviter
|
""" Edition d'un range. Ne permet pas de le redimensionner pour éviter
|
||||||
l'incohérence"""
|
l'incohérence"""
|
||||||
|
|
||||||
|
@ -528,6 +521,7 @@ def del_iptype(request, instances):
|
||||||
@login_required
|
@login_required
|
||||||
@can_create(MachineType)
|
@can_create(MachineType)
|
||||||
def add_machinetype(request):
|
def add_machinetype(request):
|
||||||
|
""" View used to add a Machinetype object """
|
||||||
machinetype = MachineTypeForm(request.POST or None)
|
machinetype = MachineTypeForm(request.POST or None)
|
||||||
if machinetype.is_valid():
|
if machinetype.is_valid():
|
||||||
machinetype.save()
|
machinetype.save()
|
||||||
|
@ -542,7 +536,8 @@ def add_machinetype(request):
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@can_edit(MachineType)
|
@can_edit(MachineType)
|
||||||
def edit_machinetype(request, machinetype_instance, machinetypeid):
|
def edit_machinetype(request, machinetype_instance, _machinetypeid):
|
||||||
|
""" View used to edit a MachineType object """
|
||||||
machinetype = MachineTypeForm(
|
machinetype = MachineTypeForm(
|
||||||
request.POST or None,
|
request.POST or None,
|
||||||
instance=machinetype_instance
|
instance=machinetype_instance
|
||||||
|
@ -562,6 +557,7 @@ def edit_machinetype(request, machinetype_instance, machinetypeid):
|
||||||
@login_required
|
@login_required
|
||||||
@can_delete_set(MachineType)
|
@can_delete_set(MachineType)
|
||||||
def del_machinetype(request, instances):
|
def del_machinetype(request, instances):
|
||||||
|
""" View used to delete a MachineType object """
|
||||||
machinetype = DelMachineTypeForm(request.POST or None, instances=instances)
|
machinetype = DelMachineTypeForm(request.POST or None, instances=instances)
|
||||||
if machinetype.is_valid():
|
if machinetype.is_valid():
|
||||||
machinetype_dels = machinetype.cleaned_data['machinetypes']
|
machinetype_dels = machinetype.cleaned_data['machinetypes']
|
||||||
|
@ -587,6 +583,7 @@ def del_machinetype(request, instances):
|
||||||
@login_required
|
@login_required
|
||||||
@can_create(Extension)
|
@can_create(Extension)
|
||||||
def add_extension(request):
|
def add_extension(request):
|
||||||
|
""" View used to add an Extension object """
|
||||||
extension = ExtensionForm(request.POST or None)
|
extension = ExtensionForm(request.POST or None)
|
||||||
if extension.is_valid():
|
if extension.is_valid():
|
||||||
extension.save()
|
extension.save()
|
||||||
|
@ -601,7 +598,8 @@ def add_extension(request):
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@can_edit(Extension)
|
@can_edit(Extension)
|
||||||
def edit_extension(request, extension_instance, extensionid):
|
def edit_extension(request, extension_instance, _extensionid):
|
||||||
|
""" View used to edit an Extension object """
|
||||||
extension = ExtensionForm(
|
extension = ExtensionForm(
|
||||||
request.POST or None,
|
request.POST or None,
|
||||||
instance=extension_instance
|
instance=extension_instance
|
||||||
|
@ -621,6 +619,7 @@ def edit_extension(request, extension_instance, extensionid):
|
||||||
@login_required
|
@login_required
|
||||||
@can_delete_set(Extension)
|
@can_delete_set(Extension)
|
||||||
def del_extension(request, instances):
|
def del_extension(request, instances):
|
||||||
|
""" View used to delete an Extension object """
|
||||||
extension = DelExtensionForm(request.POST or None, instances=instances)
|
extension = DelExtensionForm(request.POST or None, instances=instances)
|
||||||
if extension.is_valid():
|
if extension.is_valid():
|
||||||
extension_dels = extension.cleaned_data['extensions']
|
extension_dels = extension.cleaned_data['extensions']
|
||||||
|
@ -646,6 +645,7 @@ def del_extension(request, instances):
|
||||||
@login_required
|
@login_required
|
||||||
@can_create(SOA)
|
@can_create(SOA)
|
||||||
def add_soa(request):
|
def add_soa(request):
|
||||||
|
""" View used to add a SOA object """
|
||||||
soa = SOAForm(request.POST or None)
|
soa = SOAForm(request.POST or None)
|
||||||
if soa.is_valid():
|
if soa.is_valid():
|
||||||
soa.save()
|
soa.save()
|
||||||
|
@ -660,7 +660,8 @@ def add_soa(request):
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@can_edit(SOA)
|
@can_edit(SOA)
|
||||||
def edit_soa(request, soa_instance, soaid):
|
def edit_soa(request, soa_instance, _soaid):
|
||||||
|
""" View used to edit a SOA object """
|
||||||
soa = SOAForm(request.POST or None, instance=soa_instance)
|
soa = SOAForm(request.POST or None, instance=soa_instance)
|
||||||
if soa.is_valid():
|
if soa.is_valid():
|
||||||
if soa.changed_data:
|
if soa.changed_data:
|
||||||
|
@ -677,6 +678,7 @@ def edit_soa(request, soa_instance, soaid):
|
||||||
@login_required
|
@login_required
|
||||||
@can_delete_set(SOA)
|
@can_delete_set(SOA)
|
||||||
def del_soa(request, instances):
|
def del_soa(request, instances):
|
||||||
|
""" View used to delete a SOA object """
|
||||||
soa = DelSOAForm(request.POST or None, instances=instances)
|
soa = DelSOAForm(request.POST or None, instances=instances)
|
||||||
if soa.is_valid():
|
if soa.is_valid():
|
||||||
soa_dels = soa.cleaned_data['soa']
|
soa_dels = soa.cleaned_data['soa']
|
||||||
|
@ -701,6 +703,7 @@ def del_soa(request, instances):
|
||||||
@login_required
|
@login_required
|
||||||
@can_create(Mx)
|
@can_create(Mx)
|
||||||
def add_mx(request):
|
def add_mx(request):
|
||||||
|
""" View used to add a MX object """
|
||||||
mx = MxForm(request.POST or None)
|
mx = MxForm(request.POST or None)
|
||||||
if mx.is_valid():
|
if mx.is_valid():
|
||||||
mx.save()
|
mx.save()
|
||||||
|
@ -715,7 +718,8 @@ def add_mx(request):
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@can_edit(Mx)
|
@can_edit(Mx)
|
||||||
def edit_mx(request, mx_instance, mxid):
|
def edit_mx(request, mx_instance, _mxid):
|
||||||
|
""" View used to edit a MX object """
|
||||||
mx = MxForm(request.POST or None, instance=mx_instance)
|
mx = MxForm(request.POST or None, instance=mx_instance)
|
||||||
if mx.is_valid():
|
if mx.is_valid():
|
||||||
if mx.changed_data:
|
if mx.changed_data:
|
||||||
|
@ -732,6 +736,7 @@ def edit_mx(request, mx_instance, mxid):
|
||||||
@login_required
|
@login_required
|
||||||
@can_delete_set(Mx)
|
@can_delete_set(Mx)
|
||||||
def del_mx(request, instances):
|
def del_mx(request, instances):
|
||||||
|
""" View used to delete a MX object """
|
||||||
mx = DelMxForm(request.POST or None, instances=instances)
|
mx = DelMxForm(request.POST or None, instances=instances)
|
||||||
if mx.is_valid():
|
if mx.is_valid():
|
||||||
mx_dels = mx.cleaned_data['mx']
|
mx_dels = mx.cleaned_data['mx']
|
||||||
|
@ -756,6 +761,7 @@ def del_mx(request, instances):
|
||||||
@login_required
|
@login_required
|
||||||
@can_create(Ns)
|
@can_create(Ns)
|
||||||
def add_ns(request):
|
def add_ns(request):
|
||||||
|
""" View used to add a NS object """
|
||||||
ns = NsForm(request.POST or None)
|
ns = NsForm(request.POST or None)
|
||||||
if ns.is_valid():
|
if ns.is_valid():
|
||||||
ns.save()
|
ns.save()
|
||||||
|
@ -770,7 +776,8 @@ def add_ns(request):
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@can_edit(Ns)
|
@can_edit(Ns)
|
||||||
def edit_ns(request, ns_instance, nsid):
|
def edit_ns(request, ns_instance, _nsid):
|
||||||
|
""" View used to edit a NS object """
|
||||||
ns = NsForm(request.POST or None, instance=ns_instance)
|
ns = NsForm(request.POST or None, instance=ns_instance)
|
||||||
if ns.is_valid():
|
if ns.is_valid():
|
||||||
if ns.changed_data:
|
if ns.changed_data:
|
||||||
|
@ -787,6 +794,7 @@ def edit_ns(request, ns_instance, nsid):
|
||||||
@login_required
|
@login_required
|
||||||
@can_delete_set(Ns)
|
@can_delete_set(Ns)
|
||||||
def del_ns(request, instances):
|
def del_ns(request, instances):
|
||||||
|
""" View used to delete a NS object """
|
||||||
ns = DelNsForm(request.POST or None, instances=instances)
|
ns = DelNsForm(request.POST or None, instances=instances)
|
||||||
if ns.is_valid():
|
if ns.is_valid():
|
||||||
ns_dels = ns.cleaned_data['ns']
|
ns_dels = ns.cleaned_data['ns']
|
||||||
|
@ -811,6 +819,7 @@ def del_ns(request, instances):
|
||||||
@login_required
|
@login_required
|
||||||
@can_create(Txt)
|
@can_create(Txt)
|
||||||
def add_txt(request):
|
def add_txt(request):
|
||||||
|
""" View used to add a TXT object """
|
||||||
txt = TxtForm(request.POST or None)
|
txt = TxtForm(request.POST or None)
|
||||||
if txt.is_valid():
|
if txt.is_valid():
|
||||||
txt.save()
|
txt.save()
|
||||||
|
@ -825,7 +834,8 @@ def add_txt(request):
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@can_edit(Txt)
|
@can_edit(Txt)
|
||||||
def edit_txt(request, txt_instance, txtid):
|
def edit_txt(request, txt_instance, _txtid):
|
||||||
|
""" View used to edit a TXT object """
|
||||||
txt = TxtForm(request.POST or None, instance=txt_instance)
|
txt = TxtForm(request.POST or None, instance=txt_instance)
|
||||||
if txt.is_valid():
|
if txt.is_valid():
|
||||||
if txt.changed_data:
|
if txt.changed_data:
|
||||||
|
@ -842,6 +852,7 @@ def edit_txt(request, txt_instance, txtid):
|
||||||
@login_required
|
@login_required
|
||||||
@can_delete_set(Txt)
|
@can_delete_set(Txt)
|
||||||
def del_txt(request, instances):
|
def del_txt(request, instances):
|
||||||
|
""" View used to delete a TXT object """
|
||||||
txt = DelTxtForm(request.POST or None, instances=instances)
|
txt = DelTxtForm(request.POST or None, instances=instances)
|
||||||
if txt.is_valid():
|
if txt.is_valid():
|
||||||
txt_dels = txt.cleaned_data['txt']
|
txt_dels = txt.cleaned_data['txt']
|
||||||
|
@ -866,6 +877,7 @@ def del_txt(request, instances):
|
||||||
@login_required
|
@login_required
|
||||||
@can_create(Srv)
|
@can_create(Srv)
|
||||||
def add_srv(request):
|
def add_srv(request):
|
||||||
|
""" View used to add a SRV object """
|
||||||
srv = SrvForm(request.POST or None)
|
srv = SrvForm(request.POST or None)
|
||||||
if srv.is_valid():
|
if srv.is_valid():
|
||||||
srv.save()
|
srv.save()
|
||||||
|
@ -880,7 +892,8 @@ def add_srv(request):
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@can_edit(Srv)
|
@can_edit(Srv)
|
||||||
def edit_srv(request, srv_instance, srvid):
|
def edit_srv(request, srv_instance, _srvid):
|
||||||
|
""" View used to edit a SRV object """
|
||||||
srv = SrvForm(request.POST or None, instance=srv_instance)
|
srv = SrvForm(request.POST or None, instance=srv_instance)
|
||||||
if srv.is_valid():
|
if srv.is_valid():
|
||||||
if srv.changed_data:
|
if srv.changed_data:
|
||||||
|
@ -897,6 +910,7 @@ def edit_srv(request, srv_instance, srvid):
|
||||||
@login_required
|
@login_required
|
||||||
@can_delete_set(Srv)
|
@can_delete_set(Srv)
|
||||||
def del_srv(request, instances):
|
def del_srv(request, instances):
|
||||||
|
""" View used to delete a SRV object """
|
||||||
srv = DelSrvForm(request.POST or None, instances=instances)
|
srv = DelSrvForm(request.POST or None, instances=instances)
|
||||||
if srv.is_valid():
|
if srv.is_valid():
|
||||||
srv_dels = srv.cleaned_data['srv']
|
srv_dels = srv.cleaned_data['srv']
|
||||||
|
@ -922,6 +936,7 @@ def del_srv(request, instances):
|
||||||
@can_create(Domain)
|
@can_create(Domain)
|
||||||
@can_edit(Interface)
|
@can_edit(Interface)
|
||||||
def add_alias(request, interface, interfaceid):
|
def add_alias(request, interface, interfaceid):
|
||||||
|
""" View used to add an Alias object """
|
||||||
alias = AliasForm(request.POST or None, user=request.user)
|
alias = AliasForm(request.POST or None, user=request.user)
|
||||||
if alias.is_valid():
|
if alias.is_valid():
|
||||||
alias = alias.save(commit=False)
|
alias = alias.save(commit=False)
|
||||||
|
@ -941,7 +956,8 @@ def add_alias(request, interface, interfaceid):
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@can_edit(Domain)
|
@can_edit(Domain)
|
||||||
def edit_alias(request, domain_instance, domainid):
|
def edit_alias(request, domain_instance, _domainid):
|
||||||
|
""" View used to edit an Alias object """
|
||||||
alias = AliasForm(
|
alias = AliasForm(
|
||||||
request.POST or None,
|
request.POST or None,
|
||||||
instance=domain_instance,
|
instance=domain_instance,
|
||||||
|
@ -967,6 +983,7 @@ def edit_alias(request, domain_instance, domainid):
|
||||||
@login_required
|
@login_required
|
||||||
@can_edit(Interface)
|
@can_edit(Interface)
|
||||||
def del_alias(request, interface, interfaceid):
|
def del_alias(request, interface, interfaceid):
|
||||||
|
""" View used to delete an Alias object """
|
||||||
alias = DelAliasForm(request.POST or None, interface=interface)
|
alias = DelAliasForm(request.POST or None, interface=interface)
|
||||||
if alias.is_valid():
|
if alias.is_valid():
|
||||||
alias_dels = alias.cleaned_data['alias']
|
alias_dels = alias.cleaned_data['alias']
|
||||||
|
@ -997,6 +1014,7 @@ def del_alias(request, interface, interfaceid):
|
||||||
@login_required
|
@login_required
|
||||||
@can_create(Service)
|
@can_create(Service)
|
||||||
def add_service(request):
|
def add_service(request):
|
||||||
|
""" View used to add a Service object """
|
||||||
service = ServiceForm(request.POST or None)
|
service = ServiceForm(request.POST or None)
|
||||||
if service.is_valid():
|
if service.is_valid():
|
||||||
service.save()
|
service.save()
|
||||||
|
@ -1011,7 +1029,8 @@ def add_service(request):
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@can_edit(Service)
|
@can_edit(Service)
|
||||||
def edit_service(request, service_instance, serviceid):
|
def edit_service(request, service_instance, _serviceid):
|
||||||
|
""" View used to edit a Service object """
|
||||||
service = ServiceForm(request.POST or None, instance=service_instance)
|
service = ServiceForm(request.POST or None, instance=service_instance)
|
||||||
if service.is_valid():
|
if service.is_valid():
|
||||||
if service.changed_data:
|
if service.changed_data:
|
||||||
|
@ -1028,6 +1047,7 @@ def edit_service(request, service_instance, serviceid):
|
||||||
@login_required
|
@login_required
|
||||||
@can_delete_set(Service)
|
@can_delete_set(Service)
|
||||||
def del_service(request, instances):
|
def del_service(request, instances):
|
||||||
|
""" View used to delete a Service object """
|
||||||
service = DelServiceForm(request.POST or None, instances=instances)
|
service = DelServiceForm(request.POST or None, instances=instances)
|
||||||
if service.is_valid():
|
if service.is_valid():
|
||||||
service_dels = service.cleaned_data['service']
|
service_dels = service.cleaned_data['service']
|
||||||
|
@ -1052,6 +1072,7 @@ def del_service(request, instances):
|
||||||
@login_required
|
@login_required
|
||||||
@can_create(Vlan)
|
@can_create(Vlan)
|
||||||
def add_vlan(request):
|
def add_vlan(request):
|
||||||
|
""" View used to add a VLAN object """
|
||||||
vlan = VlanForm(request.POST or None)
|
vlan = VlanForm(request.POST or None)
|
||||||
if vlan.is_valid():
|
if vlan.is_valid():
|
||||||
vlan.save()
|
vlan.save()
|
||||||
|
@ -1066,7 +1087,8 @@ def add_vlan(request):
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@can_edit(Vlan)
|
@can_edit(Vlan)
|
||||||
def edit_vlan(request, vlan_instance, vlanid):
|
def edit_vlan(request, vlan_instance, _vlanid):
|
||||||
|
""" View used to edit a VLAN object """
|
||||||
vlan = VlanForm(request.POST or None, instance=vlan_instance)
|
vlan = VlanForm(request.POST or None, instance=vlan_instance)
|
||||||
if vlan.is_valid():
|
if vlan.is_valid():
|
||||||
if vlan.changed_data:
|
if vlan.changed_data:
|
||||||
|
@ -1083,6 +1105,7 @@ def edit_vlan(request, vlan_instance, vlanid):
|
||||||
@login_required
|
@login_required
|
||||||
@can_delete_set(Vlan)
|
@can_delete_set(Vlan)
|
||||||
def del_vlan(request, instances):
|
def del_vlan(request, instances):
|
||||||
|
""" View used to delete a VLAN object """
|
||||||
vlan = DelVlanForm(request.POST or None, instances=instances)
|
vlan = DelVlanForm(request.POST or None, instances=instances)
|
||||||
if vlan.is_valid():
|
if vlan.is_valid():
|
||||||
vlan_dels = vlan.cleaned_data['vlan']
|
vlan_dels = vlan.cleaned_data['vlan']
|
||||||
|
@ -1107,6 +1130,7 @@ def del_vlan(request, instances):
|
||||||
@login_required
|
@login_required
|
||||||
@can_create(Nas)
|
@can_create(Nas)
|
||||||
def add_nas(request):
|
def add_nas(request):
|
||||||
|
""" View used to add a NAS object """
|
||||||
nas = NasForm(request.POST or None)
|
nas = NasForm(request.POST or None)
|
||||||
if nas.is_valid():
|
if nas.is_valid():
|
||||||
nas.save()
|
nas.save()
|
||||||
|
@ -1121,7 +1145,8 @@ def add_nas(request):
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@can_edit(Nas)
|
@can_edit(Nas)
|
||||||
def edit_nas(request, nas_instance, nasid):
|
def edit_nas(request, nas_instance, _nasid):
|
||||||
|
""" View used to edit a NAS object """
|
||||||
nas = NasForm(request.POST or None, instance=nas_instance)
|
nas = NasForm(request.POST or None, instance=nas_instance)
|
||||||
if nas.is_valid():
|
if nas.is_valid():
|
||||||
if nas.changed_data:
|
if nas.changed_data:
|
||||||
|
@ -1138,6 +1163,7 @@ def edit_nas(request, nas_instance, nasid):
|
||||||
@login_required
|
@login_required
|
||||||
@can_delete_set(Nas)
|
@can_delete_set(Nas)
|
||||||
def del_nas(request, instances):
|
def del_nas(request, instances):
|
||||||
|
""" View used to delete a NAS object """
|
||||||
nas = DelNasForm(request.POST or None, instances=instances)
|
nas = DelNasForm(request.POST or None, instances=instances)
|
||||||
if nas.is_valid():
|
if nas.is_valid():
|
||||||
nas_dels = nas.cleaned_data['nas']
|
nas_dels = nas.cleaned_data['nas']
|
||||||
|
@ -1162,6 +1188,8 @@ def del_nas(request, instances):
|
||||||
@login_required
|
@login_required
|
||||||
@can_view_all(Machine)
|
@can_view_all(Machine)
|
||||||
def index(request):
|
def index(request):
|
||||||
|
""" The home view for this app. Displays the list of registered
|
||||||
|
machines in Re2o """
|
||||||
pagination_large_number = (GeneralOption
|
pagination_large_number = (GeneralOption
|
||||||
.get_cached_value('pagination_large_number'))
|
.get_cached_value('pagination_large_number'))
|
||||||
machines_list = (Machine.objects
|
machines_list = (Machine.objects
|
||||||
|
@ -1194,6 +1222,7 @@ def index(request):
|
||||||
@login_required
|
@login_required
|
||||||
@can_view_all(IpType)
|
@can_view_all(IpType)
|
||||||
def index_iptype(request):
|
def index_iptype(request):
|
||||||
|
""" View displaying the list of existing types of IP """
|
||||||
iptype_list = (IpType.objects
|
iptype_list = (IpType.objects
|
||||||
.select_related('extension')
|
.select_related('extension')
|
||||||
.select_related('vlan')
|
.select_related('vlan')
|
||||||
|
@ -1208,6 +1237,7 @@ def index_iptype(request):
|
||||||
@login_required
|
@login_required
|
||||||
@can_view_all(Vlan)
|
@can_view_all(Vlan)
|
||||||
def index_vlan(request):
|
def index_vlan(request):
|
||||||
|
""" View displaying the list of existing VLANs """
|
||||||
vlan_list = Vlan.objects.prefetch_related('iptype_set').order_by('vlan_id')
|
vlan_list = Vlan.objects.prefetch_related('iptype_set').order_by('vlan_id')
|
||||||
return render(
|
return render(
|
||||||
request,
|
request,
|
||||||
|
@ -1219,6 +1249,7 @@ def index_vlan(request):
|
||||||
@login_required
|
@login_required
|
||||||
@can_view_all(MachineType)
|
@can_view_all(MachineType)
|
||||||
def index_machinetype(request):
|
def index_machinetype(request):
|
||||||
|
""" View displaying the list of existing types of machines """
|
||||||
machinetype_list = (MachineType.objects
|
machinetype_list = (MachineType.objects
|
||||||
.select_related('ip_type')
|
.select_related('ip_type')
|
||||||
.order_by('type'))
|
.order_by('type'))
|
||||||
|
@ -1232,6 +1263,7 @@ def index_machinetype(request):
|
||||||
@login_required
|
@login_required
|
||||||
@can_view_all(Nas)
|
@can_view_all(Nas)
|
||||||
def index_nas(request):
|
def index_nas(request):
|
||||||
|
""" View displaying the list of existing NAS """
|
||||||
nas_list = (Nas.objects
|
nas_list = (Nas.objects
|
||||||
.select_related('machine_type')
|
.select_related('machine_type')
|
||||||
.select_related('nas_type')
|
.select_related('nas_type')
|
||||||
|
@ -1247,6 +1279,10 @@ def index_nas(request):
|
||||||
@can_view_all(Srv)
|
@can_view_all(Srv)
|
||||||
@can_view_all(Extension)
|
@can_view_all(Extension)
|
||||||
def index_extension(request):
|
def index_extension(request):
|
||||||
|
""" View displaying the list of existing extensions, the list of
|
||||||
|
existing SOA records, the list of existing MX records , the list of
|
||||||
|
existing NS records, the list of existing TXT records and the list of
|
||||||
|
existing SRV records """
|
||||||
extension_list = (Extension.objects
|
extension_list = (Extension.objects
|
||||||
.select_related('origin')
|
.select_related('origin')
|
||||||
.select_related('soa')
|
.select_related('soa')
|
||||||
|
@ -1282,6 +1318,7 @@ def index_extension(request):
|
||||||
@login_required
|
@login_required
|
||||||
@can_edit(Interface)
|
@can_edit(Interface)
|
||||||
def index_alias(request, interface, interfaceid):
|
def index_alias(request, interface, interfaceid):
|
||||||
|
""" View used to display the list of existing alias of an interface """
|
||||||
alias_list = Domain.objects.filter(
|
alias_list = Domain.objects.filter(
|
||||||
cname=Domain.objects.filter(interface_parent=interface)
|
cname=Domain.objects.filter(interface_parent=interface)
|
||||||
).order_by('name')
|
).order_by('name')
|
||||||
|
@ -1295,6 +1332,7 @@ def index_alias(request, interface, interfaceid):
|
||||||
@login_required
|
@login_required
|
||||||
@can_edit(Interface)
|
@can_edit(Interface)
|
||||||
def index_ipv6(request, interface, interfaceid):
|
def index_ipv6(request, interface, interfaceid):
|
||||||
|
""" View used to display the list of existing IPv6 of an interface """
|
||||||
ipv6_list = Ipv6List.objects.filter(interface=interface)
|
ipv6_list = Ipv6List.objects.filter(interface=interface)
|
||||||
return render(
|
return render(
|
||||||
request,
|
request,
|
||||||
|
@ -1306,6 +1344,7 @@ def index_ipv6(request, interface, interfaceid):
|
||||||
@login_required
|
@login_required
|
||||||
@can_view_all(Service)
|
@can_view_all(Service)
|
||||||
def index_service(request):
|
def index_service(request):
|
||||||
|
""" View used to display the list of existing services """
|
||||||
service_list = (Service.objects
|
service_list = (Service.objects
|
||||||
.prefetch_related(
|
.prefetch_related(
|
||||||
'service_link_set__server__domain__extension'
|
'service_link_set__server__domain__extension'
|
||||||
|
@ -1324,6 +1363,7 @@ def index_service(request):
|
||||||
@login_required
|
@login_required
|
||||||
@can_view_all(OuverturePortList)
|
@can_view_all(OuverturePortList)
|
||||||
def index_portlist(request):
|
def index_portlist(request):
|
||||||
|
""" View used to display the list of existing port policies """
|
||||||
port_list = (OuverturePortList.objects
|
port_list = (OuverturePortList.objects
|
||||||
.prefetch_related('ouvertureport_set')
|
.prefetch_related('ouvertureport_set')
|
||||||
.prefetch_related('interface_set__domain__extension')
|
.prefetch_related('interface_set__domain__extension')
|
||||||
|
@ -1338,7 +1378,8 @@ def index_portlist(request):
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@can_edit(OuverturePortList)
|
@can_edit(OuverturePortList)
|
||||||
def edit_portlist(request, ouvertureportlist_instance, ouvertureportlistid):
|
def edit_portlist(request, ouvertureportlist_instance, _ouvertureportlistid):
|
||||||
|
""" View used to edit a port policy """
|
||||||
port_list = EditOuverturePortListForm(
|
port_list = EditOuverturePortListForm(
|
||||||
request.POST or None,
|
request.POST or None,
|
||||||
instance=ouvertureportlist_instance
|
instance=ouvertureportlist_instance
|
||||||
|
@ -1376,7 +1417,8 @@ def edit_portlist(request, ouvertureportlist_instance, ouvertureportlistid):
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@can_delete(OuverturePortList)
|
@can_delete(OuverturePortList)
|
||||||
def del_portlist(request, port_list_instance, ouvertureportlistid):
|
def del_portlist(request, port_list_instance, _ouvertureportlistid):
|
||||||
|
""" View used to delete a port policy """
|
||||||
port_list_instance.delete()
|
port_list_instance.delete()
|
||||||
messages.success(request, "La liste de ports a été supprimée")
|
messages.success(request, "La liste de ports a été supprimée")
|
||||||
return redirect(reverse('machines:index-portlist'))
|
return redirect(reverse('machines:index-portlist'))
|
||||||
|
@ -1385,6 +1427,7 @@ def del_portlist(request, port_list_instance, ouvertureportlistid):
|
||||||
@login_required
|
@login_required
|
||||||
@can_create(OuverturePortList)
|
@can_create(OuverturePortList)
|
||||||
def add_portlist(request):
|
def add_portlist(request):
|
||||||
|
""" View used to add a port policy """
|
||||||
port_list = EditOuverturePortListForm(request.POST or None)
|
port_list = EditOuverturePortListForm(request.POST or None)
|
||||||
port_formset = modelformset_factory(
|
port_formset = modelformset_factory(
|
||||||
OuverturePort,
|
OuverturePort,
|
||||||
|
@ -1409,22 +1452,14 @@ def add_portlist(request):
|
||||||
'machines/edit_portlist.html',
|
'machines/edit_portlist.html',
|
||||||
request
|
request
|
||||||
)
|
)
|
||||||
port_list = EditOuverturePortListForm(request.POST or None)
|
|
||||||
if port_list.is_valid():
|
|
||||||
port_list.save()
|
|
||||||
messages.success(request, "Liste de ports créée")
|
|
||||||
return redirect(reverse('machines:index-portlist'))
|
|
||||||
return form(
|
|
||||||
{'machineform': port_list, 'action_name': 'Créer'},
|
|
||||||
'machines/machine.html',
|
|
||||||
request
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@can_create(OuverturePort)
|
@can_create(OuverturePort)
|
||||||
@can_edit(Interface)
|
@can_edit(Interface)
|
||||||
def configure_ports(request, interface_instance, interfaceid):
|
def configure_ports(request, interface_instance, _interfaceid):
|
||||||
|
""" View to display the list of configured port policy for an
|
||||||
|
interface """
|
||||||
if not interface_instance.may_have_port_open():
|
if not interface_instance.may_have_port_open():
|
||||||
messages.error(
|
messages.error(
|
||||||
request,
|
request,
|
||||||
|
@ -1447,10 +1482,11 @@ def configure_ports(request, interface_instance, interfaceid):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
""" Framework Rest """
|
## Framework Rest
|
||||||
|
|
||||||
|
|
||||||
class JSONResponse(HttpResponse):
|
class JSONResponse(HttpResponse):
|
||||||
|
""" Class to build a JSON response. Used for API """
|
||||||
def __init__(self, data, **kwargs):
|
def __init__(self, data, **kwargs):
|
||||||
content = JSONRenderer().render(data)
|
content = JSONRenderer().render(data)
|
||||||
kwargs['content_type'] = 'application/json'
|
kwargs['content_type'] = 'application/json'
|
||||||
|
@ -1460,7 +1496,8 @@ class JSONResponse(HttpResponse):
|
||||||
@csrf_exempt
|
@csrf_exempt
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('machines.serveur')
|
@permission_required('machines.serveur')
|
||||||
def mac_ip_list(request):
|
def mac_ip_list(_request):
|
||||||
|
""" API view to list the active and assigned interfaces """
|
||||||
interfaces = all_active_assigned_interfaces()
|
interfaces = all_active_assigned_interfaces()
|
||||||
seria = InterfaceSerializer(interfaces, many=True)
|
seria = InterfaceSerializer(interfaces, many=True)
|
||||||
return seria.data
|
return seria.data
|
||||||
|
@ -1469,7 +1506,9 @@ def mac_ip_list(request):
|
||||||
@csrf_exempt
|
@csrf_exempt
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('machines.serveur')
|
@permission_required('machines.serveur')
|
||||||
def full_mac_ip_list(request):
|
def full_mac_ip_list(_request):
|
||||||
|
""" API view to list the active and assigned interfaces. More
|
||||||
|
detailed than mac_ip_list(request) """
|
||||||
interfaces = all_active_assigned_interfaces(full=True)
|
interfaces = all_active_assigned_interfaces(full=True)
|
||||||
seria = FullInterfaceSerializer(interfaces, many=True)
|
seria = FullInterfaceSerializer(interfaces, many=True)
|
||||||
return seria.data
|
return seria.data
|
||||||
|
@ -1478,7 +1517,8 @@ def full_mac_ip_list(request):
|
||||||
@csrf_exempt
|
@csrf_exempt
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('machines.serveur')
|
@permission_required('machines.serveur')
|
||||||
def alias(request):
|
def alias(_request):
|
||||||
|
""" API view to list the alias (CNAME) for all assigned interfaces """
|
||||||
alias = (Domain.objects
|
alias = (Domain.objects
|
||||||
.filter(interface_parent=None)
|
.filter(interface_parent=None)
|
||||||
.filter(
|
.filter(
|
||||||
|
@ -1494,7 +1534,8 @@ def alias(request):
|
||||||
@csrf_exempt
|
@csrf_exempt
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('machines.serveur')
|
@permission_required('machines.serveur')
|
||||||
def corresp(request):
|
def corresp(_request):
|
||||||
|
""" API view to list the types of IP and infos about it """
|
||||||
type = IpType.objects.all().select_related('extension')
|
type = IpType.objects.all().select_related('extension')
|
||||||
seria = TypeSerializer(type, many=True)
|
seria = TypeSerializer(type, many=True)
|
||||||
return JSONResponse(seria.data)
|
return JSONResponse(seria.data)
|
||||||
|
@ -1503,7 +1544,8 @@ def corresp(request):
|
||||||
@csrf_exempt
|
@csrf_exempt
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('machines.serveur')
|
@permission_required('machines.serveur')
|
||||||
def mx(request):
|
def mx(_request):
|
||||||
|
""" API view to list the MX records """
|
||||||
mx = (Mx.objects.all()
|
mx = (Mx.objects.all()
|
||||||
.select_related('zone')
|
.select_related('zone')
|
||||||
.select_related('name__extension'))
|
.select_related('name__extension'))
|
||||||
|
@ -1514,7 +1556,8 @@ def mx(request):
|
||||||
@csrf_exempt
|
@csrf_exempt
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('machines.serveur')
|
@permission_required('machines.serveur')
|
||||||
def txt(request):
|
def txt(_request):
|
||||||
|
""" API view to list the TXT records """
|
||||||
txt = Txt.objects.all().select_related('zone')
|
txt = Txt.objects.all().select_related('zone')
|
||||||
seria = TxtSerializer(txt, many=True)
|
seria = TxtSerializer(txt, many=True)
|
||||||
return JSONResponse(seria.data)
|
return JSONResponse(seria.data)
|
||||||
|
@ -1523,7 +1566,8 @@ def txt(request):
|
||||||
@csrf_exempt
|
@csrf_exempt
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('machines.serveur')
|
@permission_required('machines.serveur')
|
||||||
def srv(request):
|
def srv(_request):
|
||||||
|
""" API view to list the SRV records """
|
||||||
srv = (Srv.objects
|
srv = (Srv.objects
|
||||||
.all()
|
.all()
|
||||||
.select_related('extension')
|
.select_related('extension')
|
||||||
|
@ -1535,7 +1579,8 @@ def srv(request):
|
||||||
@csrf_exempt
|
@csrf_exempt
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('machines.serveur')
|
@permission_required('machines.serveur')
|
||||||
def ns(request):
|
def ns(_request):
|
||||||
|
""" API view to list the NS records """
|
||||||
ns = (Ns.objects
|
ns = (Ns.objects
|
||||||
.exclude(
|
.exclude(
|
||||||
ns__in=Domain.objects.filter(
|
ns__in=Domain.objects.filter(
|
||||||
|
@ -1550,7 +1595,8 @@ def ns(request):
|
||||||
@csrf_exempt
|
@csrf_exempt
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('machines.serveur')
|
@permission_required('machines.serveur')
|
||||||
def zones(request):
|
def zones(_request):
|
||||||
|
""" API view to list the DNS zones """
|
||||||
zones = Extension.objects.all().select_related('origin')
|
zones = Extension.objects.all().select_related('origin')
|
||||||
seria = ExtensionSerializer(zones, many=True)
|
seria = ExtensionSerializer(zones, many=True)
|
||||||
return JSONResponse(seria.data)
|
return JSONResponse(seria.data)
|
||||||
|
@ -1560,6 +1606,7 @@ def zones(request):
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('machines.serveur')
|
@permission_required('machines.serveur')
|
||||||
def mac_ip(request):
|
def mac_ip(request):
|
||||||
|
""" API view to list the active and assigned interfaces """
|
||||||
seria = mac_ip_list(request)
|
seria = mac_ip_list(request)
|
||||||
return JSONResponse(seria)
|
return JSONResponse(seria)
|
||||||
|
|
||||||
|
@ -1568,6 +1615,8 @@ def mac_ip(request):
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('machines.serveur')
|
@permission_required('machines.serveur')
|
||||||
def mac_ip_dns(request):
|
def mac_ip_dns(request):
|
||||||
|
""" API view to list the active and assigned interfaces. More
|
||||||
|
detailed than mac_ip_list(request) """
|
||||||
seria = full_mac_ip_list(request)
|
seria = full_mac_ip_list(request)
|
||||||
return JSONResponse(seria)
|
return JSONResponse(seria)
|
||||||
|
|
||||||
|
@ -1575,7 +1624,8 @@ def mac_ip_dns(request):
|
||||||
@csrf_exempt
|
@csrf_exempt
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('machines.serveur')
|
@permission_required('machines.serveur')
|
||||||
def service_servers(request):
|
def service_servers(_request):
|
||||||
|
""" API view to list the service links """
|
||||||
service_link = (Service_link.objects
|
service_link = (Service_link.objects
|
||||||
.all()
|
.all()
|
||||||
.select_related('server__domain')
|
.select_related('server__domain')
|
||||||
|
@ -1587,7 +1637,8 @@ def service_servers(request):
|
||||||
@csrf_exempt
|
@csrf_exempt
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('machines.serveur')
|
@permission_required('machines.serveur')
|
||||||
def ouverture_ports(request):
|
def ouverture_ports(_request):
|
||||||
|
""" API view to list the port policies for each IP """
|
||||||
r = {'ipv4': {}, 'ipv6': {}}
|
r = {'ipv4': {}, 'ipv6': {}}
|
||||||
for o in (OuverturePortList.objects
|
for o in (OuverturePortList.objects
|
||||||
.all()
|
.all()
|
||||||
|
@ -1654,6 +1705,8 @@ def ouverture_ports(request):
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('machines.serveur')
|
@permission_required('machines.serveur')
|
||||||
def regen_achieved(request):
|
def regen_achieved(request):
|
||||||
|
""" API view to list the regen status for each (Service link, Server)
|
||||||
|
couple """
|
||||||
obj = (Service_link.objects
|
obj = (Service_link.objects
|
||||||
.filter(
|
.filter(
|
||||||
service__in=Service.objects.filter(
|
service__in=Service.objects.filter(
|
||||||
|
|
Loading…
Reference in a new issue