|
|
|
@ -49,13 +49,13 @@ from reversion.models import Version |
|
|
|
|
|
|
|
import re |
|
|
|
from .forms import NewMachineForm, EditMachineForm, EditInterfaceForm, AddInterfaceForm, MachineTypeForm, DelMachineTypeForm, ExtensionForm, DelExtensionForm, BaseEditInterfaceForm, BaseEditMachineForm |
|
|
|
from .forms import EditIpTypeForm, IpTypeForm, DelIpTypeForm, DomainForm, AliasForm, DelAliasForm, NsForm, DelNsForm, TextForm, DelTextForm, MxForm, DelMxForm, VlanForm, DelVlanForm, ServiceForm, DelServiceForm, NasForm, DelNasForm |
|
|
|
from .forms import EditIpTypeForm, IpTypeForm, DelIpTypeForm, DomainForm, AliasForm, DelAliasForm, NsForm, DelNsForm, TxtForm, DelTxtForm, MxForm, DelMxForm, VlanForm, DelVlanForm, ServiceForm, DelServiceForm, NasForm, DelNasForm |
|
|
|
from .forms import EditOuverturePortListForm, EditOuverturePortConfigForm |
|
|
|
from .models import IpType, Machine, Interface, IpList, MachineType, Extension, Mx, Ns, Domain, Service, Service_link, Vlan, Nas, Text, OuverturePortList, OuverturePort |
|
|
|
from users.models import User |
|
|
|
from users.models import all_has_access |
|
|
|
from preferences.models import GeneralOption, OptionalMachine |
|
|
|
from .templatetags.bootstrap_form_typeahead import hidden_id, input_id |
|
|
|
from re2o.templatetags.bootstrap_form_typeahead import hidden_id, input_id |
|
|
|
|
|
|
|
def all_active_interfaces(): |
|
|
|
"""Renvoie l'ensemble des machines autorisées à sortir sur internet """ |
|
|
|
@ -340,7 +340,7 @@ def add_iptype(request): |
|
|
|
reversion.set_comment("Création") |
|
|
|
messages.success(request, "Ce type d'ip a été ajouté") |
|
|
|
return redirect("/machines/index_iptype") |
|
|
|
return form({'machineform': iptype, 'interfaceform': None}, 'machines/machine.html', request) |
|
|
|
return form({'iptypeform': iptype}, 'machines/machine.html', request) |
|
|
|
|
|
|
|
@login_required |
|
|
|
@permission_required('infra') |
|
|
|
@ -359,7 +359,7 @@ def edit_iptype(request, iptypeid): |
|
|
|
reversion.set_comment("Champs modifié(s) : %s" % ', '.join(field for field in iptype.changed_data)) |
|
|
|
messages.success(request, "Type d'ip modifié") |
|
|
|
return redirect("/machines/index_iptype/") |
|
|
|
return form({'machineform': iptype}, 'machines/machine.html', request) |
|
|
|
return form({'iptypeform': iptype}, 'machines/machine.html', request) |
|
|
|
|
|
|
|
@login_required |
|
|
|
@permission_required('infra') |
|
|
|
@ -377,7 +377,7 @@ def del_iptype(request): |
|
|
|
except ProtectedError: |
|
|
|
messages.error(request, "Le type d'ip %s est affectée à au moins une machine, vous ne pouvez pas le supprimer" % iptype_del) |
|
|
|
return redirect("/machines/index_iptype") |
|
|
|
return form({'machineform': iptype, 'interfaceform': None}, 'machines/machine.html', request) |
|
|
|
return form({'iptypeform': iptype}, 'machines/machine.html', request) |
|
|
|
|
|
|
|
@login_required |
|
|
|
@permission_required('infra') |
|
|
|
@ -390,7 +390,7 @@ def add_machinetype(request): |
|
|
|
reversion.set_comment("Création") |
|
|
|
messages.success(request, "Ce type de machine a été ajouté") |
|
|
|
return redirect("/machines/index_machinetype") |
|
|
|
return form({'machineform': machinetype, 'interfaceform': None}, 'machines/machine.html', request) |
|
|
|
return form({'machinetypeform': machinetype}, 'machines/machine.html', request) |
|
|
|
|
|
|
|
@login_required |
|
|
|
@permission_required('infra') |
|
|
|
@ -408,7 +408,7 @@ def edit_machinetype(request, machinetypeid): |
|
|
|
reversion.set_comment("Champs modifié(s) : %s" % ', '.join(field for field in machinetype.changed_data)) |
|
|
|
messages.success(request, "Type de machine modifié") |
|
|
|
return redirect("/machines/index_machinetype/") |
|
|
|
return form({'machineform': machinetype}, 'machines/machine.html', request) |
|
|
|
return form({'machinetypeform': machinetype}, 'machines/machine.html', request) |
|
|
|
|
|
|
|
@login_required |
|
|
|
@permission_required('infra') |
|
|
|
@ -425,7 +425,7 @@ def del_machinetype(request): |
|
|
|
except ProtectedError: |
|
|
|
messages.error(request, "Le type de machine %s est affectée à au moins une machine, vous ne pouvez pas le supprimer" % machinetype_del) |
|
|
|
return redirect("/machines/index_machinetype") |
|
|
|
return form({'machineform': machinetype, 'interfaceform': None}, 'machines/machine.html', request) |
|
|
|
return form({'machinetypeform': machinetype}, 'machines/machine.html', request) |
|
|
|
|
|
|
|
@login_required |
|
|
|
@permission_required('infra') |
|
|
|
@ -438,7 +438,7 @@ def add_extension(request): |
|
|
|
reversion.set_comment("Création") |
|
|
|
messages.success(request, "Cette extension a été ajoutée") |
|
|
|
return redirect("/machines/index_extension") |
|
|
|
return form({'machineform': extension, 'interfaceform': None}, 'machines/machine.html', request) |
|
|
|
return form({'extensionform': extension}, 'machines/machine.html', request) |
|
|
|
|
|
|
|
@login_required |
|
|
|
@permission_required('infra') |
|
|
|
@ -456,7 +456,7 @@ def edit_extension(request, extensionid): |
|
|
|
reversion.set_comment("Champs modifié(s) : %s" % ', '.join(field for field in extension.changed_data)) |
|
|
|
messages.success(request, "Extension modifiée") |
|
|
|
return redirect("/machines/index_extension/") |
|
|
|
return form({'machineform': extension}, 'machines/machine.html', request) |
|
|
|
return form({'extensionform': extension}, 'machines/machine.html', request) |
|
|
|
|
|
|
|
@login_required |
|
|
|
@permission_required('infra') |
|
|
|
@ -473,7 +473,7 @@ def del_extension(request): |
|
|
|
except ProtectedError: |
|
|
|
messages.error(request, "L'extension %s est affectée à au moins un type de machine, vous ne pouvez pas la supprimer" % extension_del) |
|
|
|
return redirect("/machines/index_extension") |
|
|
|
return form({'machineform': extension, 'interfaceform': None}, 'machines/machine.html', request) |
|
|
|
return form({'extensionform': extension}, 'machines/machine.html', request) |
|
|
|
|
|
|
|
@login_required |
|
|
|
@permission_required('infra') |
|
|
|
@ -486,7 +486,7 @@ def add_mx(request): |
|
|
|
reversion.set_comment("Création") |
|
|
|
messages.success(request, "Cet enregistrement mx a été ajouté") |
|
|
|
return redirect("/machines/index_extension") |
|
|
|
return form({'machineform': mx, 'interfaceform': None}, 'machines/machine.html', request) |
|
|
|
return form({'mxform': mx}, 'machines/machine.html', request) |
|
|
|
|
|
|
|
@login_required |
|
|
|
@permission_required('infra') |
|
|
|
@ -504,7 +504,7 @@ def edit_mx(request, mxid): |
|
|
|
reversion.set_comment("Champs modifié(s) : %s" % ', '.join(field for field in mx.changed_data)) |
|
|
|
messages.success(request, "Mx modifié") |
|
|
|
return redirect("/machines/index_extension/") |
|
|
|
return form({'machineform': mx}, 'machines/machine.html', request) |
|
|
|
return form({'mxform': mx}, 'machines/machine.html', request) |
|
|
|
|
|
|
|
@login_required |
|
|
|
@permission_required('infra') |
|
|
|
@ -521,7 +521,7 @@ def del_mx(request): |
|
|
|
except ProtectedError: |
|
|
|
messages.error(request, "Erreur le Mx suivant %s ne peut être supprimé" % mx_del) |
|
|
|
return redirect("/machines/index_extension") |
|
|
|
return form({'machineform': mx, 'interfaceform': None}, 'machines/machine.html', request) |
|
|
|
return form({'mxform': mx}, 'machines/machine.html', request) |
|
|
|
|
|
|
|
@login_required |
|
|
|
@permission_required('infra') |
|
|
|
@ -534,7 +534,7 @@ def add_ns(request): |
|
|
|
reversion.set_comment("Création") |
|
|
|
messages.success(request, "Cet enregistrement ns a été ajouté") |
|
|
|
return redirect("/machines/index_extension") |
|
|
|
return form({'machineform': ns, 'interfaceform': None}, 'machines/machine.html', request) |
|
|
|
return form({'nsform': ns}, 'machines/machine.html', request) |
|
|
|
|
|
|
|
@login_required |
|
|
|
@permission_required('infra') |
|
|
|
@ -552,7 +552,7 @@ def edit_ns(request, nsid): |
|
|
|
reversion.set_comment("Champs modifié(s) : %s" % ', '.join(field for field in ns.changed_data)) |
|
|
|
messages.success(request, "Ns modifié") |
|
|
|
return redirect("/machines/index_extension/") |
|
|
|
return form({'machineform': ns}, 'machines/machine.html', request) |
|
|
|
return form({'nsform': ns}, 'machines/machine.html', request) |
|
|
|
|
|
|
|
@login_required |
|
|
|
@permission_required('infra') |
|
|
|
@ -569,55 +569,55 @@ def del_ns(request): |
|
|
|
except ProtectedError: |
|
|
|
messages.error(request, "Erreur le Ns suivant %s ne peut être supprimé" % ns_del) |
|
|
|
return redirect("/machines/index_extension") |
|
|
|
return form({'machineform': ns, 'interfaceform': None}, 'machines/machine.html', request) |
|
|
|
return form({'nsform': ns}, 'machines/machine.html', request) |
|
|
|
|
|
|
|
@login_required |
|
|
|
@permission_required('infra') |
|
|
|
def add_text(request): |
|
|
|
text = TextForm(request.POST or None) |
|
|
|
if text.is_valid(): |
|
|
|
def add_txt(request): |
|
|
|
txt = TxtForm(request.POST or None) |
|
|
|
if txt.is_valid(): |
|
|
|
with transaction.atomic(), reversion.create_revision(): |
|
|
|
text.save() |
|
|
|
txt.save() |
|
|
|
reversion.set_user(request.user) |
|
|
|
reversion.set_comment("Création") |
|
|
|
messages.success(request, "Cet enregistrement text a été ajouté") |
|
|
|
return redirect("/machines/index_extension") |
|
|
|
return form({'machineform': text, 'interfaceform': None}, 'machines/machine.html', request) |
|
|
|
return form({'txtform': txt}, 'machines/machine.html', request) |
|
|
|
|
|
|
|
@login_required |
|
|
|
@permission_required('infra') |
|
|
|
def edit_text(request, textid): |
|
|
|
def edit_txt(request, txtid): |
|
|
|
try: |
|
|
|
text_instance = Text.objects.get(pk=textid) |
|
|
|
txt_instance = Text.objects.get(pk=txtid) |
|
|
|
except Text.DoesNotExist: |
|
|
|
messages.error(request, u"Entrée inexistante" ) |
|
|
|
return redirect("/machines/index_extension/") |
|
|
|
text = TextForm(request.POST or None, instance=text_instance) |
|
|
|
if text.is_valid(): |
|
|
|
txt = TxtForm(request.POST or None, instance=txt_instance) |
|
|
|
if txt.is_valid(): |
|
|
|
with transaction.atomic(), reversion.create_revision(): |
|
|
|
text.save() |
|
|
|
txt.save() |
|
|
|
reversion.set_user(request.user) |
|
|
|
reversion.set_comment("Champs modifié(s) : %s" % ', '.join(field for field in text.changed_data)) |
|
|
|
messages.success(request, "Text modifié") |
|
|
|
reversion.set_comment("Champs modifié(s) : %s" % ', '.join(field for field in txt.changed_data)) |
|
|
|
messages.success(request, "Txt modifié") |
|
|
|
return redirect("/machines/index_extension/") |
|
|
|
return form({'machineform': text}, 'machines/machine.html', request) |
|
|
|
return form({'txtform': txt}, 'machines/machine.html', request) |
|
|
|
|
|
|
|
@login_required |
|
|
|
@permission_required('infra') |
|
|
|
def del_text(request): |
|
|
|
text = DelTextForm(request.POST or None) |
|
|
|
if text.is_valid(): |
|
|
|
text_dels = text.cleaned_data['text'] |
|
|
|
for text_del in text_dels: |
|
|
|
def del_txt(request): |
|
|
|
txt = DelTxtForm(request.POST or None) |
|
|
|
if txt.is_valid(): |
|
|
|
txt_dels = txt.cleaned_data['txt'] |
|
|
|
for txt_del in txt_dels: |
|
|
|
try: |
|
|
|
with transaction.atomic(), reversion.create_revision(): |
|
|
|
text_del.delete() |
|
|
|
txt_del.delete() |
|
|
|
reversion.set_user(request.user) |
|
|
|
messages.success(request, "Le text a été supprimé") |
|
|
|
messages.success(request, "Le txt a été supprimé") |
|
|
|
except ProtectedError: |
|
|
|
messages.error(request, "Erreur le Text suivant %s ne peut être supprimé" % text_del) |
|
|
|
messages.error(request, "Erreur le Txt suivant %s ne peut être supprimé" % txt_del) |
|
|
|
return redirect("/machines/index_extension") |
|
|
|
return form({'machineform': text, 'interfaceform': None}, 'machines/machine.html', request) |
|
|
|
return form({'txtform': txt}, 'machines/machine.html', request) |
|
|
|
|
|
|
|
@login_required |
|
|
|
def add_alias(request, interfaceid): |
|
|
|
@ -645,7 +645,7 @@ def add_alias(request, interfaceid): |
|
|
|
reversion.set_comment("Création") |
|
|
|
messages.success(request, "Cet alias a été ajouté") |
|
|
|
return redirect("/machines/index_alias/" + str(interfaceid)) |
|
|
|
return form({'machineform': alias, 'interfaceform': None}, 'machines/machine.html', request) |
|
|
|
return form({'aliasform': alias}, 'machines/machine.html', request) |
|
|
|
|
|
|
|
@login_required |
|
|
|
def edit_alias(request, aliasid): |
|
|
|
@ -665,7 +665,7 @@ def edit_alias(request, aliasid): |
|
|
|
reversion.set_comment("Champs modifié(s) : %s" % ', '.join(field for field in alias.changed_data)) |
|
|
|
messages.success(request, "Alias modifié") |
|
|
|
return redirect("/machines/index_alias/" + str(alias_instance.cname.interface_parent.id)) |
|
|
|
return form({'machineform': alias}, 'machines/machine.html', request) |
|
|
|
return form({'aliasform': alias}, 'machines/machine.html', request) |
|
|
|
|
|
|
|
@login_required |
|
|
|
def del_alias(request, interfaceid): |
|
|
|
@ -689,7 +689,7 @@ def del_alias(request, interfaceid): |
|
|
|
except ProtectedError: |
|
|
|
messages.error(request, "Erreur l'alias suivant %s ne peut être supprimé" % alias_del) |
|
|
|
return redirect("/machines/index_alias/" + str(interfaceid)) |
|
|
|
return form({'machineform': alias, 'interfaceform': None}, 'machines/machine.html', request) |
|
|
|
return form({'aliasform': alias}, 'machines/machine.html', request) |
|
|
|
|
|
|
|
|
|
|
|
@login_required |
|
|
|
@ -703,7 +703,7 @@ def add_service(request): |
|
|
|
reversion.set_comment("Création") |
|
|
|
messages.success(request, "Cet enregistrement service a été ajouté") |
|
|
|
return redirect("/machines/index_service") |
|
|
|
return form({'machineform': service}, 'machines/machine.html', request) |
|
|
|
return form({'serviceform': service}, 'machines/machine.html', request) |
|
|
|
|
|
|
|
@login_required |
|
|
|
@permission_required('infra') |
|
|
|
@ -721,7 +721,7 @@ def edit_service(request, serviceid): |
|
|
|
reversion.set_comment("Champs modifié(s) : %s" % ', '.join(field for field in service.changed_data)) |
|
|
|
messages.success(request, "Service modifié") |
|
|
|
return redirect("/machines/index_service/") |
|
|
|
return form({'machineform': service}, 'machines/machine.html', request) |
|
|
|
return form({'serviceform': service}, 'machines/machine.html', request) |
|
|
|
|
|
|
|
@login_required |
|
|
|
@permission_required('infra') |
|
|
|
@ -738,7 +738,7 @@ def del_service(request): |
|
|
|
except ProtectedError: |
|
|
|
messages.error(request, "Erreur le service suivant %s ne peut être supprimé" % service_del) |
|
|
|
return redirect("/machines/index_service") |
|
|
|
return form({'machineform': service}, 'machines/machine.html', request) |
|
|
|
return form({'serviceform': service}, 'machines/machine.html', request) |
|
|
|
|
|
|
|
@login_required |
|
|
|
@permission_required('infra') |
|
|
|
@ -751,7 +751,7 @@ def add_vlan(request): |
|
|
|
reversion.set_comment("Création") |
|
|
|
messages.success(request, "Cet enregistrement vlan a été ajouté") |
|
|
|
return redirect("/machines/index_vlan") |
|
|
|
return form({'machineform': vlan, 'interfaceform': None}, 'machines/machine.html', request) |
|
|
|
return form({'vlanform': vlan}, 'machines/machine.html', request) |
|
|
|
|
|
|
|
@login_required |
|
|
|
@permission_required('infra') |
|
|
|
@ -769,7 +769,7 @@ def edit_vlan(request, vlanid): |
|
|
|
reversion.set_comment("Champs modifié(s) : %s" % ', '.join(field for field in vlan.changed_data)) |
|
|
|
messages.success(request, "Vlan modifié") |
|
|
|
return redirect("/machines/index_vlan/") |
|
|
|
return form({'machineform': vlan}, 'machines/machine.html', request) |
|
|
|
return form({'vlanform': vlan}, 'machines/machine.html', request) |
|
|
|
|
|
|
|
@login_required |
|
|
|
@permission_required('infra') |
|
|
|
@ -786,7 +786,7 @@ def del_vlan(request): |
|
|
|
except ProtectedError: |
|
|
|
messages.error(request, "Erreur le Vlan suivant %s ne peut être supprimé" % vlan_del) |
|
|
|
return redirect("/machines/index_vlan") |
|
|
|
return form({'machineform': vlan, 'interfaceform': None}, 'machines/machine.html', request) |
|
|
|
return form({'vlanform': vlan}, 'machines/machine.html', request) |
|
|
|
|
|
|
|
@login_required |
|
|
|
@permission_required('infra') |
|
|
|
@ -799,7 +799,7 @@ def add_nas(request): |
|
|
|
reversion.set_comment("Création") |
|
|
|
messages.success(request, "Cet enregistrement nas a été ajouté") |
|
|
|
return redirect("/machines/index_nas") |
|
|
|
return form({'machineform': nas, 'interfaceform': None}, 'machines/machine.html', request) |
|
|
|
return form({'nasform': nas}, 'machines/machine.html', request) |
|
|
|
|
|
|
|
@login_required |
|
|
|
@permission_required('infra') |
|
|
|
@ -817,7 +817,7 @@ def edit_nas(request, nasid): |
|
|
|
reversion.set_comment("Champs modifié(s) : %s" % ', '.join(field for field in nas.changed_data)) |
|
|
|
messages.success(request, "Nas modifié") |
|
|
|
return redirect("/machines/index_nas/") |
|
|
|
return form({'machineform': nas}, 'machines/machine.html', request) |
|
|
|
return form({'nasform': nas}, 'machines/machine.html', request) |
|
|
|
|
|
|
|
@login_required |
|
|
|
@permission_required('infra') |
|
|
|
@ -834,7 +834,7 @@ def del_nas(request): |
|
|
|
except ProtectedError: |
|
|
|
messages.error(request, "Erreur le Nas suivant %s ne peut être supprimé" % nas_del) |
|
|
|
return redirect("/machines/index_nas") |
|
|
|
return form({'machineform': nas, 'interfaceform': None}, 'machines/machine.html', request) |
|
|
|
return form({'nasform': nas}, 'machines/machine.html', request) |
|
|
|
|
|
|
|
@login_required |
|
|
|
@permission_required('cableur') |
|
|
|
@ -960,11 +960,11 @@ def history(request, object, id): |
|
|
|
except Mx.DoesNotExist: |
|
|
|
messages.error(request, "Mx inexistant") |
|
|
|
return redirect("/machines/") |
|
|
|
elif object == 'text' and request.user.has_perms(('cableur',)): |
|
|
|
elif object == 'txt' and request.user.has_perms(('cableur',)): |
|
|
|
try: |
|
|
|
object_instance = Text.objects.get(pk=id) |
|
|
|
except Text.DoesNotExist: |
|
|
|
messages.error(request, "Text inexistant") |
|
|
|
messages.error(request, "Txt inexistant") |
|
|
|
return redirect("/machines/") |
|
|
|
elif object == 'ns' and request.user.has_perms(('cableur',)): |
|
|
|
try: |
|
|
|
|