Facebook
From Sole Hedgehog, 4 Years ago, written in Python.
Embed
Download Paste or View Raw
Hits: 208
  1. ### Models
  2.  
  3.  
  4.  
  5. class base(models.Model):
  6.  
  7.     created_by = models.ForeignKey(User, verbose_name=_("User"), on_delete=models.CASCADE, editable=False, null=True, blank=True)
  8.     created = models.DateTimeField(_("created date"), auto_now=False, auto_now_add=True, editable=False)
  9.  
  10.     class Meta:
  11.         abstract = True
  12.  
  13. # Level 1 model
  14. class Building(base):
  15.     name = models.CharField(_("Name"), max_length=50)
  16.     managers = models.ManyToManyField(User, verbose_name=_("Admins"), related_name='buildingmanagers')
  17.  
  18.  
  19.     class Meta:
  20.         verbose_name = _("building")
  21.         verbose_name_plural = _("buildings")
  22.  
  23.     def __str__(self):
  24.         return self.name
  25.  
  26.     def get_absolute_url(self):
  27.         return reverse("building_detail", kwargs={"pk": self.pk})
  28.  
  29. # Level 2
  30. # list should be on /buildings/<building_id>/properties
  31. # Details could be on either
  32. # /buildings/<building_id>/properties/<property_id>
  33. # /properties/<property_id>
  34. class Property(base):
  35.  
  36.     name = models.CharField(_("Nombre de la propiedad"), max_length=50)
  37.     building = models.ForeignKey("core.Building", verbose_name=_("Edificio"), on_delete=models.CASCADE)
  38.     owner = models.CharField(_("Nombre propietario"), max_length=50, blank=True, null=True)
  39.  
  40.     class Meta:
  41.         verbose_name = _("property")
  42.         verbose_name_plural = _("propertys")
  43.  
  44.     def __str__(self):
  45.         return self.name
  46.  
  47.     def get_absolute_url(self):
  48.         return reverse("property_detail", kwargs={"pk": self.pk})
  49.  
  50. # Level 3
  51. # list should be on
  52. # /buildings/<building_id>/properties/<property_id>/invoices
  53. # or /properties/<property_id>/invoices
  54. # Details could be on either
  55. # /buildings/<building_id>/properties/<property_id>/invoices/<property_invoice_id>
  56. # /property_invoices/<property_invoice_id>
  57. class PropertyInvoice(invoice_base):
  58.  
  59.     prop = models.ForeignKey(Property, verbose_name=_("Property"), on_delete=models.CASCADE)
  60.  
  61.     class Meta:
  62.         verbose_name = _("property invoice")
  63.         verbose_name_plural = _("property invoices")
  64.  
  65.     def __str__(self):
  66.         return self.concept
  67.  
  68.     def get_absolute_url(self):
  69.         return reverse("propertyinvoice_detail", kwargs={"pk": self.pk})
  70.  
  71.     def get_building(self):
  72.         return self.prop.building
  73.  
  74.  
  75. # Level 4
  76. # list should be on
  77. # /buildings/<building_id>/properties/<property_id>/invoices/<invoice_id>/payments
  78. # or /property_invoices/<invoice_id>/payments
  79. # Details could be on either
  80. # /buildings/<building_id>/properties/<property_id>/invoices/<invoice_id>/payments/<payment_id>
  81. # /property_payments/<payment_id>
  82. class PropertyInvoicePayment(payment_base):
  83.     invoice = models.ForeignKey("core.PropertyInvoice", verbose_name=_("Related Invoice"), on_delete=models.CASCADE)
  84.  
  85.     def get_building(self):
  86.         return self.invoice.prop.building