from django.core.management.base import BaseCommand, CommandError from factbook.models import Country import json class Command(BaseCommand): help = 'Closes the specified poll for voting' def add_arguments(self, parser): parser.add_argument('json', nargs="+") def handle(self, *args, **options): for x in options["json"]: try: print("Opening {0}".format(x), file=self.stdout) with open(x) as f: data = json.load(f) if 'Introduction' in data: description = data['Introduction']['Background']['text'] else: description = "" cname = data['Government'].get("Country name", {}) if cname and 'conventional short form' in cname: country_name = cname["conventional short form"]["text"] elif cname and 'Dutch short form' in cname: country_name = cname["Dutch short form"]["text"] else: print("skipping {0}".format(x), file=self.stderr) continue if 'conventional short form' in cname: country_name_long = cname["conventional short form"]["text"] c, created = Country.objects.get_or_create(name = country_name) c.name = country_name c.name_longform = country_name_long c.description = description coordinates_text = data["Geography"]["Geographic coordinates"]["text"] c.coordinates = coordinates_text latitude_text, longitude_text = coordinates_text.split(", ") c.longitude_degrees,c.longitude_minutes,c.longitude_direction = longitude_text.split() c.latitude_degrees,c.latitude_minutes,c.latitude_direction = latitude_text.split() c.save() except Exception as e: print('skipping file {0} because of {1}'.format(x,e), file=self.stderr) # for poll_id in options['poll_id']: # try: # poll = Poll.objects.get(pk=poll_id) # except Poll.DoesNotExist: # raise CommandError('Poll "%s" does not exist' % poll_id) # # poll.opened = False # poll.save() # # self.stdout.write(self.style.SUCCESS('Successfully closed poll "%s"' % poll_id))