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