mypertamina-microsite-api/microsite_api/location/models.py
2026-02-26 11:06:14 +07:00

40 lines
1.6 KiB
Python

from django.db import models
from django.contrib.auth.models import User
from django_softdelete.models import SoftDeleteModel
class Province(SoftDeleteModel):
code = models.CharField(max_length=2, null=False, unique=True)
name = models.CharField(max_length=255, null=False)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.name
class RegencyCity(SoftDeleteModel):
code = models.CharField(max_length=4, null=False, unique=True)
name = models.CharField(max_length=255, null=False)
province = models.ForeignKey(Province, on_delete=models.CASCADE, null=False)
def __str__(self):
return self.name
class Meta:
unique_together = ('code', 'province')
class Location(SoftDeleteModel):
name = models.CharField(max_length=255, null=False)
path = models.TextField(null=True, blank=True)
totem_latitude = models.DecimalField(max_digits=9, decimal_places=6, null=True, blank=True)
totem_longitude = models.DecimalField(max_digits=9, decimal_places=6, null=True, blank=True)
totem_code = models.CharField(max_length=50, null=True, blank=True)
province = models.ForeignKey(Province, on_delete=models.SET_NULL, null=True)
regency_city = models.ForeignKey(RegencyCity, on_delete=models.SET_NULL, null=True)
active = models.BooleanField(default=True)
def __str__(self):
return f"{self.user.username} - {self.province.name if self.province else 'No Province'} - {self.regency_city.name if self.regency_city else 'No Regency/City'}"