Commit 119416cc authored by Gabriel Detraz's avatar Gabriel Detraz Committed by chirac

Bornes hérite de machine

parent 43ff16cc
...@@ -234,10 +234,10 @@ class SortTable: ...@@ -234,10 +234,10 @@ class SortTable:
'default': ['name'] 'default': ['name']
} }
TOPOLOGIE_INDEX_BORNE = { TOPOLOGIE_INDEX_BORNE = {
'ap_name': ['domain__name'], 'ap_name': ['interface__domain__name'],
'ap_ip': ['ipv4__ipv4'], 'ap_ip': ['interface__ipv4__ipv4'],
'ap_mac': ['mac_address'], 'ap_mac': ['interface__mac_address'],
'default': ['domain__name'] 'default': ['interface__domain__name']
} }
TOPOLOGIE_INDEX_STACK = { TOPOLOGIE_INDEX_STACK = {
'stack_name': ['name'], 'stack_name': ['name'],
......
...@@ -33,7 +33,11 @@ NewSwitchForm) ...@@ -33,7 +33,11 @@ NewSwitchForm)
from __future__ import unicode_literals from __future__ import unicode_literals
from machines.models import Interface from machines.models import Interface
from machines.forms import EditInterfaceForm from machines.forms import (
EditInterfaceForm,
EditMachineForm,
NewMachineForm
)
from django import forms from django import forms
from django.forms import ModelForm, Form from django.forms import ModelForm, Form
from .models import ( from .models import (
...@@ -111,19 +115,19 @@ class StackForm(ModelForm): ...@@ -111,19 +115,19 @@ class StackForm(ModelForm):
super(StackForm, self).__init__(*args, prefix=prefix, **kwargs) super(StackForm, self).__init__(*args, prefix=prefix, **kwargs)
class AddAccessPointForm(EditInterfaceForm): class AddAccessPointForm(NewMachineForm):
"""Formulaire pour la création d'une borne """Formulaire pour la création d'une borne
Relié directement au modèle borne""" Relié directement au modèle borne"""
class Meta: class Meta:
model = AccessPoint model = AccessPoint
fields = ['mac_address', 'type', 'ipv4', 'details', 'location'] fields = ['location', 'name']
class EditAccessPointForm(EditInterfaceForm): class EditAccessPointForm(EditMachineForm):
"""Edition d'une interface. Edition complète""" """Edition d'une borne. Edition complète"""
class Meta: class Meta:
model = AccessPoint model = AccessPoint
fields = ['machine', 'type', 'ipv4', 'mac_address', 'details', 'location'] fields = '__all__'
class EditSwitchForm(EditInterfaceForm): class EditSwitchForm(EditInterfaceForm):
......
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2018-03-23 01:18
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('topologie', '0046_auto_20180326_0129'),
]
operations = [
migrations.CreateModel(
name='NewAccessPoint',
fields=[
('machine_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='machines.Machine')),
('location', models.CharField(help_text="Détails sur la localisation de l'AP", max_length=255, null=True, blank=True)),
],
bases=('machines.machine',),
),
]
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2018-03-23 01:18
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('topologie', '0047_ap_machine'),
]
def transfer_ap(apps, schema_editor):
db_alias = schema_editor.connection.alias
ap = apps.get_model("topologie", "AccessPoint")
new_ap = apps.get_model("topologie", "NewAccessPoint")
ap_list = ap.objects.using(db_alias).all()
for borne in ap_list:
new_borne = new_ap()
new_borne.machine_ptr_id = borne.machine.pk
new_borne.__dict__.update(borne.machine.__dict__)
new_borne.location = borne.location
new_borne.save()
def untransfer_ap(apps, schema_editor):
return
operations = [
migrations.RunPython(transfer_ap, untransfer_ap),
migrations.DeleteModel(
name='AccessPoint',
),
migrations.RenameModel(
old_name='NewAccessPoint',
new_name='AccessPoint',
),
]
...@@ -47,7 +47,7 @@ from django.db import IntegrityError ...@@ -47,7 +47,7 @@ from django.db import IntegrityError
from django.db import transaction from django.db import transaction
from reversion import revisions as reversion from reversion import revisions as reversion
from machines.models import Interface from machines.models import Machine, Interface
class Stack(models.Model): class Stack(models.Model):
"""Un objet stack. Regrouppe des switchs en foreign key """Un objet stack. Regrouppe des switchs en foreign key
...@@ -109,7 +109,7 @@ class Stack(models.Model): ...@@ -109,7 +109,7 @@ class Stack(models.Model):
inférieure à l'id minimale"}) inférieure à l'id minimale"})
class AccessPoint(Interface): class AccessPoint(Machine):
"""Define a wireless AP. Inherit from machines.interfaces """Define a wireless AP. Inherit from machines.interfaces
Definition pour une borne wifi , hérite de machines.interfaces Definition pour une borne wifi , hérite de machines.interfaces
......
...@@ -43,10 +43,10 @@ with this program; if not, write to the Free Software Foundation, Inc., ...@@ -43,10 +43,10 @@ with this program; if not, write to the Free Software Foundation, Inc.,
</thead> </thead>
{% for ap in ap_list %} {% for ap in ap_list %}
<tr> <tr>
<td>{{ap}}</td> <td>{{ap.interface_set.first}}</td>
<td>{{ap.mac_address}}</td> <td>{{ap.interface_set.first.mac_address}}</td>
<td>{{ap.ipv4}}</td> <td>{{ap.interface_set.first.ipv4}}</td>
<td>{{ap.details}}</td> <td>{{ap.interface_set.first.details}}</td>
<td>{{ap.location}}</td> <td>{{ap.location}}</td>
<td class="text-right"> <td class="text-right">
<a class="btn btn-info btn-sm" role="button" title="Historique" href="{% url 'topologie:history' 'ap' ap.pk %}"> <a class="btn btn-info btn-sm" role="button" title="Historique" href="{% url 'topologie:history' 'ap' ap.pk %}">
...@@ -58,7 +58,7 @@ with this program; if not, write to the Free Software Foundation, Inc., ...@@ -58,7 +58,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
</a> </a>
{% acl_end %} {% acl_end %}
{% can_delete ap %} {% can_delete ap %}
<a class="btn btn-danger btn-sm" role="button" title="Supprimer" href="{% url 'machines:del-interface' ap.id %}"> <a class="btn btn-danger btn-sm" role="button" title="Supprimer" href="{% url 'machines:del-machine' ap.id %}">
<i class="fa fa-trash"></i> <i class="fa fa-trash"></i>
</a> </a>
{% acl_end %} {% acl_end %}
......
...@@ -535,45 +535,45 @@ def new_ap(request): ...@@ -535,45 +535,45 @@ def new_ap(request):
request.POST or None, request.POST or None,
user=request.user user=request.user
) )
machine = NewMachineForm( interface = AddInterfaceForm(
request.POST or None, request.POST or None,
user=request.user user=request.user
) )
domain = DomainForm( domain = DomainForm(
request.POST or None, request.POST or None,
) )
if ap.is_valid() and machine.is_valid(): if ap.is_valid() and interface.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,\
veuillez le créer ou le linker dans preferences") veuillez le créer ou le linker dans preferences")
return redirect(reverse('topologie:index')) return redirect(reverse('topologie:index'))
new_machine = machine.save(commit=False)
new_machine.user = user
new_ap = ap.save(commit=False) new_ap = ap.save(commit=False)
domain.instance.interface_parent = new_ap new_ap.user = user
new_interface = interface.save(commit=False)
domain.instance.interface_parent = new_interface
if domain.is_valid(): if domain.is_valid():
new_domain_instance = domain.save(commit=False) new_domain_instance = domain.save(commit=False)
with transaction.atomic(), reversion.create_revision(): with transaction.atomic(), reversion.create_revision():
new_machine.save() new_ap.save()
reversion.set_user(request.user) reversion.set_user(request.user)
reversion.set_comment("Création") reversion.set_comment("Création")
new_ap.machine = new_machine new_interface.machine = new_ap
with transaction.atomic(), reversion.create_revision(): with transaction.atomic(), reversion.create_revision():
new_ap.save() new_interface.save()
reversion.set_user(request.user) reversion.set_user(request.user)
reversion.set_comment("Création") reversion.set_comment("Création")
new_domain_instance.interface_parent = new_ap new_domain_instance.interface_parent = new_interface
with transaction.atomic(), reversion.create_revision(): with transaction.atomic(), reversion.create_revision():
new_domain_instance.save() new_domain_instance.save()
reversion.set_user(request.user) reversion.set_user(request.user)
reversion.set_comment("Création") reversion.set_comment("Création")
messages.success(request, "La borne a été créé") messages.success(request, "La borne a été créé")
return redirect(reverse('topologie:index-ap')) return redirect(reverse('topologie:index-ap'))
i_mbf_param = generate_ipv4_mbf_param(ap, False) i_mbf_param = generate_ipv4_mbf_param(interface, False)
return form({ return form({
'topoform': ap, 'topoform': interface,
'machineform': machine, 'machineform': ap,
'domainform': domain, 'domainform': domain,
'i_mbf_param': i_mbf_param, 'i_mbf_param': i_mbf_param,
'device' : 'wifi ap', 'device' : 'wifi ap',
...@@ -585,41 +585,41 @@ def new_ap(request): ...@@ -585,41 +585,41 @@ def new_ap(request):
def edit_ap(request, ap, ap_id): def edit_ap(request, ap, ap_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"""
ap_form = EditAccessPointForm( interface_form = EditInterfaceForm(
request.POST or None, request.POST or None,
user=request.user, user=request.user,
instance=ap instance=ap.interface_set.first()
) )
machine_form = NewMachineForm( ap_form = EditAccessPointForm(
request.POST or None, request.POST or None,
user=request.user, user=request.user,
instance=ap.machine instance=ap
) )
domain_form = DomainForm( domain_form = DomainForm(
request.POST or None, request.POST or None,
instance=ap.domain instance=ap.interface_set.first().domain
) )
if ap_form.is_valid() and machine_form.is_valid(): if ap_form.is_valid() and interface_form.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,\
veuillez le créer ou le linker dans preferences") veuillez le créer ou le linker dans preferences")
return redirect(reverse('topologie:index-ap')) return redirect(reverse('topologie:index-ap'))
new_machine = machine_form.save(commit=False)
new_ap = ap_form.save(commit=False) new_ap = ap_form.save(commit=False)
new_interface = interface_form.save(commit=False)
new_domain = domain_form.save(commit=False) new_domain = domain_form.save(commit=False)
with transaction.atomic(), reversion.create_revision(): with transaction.atomic(), reversion.create_revision():
new_machine.save() new_ap.save()
reversion.set_user(request.user) reversion.set_user(request.user)
reversion.set_comment( reversion.set_comment(
"Champs modifié(s) : %s" % ', '.join( "Champs modifié(s) : %s" % ', '.join(
field for field in machine_form.changed_data) field for field in ap_form.changed_data)
) )
with transaction.atomic(), reversion.create_revision(): with transaction.atomic(), reversion.create_revision():
new_ap.save() new_interface.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 ap_form.changed_data) field for field in interface_form.changed_data)
) )
reversion.set_comment("Création") reversion.set_comment("Création")
with transaction.atomic(), reversion.create_revision(): with transaction.atomic(), reversion.create_revision():
...@@ -630,10 +630,10 @@ def edit_ap(request, ap, ap_id): ...@@ -630,10 +630,10 @@ def edit_ap(request, ap, ap_id):
) )
messages.success(request, "La borne a été modifiée") messages.success(request, "La borne a été modifiée")
return redirect(reverse('topologie:index-ap')) return redirect(reverse('topologie:index-ap'))
i_mbf_param = generate_ipv4_mbf_param(ap_form, False ) i_mbf_param = generate_ipv4_mbf_param(interface_form, False )
return form({ return form({
'topoform': ap_form, 'topoform': interface_form,
'machineform': machine_form, 'machineform': ap_form,
'domainform': domain_form, 'domainform': domain_form,
'i_mbf_param': i_mbf_param, 'i_mbf_param': i_mbf_param,
'device' : 'wifi ap', 'device' : 'wifi ap',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment