53 lines
2.0 KiB
Python
53 lines
2.0 KiB
Python
import json
|
|
import os
|
|
import sys
|
|
|
|
from django.conf import settings
|
|
from django.core.management.base import BaseCommand
|
|
from django.contrib.gis.geos import Point
|
|
from plovidba_aplikacija.models import ObjektSigurnosti
|
|
from django.db import transaction
|
|
|
|
# dodani podaci
|
|
class Command(BaseCommand):
|
|
help = """
|
|
Programatically create entries for plovidba_aplikacija model ObjektSigurnosti
|
|
"""
|
|
def handle(self, *args, **options):
|
|
json_rpath = os.path.join(settings.RESOURCES_DIR, 'testnipodaci.json')
|
|
|
|
created_entries = 0
|
|
existing_entries = 0
|
|
|
|
with open(json_rpath, encoding='utf-8') as r:
|
|
data = json.load(r)
|
|
|
|
with transaction.atomic():
|
|
for feature in data.get('features', []):
|
|
properties = feature.get('properties', {})
|
|
geometry = feature.get('geometry', {})
|
|
|
|
latitude = geometry.get('coordinates', [])[1]
|
|
longitude = geometry.get('coordinates', [])[0]
|
|
naziv_objekta = properties.get('naziv_objekta', '')
|
|
|
|
if not (isinstance(latitude, (float, int)) and isinstance(longitude, (float, int))):
|
|
print("Skipping invalid coordinates.")
|
|
continue
|
|
|
|
print(f"Latitude: {latitude}, Longitude: {longitude}, Naziv Objekta: {naziv_objekta}")
|
|
|
|
|
|
obj, created = ObjektSigurnosti.objects.get_or_create(
|
|
naziv=naziv_objekta,
|
|
lokacija=Point(float(longitude), float(latitude))
|
|
)
|
|
if created:
|
|
created_entries +=1
|
|
print("Kreiran OS {} - {}".format(obj.naziv, obj.lokacija))
|
|
else:
|
|
existing_entries += 1
|
|
print("Existing OS {} - {}".format(obj.naziv, obj.lokacija))
|
|
|
|
print("Created: {}".format(created_entries))
|
|
print("Existing:".format(existing_entries)) |