first commit
This commit is contained in:
commit
b71ea45681
898 changed files with 138202 additions and 0 deletions
171
wells/models.py
Normal file
171
wells/models.py
Normal file
|
@ -0,0 +1,171 @@
|
|||
from django.db import models
|
||||
from common.models import SluggedModel, BaseModel
|
||||
from django.contrib.auth import get_user_model
|
||||
from simple_history.models import HistoricalRecords
|
||||
from locations.models import Affairs, Broker, County
|
||||
import utm
|
||||
from uuid import uuid4
|
||||
import os
|
||||
|
||||
class WaterMeterManufacturer(BaseModel):
|
||||
name = models.CharField(
|
||||
max_length=20,
|
||||
verbose_name="نام شرکت سازنده کنتور آب",
|
||||
null=True,
|
||||
blank=True)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
class Meta:
|
||||
verbose_name = "شرکت سازنده کنتور آب"
|
||||
verbose_name_plural = "شرکتهای سازنده کنتور آب"
|
||||
|
||||
|
||||
class Well(SluggedModel):
|
||||
def path_and_rename(self, filename):
|
||||
upload_to = "representative_letters"
|
||||
ext = filename.split(".")[-1]
|
||||
# create unique filename
|
||||
filename = f"{uuid4().hex}.{ext}"
|
||||
# return the whole path to the file
|
||||
return os.path.join(upload_to, filename)
|
||||
|
||||
Hemisphere_Choices = [
|
||||
('N', 'شمال'),
|
||||
('S', 'جنوب'),
|
||||
]
|
||||
|
||||
representative = models.ForeignKey(
|
||||
get_user_model(),
|
||||
on_delete=models.SET_NULL,
|
||||
verbose_name="نماینده",
|
||||
related_name="wells",
|
||||
null=True,
|
||||
blank=True
|
||||
)
|
||||
|
||||
water_subscription_number = models.CharField(
|
||||
max_length=20,
|
||||
verbose_name="شماره اشتراک آب",
|
||||
unique=True
|
||||
)
|
||||
electricity_subscription_number = models.CharField(
|
||||
max_length=20,
|
||||
verbose_name="شماره اشتراک برق",
|
||||
null=True,
|
||||
blank=True,
|
||||
unique=True
|
||||
)
|
||||
|
||||
water_meter_serial_number = models.CharField(
|
||||
max_length=20,
|
||||
verbose_name="سریال کنتور آب",
|
||||
null=True,
|
||||
blank=True
|
||||
)
|
||||
water_meter_old_serial_number = models.CharField(
|
||||
max_length=20,
|
||||
verbose_name="سریال کنتور قدیمی آب",
|
||||
null=True,
|
||||
blank=True
|
||||
)
|
||||
water_meter_manufacturer = models.ForeignKey(
|
||||
WaterMeterManufacturer,
|
||||
on_delete=models.SET_NULL,
|
||||
verbose_name="شرکت سازنده کنتور آب",
|
||||
null=True,
|
||||
blank=True
|
||||
)
|
||||
|
||||
utm_x = models.DecimalField(
|
||||
max_digits=10,
|
||||
decimal_places=6,
|
||||
verbose_name="X UTM",
|
||||
null=True,
|
||||
blank=True
|
||||
)
|
||||
utm_y = models.DecimalField(
|
||||
max_digits=10,
|
||||
decimal_places=6,
|
||||
verbose_name="Y UTM",
|
||||
null=True,
|
||||
blank=True
|
||||
)
|
||||
utm_zone = models.PositiveIntegerField(
|
||||
verbose_name="زون UTM",
|
||||
null=True,
|
||||
blank=True,
|
||||
default=40
|
||||
)
|
||||
utm_hemisphere = models.CharField(
|
||||
max_length=1,
|
||||
verbose_name="نیمکره UTM",
|
||||
null=True,
|
||||
blank=True,
|
||||
choices=Hemisphere_Choices,
|
||||
default='N'
|
||||
)
|
||||
|
||||
well_power = models.PositiveIntegerField(
|
||||
verbose_name="قدرت چاه",
|
||||
null=True,
|
||||
blank=True
|
||||
)
|
||||
|
||||
reference_letter_number = models.CharField(
|
||||
max_length=20,
|
||||
verbose_name="شماره معرفی نامه",
|
||||
null=True,
|
||||
blank=True
|
||||
)
|
||||
reference_letter_date = models.DateField(
|
||||
verbose_name="تاریخ معرفی نامه",
|
||||
null=True,
|
||||
blank=True
|
||||
)
|
||||
representative_letter_file = models.FileField(
|
||||
upload_to=path_and_rename,
|
||||
verbose_name="نامه نمایندگی",
|
||||
null=True,
|
||||
blank=True
|
||||
)
|
||||
|
||||
|
||||
affairs = models.ForeignKey(
|
||||
Affairs,
|
||||
on_delete=models.SET_NULL,
|
||||
verbose_name="امور",
|
||||
null=True,
|
||||
blank=True
|
||||
)
|
||||
county = models.ForeignKey(
|
||||
County,
|
||||
on_delete=models.SET_NULL,
|
||||
verbose_name="شهرستان",
|
||||
null=True,
|
||||
blank=True
|
||||
)
|
||||
broker = models.ForeignKey(
|
||||
Broker,
|
||||
on_delete=models.SET_NULL,
|
||||
verbose_name="کارگزار",
|
||||
null=True,
|
||||
blank=True
|
||||
)
|
||||
|
||||
|
||||
history = HistoricalRecords()
|
||||
|
||||
class Meta:
|
||||
verbose_name = "چاه"
|
||||
verbose_name_plural = "چاهها"
|
||||
|
||||
def __str__(self):
|
||||
return self.water_subscription_number
|
||||
|
||||
def lat_long(self):
|
||||
if self.utm_x and self.utm_y and self.utm_zone and self.utm_hemisphere:
|
||||
northern = False if self.utm_hemisphere == 'S' else True
|
||||
return utm.to_latlon(self.utm_x, self.utm_y, self.utm_zone, northern=northern)
|
||||
return None
|
Loading…
Add table
Add a link
Reference in a new issue