new_model_fields

dev
AlexP077 3 years ago committed by Dmitry Titov
parent 0ac9fd2d25
commit de429c5911

@ -159,7 +159,6 @@ REST_REGISTRATION = {
'REGISTER_VERIFICATION_URL': f'{FRONTEND_URL}verify-user/',
'RESET_PASSWORD_VERIFICATION_URL': f'{FRONTEND_URL}reset-password/',
'REGISTER_EMAIL_VERIFICATION_URL': f'{FRONTEND_URL}verify-email/',
'VERIFICATION_FROM_EMAIL': 'noreply@spatiality.website',
}
SRID = 4326

@ -0,0 +1,22 @@
# Generated by Django 3.2 on 2023-03-27 17:20
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('service', '0018_placementpoint_fact_raw'),
]
operations = [
migrations.RenameField(
model_name='placementpoint',
old_name='okrug',
new_name='area',
),
migrations.RenameField(
model_name='placementpoint',
old_name='rayon',
new_name='district',
),
]

@ -0,0 +1,193 @@
# Generated by Django 3.2 on 2023-03-27 20:05
from django.db import migrations
from django.db import models
class Migration(migrations.Migration):
dependencies = [
('service', '0019_auto_20230327_2020'),
]
operations = [
migrations.AddField(
model_name='placementpoint',
name='attraction_cnt',
field=models.IntegerField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='bank_cnt',
field=models.IntegerField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='bc_cnt',
field=models.IntegerField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='business_activity',
field=models.IntegerField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='city',
field=models.TextField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='clinic_cnt',
field=models.IntegerField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='culture_cnt',
field=models.IntegerField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='entrance',
field=models.TextField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='flats_cnt_2',
field=models.IntegerField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='house_number',
field=models.TextField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='is_vis',
field=models.BooleanField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='kindergar_cnt',
field=models.IntegerField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='lab_cnt',
field=models.IntegerField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='metro_dist',
field=models.FloatField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='mfc_cnt',
field=models.IntegerField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='pharmacy_cnt',
field=models.IntegerField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='post_code',
field=models.TextField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='property_era',
field=models.TextField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='property_mean_floor',
field=models.FloatField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='property_price_bargains',
field=models.FloatField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='property_price_offers',
field=models.FloatField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='public_stop_cnt',
field=models.IntegerField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='reca_cnt',
field=models.IntegerField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='rival_post_cnt',
field=models.IntegerField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='rival_pvz_cnt',
field=models.IntegerField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='school_cnt',
field=models.IntegerField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='sport_center_cnt',
field=models.IntegerField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='street',
field=models.TextField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='subject_rf',
field=models.TextField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='supermarket_cnt',
field=models.IntegerField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='supermarket_premium_cnt',
field=models.IntegerField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='target_age_nearby_mean',
field=models.FloatField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='target_cnt_ao_mean',
field=models.FloatField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='target_cnt_nearby_mean',
field=models.FloatField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='target_dist',
field=models.FloatField(blank=True, null=True),
),
migrations.AddField(
model_name='placementpoint',
name='tc_cnt',
field=models.IntegerField(blank=True, null=True),
),
]

@ -38,9 +38,45 @@ class PlacementPoint(models.Model):
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)
okrug = models.ForeignKey('AO', on_delete=models.CASCADE, null=True, blank=True)
rayon = models.ForeignKey('Rayon', on_delete=models.CASCADE, null=True, blank=True)
area = models.ForeignKey('AO', on_delete=models.CASCADE, null=True, blank=True)
district = 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):

@ -56,6 +56,7 @@ class PointService:
data = pd.DataFrame(list(qs.values()))
data['start_date'] = data['start_date'].dt.tz_localize(None)
data['sample_trn'] = data['sample_trn'].astype(int)
data.rename(columns={'district_id': 'district', 'area_id': 'area'}, inplace=True)
with BytesIO() as b:
with pd.ExcelWriter(b) as writer:
data.to_excel(
@ -64,6 +65,15 @@ class PointService:
)
return b.getvalue()
@staticmethod
def to_json(qs: models.PlacementPoint):
data = pd.DataFrame(list(qs.values()))
data['start_date'] = data['start_date'].dt.tz_localize(None)
data['sample_trn'] = data['sample_trn'].astype(int)
data['geometry'] = data['geometry'].apply(lambda x: {'latitude': x[1], 'longtitude': x[0]})
data.rename(columns={'district_id': 'district', 'area_id': 'area'}, inplace=True)
return data.to_json(orient='records')
@staticmethod
def get_first_10_k():
if models.PlacementPoint.objects.count() > 10000:

@ -194,6 +194,14 @@ class PlacementPointViewSet(ReadOnlyModelViewSet):
res['Content-Disposition'] = f'attachment; filename={filename}'
return res
@action(detail=False, methods=['get'])
def to_json(self, request):
qs = self.get_queryset()
filename = 'placement_points.json'
response = HttpResponse(PointService.to_json(qs), content_type='application/json')
response['Content-Disposition'] = f'attachment; filename={filename}'
return response
@action(detail=False, methods=['get'])
def get_10k(self, request):
pred = PointService.get_first_10_k()

Loading…
Cancel
Save