def handle(self, *args, **options): """ The command's main. """ try: assert type(options['file_name']) is list assert len(options['file_name']) == 1 assert type(options['file_name'][0]) is str except AssertionError: raise CommandError("Please refer to --help") else: file_name = options['file_name'][0] with open(file_name, 'r') as f: for line in f: items = line.split() try: assert len(items) == 3 iso_code = str(items[0]) latitude = float(items[1]) longitude = float(items[2]) except (AssertionError, TypeError): self.stdout.write("Skipped incomprehensible line") continue try: language = Language.objects.get(iso_code=iso_code) except Language.DoesNotExist: language = Language() language.iso_code = iso_code language.latitude = latitude language.longitude = longitude language.save() self.stdout.write("Updated location of "+ iso_code) self.stdout.write("Harvest done")
def add_language(short, full, name): if (API_KEY != request.args.get('api')): return jsonify({'error': 'Wrong api key'}), 400 lang = Language(short=short, full=full, name=name) lang.save() return '200 OK'
def handle(self, *args, **options): """ The command's main. """ """Some input validation.""" try: assert type(options['tsv_file']) is list assert len(options['tsv_file']) == 1 assert type(options['tsv_file'][0]) is str except AssertionError: raise CommandError("Please refer to --help") else: tsv_file = options['tsv_file'][0] try: assert type(options['iso_codes_file']) is str assert len(options['iso_codes_file']) > 0 except AssertionError: raise CommandError("Please refer to --help") else: self.iso_codes_file = options['iso_codes_file'] """Extract languages.""" extracted = set() with open(tsv_file, 'r') as f: reader = csv.reader(f, delimiter='\t') count = -1 for row in reader: count += 1 if count == 0: continue try: assert row[2].find(':') > 0 assert row[3].find(':') > 0 except AssertionError: raise CommandError("File does not conform to format.") extracted.add(row[2].split(':')[0]) extracted.add(row[3].split(':')[0]) self.stdout.write("Input file is OK") """Add them to the database.""" count = 0 for iso_code in extracted: if len(iso_code) == 2: # iso 639-1 iso_639_1 = iso_code try: iso_639_3 = self.get_iso_639_3(iso_639_1) except ValueError: self.stderr.write("Skipped " + iso_639_1 + ": ISO 639-3 code not found.") continue else: # iso 639-3 iso_639_1 = None iso_639_3 = iso_code try: Language.objects.get(iso_639_3=iso_639_3) except Language.DoesNotExist: lang = Language() lang.iso_639_1 = iso_639_1 lang.iso_639_3 = iso_639_3 lang.save() count += 1 self.stdout.write("Added " + iso_639_3 + " to database.") else: self.stdout.write("Skipped " + iso_639_3 + ": already in database.") self.stdout.write("Done. Languages added: " + str(count))