12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- from django.db import models
- from django.urls import reverse
- from datetime import datetime
- from django.contrib.auth.models import AbstractUser
- # Create your models here.
- class User(AbstractUser):
- @property
- def display_name(self):
- name = "%s %s" % (self.first_name, self.last_name)
- if name:
- return name
- return self.username
- class TipoRadio(models.Model):
- class Meta:
- verbose_name = "tipo radio"
- verbose_name_plural = "tipi radio"
- nome = models.CharField(max_length=64, unique=True)
- descrizione = models.CharField(max_length=1000)
- def __str__(self):
- return self.nome
- class RapportoRicezione(models.Model):
- class Meta:
- verbose_name = "rapporto ricezione"
- verbose_name_plural = "rapporti ricezione"
- author = models.ForeignKey(User, related_name="rapporti", on_delete=models.PROTECT, verbose_name='autore')
- tipo_radio = models.ForeignKey(
- TipoRadio, on_delete=models.PROTECT, related_name="rapporti"
- )
- created = models.DateField(default=datetime.now, verbose_name='Data della rilevazione')
- lat = models.FloatField()
- lng = models.FloatField()
- indirizzo = models.CharField(default='', max_length=400,
- help_text='Indirizzo indicativo. Usato solo per descrizione. '
- 'Per piazzare il marcatore vengono usate solo le coordinate')
- comprensibile = models.IntegerField() # TODO: >= 0 <= 5
- stabilita = models.IntegerField() # TODO: >= 0 <= 5
- def serialize(self):
- d = {k: v for k, v in self.__dict__.items() if not k.startswith("_")}
- d["id"] = self.id
- d["colore"] = self.colore
- d["radius"] = self.radius
- d["explaination"] = self.explaination
- return d
- @property
- def colore(self):
- colors = ["darkred", "red", "orange", "yellow", "#90c90d", "green"]
- c = int(self.comprensibile)
- return colors[c]
- @property
- def radius(self):
- raggi = [5, 10, 30, 100, 500, 1000]
- return raggi[self.stabilita]
- @property
- def explaination(self):
- return """
- Ricevuto con %s
- Aggiunto il %s da %s
- """ % (
- self.tipo_radio.nome,
- self.created,
- self.author.display_name,
- )
- @property
- def edit_link(self):
- return reverse(
- "admin:rxmapp_rapportoricezione_change", kwargs=dict(object_id=self.id)
- )
- def __str__(self):
- if self.indirizzo:
- return self.indirizzo
- return "<Rapporto %s del %s>" % (self.pk, self.created)
|