Valuehorizon/valuehorizon-countries

View on GitHub
countries/data_io.py

Summary

Maintainability
A
45 mins
Test Coverage
from countries.models import Country
import pandas as pd
from django.utils.termcolors import colorize


def load_countries():
    df = pd.read_csv('https://raw.githubusercontent.com/Valuehorizon/valuehorizon-countries/master/data/data-2016-06-01.csv')
    df = df.fillna("")
    for indexvalue in df.index:

        # Getting raw data from csv
        code2 = df.ix[indexvalue]["Alpha-2 code"]
        code3 = df.ix[indexvalue]["Alpha-3 code"]
        full_name = df.ix[indexvalue]["Short name lower case"]
        if full_name == "":
            full_name = None
        num_code = df.ix[indexvalue]["Numeric code"]
        remark1 = df.ix[indexvalue]["Remark part 1"]
        remark2 = df.ix[indexvalue]["Remark part 2"]
        remark3 = df.ix[indexvalue]["Remark part 3"]
        remarks = df.ix[indexvalue]["Remarks"]
        com_name = df.ix[indexvalue]["Common name"]
        territory = df.ix[indexvalue]["Territory name"]

        # Getting ISO Status
        iso_dict = dict((v, k) for k, v in dict(Country.ISO_STATUS_CHOICES).iteritems())
        iso_raw = df.ix[indexvalue]["Status"]
        iso_stat = iso_dict[iso_raw]

        if df.ix[indexvalue]["Independent"] == "Yes":
            independent = True
        else:
            independent = False

        try:
            # Update data for existing country
            code_check = Country.objects.get(symbol_alpha2_code=code2)
            print "Country Code Already Exists for %s..." % str(com_name)
            code_check.name = full_name
            code_check.symbol_alpha3_code = code3
            code_check.is_independent = independent
            code_check.numeric_code = num_code
            code_check.remark_1 = remark1
            code_check.remark_2 = remark2
            code_check.remark_3 = remark3
            code_check.territory_name = territory
            code_check.iso_status = iso_stat
            code_check.common_name = com_name
            code_check.save()
        except Country.DoesNotExist:
            # Country does not exist..Add new country data
            print colorize("New Country Code Found...Save it!!", fg="red")
            print 'Creating Line'
            country_data = Country(name=full_name,
                                   symbol_alpha2_code=code2,
                                   symbol_alpha3_code=code3,
                                   is_independent=independent,
                                   numeric_code=num_code,
                                   remark_1=remark1,
                                   remark_2=remark2,
                                   remark_3=remark3,
                                   territory_name=territory,
                                   iso_status=iso_stat,
                                   common_name=com_name
                                   )
            print 'Done Creating Line'
            country_data.save()
            print colorize('Done Saving Line', fg="red")