|
@@ -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):
|