From 3ce73a7a467a8b2ba4fdc59de7f24a1e701eb754 Mon Sep 17 00:00:00 2001 From: Gabriel Detraz Date: Mon, 26 Mar 2018 22:11:03 +0200 Subject: [PATCH] Fix divers sur la creation de port --- topologie/forms.py | 10 ++++++---- topologie/models.py | 7 +++++-- topologie/templates/topologie/aff_switch.html | 2 +- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/topologie/forms.py b/topologie/forms.py index 0337dc60..653cd0c5 100644 --- a/topologie/forms.py +++ b/topologie/forms.py @@ -80,9 +80,10 @@ class EditPortForm(ModelForm): prefix = kwargs.pop('prefix', self.Meta.model.__name__) super(EditPortForm, self).__init__(*args, prefix=prefix, **kwargs) self.fields['machine_interface'].queryset = Interface.objects.all()\ - .select_related('domain__extension') + .select_related('domain__extension') self.fields['related'].queryset = Port.objects.all()\ - .select_related('switch__domain__extension')\ + .select_related('switch')\ + .prefetch_related('switch__interface_set__domain__extension')\ .order_by('switch', 'port') @@ -97,9 +98,10 @@ class AddPortForm(ModelForm): prefix = kwargs.pop('prefix', self.Meta.model.__name__) super(AddPortForm, self).__init__(*args, prefix=prefix, **kwargs) self.fields['machine_interface'].queryset = Interface.objects.all()\ - .select_related('domain__extension') + .select_related('domain__extension') self.fields['related'].queryset = Port.objects.all()\ - .select_related('switch__domain__extension')\ + .select_related('switch')\ + .prefetch_related('switch__interface_set__domain__extension')\ .order_by('switch', 'port') diff --git a/topologie/models.py b/topologie/models.py index fd4b1d3d..3cf0d5b2 100644 --- a/topologie/models.py +++ b/topologie/models.py @@ -263,6 +263,9 @@ class Switch(Machine): except IntegrityError: ValidationError("Création d'un port existant.") + def __str__(self): + return str(self.interface_set.first()) + class ModelSwitch(models.Model): """Un modèle (au sens constructeur) de switch""" @@ -416,11 +419,11 @@ class Port(models.Model): def get_instance(port_id, *args, **kwargs): return Port.objects\ - .select_related('switch__domain__extension')\ .select_related('machine_interface__domain__extension')\ - .select_related('machine_interface__switch')\ + .select_related('machine_interface__machine__switch')\ .select_related('room')\ .select_related('related')\ + .prefetch_related('switch__interface_set__domain__extension')\ .get(pk=port_id) def can_create(user_request, *args, **kwargs): diff --git a/topologie/templates/topologie/aff_switch.html b/topologie/templates/topologie/aff_switch.html index 0805b591..bcbe5204 100644 --- a/topologie/templates/topologie/aff_switch.html +++ b/topologie/templates/topologie/aff_switch.html @@ -46,7 +46,7 @@ with this program; if not, write to the Free Software Foundation, Inc., - {{switch.interface_set.first}} + {{switch}} {{switch.interface_set.first.ipv4}}