optimised models and views

This commit is contained in:
Mohamed Nouffer
2023-05-26 13:56:26 +05:30
parent 3afaa09c68
commit 8dbe673f9e
8 changed files with 224 additions and 156 deletions

View File

@ -22,6 +22,7 @@ from django.contrib.gis.utils import LayerMapping
from django.apps import apps
from django.db import transaction
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin, BaseUserManager
from django.contrib.postgres.indexes import GistIndex
import csv
import codecs
@ -102,46 +103,58 @@ class JpnAdminMainPerf(models.Model):
class Meta:
managed = False
db_table = 'jpn_admin_main_perf'
indexes = [
models.Index(fields=['geom'], name='jpn_admin_main_perf_geom_idx'),
# Add other fields for indexing as per the requirements
]
class JpnAdminPerf(models.Model):
geom = models.MultiLineStringField(blank=True, null=True)
et_id = models.IntegerField(blank=True, null=True)
et_right = models.CharField(max_length=80, blank=True, null=True)
et_left = models.CharField(max_length=80, blank=True, null=True)
adm2_l = models.CharField(max_length=50, blank=True, null=True)
adm1_l = models.CharField(max_length=50, blank=True, null=True)
adm0_l = models.CharField(max_length=50, blank=True, null=True)
adm0_r = models.CharField(max_length=50, blank=True, null=True)
adm1_r = models.CharField(max_length=50, blank=True, null=True)
adm2_r = models.CharField(max_length=50, blank=True, null=True)
admlevel = models.IntegerField(blank=True, null=True)
# class JpnAdminPerf(models.Model):
# geom = models.MultiLineStringField(blank=True, null=True)
# et_id = models.IntegerField(blank=True, null=True)
# et_right = models.CharField(max_length=80, blank=True, null=True)
# et_left = models.CharField(max_length=80, blank=True, null=True)
# adm2_l = models.CharField(max_length=50, blank=True, null=True)
# adm1_l = models.CharField(max_length=50, blank=True, null=True)
# adm0_l = models.CharField(max_length=50, blank=True, null=True)
# adm0_r = models.CharField(max_length=50, blank=True, null=True)
# adm1_r = models.CharField(max_length=50, blank=True, null=True)
# adm2_r = models.CharField(max_length=50, blank=True, null=True)
# admlevel = models.IntegerField(blank=True, null=True)
class Meta:
managed = False
db_table = 'jpn_admin_perf'
# class Meta:
# managed = False
# db_table = 'jpn_admin_perf'
# indexes = [
# models.Index(fields=['geom'], name='jpn_admin_perf_geom_idx'),
# # Add other fields for indexing as per the requirements
# ]
###
### Cities
###
class JpnSubPerf(models.Model):
geom = models.MultiPolygonField(blank=True, null=True)
adm0_en = models.CharField(max_length=254, blank=True, null=True)
adm0_ja = models.CharField(max_length=254, blank=True, null=True)
adm0_pcode = models.CharField(max_length=254, blank=True, null=True)
adm1_en = models.CharField(max_length=254, blank=True, null=True)
adm1_ja = models.CharField(max_length=254, blank=True, null=True)
adm1_pcode = models.CharField(max_length=254, blank=True, null=True)
adm2_ja = models.CharField(max_length=254, blank=True, null=True)
adm2_en = models.CharField(max_length=254, blank=True, null=True)
adm2_pcode = models.CharField(max_length=254, blank=True, null=True)
name_modified = models.CharField(max_length=254, blank=True, null=True)
area_name = models.CharField(max_length=254, blank=True, null=True)
list_order =models.IntegerField(default=0)
# ###
# ### Cities
# ###
# class JpnSubPerf(models.Model):
# geom = models.MultiPolygonField(blank=True, null=True)
# adm0_en = models.CharField(max_length=254, blank=True, null=True)
# adm0_ja = models.CharField(max_length=254, blank=True, null=True)
# adm0_pcode = models.CharField(max_length=254, blank=True, null=True)
# adm1_en = models.CharField(max_length=254, blank=True, null=True)
# adm1_ja = models.CharField(max_length=254, blank=True, null=True)
# adm1_pcode = models.CharField(max_length=254, blank=True, null=True)
# adm2_ja = models.CharField(max_length=254, blank=True, null=True)
# adm2_en = models.CharField(max_length=254, blank=True, null=True)
# adm2_pcode = models.CharField(max_length=254, blank=True, null=True)
# name_modified = models.CharField(max_length=254, blank=True, null=True)
# area_name = models.CharField(max_length=254, blank=True, null=True)
# list_order =models.IntegerField(default=0)
class Meta:
managed = False
db_table = 'jpn_sub_perf'
# class Meta:
# managed = False
# db_table = 'jpn_sub_perf'
# indexes = [
# models.Index(fields=['geom'], name='jpn_sub_perf_geom_idx'),
# # Add other fields for indexing as per the requirements
# ]
###
### Gifu Areas
@ -162,6 +175,10 @@ class GifuAreas(models.Model):
class Meta:
managed = False
db_table = 'gifu_areas'
indexes = [
models.Index(fields=['geom'], name='gifu_areas_geom_idx'),
# Add other fields for indexing as per the requirements
]
class UserUpload(models.Model):
@ -252,11 +269,11 @@ class SystemSettings(models.Model):
last_updated_at=models.DateTimeField(auto_now=True)
class Location(models.Model):
location_id=models.IntegerField(_('Location id'), blank=True, null=True)
location_id=models.IntegerField(_('Location id'), blank=True, null=True, db_index=True)
sub_loc_id=models.CharField(_('Sub location id'), max_length=2048, blank=True, null=True)
cp=models.FloatField(_('Check Point'), blank=False, null=True, default=0)
location_name=models.CharField(_('Location Name'), max_length=2048, default="--- 場所をお願いします --")
category=models.CharField(_('Category'), max_length=2048, blank=True, null=True)
category=models.CharField(_('Category'), max_length=2048, blank=True, null=True, db_index=True)
subcategory=models.CharField(_('Sub Category'), max_length=2048, blank=True, null=True)
zip=models.CharField(_('Zip code'), max_length=12, blank=True, null=True)
address = models.CharField(_('Address'), max_length=2048, blank=True, null=True)
@ -270,15 +287,15 @@ class Location(models.Model):
webcontents=models.CharField(_('Web Content'), max_length=2048, blank=True, null=True)
status=models.CharField(_('Status'),max_length=2048, blank=True, null=True)
portal=models.CharField(_('Portal'), max_length=2048,blank=True, null=True)
group=models.CharField(_('Group'), max_length=2048,blank=True, null=True)
group=models.CharField(_('Group'), max_length=2048,blank=True, null=True, db_index=True)
phone=models.CharField(_('Phone'), max_length=2048,blank=True, null=True)
fax=models.CharField(_('Fax'), max_length=2048, blank=True, null=True)
email=models.EmailField(_('Email'), max_length=2048,blank=True, null=True)
facility=models.CharField(_('Facility'), max_length=2048, blank=True, null=True)
remark=models.CharField(_('Remarks'), max_length=2048, blank=True, null=True)
tags=models.CharField(_('Tags'), max_length=2048, blank=True, null=True)
event_name = models.CharField(_('Event name'), max_length=2048, blank=True, null=True)
event_active = models.BooleanField(_("Is Event active"),default=True)
event_name = models.CharField(_('Event name'), max_length=2048, blank=True, null=True, db_index=True)
event_active = models.BooleanField(_("Is Event active"),default=True, db_index=True)
hidden_location = models.BooleanField(_("Is Hidden Location"),default=False)
auto_checkin = models.BooleanField(_("Is AutoCheckin"),default=False)
checkin_radius = models.FloatField(_("Checkin radious"), blank=True, null=True, default=15.0)
@ -300,6 +317,11 @@ class Location(models.Model):
last_updated_at=models.DateTimeField(auto_now=True)
geom=models.MultiPointField(srid=4326)
class Meta:
indexes = [
GistIndex(fields=['geom']),
]
def __str__(self):
return self.location_name