models.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. from django.db import models
  2. from datetime import datetime
  3. from django.contrib.auth.models import AbstractUser
  4. # Create your models here.
  5. class User(AbstractUser):
  6. pass
  7. class TipoRadio(models.Model):
  8. # tid = db.Column(db.Integer, primary_key=True, nullable=False)
  9. nome = models.CharField(max_length=64, unique=True)
  10. descrizione = models.CharField(max_length=1000)
  11. # rapporti = db.relationship("RapportoRicezione")
  12. class RapportoRicezione(models.Model):
  13. class Meta:
  14. verbose_name = "rapporto ricezione"
  15. # verbose_plural_name = 'rapporti ricezione'
  16. author = models.ForeignKey(User, related_name="rapporti", on_delete=models.PROTECT)
  17. tipo_radio = models.ForeignKey(
  18. TipoRadio, on_delete=models.PROTECT, related_name="rapporti"
  19. )
  20. date = models.DateField(default=datetime.now)
  21. lat = models.FloatField()
  22. lng = models.FloatField()
  23. comprensibile = models.IntegerField() # TODO: >= 0 <= 5
  24. stabilita = models.IntegerField() # TODO: >= 0 <= 5
  25. def serialize(self):
  26. d = {k: v for k, v in self.__dict__.items() if not k.startswith("_")}
  27. d["colore"] = self.colore
  28. d["radius"] = self.radius
  29. d["explaination"] = self.explaination
  30. return d
  31. @property
  32. def colore(self):
  33. c = self.comprensibile
  34. if c > 3:
  35. return "green"
  36. if c > 1:
  37. return "yellow"
  38. return "red"
  39. @property
  40. def radius(self):
  41. return self.stabilita * 70
  42. @property
  43. def explaination(self):
  44. return """
  45. Ricevuto con %s
  46. Aggiunto il %s da %s
  47. """ % (
  48. self.tipo_radio.nome,
  49. self.date,
  50. self.author.username,
  51. )
  52. def __str__(self):
  53. return "<Rapporto %s del %s>" % (self.pk, self.date)