return name def get_name(self): if self.type == ContactType.PERSON: return ' '.join([n for n in [self.first_name, self.last_name] if n]).strip() else: return self.name def get_name_and_identifier(self): if self.type == ContactType.PERSON: name = ' '.join([n for n in [self.first_name, self.last_name] if n]).strip() if self.national_identification_number: return _('{name} (National Identification Number {id})').format( name=name, id=self.national_identification_number) else: return name else: name = self.name if self.business_id: return _('{name} (Business ID {id})').format( name=name, id=self.business_id) else: return name auditlog.register(Contact) field_permissions.register(Contact, exclude_fields=['lease', 'invoice', 'tenants', 'tenantcontact'])
class InterestRate(models.Model): """ In Finnish: Korko """ start_date = models.DateField(verbose_name=_("Start date")) end_date = models.DateField(verbose_name=_("End date")) # In Finnish: Viitekorko reference_rate = models.DecimalField(verbose_name=_("Reference rate"), max_digits=10, decimal_places=2) # In Finnish: Viivästyskorko penalty_rate = models.DecimalField(verbose_name=_("Penalty rate"), max_digits=10, decimal_places=2) class Meta: verbose_name = pgettext_lazy("Model name", "Interest rate") verbose_name_plural = pgettext_lazy("Model name", "Interest rates") def __str__(self): return '{} - {}'.format(self.start_date, self.end_date) auditlog.register(CollectionLetter) auditlog.register(CollectionLetterTemplate) auditlog.register(CollectionNote) auditlog.register(CollectionCourtDecision) auditlog.register(InterestRate) field_permissions.register(CollectionLetter, exclude_fields=['lease']) field_permissions.register(CollectionNote, exclude_fields=['lease']) field_permissions.register(CollectionCourtDecision, exclude_fields=['lease'])
if self.type == ContactType.PERSON: return " ".join( [n for n in [self.first_name, self.last_name] if n]).strip() else: return self.name if self.name else "" def get_name_and_identifier(self): if self.type == ContactType.PERSON: name = " ".join( [n for n in [self.first_name, self.last_name] if n]).strip() if self.national_identification_number: return _( "{name} (National Identification Number {id})").format( name=name, id=self.national_identification_number) else: return name else: name = self.name if self.business_id: return _("{name} (Business ID {id})").format( name=name, id=self.business_id) else: return name auditlog.register(Contact) field_permissions.register( Contact, exclude_fields=["lease", "invoice", "tenants", "tenantcontact"])
inspection = models.ForeignKey(Inspection, related_name='attachments', on_delete=models.PROTECT) # In Finnish: Tiedosto file = models.FileField(upload_to=get_inspection_attachment_file_upload_to, blank=False, null=False) # In Finnish: Lataaja uploader = models.ForeignKey(User, verbose_name=_("Uploader"), related_name='+', on_delete=models.PROTECT) # In Finnish: Latausaika uploaded_at = models.DateTimeField(auto_now_add=True, verbose_name=_("Time uploaded")) recursive_get_related_skip_relations = ["inspection", "uploader"] class Meta: verbose_name = pgettext_lazy("Model name", "Inspection attachment") verbose_name_plural = pgettext_lazy("Model name", "Inspection attachments") auditlog.register(Inspection) field_permissions.register(Inspection, exclude_fields=['lease'])
# In Finnish: Käyttötarkoitus intended_use = models.ForeignKey( RentIntendedUse, verbose_name=_("Intended use"), related_name="+", on_delete=models.PROTECT, ) # In Finnish: Jaettava / Osoittaja (Laskuosuus) share_numerator = models.PositiveIntegerField( verbose_name=_("Rent share numerator")) # In Finnish: Jakaja / Nimittäjä (Laskuosuus) share_denominator = models.PositiveIntegerField( verbose_name=_("Rent share denominator")) recursive_get_related_skip_relations = ["tenant"] class Meta: verbose_name = pgettext_lazy("Model name", "Tenant rent share") verbose_name_plural = pgettext_lazy("Model name", "Tenant rent shares") auditlog.register(Tenant) auditlog.register(TenantContact) auditlog.register(TenantRentShare) field_permissions.register(Tenant, exclude_fields=["lease", "invoicerow"]) field_permissions.register(TenantContact, exclude_fields=["tenant"]) field_permissions.register(TenantRentShare, exclude_fields=["tenant"])
# In Finnish: Kaavayksikön tila plan_unit_status = EnumField( PlanUnitStatus, verbose_name=_("Plan unit status"), max_length=30, default=PlanUnitStatus.PRESENT, ) recursive_get_related_skip_relations = ["lease_area"] tracker = FieldTracker() class Meta: verbose_name = pgettext_lazy("Model name", "Plan unit") verbose_name_plural = pgettext_lazy("Model name", "Plan units") auditlog.register(LeaseArea) auditlog.register(LeaseAreaAddress) auditlog.register(ConstructabilityDescription) auditlog.register(Plot) auditlog.register(PlanUnit) field_permissions.register(LeaseArea, exclude_fields=["lease"]) field_permissions.register(LeaseAreaAddress, exclude_fields=["lease_area"]) field_permissions.register(ConstructabilityDescription, exclude_fields=["lease_area"]) field_permissions.register(Plot, exclude_fields=["lease_area"]) field_permissions.register(PlanUnit, exclude_fields=["lease_area"])
supervision_date = models.DateField(verbose_name=_("Supervision date"), null=True, blank=True) # In Finnish: Valvottu päivämäärä supervised_date = models.DateField(verbose_name=_("Supervised date"), null=True, blank=True) # In Finnish: Selite description = models.TextField(verbose_name=_("Description"), null=True, blank=True) recursive_get_related_skip_relations = ["decision"] class Meta: verbose_name = pgettext_lazy("Model name", "Condition") verbose_name_plural = pgettext_lazy("Model name", "Conditions") auditlog.register(Decision) auditlog.register(Condition) field_permissions.register(Decision, exclude_fields=[ 'lease', 'rentadjustment', 'contract', 'contractchange', 'leasearea' ]) field_permissions.register(Condition, exclude_fields=['decision'])
related_name="comments", on_delete=models.PROTECT, ) user = models.ForeignKey( User, verbose_name=_("User"), related_name="+", on_delete=models.PROTECT ) topic = models.ForeignKey( CommentTopic, verbose_name=_("Topic"), related_name="+", on_delete=models.PROTECT, ) # In Finnish: Kommentti text = models.TextField(verbose_name=_("Text"), null=True, blank=True) recursive_get_related_skip_relations = ["lease"] class Meta: verbose_name = pgettext_lazy("Model name", "Comment") verbose_name_plural = pgettext_lazy("Model name", "Comments") ordering = ("-created_at",) auditlog.register(Comment) field_permissions.register(Comment, exclude_fields=["lease"]) field_permissions.register(CommentTopic)
max_length=35) recursive_get_related_skip_relations = ["invoice"] class Meta: verbose_name = pgettext_lazy("Model name", "Invoice payment") verbose_name_plural = pgettext_lazy("Model name", "Invoice payments") class BankHoliday(models.Model): day = models.DateField(verbose_name=_("Day"), unique=True, db_index=True) class Meta: verbose_name = pgettext_lazy("Model name", "Bank holiday") verbose_name_plural = pgettext_lazy("Model name", "Bank holidays") ordering = ("day", ) def __str__(self): return str(self.day) auditlog.register(Invoice) auditlog.register(InvoiceNote) auditlog.register(InvoiceRow) auditlog.register(InvoicePayment) field_permissions.register(Invoice, exclude_fields=['lease', 'laskeexportlog']) field_permissions.register(InvoiceNote, exclude_fields=['lease']) field_permissions.register(InvoiceRow, exclude_fields=['invoice']) field_permissions.register(InvoicePayment, exclude_fields=['invoice'])
# In Finnish: Valvottu päivämäärä supervised_date = models.DateField( verbose_name=_("Supervised date"), null=True, blank=True ) # In Finnish: Selite description = models.TextField(verbose_name=_("Description"), null=True, blank=True) recursive_get_related_skip_relations = ["decision"] class Meta: verbose_name = pgettext_lazy("Model name", "Condition") verbose_name_plural = pgettext_lazy("Model name", "Conditions") auditlog.register(Decision) auditlog.register(Condition) field_permissions.register( Decision, exclude_fields=[ "lease", "rentadjustment", "contract", "contractchange", "leasearea", ], ) field_permissions.register(Condition, exclude_fields=["decision"])
on_delete=models.PROTECT) to_lease = models.ForeignKey(Lease, verbose_name=_("To lease"), related_name='to_leases', on_delete=models.PROTECT) type = EnumField(LeaseRelationType, verbose_name=_("Lease relation type"), null=True, blank=True, max_length=30) start_date = models.DateField(verbose_name=_("Start date"), null=True, blank=True) end_date = models.DateField(verbose_name=_("End date"), null=True, blank=True) class Meta: verbose_name = pgettext_lazy("Model name", "Related lease") verbose_name_plural = pgettext_lazy("Model name", "Related leases") auditlog.register(Lease) auditlog.register(RelatedLease) field_permissions.register(Lease, exclude_fields=[ 'from_leases', 'to_leases', 'leases', 'invoicesets', 'leasestatelog' ])
class TenantContact(TimeStampedSafeDeleteModel): type = EnumField(TenantContactType, max_length=255) tenant = models.ForeignKey(Tenant, verbose_name=_("Tenant"), on_delete=models.PROTECT) contact = models.ForeignKey(Contact, verbose_name=_("Contact"), on_delete=models.PROTECT) # In Finnish: Alkupvm start_date = models.DateField(verbose_name=_("Start date")) # In Finnish: Loppupvm end_date = models.DateField(verbose_name=_("End date"), null=True, blank=True) class Meta: verbose_name = pgettext_lazy("Model name", "Tenant contact") verbose_name_plural = pgettext_lazy("Model name", "Tenant contacts") def __str__(self): return 'TenantContact id: {} contact: {} period: {} - {}'.format(self.id, self.contact, self.start_date, self.end_date) @property def date_range(self): return self.start_date, self.end_date auditlog.register(Tenant) auditlog.register(TenantContact) field_permissions.register(Tenant, exclude_fields=['lease', 'invoicerow']) field_permissions.register(TenantContact, exclude_fields=['tenant'])
from users.models import User from .mixins import TimeStampedSafeDeleteModel class AreaNote(TimeStampedSafeDeleteModel): """ In Finnish: Muistettava ehto """ # In Finnish: Alue # geometry = models.MultiPolygonField(srid=4326, verbose_name=_("Geometry"), null=True, blank=True) geometry = models.MultiPolygonField(srid=4326, null=True, blank=True) # In Finnish: Kommentti note = models.TextField(verbose_name=_("Note"), null=True, blank=True) user = models.ForeignKey(User, verbose_name=_("User"), related_name='+', on_delete=models.PROTECT) recursive_get_related_skip_relations = ["user"] class Meta: verbose_name = pgettext_lazy("Model name", "Area note") verbose_name_plural = pgettext_lazy("Model name", "Area notes") auditlog.register(AreaNote) field_permissions.register(AreaNote)
# In Finnish: Selite description = models.TextField(verbose_name=_("Description"), null=True, blank=True) # In Finnish: Päätös decision = models.ForeignKey( "leasing.Decision", verbose_name=_("Decision"), related_name="+", null=True, blank=True, on_delete=models.PROTECT, ) recursive_get_related_skip_relations = ["contract", "decision"] class Meta: verbose_name = pgettext_lazy("Model name", "Contract change") verbose_name_plural = pgettext_lazy("Model name", "Contract changes") auditlog.register(Contract) auditlog.register(ContractChange) auditlog.register(Collateral) field_permissions.register(Contract, exclude_fields=["lease"]) field_permissions.register(ContractChange, exclude_fields=["contract"]) field_permissions.register(Collateral, exclude_fields=["contract"])
related_name="+", null=True, blank=True, on_delete=models.PROTECT) # In Finnish: Päätöspäivämäärä decision_date = models.DateField(verbose_name=_("Decision date"), null=True, blank=True) # In Finnish: Pykälä section = models.CharField(verbose_name=_("Section"), null=True, blank=True, max_length=255) recursive_get_related_skip_relations = ["basis_of_rent"] class Meta: verbose_name = pgettext_lazy("Model name", "Basis of rent decision") verbose_name_plural = pgettext_lazy("Model name", "Basis of rent decisions") auditlog.register(BasisOfRent) field_permissions.register(BasisOfRent) field_permissions.register(BasisOfRentRate, exclude_fields=['basis_of_rent']) field_permissions.register(BasisOfRentDecision, exclude_fields=['basis_of_rent'])
# In Finnish: 3. kutsu lähetetty third_call_sent = models.DateField(verbose_name=_("Third call sent"), null=True, blank=True) # In Finnish: Selite description = models.TextField(verbose_name=_("Description"), null=True, blank=True) # In Finnish: Päätös decision = models.ForeignKey('leasing.Decision', verbose_name=_("Decision"), null=True, blank=True, on_delete=models.PROTECT) class Meta: verbose_name = pgettext_lazy("Model name", "Contract change") verbose_name_plural = pgettext_lazy("Model name", "Contract changes") auditlog.register(Contract) auditlog.register(ContractChange) auditlog.register(Collateral) field_permissions.register(Contract, exclude_fields=['lease']) field_permissions.register(ContractChange, exclude_fields=['contract']) field_permissions.register(Collateral, exclude_fields=['contract'])
# In Finnish: Latausaika uploaded_at = models.DateTimeField(auto_now_add=True, verbose_name=_("Time uploaded")) class Meta: verbose_name = pgettext_lazy( "Model name", "Infill development compensation attachment") verbose_name_plural = pgettext_lazy( "Model name", "Infill development compensation attachments") auditlog.register(InfillDevelopmentCompensation) auditlog.register(InfillDevelopmentCompensationLease) auditlog.register(InfillDevelopmentCompensationDecision) auditlog.register(InfillDevelopmentCompensationIntendedUse) auditlog.register(InfillDevelopmentCompensationAttachment) field_permissions.register(InfillDevelopmentCompensation, exclude_fields=[]) field_permissions.register(InfillDevelopmentCompensationLease, exclude_fields=['infill_development_compensation']) field_permissions.register( InfillDevelopmentCompensationDecision, exclude_fields=['infill_development_compensation_lease']) field_permissions.register( InfillDevelopmentCompensationIntendedUse, exclude_fields=['infill_development_compensation_lease']) field_permissions.register( InfillDevelopmentCompensationAttachment, exclude_fields=['infill_development_compensation_lease'])
blank=True) # In Finnish: Lukittu (Käyttäjä) locked_by = models.ForeignKey(User, verbose_name=_("Locked by"), null=True, blank=True, related_name='basis_of_rents_locked', on_delete=models.PROTECT) class Meta: verbose_name = pgettext_lazy("Model name", "Lease basis of rent") verbose_name_plural = pgettext_lazy("Model name", "Lease basis of rents") auditlog.register(Rent) auditlog.register(RentDueDate) auditlog.register(FixedInitialYearRent) auditlog.register(ContractRent) auditlog.register(RentAdjustment) auditlog.register(LeaseBasisOfRent) field_permissions.register( Rent, exclude_fields=['lease', 'index_adjusted_rents', 'payable_rents']) field_permissions.register(RentDueDate, exclude_fields=['rent']) field_permissions.register(FixedInitialYearRent, exclude_fields=['rent']) field_permissions.register(ContractRent, exclude_fields=['rent']) field_permissions.register(RentAdjustment, exclude_fields=['rent']) field_permissions.register(LeaseBasisOfRent, exclude_fields=['lease'])
max_length=35) recursive_get_related_skip_relations = ["invoice"] class Meta: verbose_name = pgettext_lazy("Model name", "Invoice payment") verbose_name_plural = pgettext_lazy("Model name", "Invoice payments") class BankHoliday(models.Model): day = models.DateField(verbose_name=_("Day"), unique=True, db_index=True) class Meta: verbose_name = pgettext_lazy("Model name", "Bank holiday") verbose_name_plural = pgettext_lazy("Model name", "Bank holidays") ordering = ("day", ) def __str__(self): return str(self.day) auditlog.register(Invoice) auditlog.register(InvoiceNote) auditlog.register(InvoiceRow) auditlog.register(InvoicePayment) field_permissions.register(Invoice, exclude_fields=["lease", "laskeexportlog"]) field_permissions.register(InvoiceNote, exclude_fields=["lease"]) field_permissions.register(InvoiceRow, exclude_fields=["invoice"]) field_permissions.register(InvoicePayment, exclude_fields=["invoice"])
national_identification_number = models.CharField( verbose_name=_("National identification number"), max_length=255, null=True, blank=True) # In Finnish: Jaettava / Osoittaja share_numerator = models.PositiveIntegerField(verbose_name=_("Numerator"), null=True, blank=True) # In Finnish: Jakaja / Nimittäjä share_denominator = models.PositiveIntegerField( verbose_name=_("Denominator"), null=True, blank=True) class Meta(NameModel.Meta): verbose_name = pgettext_lazy("Model name", "Leasehold transfer party") verbose_name_plural = pgettext_lazy("Model name", "Leasehold transfer parties") ordering = ('-type', ) def __str__(self): if self.share_numerator and self.share_denominator: return '{} {}/{}: {}'.format(self.type, self.share_numerator, self.share_denominator, self.name) return '{}: {}'.format(self.type, self.name) field_permissions.register(LeaseholdTransfer) field_permissions.register(LeaseholdTransferParty, exclude_fields=['transfer'])