loadCountries.py 1.84 KB
Newer Older
Florent Chehab's avatar
Florent Chehab committed
1
from backend_app.models.country import Country
Florent Chehab's avatar
Florent Chehab committed
2 3 4 5 6 7 8 9 10 11
import os
import pandas as pd
from .loadGeneric import LoadGeneric


class LoadCountries(LoadGeneric):
    def __init__(self, admin):
        self.admin = admin

    def load(self):
12
        tmp = os.path.join(os.path.realpath(__file__), "../../assets/country.csv")
Florent Chehab's avatar
Florent Chehab committed
13
        country_file_loc = os.path.abspath(tmp)
14 15 16
        tmp = os.path.join(
            os.path.realpath(__file__), "../../assets/alpha-conv-table.csv"
        )
Florent Chehab's avatar
Florent Chehab committed
17 18
        conv_alpha_file_loc = os.path.abspath(tmp)

19 20 21
        country_pd = pd.read_csv(
            country_file_loc, sep=",", header=0, dtype=object
        ).fillna("")
Florent Chehab's avatar
Florent Chehab committed
22 23 24

        # Need to load the information for converting
        # Countries alpha-3 code to alpha-2 code
25
        data_conv = pd.read_csv(conv_alpha_file_loc, sep=",", header=0, na_filter=False)
Florent Chehab's avatar
Florent Chehab committed
26 27 28 29 30
        conv_alpha = {}
        for index, row in data_conv.iterrows():
            conv_alpha[row["alpha-3"]] = row["alpha-2"]

        for index, r in country_pd.iterrows():
31
            Iso_3 = str(r["ISO-alpha3 Code"])
Florent Chehab's avatar
Florent Chehab committed
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
            code_alpha_2 = None
            if Iso_3 in conv_alpha.keys():
                code_alpha_2 = conv_alpha[Iso_3]
            else:
                print("ignoring country :", Iso_3)
                continue

            country = Country(
                name=r["Country or Area"],
                iso_alpha2_code=code_alpha_2,
                iso_alpha3_code=Iso_3,
                region_name=r["Region Name"],
                region_un_code=r["Region Code"],
                sub_region_name=r["Sub-region Name"],
                sub_region_un_code=r["Sub-region Code"],
                intermediate_region_name=r["Intermediate Region Name"],
                intermediate_region_un_code=r["Intermediate Region Code"],
            )
            country.save()
51
            self.add_info_and_save(country, self.admin)