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', '') ps_br = properties.get('ps_br', None) e_br = properties.get('e_br', None) tip_objekta = properties.get('tip_objekta', None) lucka_kapetanija = properties.get('lucka_kapetanija', None) fotografija = properties.get('fotografija', '') id_ais = properties.get('id_ais', None) simbol_oznaka = properties.get('simbol_oznaka', '') if not (isinstance(latitude, (float, int)) and isinstance(longitude, (float, int))): continue if not (naziv_objekta and latitude and longitude): 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)), ps_br = ps_br, e_br = e_br, tip_objekta = tip_objekta, lucka_kapetanija = lucka_kapetanija, fotografija = fotografija, id_ais = id_ais, simbol_oznaka = simbol_oznaka, ) 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))