This commit is contained in:
2022-03-07 16:51:01 +05:30
parent 48176ab935
commit caf56c2418
7 changed files with 154 additions and 206 deletions

View File

@ -2,6 +2,6 @@ from django.utils.translation import gettext_lazy as _
LAYER_CHOICES = (
(1, _("locations")),
(2, _("locations_line")),
(3, _("locations_polygon")),
(2, _("Location_line")),
(3, _("Location_polygon")),
)

View File

@ -27,51 +27,11 @@ location_mapping = {
location_line_mapping = {
'location_id' : 'loc_id',
'location_name' : 'loc_name',
'category': 'category',
'zip':'zip',
'address':'address',
'prefecture':'prefecture',
'area':'area',
'city':'city',
'photos':'photos',
'videos':'videos',
'webcontents':'webcontent',
'status':'status',
'portal':'portal',
'group':'group',
'phone':'phone',
'fax':'fax',
'email':'email',
'facility':'facility',
'remark':'remark',
'parammeters':'params',
'tags':'tags',
'geom': 'LINESTRING',
}
location_polygon_mapping = {
'location_id' : 'loc_id',
'location_name' : 'loc_name',
'category': 'category',
'zip':'zip',
'address':'address',
'prefecture':'prefecture',
'area':'area',
'city':'city',
'photos':'photos',
'videos':'videos',
'webcontents':'webcontent',
'status':'status',
'portal':'portal',
'group':'group',
'phone':'phone',
'fax':'fax',
'email':'email',
'facility':'facility',
'remark':'remark',
'parammeters':'params',
'tags':'tags',
'geom': 'POLYGON',
}

View File

@ -1,4 +1,4 @@
# Generated by Django 3.2.9 on 2022-02-28 05:04
# Generated by Django 3.2.9 on 2022-03-07 07:10
from django.conf import settings
import django.contrib.gis.db.models.fields
@ -19,7 +19,7 @@ class Migration(migrations.Migration):
name='Location',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('location_id', models.IntegerField(blank=True, null=True, verbose_name='Location Name')),
('location_id', models.IntegerField(blank=True, null=True, verbose_name='Location id')),
('location_name', models.CharField(max_length=255, verbose_name='Location Name')),
('category', models.CharField(blank=True, max_length=255, null=True, verbose_name='Category')),
('zip', models.CharField(blank=True, max_length=12, null=True, verbose_name='Zip code')),
@ -27,9 +27,9 @@ class Migration(migrations.Migration):
('prefecture', models.CharField(blank=True, max_length=255, null=True, verbose_name='Prefecture')),
('area', models.CharField(blank=True, max_length=255, null=True, verbose_name='Area')),
('city', models.CharField(blank=True, max_length=255, null=True, verbose_name='City')),
('photos', models.JSONField(blank=True, null=True, verbose_name='Phptos')),
('videos', models.JSONField(blank=True, null=True, verbose_name='Videos')),
('webcontents', models.JSONField(blank=True, null=True, verbose_name='Web Content')),
('photos', models.CharField(blank=True, max_length=255, null=True, verbose_name='Phptos')),
('videos', models.CharField(blank=True, max_length=255, null=True, verbose_name='Videos')),
('webcontents', models.CharField(blank=True, max_length=255, null=True, verbose_name='Web Content')),
('status', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
('portal', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
('group', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
@ -63,7 +63,7 @@ class Migration(migrations.Migration):
('name', models.CharField(max_length=255, verbose_name='Shape Layer')),
('file', models.FileField(blank=True, upload_to='%y%m%d')),
('uploaded_date', models.DateField(auto_now_add=True)),
('layerof', models.IntegerField(choices=[(1, 'locations')], default=1)),
('layerof', models.IntegerField(choices=[(1, 'locations'), (2, 'Location_line'), (3, 'Location_polygon')], default=1)),
('table_name', models.CharField(blank=True, max_length=255, verbose_name='Table name')),
],
),
@ -159,6 +159,68 @@ class Migration(migrations.Migration):
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
),
migrations.CreateModel(
name='Location_polygon',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('location_id', models.IntegerField(blank=True, null=True, verbose_name='Location id')),
('location_name', models.CharField(max_length=255, verbose_name='Location Name')),
('category', models.CharField(blank=True, max_length=255, null=True, verbose_name='Category')),
('zip', models.CharField(blank=True, max_length=12, null=True, verbose_name='Zip code')),
('address', models.CharField(blank=True, max_length=512, null=True, verbose_name='Address')),
('prefecture', models.CharField(blank=True, max_length=255, null=True, verbose_name='Prefecture')),
('area', models.CharField(blank=True, max_length=255, null=True, verbose_name='Area')),
('city', models.CharField(blank=True, max_length=255, null=True, verbose_name='City')),
('photos', models.CharField(blank=True, max_length=255, null=True, verbose_name='Phptos')),
('videos', models.CharField(blank=True, max_length=255, null=True, verbose_name='Videos')),
('webcontents', models.CharField(blank=True, max_length=255, null=True, verbose_name='Web Content')),
('status', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
('portal', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
('group', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
('phone', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
('fax', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
('email', models.EmailField(blank=True, max_length=255, null=True, verbose_name='Email')),
('facility', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
('remark', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
('tags', models.CharField(blank=True, max_length=512, null=True, verbose_name='Tags')),
('parammeters', models.CharField(blank=True, max_length=512, null=True, verbose_name='Parameters')),
('created_at', models.DateTimeField(auto_now_add=True)),
('last_updated_at', models.DateTimeField(auto_now=True)),
('geom', django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=4326)),
('last_updated_user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='location_polygon_updated_user', to=settings.AUTH_USER_MODEL)),
],
),
migrations.CreateModel(
name='Location_line',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('location_id', models.IntegerField(blank=True, null=True, verbose_name='Location id')),
('location_name', models.CharField(max_length=255, verbose_name='Location Name')),
('category', models.CharField(blank=True, max_length=255, null=True, verbose_name='Category')),
('zip', models.CharField(blank=True, max_length=12, null=True, verbose_name='Zip code')),
('address', models.CharField(blank=True, max_length=512, null=True, verbose_name='Address')),
('prefecture', models.CharField(blank=True, max_length=255, null=True, verbose_name='Prefecture')),
('area', models.CharField(blank=True, max_length=255, null=True, verbose_name='Area')),
('city', models.CharField(blank=True, max_length=255, null=True, verbose_name='City')),
('photos', models.CharField(blank=True, max_length=255, null=True, verbose_name='Phptos')),
('videos', models.CharField(blank=True, max_length=255, null=True, verbose_name='Videos')),
('webcontents', models.CharField(blank=True, max_length=255, null=True, verbose_name='Web Content')),
('status', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
('portal', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
('group', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
('phone', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
('fax', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
('email', models.EmailField(blank=True, max_length=255, null=True, verbose_name='Email')),
('facility', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
('remark', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
('tags', models.CharField(blank=True, max_length=512, null=True, verbose_name='Tags')),
('parammeters', models.CharField(blank=True, max_length=512, null=True, verbose_name='Parameters')),
('created_at', models.DateTimeField(auto_now_add=True)),
('last_updated_at', models.DateTimeField(auto_now=True)),
('geom', django.contrib.gis.db.models.fields.MultiLineStringField(blank=True, null=True, srid=4326)),
('last_updated_user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='location_line_updated_user', to=settings.AUTH_USER_MODEL)),
],
),
migrations.CreateModel(
name='JoinedEvent',
fields=[

View File

@ -1,18 +0,0 @@
# Generated by Django 3.2.9 on 2022-02-28 12:18
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rog', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='location',
name='location_id',
field=models.IntegerField(blank=True, null=True, verbose_name='Location id'),
),
]

View File

@ -1,99 +0,0 @@
# Generated by Django 3.2.9 on 2022-03-02 13:40
from django.conf import settings
import django.contrib.gis.db.models.fields
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('rog', '0002_alter_location_location_id'),
]
operations = [
migrations.AlterField(
model_name='location',
name='photos',
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Phptos'),
),
migrations.AlterField(
model_name='location',
name='videos',
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Videos'),
),
migrations.AlterField(
model_name='location',
name='webcontents',
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Web Content'),
),
migrations.AlterField(
model_name='shapelayers',
name='layerof',
field=models.IntegerField(choices=[(1, 'locations'), (2, 'locations_line'), (3, 'locations_polygon')], default=1),
),
migrations.CreateModel(
name='Location_polygon',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('location_id', models.IntegerField(blank=True, null=True, verbose_name='Location id')),
('location_name', models.CharField(max_length=255, verbose_name='Location Name')),
('category', models.CharField(blank=True, max_length=255, null=True, verbose_name='Category')),
('zip', models.CharField(blank=True, max_length=12, null=True, verbose_name='Zip code')),
('address', models.CharField(blank=True, max_length=512, null=True, verbose_name='Address')),
('prefecture', models.CharField(blank=True, max_length=255, null=True, verbose_name='Prefecture')),
('area', models.CharField(blank=True, max_length=255, null=True, verbose_name='Area')),
('city', models.CharField(blank=True, max_length=255, null=True, verbose_name='City')),
('photos', models.CharField(blank=True, max_length=255, null=True, verbose_name='Phptos')),
('videos', models.CharField(blank=True, max_length=255, null=True, verbose_name='Videos')),
('webcontents', models.CharField(blank=True, max_length=255, null=True, verbose_name='Web Content')),
('status', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
('portal', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
('group', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
('phone', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
('fax', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
('email', models.EmailField(blank=True, max_length=255, null=True, verbose_name='Email')),
('facility', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
('remark', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
('tags', models.CharField(blank=True, max_length=512, null=True, verbose_name='Tags')),
('parammeters', models.CharField(blank=True, max_length=512, null=True, verbose_name='Parameters')),
('created_at', models.DateTimeField(auto_now_add=True)),
('last_updated_at', models.DateTimeField(auto_now=True)),
('geom', django.contrib.gis.db.models.fields.MultiPolygonField(srid=4326)),
('last_updated_user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='location_polygon_updated_user', to=settings.AUTH_USER_MODEL)),
],
),
migrations.CreateModel(
name='Location_line',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('location_id', models.IntegerField(blank=True, null=True, verbose_name='Location id')),
('location_name', models.CharField(max_length=255, verbose_name='Location Name')),
('category', models.CharField(blank=True, max_length=255, null=True, verbose_name='Category')),
('zip', models.CharField(blank=True, max_length=12, null=True, verbose_name='Zip code')),
('address', models.CharField(blank=True, max_length=512, null=True, verbose_name='Address')),
('prefecture', models.CharField(blank=True, max_length=255, null=True, verbose_name='Prefecture')),
('area', models.CharField(blank=True, max_length=255, null=True, verbose_name='Area')),
('city', models.CharField(blank=True, max_length=255, null=True, verbose_name='City')),
('photos', models.CharField(blank=True, max_length=255, null=True, verbose_name='Phptos')),
('videos', models.CharField(blank=True, max_length=255, null=True, verbose_name='Videos')),
('webcontents', models.CharField(blank=True, max_length=255, null=True, verbose_name='Web Content')),
('status', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
('portal', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
('group', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
('phone', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
('fax', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
('email', models.EmailField(blank=True, max_length=255, null=True, verbose_name='Email')),
('facility', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
('remark', models.CharField(blank=True, max_length=255, null=True, verbose_name='Status')),
('tags', models.CharField(blank=True, max_length=512, null=True, verbose_name='Tags')),
('parammeters', models.CharField(blank=True, max_length=512, null=True, verbose_name='Parameters')),
('created_at', models.DateTimeField(auto_now_add=True)),
('last_updated_at', models.DateTimeField(auto_now=True)),
('geom', django.contrib.gis.db.models.fields.MultiLineStringField(srid=4326)),
('last_updated_user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='location_line_updated_user', to=settings.AUTH_USER_MODEL)),
],
),
]

View File

@ -1,3 +1,6 @@
from dataclasses import field
from pyexpat import model
from sre_constants import CH_LOCALE
from typing import ChainMap
from django.contrib.gis.db import models
from django.utils.translation import gettext_lazy as _
@ -14,6 +17,7 @@ from sqlalchemy.sql.functions import mode
from .mapping import location_mapping, location_line_mapping, location_polygon_mapping
from .choices import LAYER_CHOICES
from django.contrib.gis.utils import LayerMapping
from django.apps import apps
env = environ.Env(DEBUG=(bool, False))
environ.Env.read_env(env_file=".env")
@ -84,37 +88,6 @@ class Location(models.Model):
return self.location_name
class Location(models.Model):
location_id=models.IntegerField(_('Location id'), blank=True, null=True)
location_name=models.CharField(_('Location Name'), max_length=255)
category=models.CharField(_('Category'), max_length=255, blank=True, null=True)
zip=models.CharField(_('Zip code'), max_length=12, blank=True, null=True)
address = models.CharField(_('Address'), max_length=512, blank=True, null=True)
prefecture = models.CharField(_('Prefecture'), max_length=255, blank=True, null=True)
area= models.CharField(_('Area'), max_length=255, blank=True, null=True)
city= models.CharField(_('City'), max_length=255, blank=True, null=True)
photos=models.CharField(_('Phptos'), max_length=255, blank=True, null=True)
videos=models.CharField(_('Videos'), max_length=255, blank=True, null=True)
webcontents=models.CharField(_('Web Content'), max_length=255, blank=True, null=True)
status=models.CharField(_('Status'),max_length=255, blank=True, null=True)
portal=models.CharField(_('Status'), max_length=255,blank=True, null=True)
group=models.CharField(_('Status'), max_length=255,blank=True, null=True)
phone=models.CharField(_('Status'), max_length=255,blank=True, null=True)
fax=models.CharField(_('Status'), max_length=255, blank=True, null=True)
email=models.EmailField(_('Email'), max_length=255,blank=True, null=True)
facility=models.CharField(_('Status'), max_length=255, blank=True, null=True)
remark=models.CharField(_('Status'), max_length=255, blank=True, null=True)
tags=models.CharField(_('Tags'), max_length=512, blank=True, null=True)
parammeters=models.CharField(_('Parameters'), max_length=512, blank=True, null=True)
created_at=models.DateTimeField(auto_now_add=True)
last_updated_user=models.ForeignKey(User, related_name="location_updated_user", on_delete=models.DO_NOTHING,blank=True, null=True)
last_updated_at=models.DateTimeField(auto_now=True)
geom=models.MultiPointField(srid=4326)
def __str__(self):
return self.location_name
class Location_line(models.Model):
location_id=models.IntegerField(_('Location id'), blank=True, null=True)
location_name=models.CharField(_('Location Name'), max_length=255)
@ -140,10 +113,11 @@ class Location_line(models.Model):
created_at=models.DateTimeField(auto_now_add=True)
last_updated_user=models.ForeignKey(User, related_name="location_line_updated_user", on_delete=models.DO_NOTHING,blank=True, null=True)
last_updated_at=models.DateTimeField(auto_now=True)
geom=models.MultiLineStringField(srid=4326)
geom=models.MultiLineStringField(srid=4326, blank=True, null=True)
def __str__(self):
return self.location_name
return str(self.location_id)
class Location_polygon(models.Model):
@ -171,10 +145,10 @@ class Location_polygon(models.Model):
created_at=models.DateTimeField(auto_now_add=True)
last_updated_user=models.ForeignKey(User, related_name="location_polygon_updated_user", on_delete=models.DO_NOTHING,blank=True, null=True)
last_updated_at=models.DateTimeField(auto_now=True)
geom=models.MultiPolygonField(srid=4326)
geom=models.MultiPolygonField(srid=4326, blank=True, null=True)
def __str__(self):
return self.location_name
return str(self.location_name)
@ -327,9 +301,9 @@ def getMappingforModel(tbl, shp):
if tbl == 1:
return LayerMapping(Location, shp, location_mapping, transform=False)
elif tbl == 2:
return LayerMapping(Location_line, location_line_mapping, transform=False)
return LayerMapping(Location_line, shp, location_line_mapping, transform=False)
else:
return LayerMapping(Location_polygon, location_polygon_mapping, transform=False)
return LayerMapping(Location_polygon, shp, location_polygon_mapping, transform=False)
class ShapeLayers(models.Model):
@ -372,11 +346,80 @@ def publish_date(sender, instance, created, **kwargs):
if epsg is None:
epsg=4326
print("### shape file is ###")
lm2 = getMappingforModel(instance.layerof, shp)
print("### shape file is ###")
lm2.save(strict=True, verbose=True)
os.remove(shp)
except Exception as e:
print('##################',e)
try:
csv = glob.glob(r'{}/**/*.csv'.format(file_path), recursive=True)[0]
mdl = apps.get_model(app_label="rog", model_name=LAYER_CHOICES[instance.layerof -1][1])
print(mdl)
print(f"#### instance.layerof - {instance.layerof}")
with open(csv, "r") as txt_file:
lns = txt_file.readlines()
for ln in lns:
fields = ln.split(",")
if instance.layerof == 12:
updateLineTable(mdl, fields)
if instance.layerof == 3:
updatePolygonTable(mdl, fields)
except Exception as e:
print('##################',e)
def updateLineTable(mdl, fields):
#print(f"Updated {fields[0]} - {fields[1]}")
mdl.objects.filter(location_id = fields[0]).update(
location_name=fields[1],
category=fields[2],
zip=fields[3],
address=fields[4],
prefecture=fields[5],
area=fields[6],
city=fields[7],
photos=fields[8],
videos=fields[9],
webcontents=fields[10],
status=fields[11],
portal=fields[12],
group=fields[13],
phone=fields[14],
fax=fields[15],
email=fields[16],
facility=fields[17],
remark=fields[18],
tags=fields[19],
parammeters=fields[20]
)
def updatePolygonTable(mdl, fields):
#print(f"Updated {fields[0]} - {fields[1]}")
mdl.objects.filter(location_id = fields[0]).update(
location_name=fields[1],
category=fields[2],
zip=fields[3],
address=fields[4],
prefecture=fields[5],
area=fields[6],
city=fields[7],
photos=fields[8],
videos=fields[9],
webcontents=fields[10],
status=fields[11],
portal=fields[12],
group=fields[13],
phone=fields[14],
fax=fields[15],
email=fields[16],
facility=fields[17],
remark=fields[18],
tags=fields[19],
parammeters=fields[20]
)