Browse Source

corrections antennes

Élie Bouttier 8 years ago
parent
commit
56ab41ece5
2 changed files with 46 additions and 6 deletions
  1. 32 0
      services/migrations/0027_auto_20170607_2356.py
  2. 14 6
      services/models.py

+ 32 - 0
services/migrations/0027_auto_20170607_2356.py

@@ -0,0 +1,32 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.1 on 2017-06-07 21:56
+from __future__ import unicode_literals
+
+import django.contrib.gis.db.models.fields
+import django.core.validators
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('services', '0026_auto_20170607_2306'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='antenna',
+            name='label',
+            field=models.CharField(blank=True, default='', max_length=128),
+        ),
+        migrations.AlterField(
+            model_name='antenna',
+            name='mac',
+            field=models.CharField(blank=True, default='', max_length=17, validators=[django.core.validators.RegexValidator('^([0-9a-fA-F]{2}([:-]?|$)){6}$')], verbose_name='Adresse MAC'),
+        ),
+        migrations.AlterField(
+            model_name='antenna',
+            name='position',
+            field=django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=4326),
+        ),
+    ]

+ 14 - 6
services/models.py

@@ -34,9 +34,12 @@ class IPResourceManager(models.Manager):
                     ),
                     in_use_by_antenna=models.Exists(
                         AntennaAllocation.objects.filter(query)
-                    ),
-                    in_use=models.ExpressionWrapper(
-                        models.F('in_use_by_service') + models.F('in_use_by_antenna'),
+                    )
+        )
+        qs = qs.annotate(
+                    in_use=models.Case(
+                        models.When(Q(in_use_by_service=True) | Q(in_use_by_antenna=True), then=True),
+                        default=False,
                         output_field=models.BooleanField()
                     )
         )
@@ -120,21 +123,26 @@ class Service(models.Model):
 
 
 class Antenna(models.Model):
-    position = geo_models.PointField(null=True)
+    label = models.CharField(max_length=128, blank=True, default='')
     mac = models.CharField(
             blank=True,
             default='',
             max_length=17,
             validators=[
                 RegexValidator(r'^([0-9a-fA-F]{2}([:-]?|$)){6}$'),
-            ])
+            ],
+            verbose_name='Adresse MAC')
     notes = models.TextField(blank=True)
+    position = geo_models.PointField(null=True, blank=True)
 
     class Meta:
         verbose_name = 'antenne'
 
     def __str__(self):
-        return 'Antenne %d' % self.pk
+        name = 'Antenne %d' % self.pk
+        if self.label:
+            name += ' (%s)' % self.label
+        return name
 
 
 class Route(models.Model):