django-zadatak/plovidba_aplikacija/management/commands/import_objekti_sigurnosti.py
2024-01-10 12:44:55 +01:00

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))