Esempio n. 1
0
    def Build(self):
        if 'buy-ods-path' not in self.mConfig:
            return

        buy_ods_path = self.mConfig['buy-ods-path']
        if platform.system().lower().startswith('cygwin'):
            buy_ods_path = buy_ods_path.replace(
                '{DOCUMENTS}', '/cygdrive/d/Users/Mike/Documents')
        elif platform.system().lower().startswith('linux'):
            buy_ods_path = buy_ods_path.replace('{DOCUMENTS}',
                                                '/mnt/d/Users/Mike/Documents')
        elif platform.system().lower().startswith('windows'):
            buy_ods_path = buy_ods_path.replace('{DOCUMENTS}',
                                                'D:/Users/Mike/Documents')

        input_path = Path(buy_ods_path).resolve()

        if not input_path.exists():
            print(Back.RED + f'[CONVERT] input path: {input_path}')
            return

        print(f'[CONVERT] input path: {input_path}')

        self.mInputData = pe.get_data(str(input_path))
        self.mInputDataCTO = self.mInputData['cto data']
        self.mInputDataPEA = self.mInputData['pea data']

        self._FindIndexes()
        isins = self._FindISINs()
        self._BuildCompanies(isins)
Esempio n. 2
0
def test_issue_14():
    # pyexcel issue 61
    test_file = "issue_61.ods"
    data = get_data(get_fixtures(test_file),
                    skip_empty_rows=True,
                    library="pyexcel-odsr")
    eq_(data["S-LMC"], [[u"aaa"], [0]])
Esempio n. 3
0
TARGET = "../../fw/sources/modules/comm/comm.h"
SHEET = "Commands"
REGEX = '\/\*.*$\ntypedef enum {[ \t\w\d\/\*,_=\n\r]*} comm_cmd_id_t;'
COL_ID = 0
COL_NAME = 1
COL_DESC = 2

desc = "Generate comm_cmd_id_t table from %s to %s" % (SOURCE, TARGET)
parser = argparse.ArgumentParser(description=desc)
parser.add_argument('-d, --dry-run',
                    dest="dry",
                    action='store_true',
                    help="Don't modify the file, just print to console")
args = parser.parse_args()

data = get_data(SOURCE)
enum = "/** Command IDs - autogenerated by sw/generators/comm_cmd.py */\n"
enum += "typedef enum {\n"
block_space = False

for line in data[SHEET]:
    if len(line) == 1 or (len(line) >= 3 and len(line[COL_ID])
                          and len(line[COL_NAME]) == 0
                          and len(line[COL_DESC]) == 0):
        if block_space:
            enum += "\n"
        enum += "/* " + line[COL_ID] + "*/\n"
        block_space = True
        continue

    if len(line) < 3:
Esempio n. 4
0
def test_issue_2():
    test_file = "multinode-in-a-p.ods"
    data = get_data(get_fixtures(test_file),
                    skip_empty_rows=True,
                    library="pyexcel-odsr")
    eq_(data["product.template"][1][1], "PRODUCT NAME PMP")
Esempio n. 5
0
def test_issue_1():
    test_file = "12_day_as_time.ods"
    data = get_data(get_fixtures(test_file),
                    skip_empty_rows=True,
                    library="pyexcel-odsr")
    eq_(data["Sheet1"][0][0].days, 12)
Esempio n. 6
0
def test_bug_fix_for_issue_1():
    data = get_data(get_fixtures("repeated.ods"), library="pyexcel-odsr")
    eq_(data["Sheet1"], [["repeated", "repeated", "repeated", "repeated"]])
Esempio n. 7
0
def import_table(request, app, table):

    if request.FILES:
        if 'import_file' in request.FILES:
            data = request.FILES['import_file']
            name = data.name
            ext = name.split('.')[-1].lower()
            model = import_model(app, table)

            table = []

            if ext in ('xlsx', 'xls', 'ods'):
                if ext == 'ods':
                    d = get_data(data)
                    #print("F0", d)
                    #buf = json_dumps(d)
                    for key in d:
                        table = d[key]
                        break
                else:
                    first_line = True
                    width = 0

                    file_name = get_temp_filename("temp.xlsx")
                    f = open(file_name, 'wb')
                    f.write(data.read())
                    f.close()

                    workbook = openpyxl.load_workbook(filename=file_name,
                                                      read_only=True)
                    worksheets = workbook.get_sheet_names()
                    worksheet = workbook.get_sheet_by_name(worksheets[0])

                    for row in list(worksheet.rows):
                        if first_line:
                            first_line = False
                            buf = []
                            i = 0
                            for pos in row:
                                value = pos.value
                                if value:
                                    buf.append(value)
                                else:
                                    break
                                i += 1
                            if len(buf) > 0:
                                count = len(buf)
                                table.append(buf)
                            else:
                                break
                        else:
                            if row[0].value:
                                buf = []
                                i = 0
                                for pos in row:
                                    if i >= count:
                                        break
                                    buf.append(pos.value)
                                    i += 1
                                table.append(buf)
                            else:
                                break
                    os.remove(file_name)
            elif ext in ('txt', 'csv'):
                first_line = True
                sep_list = [
                    '\t',
                    ';',
                    ',',
                    '|',
                ]
                sep = None

                txt = data.read().decode('utf-8').replace('\r', '').split('\n')
                for line in txt:
                    for pos in sep_list:
                        if pos in line:
                            sep = pos
                            break
                    break

                if sep:
                    csv_reader = csv.reader(txt, delimiter=sep)
                    for row in csv_reader:
                        table.append(row)

            if table and len(table) > 1:
                header = list([pos.strip() for pos in table[0] if pos])
                tree = False
                tmp = []
                for pos in header:
                    if not pos in tmp:
                        tmp.append(pos)
                    else:
                        tree = True
                        id1 = tmp.index(pos)
                        id2 = len(tmp)
                        break

                for row in table[1:]:
                    if len(row) == len(header):
                        x = model()
                        parent = None
                        for index, (attr_name,
                                    value) in enumerate(zip(header, row)):
                            if tree:
                                if index == id1:
                                    if row[id2]:
                                        objs = model.objects.filter(
                                            **{attr_name: value})
                                        if len(objs) == 1:
                                            parent = objs[0]
                                    else:
                                        setattr(x, attr_name, value)
                                elif index == id2:
                                    if row[id2]:
                                        setattr(x, attr_name, value)
                                        if parent:
                                            setattr(x, 'parent', parent)
                                else:
                                    setattr(x, attr_name, value)
                            else:
                                setattr(x, attr_name, value)
                        x.save()

            return {'redirect': '/schsys/ok/'}
        else:
            form = ImportTableForm(request.POST, request.FILES)
    else:
        form = ImportTableForm()

    return {'form': form}
Esempio n. 8
0
    def handle(self, **options):

        self.stdout.write("Importing dataset")

        if options.get("url") and options.get("file"):
            self.stderr.write("Please specify a url or file, not both")
            return exit(1)
        if not options.get("url") and not options.get("file"):
            self.stderr.write("Must give a url or file")
            return exit(1)

        if options.get("url"):
            response = requests.get(options["url"])

            buffer = BytesIO(response.content)

            data = get_data(buffer)
        else:
            data = get_data(options["file"])

        blank_list = [""] * 253

        if "Overzicht_test-PL'en" not in data:
            self.stderr.write(
                "Ods File should contain Overzicht_test-PL'en table")
            return exit(1)
        if "Toelichting" not in data:
            self.stderr.write("Ods File should contain Toelichting table")
            return exit(1)

        for index, row in enumerate(data["Toelichting"][33:286]):
            if len(row) > 0:
                if row[-1] == "RNI":
                    assert (
                        expected_headers[index] == row[-2]
                    ), f"At index {index}: {row[-2]} does not match expected {expected_headers[index]}"
                else:
                    assert (
                        expected_headers[index] == row[-1]
                    ), f"At index {index}: {row[-1]} does not match expected {expected_headers[index]}"
            else:
                assert (
                    [] == row
                ), f"At index {index}: {row} does not match expected {expected_headers[index]}"

        persoon = None
        for index, row in enumerate(data["Overzicht_test-PL'en"][1:]):

            # Ensure there are always at least 253 items in list to prevent IndexError
            row += blank_list

            if any(row[1:24]):
                if not Persoon.objects.filter(
                        burgerservicenummer_persoon=row[1]).exists():
                    persoon = Persoon.objects.create(
                        a_nummer_persoon=row[0],
                        burgerservicenummer_persoon=row[1],
                        voornamen_persoon=row[2],
                        adellijke_titel_predikaat_persoon=row[3],
                        voorvoegsel_geslachtsnaam_persoon=row[4],
                        geslachtsnaam_persoon=row[5],
                        geboortedatum_persoon=row[6],
                        geboorteplaats_persoon=row[7],
                        geboorteland_persoon=row[8],
                        geslachtsaanduiding=row[9],
                        vorig_a_nummer=row[10],
                        volgend_a_nummer=row[11],
                        aanduiding_naamgebruik=row[12],
                        registergemeente_akte_waaraan_gegevens=row[13],
                        aktenummer_van_de_akte=row[14],
                        gemeente_waar_de_gegevens_over_persoon=row[15],
                        datum_van_de_ontlening_van_de_gegevens_over_persoon=row[
                            16],
                        beschrijving_van_het_document=row[17],
                        aanduiding_gegevens_in_onderzoek=row[18],
                        datum_ingang_onderzoek=row[19],
                        datum_einde_onderzoek=row[20],
                        indicatie_onjuist_dan_wel_strijdigheid_met_de_openbare_orde
                        =row[21],
                        ingangsdatum_geldigheid_met_betrekking=row[22],
                        datum_van_opneming_met_betrekking=row[23],
                        rni_deelnemer=row[24],
                    )

            if any(row[27:48]):
                if not Ouder.objects.filter(a_nummer_ouder=row[27]).exists():
                    Ouder.objects.create(
                        persoon=persoon,
                        a_nummer_ouder=row[27],
                        burgerservicenummer_ouder=row[28],
                        voornamen_ouder=row[29],
                        adellijke_titel_predikaat_ouder=row[30],
                        voorvoegsel_geslachtsnaam_ouder=row[31],
                        geslachtsnaam_ouder=row[32],
                        geboortedatum_ouder=row[33],
                        geboorteplaats_ouder=row[34],
                        geboorteland_ouder=row[35],
                        geslachtsaanduiding_ouder=row[36],
                        datum_ingang_familierechtelijke_betrekking_ouder=row[
                            37],
                        registergemeente_akte_waaraan_gegevens_over_ouder_ontleend_zijn
                        =row[38],
                        aktenummer_van_de_akte_waaraan_gegevens=row[39],
                        gemeente_waar_de_gegevens_over_ouder=row[40],
                        datum_van_de_ontlening_van_de_gegevens_over_ouder=row[
                            41],
                        beschrijving_van_het_document_waaraan_de_gegevens=row[
                            42],
                        aanduiding_gegevens_in_onderzoek=row[43],
                        datum_ingang_onderzoek=row[44],
                        datum_einde_onderzoek=row[45],
                        indicatie_onjuist_dan_wel_strijdigheid_met_de_openbare_orde
                        =row[46],
                        ingangsdatum_geldigheid_met_betrekking=row[47],
                        datum_van_opneming_met_betrekking=row[48],
                    )

            if any(row[50:71]):
                if not Ouder.objects.filter(
                        burgerservicenummer_ouder=row[51]).exists():
                    Ouder.objects.create(
                        persoon=persoon,
                        a_nummer_ouder=row[50],
                        burgerservicenummer_ouder=row[51],
                        voornamen_ouder=row[52],
                        adellijke_titel_predikaat_ouder=row[53],
                        voorvoegsel_geslachtsnaam_ouder=row[54],
                        geslachtsnaam_ouder=row[55],
                        geboortedatum_ouder=row[56],
                        geboorteplaats_ouder=row[57],
                        geboorteland_ouder=row[58],
                        geslachtsaanduiding_ouder=row[59],
                        datum_ingang_familierechtelijke_betrekking_ouder=row[
                            60],
                        registergemeente_akte_waaraan_gegevens_over_ouder_ontleend_zijn
                        =row[61],
                        aktenummer_van_de_akte_waaraan_gegevens=row[62],
                        gemeente_waar_de_gegevens_over_ouder=row[63],
                        datum_van_de_ontlening_van_de_gegevens_over_ouder=row[
                            64],
                        beschrijving_van_het_document_waaraan_de_gegevens=row[
                            65],
                        aanduiding_gegevens_in_onderzoek=row[66],
                        datum_ingang_onderzoek=row[67],
                        datum_einde_onderzoek=row[68],
                        indicatie_onjuist_dan_wel_strijdigheid_met_de_openbare_orde
                        =row[69],
                        ingangsdatum_geldigheid_met_betrekking=row[70],
                        datum_van_opneming_met_betrekking=row[71],
                    )

            if any(row[50:71]):
                Nationaliteit.objects.create(
                    persoon=persoon,
                    nationaliteit=row[73],
                    reden_opname_nationaliteit=row[74],
                    reden_beeindigen_nationaliteit=row[75],
                    aanduiding_bijzonder_nederlanderschap=row[76],
                    eu_persoonsummer=row[77],
                    gemeente_waar_de_gegevens_over_nationaliteit=row[78],
                    datum_van_de_ontlening=row[79],
                    beschrijving_van_het_document=row[80],
                    aanduiding_gegevens_in_onderzoek=row[81],
                    datum_ingang_onderzoek=row[82],
                    datum_einde_onderzoek=row[83],
                    indicatie_onjuist=row[84],
                    datum_van_ingang_geldigheid_met_betrekking=row[85],
                    datum_van_opneming_met_betrekking=row[86],
                    rni_deelnemer=row[87],
                    omschrijving_verdrag=row[88],
                )

            if any(row[90:118]):
                if not Partnerschap.objects.filter(
                        burgerservicenummer_echtgenoot_geregistreerd_partner=
                        row[91]).exists():
                    Partnerschap.objects.create(
                        persoon=persoon,
                        a_nummer_echtgenoot_geregistreerd_partner=row[90],
                        burgerservicenummer_echtgenoot_geregistreerd_partner=
                        row[91],
                        voornamen_echtgenoot_geregistreerd_partner=row[92],
                        adellijke_titel_predikaat_echtgenoot_geregistreerd_partner
                        =row[93],
                        voorvoegsel_geslachtsnaam_echtgenoot_geregistreerd_partner
                        =row[94],
                        geslachtsnaam_echtgenoot_geregistreerd_partner=row[95],
                        geboortedatum_echtgenoot_geregistreerd_partner=row[96],
                        geboorteplaats_echtgenoot_geregistreerd_partner=row[
                            97],
                        geboorteland_echtgenoot_geregistreerd_partner=row[98],
                        geslachtsaanduiding_echtgenoot_geregistreerd_partner=
                        row[99],
                        datum_huwelijkssluiting_aangaan_geregistreerd_partnerschap
                        =row[100],
                        plaats_huwelijkssluiting_aangaan_geregistreerd_partnerschap
                        =row[101],
                        land_huwelijkssluiting_aangaan_geregistreerd_partnerschap
                        =row[102],
                        datum_ontbinding_huwelijk_geregistreerd_partnerschap=
                        row[103],
                        plaats_ontbinding_huwelijk_geregistreerd_partnerschap=
                        row[104],
                        land_ontbinding_huwelijk_geregistreerd_partnerschap=row[
                            105],
                        reden_ontbinding_huwelijk_geregistreerd_partnerschap=
                        row[106],
                        soort_verbintenis=row[107],
                        registergemeente_akte_waaraan_gegevens=row[108],
                        aktenummer_van_de_akte_waaraan_gegevens=row[109],
                        gemeente_waar_de_gegevens_over_huwelijk=row[110],
                        datum_van_de_ontlening_van_de_gegevens=row[111],
                        beschrijving_van_het_document_waaraan_de_gegevens=row[
                            112],
                        aanduiding_gegevens_in_onderzoek=row[113],
                        datum_ingang_onderzoek=row[114],
                        datum_einde_onderzoek=row[115],
                        indicatie_onjuist_dan_wel_strijdigheid_met_de_openbare_orde
                        =row[116],
                        ingangsdatum_geldigheid_met_betrekking=row[117],
                        datum_van_opneming_met_betrekking=row[118],
                    )

            if any(row[120:134]):
                Overlijden.objects.create(
                    persoon=persoon,
                    datum_overlijden=row[120],
                    plaats_overlijden=row[121],
                    land_overlijden=row[122],
                    registergemeente_akte_waaraan_gegevens=row[123],
                    aktenummer_van_de_akte_waaraan_gegevens=row[124],
                    gemeente_waar_de_gegevens_over_overlijden=row[125],
                    datum_van_de_ontlening_van_de_gegevens_over_overlijden=row[
                        126],
                    beschrijving_van_het_document_waaraan_de_gegevens=row[127],
                    aanduiding_gegevens_in_onderzoek=row[128],
                    datum_ingang_onderzoek=row[129],
                    datum_einde_onderzoek=row[130],
                    indicatie_onjuist_dan_wel_strijdigheid_met_de_openbare_orde
                    =row[131],
                    ingangsdatum_geldigheid_met_betrekking=row[132],
                    datum_van_opneming_met_betrekking=row[133],
                    rni_deelnemer=row[134],
                )

            if any(row[137:149]):
                Inschrijving.objects.create(
                    persoon=persoon,
                    datum_ingang_blokkering_pl=row[137],
                    datum_opschorting_bijhouding=row[138],
                    omschrijving_reden_opschorting_bijhouding=row[139],
                    datum_eerste_inschrijving_gba_rni=row[140],
                    gemeente_waar_de_pk_zich_bevindt=row[141],
                    indicatie_geheim=row[142],
                    datum_verfificatie=row[143],
                    omschrijving_verificatie=row[144],
                    versienummer=row[145],
                    datumtijdstempel=row[146],
                    pk_gegevens_volledig_meegeconverteerd=row[147],
                    rni_deelnemer=row[148],
                    omschrijving_verdrag=row[149],
                )

            if any(row[151:183]):
                Verblijfplaats.objects.create(
                    persoon=persoon,
                    gemeente_van_inschrijving=row[151],
                    datum_inschrijving_in_de_gemeente=row[152],
                    functie_adres=row[153],
                    gemeentedeel=row[154],
                    datum_aanvang_adreshouding=row[155],
                    straatnaam=row[156],
                    naam_openbare_ruimte=row[157],
                    huisnummer=row[158],
                    huisletter=row[159],
                    huisnummertoevoeging=row[160],
                    aanduiding_bij_huisnummer=row[161],
                    postcode=row[162],
                    woonplaatsnaam=row[163],
                    identificatiecode_verblijfplaats=row[164],
                    identificatiecode_nummeraanduiding=row[165],
                    locatiebeschrijving=row[166],
                    land_adres_buitenland=row[167],
                    datum_aanvang_adres_buitenland=row[168],
                    regel_1_adres_buitenland=row[169],
                    regel_2_adres_buitenland=row[170],
                    regel_3_adres_buitenland=row[171],
                    land_vanwaar_ingeschreven=row[172],
                    datum_vestiging_in_nederland=row[173],
                    omschrijving_van_de_aangifte_adreshouding=row[174],
                    indicatie_document=row[175],
                    aanduiding_gegevens_in_onderzoek=row[176],
                    datum_ingang_onderzoek=row[177],
                    datum_einde_onderzoek=row[178],
                    indicatie_onjuist=row[179],
                    ingangsdatum_geldigheid_met_betrekking=row[180],
                    datum_van_opneming_met_betrekking=row[181],
                    rni_deelnemer=row[182],
                    omschrijving_verdrag=row[183],
                )

            if any(row[185:205]):
                if not Kind.objects.filter(
                        burgerservicenummer_kind=row[186]).exists():
                    Kind.objects.create(
                        persoon=persoon,
                        a_nummer_kind=row[185],
                        burgerservicenummer_kind=row[186],
                        voornamen_kind=row[187],
                        adellijke_titel_predikaat_kind=row[188],
                        voorvoegsel_geslachtsnaam_kind=row[189],
                        geslachtsnaam_kind=row[190],
                        geboortedatum_kind=row[191],
                        geboorteplaats_kind=row[192],
                        geboorteland_kind=row[193],
                        registergemeente_akte_waaraan_gegevens_over_kind_ontleend_zijn
                        =row[194],
                        aktenummer_van_de_akte_waaraan_gegevens_over_kind_ontleend_zijn
                        =row[195],
                        gemeente_waar_de_gegevens_over_kind=row[196],
                        datum_van_de_ontlening_van_de_gegevens_over_kind=row[
                            197],
                        beschrijving_van_het_document=row[198],
                        aanduiding_gegevens_in_onderzoek=row[199],
                        datum_ingang_onderzoek=row[200],
                        datum_einde_onderzoek=row[201],
                        indicatie_onjuist_dan_wel_strijdigheid_met_de_openbare_orde
                        =row[202],
                        ingangsdatum_geldigheid_met_betrekking=row[203],
                        datum_van_opneming_met_betrekking=row[204],
                        registratie_betrekking=row[205],
                    )

            if any(row[207:215]):
                Verblijfstitel.objects.create(
                    persoon=persoon,
                    aanduiding_verblijfstitel=row[207],
                    datum_einde_verblijfstitel=row[208],
                    ingangsdatum_verblijfstitel=row[209],
                    aanduiding_gegevens_in_onderzoek=row[210],
                    datum_ingang_onderzoek=row[211],
                    datum_einde_onderzoek=row[212],
                    indicatie_onjuist=row[213],
                    ingangsdatum_geldigheid_met_betrekking=row[214],
                    datum_van_opneming_met_betrekking=row[215],
                )

            if any(row[217:227]):
                Gezagsverhouding.objects.create(
                    persoon=persoon,
                    indicatie_gezag_minderjarige=row[217],
                    indicatie_curateleregister=row[218],
                    gemeente_waar_de_gegevens_over_gezagsverhouding=row[219],
                    datum_van_de_ontlening_van_de_gegevens_over_gezagsverhouding
                    =row[220],
                    beschrijving_van_het_document=row[221],
                    aanduiding_gegevens_in_onderzoek=row[222],
                    datum_ingang_onderzoek=row[223],
                    datum_einde_onderzoek=row[224],
                    indicatie_onjuist=row[225],
                    ingangsdatum_geldigheid_met_betrekking=row[226],
                    datum_van_opneming_met_betrekking=row[227],
                )

            if any(row[229:244]):
                Reisdocument.objects.create(
                    persoon=persoon,
                    soort_nederlands_reisdocument=row[229],
                    nummer_nederlands_reisdocument=row[230],
                    datum_uitgifte_nederlands_reisdocument=row[231],
                    autoriteit_van_afgifte_nederlands_reisdocument=row[232],
                    datum_einde_geldigheid_nederlands_reisdocument=row[233],
                    datum_inhouding_dan_wel_vermissing_nederlands_reisdocument=
                    row[234],
                    aanduiding_inhouding_dan_wel_vermissing_nederlands_reisdocument
                    =row[235],
                    signalering_met_betrekking=row[236],
                    gemeente_waar_het_paspoortdossier_zich_bevindt=row[237],
                    datum_van_opname_in_het_paspoortdossier=row[238],
                    beschrijving_dossier=row[239],
                    aanduiding_gegevens_in_onderzoek=row[240],
                    datum_ingang_onderzoek=row[241],
                    datum_einde_onderzoek=row[242],
                    datum_van_ingang_geldigheid_met_betrekking=row[243],
                    datum_van_opneming_met_betrekking=row[244],
                )

            if any(row[246:253]):
                Kiesrecht.objects.create(
                    persoon=persoon,
                    aanduiding_europees_kiesrecht=row[246],
                    datum_verzoek_of_mededeling_europees_kiesrecht=row[247],
                    einddatum_uitsluiting_europees_kiesrecht=row[248],
                    aanduiding_uitgesloten_kiesrecht=row[249],
                    einddatum_uitsluiting_kiesrecht=row[250],
                    gemeente_waar_de_gegevens_over_kiesrecht=row[251],
                    datum_van_de_ontlening_van_de_gegevens_over_kiesrecht=row[
                        252],
                    beschrijving_van_het_document=row[253],
                )

        for model in [
                Persoon,
                Ouder,
                Nationaliteit,
                Partnerschap,
                Overlijden,
                Inschrijving,
                Verblijfplaats,
                Kind,
                Verblijfstitel,
                Gezagsverhouding,
                Reisdocument,
                Kiesrecht,
        ]:
            self.stdout.write(
                f"Installed {model.objects.count()} {model.__name__} instances"
            )

        self.stdout.write("Done!")
Esempio n. 9
0
def import_table(request, app, table):
    
    if request.FILES:
        if 'import_file' in request.FILES:
            data = request.FILES['import_file']        
            name = data.name
            ext = name.split('.')[-1].lower()
            model = import_model(app, table)
            
            table = []
            
            if ext in ('xlsx', 'xls', 'ods'):
                if ext == 'ods':
                    d = get_data(data)
                    #print("F0", d)
                    #buf = json_dumps(d)
                    for key in d:                    
                        table = d[key]
                        break
                else:
                    first_line = True
                    width = 0
                    
                    file_name = get_temp_filename("temp.xlsx")
                    f = open(file_name, 'wb')
                    f.write(data.read())
                    f.close()
                    
                    workbook = openpyxl.load_workbook(filename=file_name, read_only=True)
                    worksheets = workbook.get_sheet_names()
                    worksheet = workbook.get_sheet_by_name(worksheets[0])            
                    
                    for row in list(worksheet.rows):
                        if first_line:
                            first_line = False
                            buf = []
                            i = 0;
                            for pos in row:
                                value = pos.value
                                if value:
                                    buf.append(value)
                                else:
                                    break
                                i += 1
                            if len(buf)>0:
                                count = len(buf)
                                table.append(buf)
                            else:
                                break
                        else:
                            if row[0].value:
                                buf = []
                                i = 0
                                for pos in row:
                                    if i >= count:
                                        break
                                    buf.append(pos.value)
                                    i += 1
                                table.append(buf)
                            else:
                                break
                    os.remove(file_name)            
            elif ext in ('txt', 'csv'):
                first_line = True
                sep_list = ['\t', ';', ',', '|', ]
                sep = None            
                
                txt = data.read().decode('utf-8').replace('\r','').split('\n')
                for line in txt:
                    for pos in sep_list:
                        if pos in line:
                            sep = pos
                            break
                    break
                    
                if sep:
                    csv_reader = csv.reader(txt, delimiter=sep)
                    for row in csv_reader:
                        table.append(row)
                                  
            if table and len(table)>1:
                header = list([pos.strip() for pos in table[0] if pos])
                tree = False
                tmp = []
                for pos in header:
                    if not pos in tmp:
                        tmp.append(pos)
                    else:
                        tree = True
                        id1 = tmp.index(pos)
                        id2 = len(tmp)
                        break            
                
                for row in table[1:]:
                    if len(row) == len(header):
                        x = model() 
                        parent = None                       
                        for index, (attr_name, value) in enumerate(zip(header,row)):
                            if tree:
                                if index == id1:
                                    if row[id2]:
                                        objs = model.objects.filter(**{ attr_name: value })
                                        if len(objs)==1:
                                            parent = objs[0]
                                    else:
                                        setattr(x, attr_name, value)
                                elif index == id2:
                                    if row[id2]:
                                        setattr(x, attr_name, value)
                                        if parent:
                                            setattr(x, 'parent', parent)
                                else:
                                    setattr(x, attr_name, value)                                
                            else:
                                setattr(x, attr_name, value)
                        x.save()
                                    
            return { 'redirect': '/schsys/ok/' }    
        else:
            form = ImportTableForm(request.POST, request.FILES)
    else:
        form = ImportTableForm()
    
    return { 'form': form }
Esempio n. 10
0
from pyexcel_odsr import get_data
from datetime import datetime
import json

logbook = get_data("logbook.ods")["Sheet2"]

flights = []

i = 1

for f in logbook:
    print(i)
    i = i + 1

    departureTime = datetime(year=f[0].year,
                             month=f[0].month,
                             day=f[0].day,
                             hour=f[2].hour,
                             minute=f[2].minute)
    arrivalTime = datetime(year=f[0].year,
                           month=f[0].month,
                           day=f[0].day,
                           hour=f[4].hour,
                           minute=f[4].minute)

    flight = {
        "departureTime": departureTime.isoformat(),
        "arrivalTime": arrivalTime.isoformat(),
        "departurePlace": f[1],
        "arrivalPlace": f[3],
        "type": f[5],