from django.contrib.auth.models import User from django.contrib.gis.db import models as gis_models from django.db import models from postamates.settings import SRID from service.enums import PointStatus from service.signals import * User._meta.get_field('email')._unique = True class PlacementPoint(models.Model): STATUS_CHOICES = [(tag.name, tag.value) for tag in PointStatus] address = models.TextField(null=True, blank=True, verbose_name='Адрес') name = models.TextField(null=True, blank=True, verbose_name='Название') postamat_id = models.TextField(unique=True, null=True, blank=True, verbose_name='ID постамата') category = models.TextField(null=True, blank=True, verbose_name='Категория') status = models.TextField(choices=STATUS_CHOICES, null=True, blank=True, verbose_name='Статус') start_date = models.DateTimeField(null=True, blank=True) age_day = models.IntegerField(null=True, blank=True, verbose_name='Возраст') prediction_first = models.IntegerField(null=True, blank=True, verbose_name='Прогноз начальный') prediction_current = models.IntegerField(null=True, blank=True, verbose_name='Прогноз текущий') plan_first = models.IntegerField(null=True, blank=True, verbose_name='Плановый показатель начальный') plan_current = models.IntegerField(null=True, blank=True, verbose_name='Плановый показатель текущий') fact = models.IntegerField(null=True, blank=True, verbose_name='Фактический показатель') fact_raw = models.IntegerField(null=True, blank=True) delta_first = models.IntegerField(null=True, blank=True, verbose_name='Разница начальная') delta_current = models.IntegerField(null=True, blank=True, verbose_name='Разница текущая') sample_trn = models.BooleanField(null=True, blank=True) flat_cnt = models.IntegerField(null=True, blank=True, verbose_name='Количество квартир') year_bld = models.IntegerField(null=True, blank=True, verbose_name='Год постройки') levels = models.IntegerField(null=True, blank=True) enrg_cls = models.TextField(null=True, blank=True) mat_nes = models.TextField(null=True, blank=True) doors = models.IntegerField(null=True, blank=True) flats_cnt = models.IntegerField(null=True, blank=True) popul_home = models.IntegerField(null=True, blank=True) popul_job = models.IntegerField(null=True, blank=True) other_post_cnt = models.IntegerField(null=True, blank=True) target_post_cnt = models.IntegerField(null=True, blank=True) yndxfood_cnt = models.IntegerField(null=True, blank=True) yndxfood_sum = models.IntegerField(null=True, blank=True) yndxfood_cnt_cst = models.IntegerField(null=True, blank=True) district = models.ForeignKey('AO', on_delete=models.CASCADE, null=True, blank=True) area = models.ForeignKey('Rayon', on_delete=models.CASCADE, null=True, blank=True) geometry = gis_models.PointField(srid=SRID, null=True, verbose_name='Координаты') is_vis = models.BooleanField(null=True, blank=True) subject_rf = models.TextField(null=True, blank=True) city = models.TextField(null=True, blank=True) street = models.TextField(null=True, blank=True) house_number = models.TextField(null=True, blank=True) entrance = models.TextField(null=True, blank=True) post_code = models.TextField(null=True, blank=True) metro_dist = models.FloatField(null=True, blank=True) target_dist = models.FloatField(null=True, blank=True) property_price_bargains = models.FloatField(null=True, blank=True) property_price_offers = models.FloatField(null=True, blank=True) property_mean_floor = models.FloatField(null=True, blank=True) property_era = models.TextField(null=True, blank=True) business_activity = models.IntegerField(null=True, blank=True) bc_cnt = models.IntegerField(null=True, blank=True) tc_cnt = models.IntegerField(null=True, blank=True) rival_pvz_cnt = models.IntegerField(null=True, blank=True) rival_post_cnt = models.IntegerField(null=True, blank=True) flats_cnt_2 = models.IntegerField(null=True, blank=True) school_cnt = models.IntegerField(null=True, blank=True) kindergar_cnt = models.IntegerField(null=True, blank=True) public_stop_cnt = models.IntegerField(null=True, blank=True) sport_center_cnt = models.IntegerField(null=True, blank=True) pharmacy_cnt = models.IntegerField(null=True, blank=True) supermarket_cnt = models.IntegerField(null=True, blank=True) supermarket_premium_cnt = models.IntegerField(null=True, blank=True) clinic_cnt = models.IntegerField(null=True, blank=True) bank_cnt = models.IntegerField(null=True, blank=True) reca_cnt = models.IntegerField(null=True, blank=True) lab_cnt = models.IntegerField(null=True, blank=True) culture_cnt = models.IntegerField(null=True, blank=True) attraction_cnt = models.IntegerField(null=True, blank=True) mfc_cnt = models.IntegerField(null=True, blank=True) target_cnt_ao_mean = models.FloatField(null=True, blank=True) target_cnt_nearby_mean = models.FloatField(null=True, blank=True) target_age_nearby_mean = models.FloatField(null=True, blank=True) class AO(models.Model): name = models.TextField(null=True, blank=True, verbose_name='Округ') polygon = gis_models.MultiPolygonField(null=True, srid=SRID) class Rayon(models.Model): name = models.TextField(null=True, blank=True, verbose_name='Район') AO = models.ForeignKey('AO', related_name='rayons', on_delete=models.CASCADE) polygon = gis_models.MultiPolygonField(null=True, srid=SRID) class Rivals(models.Model): wkt = gis_models.PointField(srid=SRID, null=True) info = models.TextField(null=True, blank=True) type = models.TextField(null=True, blank=True) source = models.TextField(null=True, blank=True) class PointDist(models.Model): id1 = models.ForeignKey('PlacementPoint', on_delete=models.CASCADE, null=False, related_name='placement_point_id1') id2 = models.ForeignKey('PlacementPoint', on_delete=models.CASCADE, null=False, related_name='placement_point_id2') distance = models.FloatField(null=False)