コード例 #1
0
	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")
コード例 #2
0
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'
コード例 #3
0
    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))