8
0
Fork 0
mirror of https://gitlab2.federez.net/re2o/re2o synced 2024-10-06 02:52:10 +00:00

Merge branch 'inherit_sw' into 'master'

Switch hérite de interface

See merge request nounous/re2o!11
This commit is contained in:
Gabriel Detraz 2018-03-25 12:16:51 +02:00
commit 3e1978a64e
13 changed files with 243 additions and 128 deletions

View file

@ -78,7 +78,7 @@ class EditPortForm(ModelForm):
self.fields['machine_interface'].queryset = Interface.objects.all()\ self.fields['machine_interface'].queryset = Interface.objects.all()\
.select_related('domain__extension') .select_related('domain__extension')
self.fields['related'].queryset = Port.objects.all()\ self.fields['related'].queryset = Port.objects.all()\
.select_related('switch__switch_interface__domain__extension')\ .select_related('switch__domain__extension')\
.order_by('switch', 'port') .order_by('switch', 'port')
@ -95,7 +95,7 @@ class AddPortForm(ModelForm):
self.fields['machine_interface'].queryset = Interface.objects.all()\ self.fields['machine_interface'].queryset = Interface.objects.all()\
.select_related('domain__extension') .select_related('domain__extension')
self.fields['related'].queryset = Port.objects.all()\ self.fields['related'].queryset = Port.objects.all()\
.select_related('switch__switch_interface__domain__extension')\ .select_related('switch__domain__extension')\
.order_by('switch', 'port') .order_by('switch', 'port')
@ -126,32 +126,19 @@ class EditBorneForm(EditInterfaceForm):
fields = ['machine', 'type', 'ipv4', 'mac_address', 'details', 'location'] fields = ['machine', 'type', 'ipv4', 'mac_address', 'details', 'location']
class EditSwitchForm(ModelForm): class EditSwitchForm(EditInterfaceForm):
"""Permet d'éditer un switch : nom et nombre de ports""" """Permet d'éditer un switch : nom et nombre de ports"""
class Meta: class Meta:
model = Switch model = Switch
fields = '__all__' fields = ['machine', 'type', 'ipv4', 'mac_address', 'details', 'location', 'number', 'stack', 'stack_member_id']
def __init__(self, *args, **kwargs):
prefix = kwargs.pop('prefix', self.Meta.model.__name__)
super(EditSwitchForm, self).__init__(*args, prefix=prefix, **kwargs)
self.fields['switch_interface'].queryset = Interface.objects.all()\
.select_related('domain__extension')
self.fields['location'].label = 'Localisation'
self.fields['number'].label = 'Nombre de ports'
class NewSwitchForm(ModelForm): class NewSwitchForm(EditInterfaceForm):
"""Permet de créer un switch : emplacement, paramètres machine, """Permet de créer un switch : emplacement, paramètres machine,
membre d'un stack (option), nombre de ports (number)""" membre d'un stack (option), nombre de ports (number)"""
class Meta(EditSwitchForm.Meta): class Meta(EditSwitchForm.Meta):
fields = ['location', 'number', 'details', 'stack', 'stack_member_id'] fields = ['type', 'ipv4', 'mac_address', 'details', 'location', 'number', 'stack', 'stack_member_id']
def __init__(self, *args, **kwargs):
prefix = kwargs.pop('prefix', self.Meta.model.__name__)
super(NewSwitchForm, self).__init__(*args, prefix=prefix, **kwargs)
self.fields['location'].label = 'Localisation'
self.fields['number'].label = 'Nombre de ports'
class EditRoomForm(ModelForm): class EditRoomForm(ModelForm):
"""Permet d'éediter le nom et commentaire d'une prise murale""" """Permet d'éediter le nom et commentaire d'une prise murale"""

View file

@ -0,0 +1,33 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2018-03-25 00:27
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('machines', '0076_auto_20180130_1623'),
('topologie', '0036_transferborne'),
]
operations = [
migrations.CreateModel(
name='NewSwitch',
fields=[
('interface_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='machines.Interface')),
('location', models.CharField(max_length=255)),
('number', models.PositiveIntegerField()),
('stack_member_id', models.PositiveIntegerField(blank=True, null=True)),
('model', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='topologie.ModelSwitch')),
('stack', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='topologie.Stack')),
],
bases=('machines.interface',),
),
migrations.AlterUniqueTogether(
name='newswitch',
unique_together=set([('stack', 'stack_member_id')]),
),
]

View file

@ -0,0 +1,37 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2017-12-31 19:53
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('topologie', '0037_auto_20180325_0127'),
]
def transfer_sw(apps, schema_editor):
db_alias = schema_editor.connection.alias
newswitch = apps.get_model("topologie", "NewSwitch")
switch = apps.get_model("topologie", "Switch")
interface = apps.get_model("machines", "Interface")
sw_list = switch.objects.using(db_alias).all()
for sw in sw_list:
new_sw = newswitch()
new_sw.location = sw.location
new_sw.number = sw.number
new_sw.details = sw.details
new_sw.stack = sw.stack
new_sw.stack_member_id = sw.stack_member_id
new_sw.model = sw.model
new_sw.interface_ptr_id = sw.switch_interface.pk
new_sw.__dict__.update(sw.switch_interface.__dict__)
new_sw.save()
def untransfer_sw(apps, schema_editor):
return
operations = [
migrations.RunPython(transfer_sw, untransfer_sw),
]

View file

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2018-03-25 00:52
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('topologie', '0038_transfersw'),
]
operations = [
migrations.AddField(
model_name='port',
name='new_switch',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ports', to='topologie.NewSwitch'),
),
]

View file

@ -0,0 +1,28 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2017-12-31 19:53
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('topologie', '0039_port_new_switch'),
]
def transfer_port(apps, schema_editor):
db_alias = schema_editor.connection.alias
port = apps.get_model("topologie", "Port")
switch = apps.get_model("topologie", "NewSwitch")
port_list = port.objects.using(db_alias).all()
for p in port_list:
p.new_switch = switch.objects.filter(interface_ptr=p.switch.switch_interface).first()
p.save()
def untransfer_port(apps, schema_editor):
return
operations = [
migrations.RunPython(transfer_port, untransfer_port),
]

View file

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2017-12-31 19:53
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('topologie', '0040_transferports'),
]
operations = [
migrations.RemoveField(
model_name='port',
name='switch',
),
migrations.RenameField('Port', 'new_switch', 'switch')
]

View file

@ -0,0 +1,18 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2017-12-31 19:53
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('topologie', '0041_transferportsw'),
]
operations = [
migrations.DeleteModel(
name='Switch',
),
]

View file

@ -0,0 +1,16 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2017-12-31 19:53
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('topologie', '0042_transferswitch'),
]
operations = [
migrations.RenameModel(old_name='NewSwitch', new_name='Switch'),
]

View file

@ -156,7 +156,7 @@ class Borne(Interface):
return True, None return True, None
class Switch(models.Model): class Switch(Interface):
""" Definition d'un switch. Contient un nombre de ports (number), """ Definition d'un switch. Contient un nombre de ports (number),
un emplacement (location), un stack parent (optionnel, stack) un emplacement (location), un stack parent (optionnel, stack)
et un id de membre dans le stack (stack_member_id) et un id de membre dans le stack (stack_member_id)
@ -170,13 +170,9 @@ class Switch(models.Model):
id_max de la stack parente""" id_max de la stack parente"""
PRETTY_NAME = "Switch / Commutateur" PRETTY_NAME = "Switch / Commutateur"
switch_interface = models.OneToOneField(
'machines.Interface',
on_delete=models.CASCADE
)
location = models.CharField(max_length=255) location = models.CharField(max_length=255)
number = models.PositiveIntegerField() number = models.PositiveIntegerField()
details = models.CharField(max_length=255, blank=True)
stack = models.ForeignKey( stack = models.ForeignKey(
'topologie.Stack', 'topologie.Stack',
blank=True, blank=True,
@ -224,11 +220,10 @@ class Switch(models.Model):
return False, u"Vous n'avez pas le droit de voir les switch" return False, u"Vous n'avez pas le droit de voir les switch"
return True, None return True, None
def __str__(self):
return self.location + ' ' + str(self.switch_interface)
def clean(self): def clean(self):
""" Verifie que l'id stack est dans le bon range""" """ Verifie que l'id stack est dans le bon range
Appelle également le clean de la classe parente"""
super(Switch, self).clean()
if self.stack is not None: if self.stack is not None:
if self.stack_member_id is not None: if self.stack_member_id is not None:
if (self.stack_member_id > self.stack.member_id_max) or\ if (self.stack_member_id > self.stack.member_id_max) or\
@ -421,7 +416,7 @@ class Port(models.Model):
def get_instance(port_id, *args, **kwargs): def get_instance(port_id, *args, **kwargs):
return Port.objects\ return Port.objects\
.select_related('switch__switch_interface__domain__extension')\ .select_related('switch__domain__extension')\
.select_related('machine_interface__domain__extension')\ .select_related('machine_interface__domain__extension')\
.select_related('machine_interface__switch')\ .select_related('machine_interface__switch')\
.select_related('room')\ .select_related('room')\

View file

@ -46,10 +46,10 @@ with this program; if not, write to the Free Software Foundation, Inc.,
<tr> <tr>
<td> <td>
<a title="Configuer" href="{% url 'topologie:index-port' switch.pk %}"> <a title="Configuer" href="{% url 'topologie:index-port' switch.pk %}">
{{switch.switch_interface}} {{switch}}
</a> </a>
</td> </td>
<td>{{switch.switch_interface.ipv4}}</td> <td>{{switch.ipv4}}</td>
<td>{{switch.location}}</td> <td>{{switch.location}}</td>
<td>{{switch.number}}</td> <td>{{switch.number}}</td>
<td>{{switch.stack.name}}</td> <td>{{switch.stack.name}}</td>
@ -62,7 +62,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
{% include 'buttons/edit.html' with href='topologie:edit-switch' id=switch.pk %} {% include 'buttons/edit.html' with href='topologie:edit-switch' id=switch.pk %}
{% acl_end %} {% acl_end %}
{% can_delete switch %} {% can_delete switch %}
{% include 'buttons/suppr.html' with href='machines:del-interface' id=switch.switch_interface.id %} {% include 'buttons/suppr.html' with href='machines:del-interface' id=switch.id %}
{% acl_end %} {% acl_end %}
{% can_create Port %} {% can_create Port %}
{% include 'buttons/add.html' with href='topologie:create-ports' id=switch.pk desc='Création de ports'%} {% include 'buttons/add.html' with href='topologie:create-ports' id=switch.pk desc='Création de ports'%}

View file

@ -32,44 +32,17 @@ with this program; if not, write to the Free Software Foundation, Inc.,
{% if topoform %} {% if topoform %}
{% bootstrap_form_errors topoform %} {% bootstrap_form_errors topoform %}
{% endif %} {% endif %}
{% if machineform %}
{% bootstrap_form_errors machineform %}
{% endif %}
{% if interfaceform %}
{% bootstrap_form_errors interfaceform %}
{% endif %}
{% if domainform %}
{% bootstrap_form_errors domainform %}
{% endif %}
{% if id_switch %}
<a class="btn btn-primary" href="{% url "topologie:index-port" id_switch %}" role="button">{% bootstrap_icon "list" %} Aller à la liste des ports</a> <a class="btn btn-primary" href="{% url "topologie:index-port" id_switch %}" role="button">{% bootstrap_icon "list" %} Aller à la liste des ports</a>
{% endif %}
<form class="form" method="post"> <form class="form" method="post">
{% csrf_token %} {% csrf_token %}
{% if topoform %} {% if topoform %}
<h3>Réglage spécifiques du switch</h3> <h3>Réglage spécifiques du switch</h3>
{% massive_bootstrap_form topoform 'switch_interface' %} {% massive_bootstrap_form topoform 'switch_interface' %}
{% endif %} {% endif %}
{% if machineform %} {% bootstrap_button "Créer" button_type="submit" icon="ok" %}
<h3>Réglages généraux de la machine associée au switch</h3>
{% massive_bootstrap_form machineform 'user' %}
{% endif %}
{% if interfaceform %}
<h3>Réglages généraux de l'interface associée au switch</h3>
{% if i_mbf_param %}
{% massive_bootstrap_form interfaceform 'ipv4,machine' mbf_param=i_mbf_param %}
{% else %}
{% massive_bootstrap_form interfaceform 'ipv4,machine' %}
{% endif %}
{% endif %}
{% if domainform %}
<h3>Nom de la machine</h3>
{% bootstrap_form domainform %}
{% endif %}
{% bootstrap_button "Créer ou modifier" button_type="submit" icon="ok" %}
</form> </form>
<br /> <br />
<br /> <br />

View file

@ -26,7 +26,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
{% load bootstrap3 %} {% load bootstrap3 %}
{% load massive_bootstrap_form %} {% load massive_bootstrap_form %}
{% block title %}Création et modification d'une borne{% endblock %} {% block title %}Création et modification d'un objet topologie{% endblock %}
{% block content %} {% block content %}
{% if topoform %} {% if topoform %}
@ -44,11 +44,11 @@ with this program; if not, write to the Free Software Foundation, Inc.,
<form class="form" method="post"> <form class="form" method="post">
{% csrf_token %} {% csrf_token %}
{% if topoform %} {% if topoform %}
<h3>Réglage spécifiques de la borne</h3> <h3>Réglage spécifiques du {{ device }}</h3>
{% massive_bootstrap_form topoform 'ipv4,machine' mbf_param=i_mbf_param%} {% massive_bootstrap_form topoform 'ipv4,machine' mbf_param=i_mbf_param%}
{% endif %} {% endif %}
{% if machineform %} {% if machineform %}
<h3>Réglages généraux de la machine associée à la borne</h3> <h3>Réglages généraux de la machine associée au {{ device }}</h3>
{% massive_bootstrap_form machineform 'user' %} {% massive_bootstrap_form machineform 'user' %}
{% endif %} {% endif %}
{% if domainform %} {% if domainform %}

View file

@ -92,9 +92,9 @@ from preferences.models import AssoOption, GeneralOption
def index(request): def index(request):
""" Vue d'affichage de tous les swicthes""" """ Vue d'affichage de tous les swicthes"""
switch_list = Switch.objects\ switch_list = Switch.objects\
.select_related('switch_interface__domain__extension')\ .select_related('domain__extension')\
.select_related('switch_interface__ipv4')\ .select_related('ipv4')\
.select_related('switch_interface__domain')\ .select_related('domain')\
.select_related('stack') .select_related('stack')
switch_list = SortTable.sort( switch_list = SortTable.sort(
switch_list, switch_list,
@ -128,7 +128,7 @@ def index_port(request, switch, switch_id):
.select_related('machine_interface__domain__extension')\ .select_related('machine_interface__domain__extension')\
.select_related('machine_interface__machine__user')\ .select_related('machine_interface__machine__user')\
.select_related( .select_related(
'related__switch__switch_interface__domain__extension' 'related__switch__domain__extension'
)\ )\
.select_related('switch') .select_related('switch')
port_list = SortTable.sort( port_list = SortTable.sort(
@ -203,7 +203,7 @@ def index_borne(request):
def index_stack(request): def index_stack(request):
"""Affichage de la liste des stacks (affiche l'ensemble des switches)""" """Affichage de la liste des stacks (affiche l'ensemble des switches)"""
stack_list = Stack.objects\ stack_list = Stack.objects\
.prefetch_related('switch_set__switch_interface__domain__extension') .prefetch_related('switch_set__domain__extension')
stack_list = SortTable.sort( stack_list = SortTable.sort(
stack_list, stack_list,
request.GET.get('col'), request.GET.get('col'),
@ -381,19 +381,18 @@ def new_switch(request):
""" Creation d'un switch. Cree en meme temps l'interface et la machine """ Creation d'un switch. Cree en meme temps l'interface et la machine
associée. Vue complexe. Appelle successivement les 4 models forms associée. Vue complexe. Appelle successivement les 4 models forms
adaptés : machine, interface, domain et switch""" adaptés : machine, interface, domain et switch"""
switch = NewSwitchForm(request.POST or None) switch = NewSwitchForm(
request.POST or None,
user=request.user
)
machine = NewMachineForm( machine = NewMachineForm(
request.POST or None, request.POST or None,
user=request.user user=request.user
) )
interface = AddInterfaceForm(
request.POST or None,
user=request.user
)
domain = DomainForm( domain = DomainForm(
request.POST or None, request.POST or None,
) )
if switch.is_valid() and machine.is_valid() and interface.is_valid(): if switch.is_valid() and machine.is_valid():
user = AssoOption.get_cached_value('utilisateur_asso') user = AssoOption.get_cached_value('utilisateur_asso')
if not user: if not user:
messages.error(request, "L'user association n'existe pas encore,\ messages.error(request, "L'user association n'existe pas encore,\
@ -401,38 +400,34 @@ def new_switch(request):
return redirect(reverse('topologie:index')) return redirect(reverse('topologie:index'))
new_machine = machine.save(commit=False) new_machine = machine.save(commit=False)
new_machine.user = user new_machine.user = user
new_interface = interface.save(commit=False)
new_switch_instance = switch.save(commit=False) new_switch_instance = switch.save(commit=False)
new_domain_instance = domain.save(commit=False) domain.instance.interface_parent = new_switch_instance
with transaction.atomic(), reversion.create_revision(): if domain.is_valid():
new_machine.save() new_domain_instance = domain.save(commit=False)
reversion.set_user(request.user) with transaction.atomic(), reversion.create_revision():
reversion.set_comment("Création") new_machine.save()
new_interface.machine = new_machine reversion.set_user(request.user)
with transaction.atomic(), reversion.create_revision(): reversion.set_comment("Création")
new_interface.save() new_switch_instance.machine = new_machine
reversion.set_user(request.user) with transaction.atomic(), reversion.create_revision():
reversion.set_comment("Création") new_switch_instance.save()
new_domain_instance.interface_parent = new_interface reversion.set_user(request.user)
with transaction.atomic(), reversion.create_revision(): reversion.set_comment("Création")
new_domain_instance.save() new_domain_instance.interface_parent = new_switch_instance
reversion.set_user(request.user) with transaction.atomic(), reversion.create_revision():
reversion.set_comment("Création") new_domain_instance.save()
new_switch_instance.switch_interface = new_interface reversion.set_user(request.user)
with transaction.atomic(), reversion.create_revision(): reversion.set_comment("Création")
new_switch_instance.save() messages.success(request, "Le switch a été créé")
reversion.set_user(request.user) return redirect(reverse('topologie:index'))
reversion.set_comment("Création") i_mbf_param = generate_ipv4_mbf_param(switch, False)
messages.success(request, "Le switch a été créé")
return redirect(reverse('topologie:index'))
i_mbf_param = generate_ipv4_mbf_param( interface, False)
return form({ return form({
'topoform': switch, 'topoform': switch,
'machineform': machine, 'machineform': machine,
'interfaceform': interface,
'domainform': domain, 'domainform': domain,
'i_mbf_param': i_mbf_param 'i_mbf_param': i_mbf_param,
}, 'topologie/switch.html', request) 'device' : 'switch',
}, 'topologie/topo_more.html', request)
@login_required @login_required
@ -470,7 +465,6 @@ def create_ports(request, switch_id):
'topologie:index-port', 'topologie:index-port',
kwargs={'switch_id':switch_id} kwargs={'switch_id':switch_id}
)) ))
return form({'id_switch': switch_id, 'topoform': port_form}, 'topologie/switch.html', request) return form({'id_switch': switch_id, 'topoform': port_form}, 'topologie/switch.html', request)
@ -480,24 +474,21 @@ def edit_switch(request, switch, switch_id):
""" Edition d'un switch. Permet de chambre nombre de ports, """ Edition d'un switch. Permet de chambre nombre de ports,
place dans le stack, interface et machine associée""" place dans le stack, interface et machine associée"""
switch_form = EditSwitchForm(request.POST or None, instance=switch) switch_form = EditSwitchForm(
machine_form = EditMachineForm(
request.POST or None, request.POST or None,
instance=switch.switch_interface.machine, instance=switch,
user=request.user user=request.user
) )
interface_form = EditInterfaceForm( machine_form = EditMachineForm(
request.POST or None, request.POST or None,
instance=switch.switch_interface, instance=switch.machine,
user=request.user user=request.user
) )
domain_form = DomainForm( domain_form = DomainForm(
request.POST or None, request.POST or None,
instance=switch.switch_interface.domain instance=switch.domain
) )
if switch_form.is_valid() and machine_form.is_valid()\ if switch_form.is_valid() and machine_form.is_valid():
and interface_form.is_valid():
new_interface = interface_form.save(commit=False)
new_machine = machine_form.save(commit=False) new_machine = machine_form.save(commit=False)
new_switch_instance = switch_form.save(commit=False) new_switch_instance = switch_form.save(commit=False)
new_domain = domain_form.save(commit=False) new_domain = domain_form.save(commit=False)
@ -510,10 +501,10 @@ def edit_switch(request, switch, switch_id):
) )
) )
with transaction.atomic(), reversion.create_revision(): with transaction.atomic(), reversion.create_revision():
new_interface.save() new_switch_instance.save()
reversion.set_user(request.user) reversion.set_user(request.user)
reversion.set_comment("Champs modifié(s) : %s" % ', '.join( reversion.set_comment("Champs modifié(s) : %s" % ', '.join(
field for field in interface_form.changed_data) field for field in switch_form.changed_data)
) )
with transaction.atomic(), reversion.create_revision(): with transaction.atomic(), reversion.create_revision():
new_domain.save() new_domain.save()
@ -521,23 +512,17 @@ def edit_switch(request, switch, switch_id):
reversion.set_comment("Champs modifié(s) : %s" % ', '.join( reversion.set_comment("Champs modifié(s) : %s" % ', '.join(
field for field in domain_form.changed_data) field for field in domain_form.changed_data)
) )
with transaction.atomic(), reversion.create_revision():
new_switch_instance.save()
reversion.set_user(request.user)
reversion.set_comment("Champs modifié(s) : %s" % ', '.join(
field for field in switch_form.changed_data)
)
messages.success(request, "Le switch a bien été modifié") messages.success(request, "Le switch a bien été modifié")
return redirect(reverse('topologie:index')) return redirect(reverse('topologie:index'))
i_mbf_param = generate_ipv4_mbf_param( interface_form, False ) i_mbf_param = generate_ipv4_mbf_param(switch_form, False )
return form({ return form({
'id_switch': switch_id, 'id_switch': switch_id,
'topoform': switch_form, 'topoform': switch_form,
'machineform': machine_form, 'machineform': machine_form,
'interfaceform': interface_form,
'domainform': domain_form, 'domainform': domain_form,
'i_mbf_param': i_mbf_param 'i_mbf_param': i_mbf_param,
}, 'topologie/switch.html', request) 'device' : 'switch',
}, 'topologie/topo_more.html', request)
@login_required @login_required
@ -590,8 +575,9 @@ def new_borne(request):
'topoform': borne, 'topoform': borne,
'machineform': machine, 'machineform': machine,
'domainform': domain, 'domainform': domain,
'i_mbf_param': i_mbf_param 'i_mbf_param': i_mbf_param,
}, 'topologie/borne.html', request) 'device' : 'wifi ap',
}, 'topologie/topo_more.html', request)
@login_required @login_required
@ -649,8 +635,9 @@ def edit_borne(request, borne, borne_id):
'topoform': borne_form, 'topoform': borne_form,
'machineform': machine_form, 'machineform': machine_form,
'domainform': domain_form, 'domainform': domain_form,
'i_mbf_param': i_mbf_param 'i_mbf_param': i_mbf_param,
}, 'topologie/borne.html', request) 'device' : 'wifi ap',
}, 'topologie/topo_more.html', request)
@login_required @login_required