From d3279c13822fb2bce8569c22632af0dd33a64070 Mon Sep 17 00:00:00 2001 From: prculley Date: Fri, 13 Jan 2017 18:08:49 -0600 Subject: [PATCH 1/3] Fix Progen import to use 'Status Bar' progress indicator --- gramps/plugins/importer/importprogen.py | 40 +++++++++++-------------- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/gramps/plugins/importer/importprogen.py b/gramps/plugins/importer/importprogen.py index 95de4346b..ebb2e2aed 100644 --- a/gramps/plugins/importer/importprogen.py +++ b/gramps/plugins/importer/importprogen.py @@ -57,7 +57,7 @@ from gramps.gen.lib import (Address, Attribute, AttributeType, ChildRef, Citatio Name, NameType, NameOriginType, Note, NoteType, Person, Place, PlaceName, Source, SrcAttribute, Surname, Tag) from gramps.gen.utils.id import create_id -from gramps.gui.utils import ProgressMeter +from gramps.gen.updatecallback import UpdateCallback from gramps.gen.utils.libformatting import ImportInfo class ProgenError(Exception): @@ -484,7 +484,7 @@ class PG30Def(object): TAGOBJECTS = ['Person', 'Family', 'Event', 'Place', 'Citation', 'Source', 'Note'] -class ProgenParser: +class ProgenParser(UpdateCallback): """ Main class to import and parse Pro-Gen files. """ @@ -511,14 +511,13 @@ class ProgenParser: self.user.notify_error(_("Pro-Gen data error"), str(error_msg)) return - self.progress = ProgressMeter( # TODO no-parent - _("Import from Pro-Gen"), '') - self.progress.set_pass(_('Initializing')) - self.mems = _read_mem(self.bname) self.pers = _read_recs(self.def_['Table_1'], self.bname) self.rels = _read_recs(self.def_['Table_2'], self.bname) + self.set_total(2 * len(self.pers) + len(self.rels)) + # self.reset(_("Import from Pro-Gen")) # non-functional for now + with DbTxn(_("Pro-Gen import"), self.dbase, batch=True) as self.trans: self.dbase.disable_signals() @@ -530,12 +529,11 @@ class ProgenParser: self.dbase.enable_signals() self.dbase.request_rebuild() - self.progress.close() - - def __init__(self, data_base, file_name, user_handle): + def __init__(self, data_base, file_name, user): """ Pro-Gen defines his own set of (static) person and family identifiers. """ + UpdateCallback.__init__(self, user.callback) # Sometime their match the GRAMPS localisation, sometimes not. To be on # a safe and uniform path person and family identifiers for (alphabetical) # German (de), English (en) and Dutch (nl) language defined here. @@ -544,7 +542,7 @@ class ProgenParser: file_name = self.bname + '.def' self.dbase = data_base self.fname = file_name - self.user = user_handle + self.user = user self.language = 0 self.mems = None # Memory area @@ -567,7 +565,6 @@ class ProgenParser: self.opt_death_info2cause = True # Death info to Death cause # Miscalaneous - self.progress = None # Prgress bar self.trans = None # Transaction identifier self.def_ = None # PG30 definitions self.high_fam_id = -1 @@ -1114,8 +1111,7 @@ class ProgenParser: pix = table.get_record_field_index(pid) person_ix.append(pix) - # The records are numbered 1..N - self.progress.set_pass(_('Importing individuals'), len(self.pers)) + # self.set_text(_('Importing individuals')) # non-functional for now # Male / Female symbols male_sym = self.def_.tables['Genealogical'].parms['male'] @@ -1123,8 +1119,8 @@ class ProgenParser: ind_id = self.opt_ind_id -1 # Option: Individuals IDs interator for i, rec in enumerate(self.pers): - # Progress at the begin due to approx. ton's of 'not recflds[1]' - self.progress.step() + # Update at the begin due to approx. ton's of 'not recflds[1]' + self.update() recflds = table.convert_record_to_list(rec, self.mems) if not recflds[1]: @@ -1498,12 +1494,11 @@ class ProgenParser: family_ix.append(fix) # The records are numbered 1..N - self.progress.set_pass(_('Importing families'), len(self.rels)) - + # self.set_text(_('Importing families')) # non-functional for now fam_id = self.opt_fam_id -1 # Option: Family IDs interator for i, rec in enumerate(self.rels): - # Progress at the begin - self.progress.step() + # Update at the begin + self.update() husband = rec[family_ix[3]] # F03: FAM HUSB wife = rec[family_ix[4]] # F04: FAM WIFE @@ -1765,11 +1760,10 @@ class ProgenParser: (self.person_identifier[14][self.language].lower()) # F14: Mother # The records are numbered 1..N - self.progress.set_pass(_('Adding children'), len(self.pers)) - + # self.set_text(_('Adding children')) # non-functional for now for i, rec in enumerate(self.pers): - # Progress at the begin - self.progress.step() + # Update at the begin + self.update() ind_id = i +1 # print(("Person ID %d " % ind_id) + " ".join(("%s" % r) for r in rec)) From 86263712a98e819a2fbb57c300afa8bbea21c1ad Mon Sep 17 00:00:00 2001 From: prculley Date: Fri, 13 Jan 2017 18:09:07 -0600 Subject: [PATCH 2/3] Fix Progen import for several issues - Files not closed - Note text set to 'list' instead of 'str' types - Address structure elements set to 'None' instead of '' - Long text strings losing characters and getting corrupted --- gramps/plugins/importer/importprogen.py | 110 +++++++++++++----------- 1 file changed, 61 insertions(+), 49 deletions(-) diff --git a/gramps/plugins/importer/importprogen.py b/gramps/plugins/importer/importprogen.py index ebb2e2aed..075be721e 100644 --- a/gramps/plugins/importer/importprogen.py +++ b/gramps/plugins/importer/importprogen.py @@ -4,7 +4,7 @@ # # Copyright (C) 2008-2011 Kees Bakker # Copyright (C) 2008 Brian G. Matherly -# Copyright (C) 2013-2016 Alois Poettker +# Copyright (C) 2013-2017 Alois Poettker # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -101,6 +101,7 @@ def _find_from_handle(progen_id, table): if not intid: intid = create_id() table[progen_id] = intid + return intid def _read_mem(bname): @@ -118,23 +119,24 @@ def _read_mem(bname): else: fname = bname + '.mem' - file_ = open(fname, "rb") - LOG.debug("The current system is %s-endian", sys.byteorder) + with open(fname, "rb") as file_: + LOG.debug("The current system is %s-endian", sys.byteorder) - # The input file comes from [what was originally] a DOS machine so will be - # little-endian, regardless of the 'native' byte order of the host system - recfmt = ". - lines = open(fname).readlines() + with open(fname) as file_: + lines = file_.readlines() if not lines[0].startswith(r'\0') or len(lines) < 2: raise ProgenError(_("Not a Pro-Gen file")) @@ -214,10 +217,11 @@ def _get_mem_text(mems, i): return i -= 1 - recno = mems[i][0] + recno = mems[i][0] - 1 text = mems[i][1].decode('cp850') - if recno > 0: - text += _get_mem_text(mems, recno) + while recno >= 0: + text += mems[recno][1].decode('cp850') + recno = mems[recno][0] - 1 text = text.replace('\033\r', '\n') # ESC-^M is newline text = ESC_CTRLZ.sub('', text) # ESC-^Z is end of string @@ -364,6 +368,7 @@ class PG30DefTable(object): fmt += 'i' else: pass # ???? Do we want to know? + return fmt def get_fields(self): @@ -813,7 +818,6 @@ class ProgenParser(UpdateCallback): """ Finds or creates a Citation based on Source, Name, Date, Page, Note, Attribute. """ - if not source_title: return None @@ -858,7 +862,7 @@ class ProgenParser(UpdateCallback): citation.set_page('%s' % page) # process Note - note = self.__create_note(note_text, NoteType.CUSTOM, "Pro-Gen Export") + note = self.__create_note(note_text, NoteType.CUSTOM, "Pro-Gen Import") if note and note.handle: citation.add_note(note.handle) @@ -880,6 +884,9 @@ class ProgenParser(UpdateCallback): if not note_text: return None + if isinstance(note_text, list): + note_text = '\n'.join(note_text) + note = Note() note.set(note_text) note_type = NoteType() @@ -1264,10 +1271,10 @@ class ProgenParser(UpdateCallback): if event_ref: person.add_event_ref(event_ref) - # process F16 Person Note, F17 Person Info - note = recflds[person_ix[16]] # F16: INDI _COMM / INDI COMM - info = recflds[person_ix[17]] # F17: INDI NOTE - note_text = [_f for _f in [info, note] if _f] + # process F16 Person Comment, F17 Person Note + comm = recflds[person_ix[16]] # F16: INDI _COMM / INDI COMM + note = recflds[person_ix[17]] # F17: INDI NOTE + note_text = [_f for _f in [comm, note] if _f] note = self.__create_note(note_text, NoteType.PERSON) if note and note.handle: person.add_note(note.handle) @@ -1290,11 +1297,16 @@ class ProgenParser(UpdateCallback): address = Address() if date: address.set_date_object(date) - address.set_street(street) - address.set_city(recflds[person_ix[21]]) - address.set_postal_code(postal_code) - address.set_country(country) - address.set_phone(phone) + if street: + address.set_street(street) + if recflds[person_ix[21]]: + address.set_city(recflds[person_ix[21]]) + if postal_code: + address.set_postal_code(postal_code) + if country: + address.set_country(country) + if phone: + address.set_phone(phone) # Option 1: add Notes to Address note = self.__create_note(info, NoteType.ADDRESS) @@ -1600,7 +1612,7 @@ class ProgenParser(UpdateCallback): if date or place or info or citation: desc = source_text - desc = [_f for _f in [info, source_text] if _f] + desc = [_f for _f in [source_text, info] if _f] desc = desc and '; '.join(desc) or None event, marl_ref = self.__create_event_and_ref \ (EventType.MARR_BANNS, desc, date, place, citation, '', @@ -1687,9 +1699,9 @@ class ProgenParser(UpdateCallback): if attr: family.add_attribute(attr) - note = recflds[family_ix[6]] # F06: FAM _COMM/FAM COMM - info = recflds[family_ix[7]] # F07: FAM NOTE - note_text = [_f for _f in [info, note] if _f] + comm = recflds[family_ix[6]] # F06: FAM _COMM/FAM COMM + note = recflds[family_ix[7]] # F07: FAM NOTE + note_text = [_f for _f in [comm, note] if _f] if note_text: cnt = None if len(note_text) > 0: From a879144cc7821b7d1e32fd8ba1b5973ceb4374cc Mon Sep 17 00:00:00 2001 From: prculley Date: Wed, 25 Jan 2017 17:27:16 -0600 Subject: [PATCH 3/3] Add Progen import test files --- .gitattributes | 3 + data/tests/PG30-1GB.DEF | 236 ++++++ data/tests/SAMPLE.DEF | 2 + data/tests/SAMPLE.IXI | 22 + data/tests/SAMPLE.IXP | Bin 0 -> 416 bytes data/tests/SAMPLE.IXR | Bin 0 -> 128 bytes data/tests/SAMPLE.MEM | Bin 0 -> 8384 bytes data/tests/SAMPLE.PER | Bin 0 -> 16068 bytes data/tests/SAMPLE.REL | Bin 0 -> 3776 bytes data/tests/SAMPLE.REM | 20 + data/tests/SAMPLE.X11 | Bin 0 -> 4 bytes data/tests/SAMPLE.X21 | Bin 0 -> 4 bytes data/tests/SAMPLE.gramps | 1222 +++++++++++++++++++++++++++ gramps/plugins/test/test_imports.py | 9 +- 14 files changed, 1511 insertions(+), 3 deletions(-) create mode 100644 data/tests/PG30-1GB.DEF create mode 100644 data/tests/SAMPLE.DEF create mode 100644 data/tests/SAMPLE.IXI create mode 100644 data/tests/SAMPLE.IXP create mode 100644 data/tests/SAMPLE.IXR create mode 100644 data/tests/SAMPLE.MEM create mode 100644 data/tests/SAMPLE.PER create mode 100644 data/tests/SAMPLE.REL create mode 100644 data/tests/SAMPLE.REM create mode 100644 data/tests/SAMPLE.X11 create mode 100644 data/tests/SAMPLE.X21 create mode 100644 data/tests/SAMPLE.gramps diff --git a/.gitattributes b/.gitattributes index a900e7f93..5b586cc84 100644 --- a/.gitattributes +++ b/.gitattributes @@ -13,3 +13,6 @@ *.ged -text *.GED -text *.csv -text +*.DEF -text +*.IXI -text +*.REM -text diff --git a/data/tests/PG30-1GB.DEF b/data/tests/PG30-1GB.DEF new file mode 100644 index 000000000..2ca540c58 --- /dev/null +++ b/data/tests/PG30-1GB.DEF @@ -0,0 +1,236 @@ +[PRO-GEN] +version=3.0b +type=def +format=2 + +[general] +dateformat=DD/MM/YYYY +pointerlength=4 +tables=2 + +[Table_1] +name1=Person +name2=Persons +fileext=.PER +indexext=.IXP +n_lines=42 +hiddenlines=4,5,6,7,8,10,12,13,14,15,19,25,30,32,33,34,35,36,40 +t01=É͵INDIVIDUAL ÆÍÍÍÍÍÍÍÍÍÍÍÍÍ͵pg30-1gbÆÍÍÍÍÍÍÍÍ͵LAST CHANGE ÆÍ» +t02=º ÛGiven name: º +t03=º Surname : Sex: º +t04=º Patronym : º +t05=º Call name : Alias: Code: º +t06=º Title 1 : Title 2: Title 3: º +t07=º Father : º +t08=º Mother : º +t09=º Occupation: º +t10=º Scratch : º +t11=º Info : º +t12=ÇÄ´ÛAddressÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ +t13=º Date : Street: º +t14=º Zip : Place: Country: º +t15=º Phone : Info: º +t16=ÇÄ´ÛBirthÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ +t17=º Date : Place: Time: º +t18=º Source: Reference: º +t19=º Text : º +t20=º Info : º +t21=ÇÄ´ÛChristeningÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ +t22=º Date : Place: Religion: º +t23=º Witn. : º +t24=º Source: Reference: º +t25=º Text : º +t26=º Info : º +t27=ÇÄ´ÛDeathÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ +t28=º Date : Place: Time: º +t29=º Source: Reference: º +t30=º Text : º +t31=º Info : º +t32=ÇÄ´CÛremationÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ +t33=º Date : Place: º +t34=º Source: Reference: º +t35=º Text : º +t36=º Info : º +t37=ÇÄ´BÛurialÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ +t38=º Date : Place: º +t39=º Source: Reference: º +t40=º Text : º +t41=º Info : º +t42=ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ +n_fields=58 +f01=Person_record ,31, 6, 0, 1,15,"","INDI RFN" +f02=Person_last_change ,32,10,10, 1,68,"","INDI CHAN DATE" +f03=Given_name ,47,64, 4, 2,15,"","" +f04=Surname ,47,40, 4, 3,15,"","INDI NAME" +f05=Sex ,45, 1, 1, 3,67,"MMFFmmff??","INDI SEX" +f06=Patronym ,47,40, 4, 4,15,"","INDI _PATR" +f07=Call_name ,47,18, 4, 5,15,"","INDI NAME NICK/INDI NAME ALIA/INDI CHR NICK" +f08=Alias ,47,19, 4, 5,41,"","INDI NAME _ALIA/INDI NAME COMM" +f09=Person_code ,47,12, 4, 5,67,"","INDI REFN/INDI CODE" +f10=Title1 ,47,16, 4, 6,15,"","INDI TITL" +f11=Title2 ,47,16, 4, 6,41,"","INDI _TITL2" +f12=Title3 ,47,12, 4, 6,67,"","INDI _TITL3" +f13=Father , 2,64, 4, 7,15,"","" +f14=Mother , 3,64, 4, 8,15,"","" +f15=Occupation ,47,64, 4, 9,15,"","INDI OCCU" +f16=Person_scratch ,46,64, 4,10,15,"","INDI _COMM/INDI COMM" +f17=Person_info ,46,64, 4,11,15,"","INDI NOTE" +f18=Address_date ,44,10,10,13,11,"","INDI RESI DATE" +f19=Address_street ,47,49, 4,13,30,"","INDI RESI ADDR" +f20=Address_zip ,47,11, 4,14,11,"","INDI RESI ADDR POST/INDI RESI POST" +f21=Address_place ,47,27, 4,14,30,"","INDI RESI ADDR CITY/INDI RESI PLAC" +f22=Address_country ,47,12, 4,14,67,"","INDI RESI ADDR CTRY/INDI RESI CTRY" +f23=Address_phone ,47,12, 4,15,11,"","INDI RESI PHON/INDI PHON" +f24=Address_info ,46,49, 4,15,30,"","INDI RESI NOTE/INDI ADDR" +f25=Birth_date ,44,10,10,17,11,"","INDI BIRT DATE" +f26=Birth_place ,47,30, 4,17,30,"","INDI BIRT PLAC" +f27=Birth_time ,45, 5, 5,17,67,"09::..","INDI BIRT TIME" +f28=Birth_source ,47,44, 4,18,11,"","INDI BIRT SOUR/INDI BIRT SOUR TITL" +f29=Birth_ref ,45,12,12,18,67,"","INDI BIRT SOUR REFN" +f30=Birth_text ,46,68, 4,19,11,"","INDI BIRT SOUR TEXT" +f31=Birth_info ,46,68, 4,20,11,"","INDI BIRT NOTE" +f32=Christening_date ,44,10,10,22,11,"","INDI CHR DATE" +f33=Christening_place ,47,26, 4,22,30,"","INDI CHR PLAC" +f34=Religion ,47,12, 4,22,67,"","INDI CHR RELI/INDI RELI" +f35=Christening_witness ,47,68, 4,23,11,"","INDI CHR _WITN/INDI CHR WITN" +f36=Christening_source ,47,44, 4,24,11,"","INDI CHR SOUR/INDI CHR SOUR TITL" +f37=Christening_ref ,45,12,12,24,67,"","INDI CHR SOUR REFN" +f38=Christening_text ,46,68, 4,25,11,"","INDI CHR SOUR TEXT" +f39=Christening_info ,46,68, 4,26,11,"","INDI CHR NOTE" +f40=Death_date ,44,10,10,28,11,"","INDI DEAT DATE" +f41=Death_place ,47,30, 4,28,30,"","INDI DEAT PLAC" +f42=Death_time ,45, 5, 5,28,67,"09::..","INDI DEAT TIME" +f43=Death_source ,47,44, 4,29,11,"","INDI DEAT SOUR/INDI DEAT SOUR TITL" +f44=Death_ref ,45,12,12,29,67,"","INDI DEAT SOUR REFN" +f45=Death_text ,46,68, 4,30,11,"","INDI DEAT SOUR TEXT" +f46=Death_info ,46,68, 4,31,11,"","INDI DEAT NOTE" +f47=Cremation_date ,44,10,10,33,11,"","INDI CREM DATE" +f48=Cremation_place ,47,49, 4,33,30,"","INDI CREM PLAC" +f49=Cremation_source ,47,44, 4,34,11,"","INDI CREM SOUR/INDI CREM SOUR TITL" +f50=Cremation_ref ,45,12,12,34,67,"","INDI CREM SOUR REFN" +f51=Cremation_text ,46,68, 4,35,11,"","INDI CREM SOUR TEXT" +f52=Cremation_info ,46,68, 4,36,11,"","INDI CREM NOTE" +f53=Burial_date ,44,10,10,38,11,"","INDI BURI DATE" +f54=Burial_place ,47,49, 4,38,30,"","INDI BURI PLAC" +f55=Burial_source ,47,44, 4,39,11,"","INDI BURI SOUR/INDI BURI SOUR TITL" +f56=Burial_ref ,45,12,12,39,67,"","INDI BURI SOUR REFN" +f57=Burial_text ,46,68, 4,40,11,"","INDI BURI SOUR TEXT" +f58=Burial_info ,46,68, 4,41,11,"","INDI BURI NOTE" +n_replace=4 +r01=Surname,Patronym +r02=Birth_date,Christening_date/Birth_place,Christening_place +r03=Death_date,Burial_date/Death_place,Burial_place +r04=Burial_date,Cremation_date/Burial_place,Cremation_place + +[Table_2] +name1=Marriage +name2=Marriages +fileext=.REL +indexext=.IXR +n_lines=35 +hiddenlines=5,7,8,9,10,11,16,22,28,30,31,32,33,34 +t01=É͵MARRIAGE ÆÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵pg30-1gbÆÍÍÍÍÍÍÍÍ͵LAST CHANGE ÆÍ» +t02=º ÛHusband: º +t03=º Wife : º +t04=º Code : º +t05=º Scratch: º +t06=º Info : º +t07=ÇÄ´ÛLiving togetherÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ +t08=º Date : Place: º +t09=º Source: Reference: º +t10=º Text : º +t11=º Info : º +t12=ÇÄ´Publication of the ÛbannsÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ +t13=º Date : Place: º +t14=º Witn. : º +t15=º Source: Reference: º +t16=º Text : º +t17=º Info : º +t18=ÇÄ´Civil ÛmarriageÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ +t19=º Date : Place: º +t20=º Witn. : º +t21=º Source: Reference: º +t22=º Text : º +t23=º Info : º +t24=ÇÄ´ÛChurch marriageÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ +t25=º Date : Place: Church: º +t26=º Witn. : º +t27=º Source: Reference: º +t28=º Text : º +t29=º Info : º +t30=ÇÄ´ÛDivorceÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ +t31=º Date : Place: º +t32=º Source: Reference: º +t33=º Text : º +t34=º Info : º +t35=ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ +n_fields=41 +f01=Relation_record ,31, 6, 0, 1,13,"","FAM RFN" +f02=Relation_last_change,32,10,10, 1,68,"","FAM CHAN DATE" +f03=Husband ,22,67, 4, 2,12,"","FAM HUSB" +f04=Wife ,23,67, 4, 3,12,"","FAM WIFE" +f05=Relation_code ,47,12, 4, 4,12,"","FAM REFN/FAM CODE" +f06=Relation_scratch ,46,67, 4, 5,12,"","FAM _COMM/FAM COMM" +f07=Relation_info ,46,67, 4, 6,12,"","FAM NOTE" +f08=Living_date ,44,10,10, 8,11,"","FAM _LIV DATE" +f09=Living_place ,47,49, 4, 8,30,"","FAM _LIV PLAC" +f10=Living_source ,47,44, 4, 9,11,"","FAM _LIV SOUR/FAM _LIV SOUR TITL" +f11=Living_ref ,45,12,12, 9,67,"","FAM _LIV SOUR REFN" +f12=Living_text ,46,68, 4,10,11,"","FAM _LIV SOUR TEXT" +f13=Living_info ,46,68, 4,11,11,"","FAM _LIV NOTE" +f14=Banns_date ,44,10,10,13,11,"","FAM MARB DATE/FAM REGS DATE" +f15=Banns_place ,47,49, 4,13,30,"","FAM MARB PLAC/FAM REGS PLAC" +f16=banns_witnesses ,47,68, 4,14,11,"","FAM MARB _WITN/FAM MARB WITN" +f17=Banns_source ,47,44, 4,15,11,"","FAM MARB SOUR/FAM MARB SOUR TITL/FAM REGS SOUR" +f18=Banns_ref ,45,12,12,15,67,"","FAM MARB SOUR REFN/FAM REGS SOUR REFN" +f19=Banns_text ,46,68, 4,16,11,"","FAM MARB SOUR TEXT" +f20=Banns_info ,46,68, 4,17,11,"","FAM MARB NOTE" +f21=Civil_date ,44,10,10,19,11,"","FAM MARR(Civil) DATE/FAM MARR DATE" +f22=Civil_place ,47,49, 4,19,30,"","FAM MARR(Civil) PLAC/FAM MARR PLAC" +f23=Civil_witnesses ,47,68, 4,20,11,"","FAM MARR(Civil) _WITN/FAM MARR _WITN/FAM MARR WITN/FAM WITN" +f24=Civil_source ,47,44, 4,21,11,"","FAM MARR(Civil) SOUR/FAM MARR SOUR/FAM MARR SOUR TITL" +f25=Civil_ref ,45,12,12,21,67,"","FAM MARR(Civil) SOUR REFN/FAM MARR SOUR REFN" +f26=Civil_text ,46,68, 4,22,11,"","FAM MARR(Civil) SOUR TEXT/FAM MARR SOUR TEXT" +f27=Civil_info ,46,68, 4,23,11,"","FAM MARR(Civil) NOTE/FAM MARR NOTE" +f28=Church_date ,44,10,10,25,11,"","FAM MARR(Church) DATE/FAM ORDI DATE" +f29=Church_place ,47,28, 4,25,30,"","FAM MARR(Church) PLAC/FAM ORDI PLAC" +f30=Church ,47,12, 4,25,67,"","FAM MARR(Church) _CHUR/FAM ORDI _CHUR/FAM ORDI RELI" +f31=Church_witnesses ,47,68, 4,26,11,"","FAM MARR(Church) _WITN/FAM ORDI _WITN/FAM ORDI WITN" +f32=Church_source ,47,44, 4,27,11,"","FAM MARR(Church) SOUR/FAM ORDI SOUR/FAM ORDI SOUR TITL" +f33=Church_ref ,45,12,12,27,67,"","FAM MARR(Church) SOUR REFN/FAM ORDI SOUR REFN" +f34=Church_text ,46,68, 4,28,11,"","FAM MARR(Church) SOUR TEXT/FAM ORDI SOUR TEXT" +f35=Church_info ,46,68, 4,29,11,"","FAM MARR(Church) NOTE/FAM ORDI NOTE" +f36=Divorce_date ,44,10,10,31,11,"","FAM DIV DATE/FAM DIVO DATE" +f37=Divorce_place ,47,49, 4,31,30,"","FAM DIV PLAC/FAM DIVO PLAC" +f38=Divorce_source ,47,44, 4,32,11,"","FAM DIV SOUR/FAM DIV SOUR TITL" +f39=Divorce_ref ,45,12,12,32,67,"","FAM DIV SOUR REFN" +f40=Divorce_text ,46,68, 4,33,11,"","FAM DIV SOUR TEXT" +f41=Divorce_info ,46,68, 4,34,11,"","FAM DIV NOTE" +n_replace=3 +r01=Banns_date,Living_date/Banns_place,Living_place +r02=Civil_date,Church_date/Civil_place,Church_place +r03=Church_date,Banns_date/Church_place,Banns_place + +[Genealogical] +male=M +female=F +function_father=[FATHER] +function_mother=[MOTHER] +function_husband=[HUSBAND] +function_wife=[WIFE] +function_age=[AGE] +function_initials=[INITIALS] +field_father=Father +field_mother=Mother +field_givenname=Given_name +field_surname=Surname +field_sex=Sex +field_birthdate=Birth_date +field_christeningdate=Christening_date +field_deathdate=Death_date +field_burialdate=Burial_date +field_husband=Husband +field_wife=Wife +field_marriagedate=Civil_date +field_churchdate=Church_date +field_divorcedate=Divorce_date diff --git a/data/tests/SAMPLE.DEF b/data/tests/SAMPLE.DEF new file mode 100644 index 000000000..3cd07b626 --- /dev/null +++ b/data/tests/SAMPLE.DEF @@ -0,0 +1,2 @@ +\0 +PG30-1GB.DEF diff --git a/data/tests/SAMPLE.IXI b/data/tests/SAMPLE.IXI new file mode 100644 index 000000000..e9d0f4b22 --- /dev/null +++ b/data/tests/SAMPLE.IXI @@ -0,0 +1,22 @@ +[PRO-GEN] +version=3.21 +type=ixi +indexformat=2 + +[Table_1] +current_record=0 +current_index=1 +indexes=1 +sel_1= +sort_1= +mark_1= +marked_1=0 + +[Table_2] +current_record=0 +current_index=1 +indexes=1 +sel_1= +sort_1= +mark_1= +marked_1=0 diff --git a/data/tests/SAMPLE.IXP b/data/tests/SAMPLE.IXP new file mode 100644 index 0000000000000000000000000000000000000000..1a1b8634628a685262213cf59dbf9bf0de5e1de7 GIT binary patch literal 416 zcmZ{e(F%f45C!!y!WRw72-L(1LI3~nYVbO^Txen3bIvY%Es9i6+6*t~;0kZ}zy#*V zt;}0o3GVBir|si=LiXU^F-gj~|KpzByL#XCj=A3MJ$>HK1a$~6=ppz9JqG_k-yzQ{ SvRl~8-(8rk@UMUO^285(N)Ijo literal 0 HcmV?d00001 diff --git a/data/tests/SAMPLE.IXR b/data/tests/SAMPLE.IXR new file mode 100644 index 0000000000000000000000000000000000000000..e939bf2de47f5a71dbdda3529dedb4681ccf5225 GIT binary patch literal 128 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 literal 0 HcmV?d00001 diff --git a/data/tests/SAMPLE.REL b/data/tests/SAMPLE.REL new file mode 100644 index 0000000000000000000000000000000000000000..0b43bf3f1ec04c1556f17c860a418821451426f6 GIT binary patch literal 3776 zcmd_r+X})k3i zykuE+#8t066{jh{&1c3*T>tUr?|r|0JtXTIjh3-ltz-v>k~G;m1Lw@7_bM`eAW4(0 z3vgOYQf}?Qw^D7zV4?!E$rpV%=c=tTo4Ro3Myx|P2db^~a8y=jcn{}QwN=h=56-a> o>lDtN5o;UHjS=ev&Vv!_3C^t%Yn)9Z-PY21s{T1QIPa>hFBt0m`v3p{ literal 0 HcmV?d00001 diff --git a/data/tests/SAMPLE.REM b/data/tests/SAMPLE.REM new file mode 100644 index 000000000..2c453fcbe --- /dev/null +++ b/data/tests/SAMPLE.REM @@ -0,0 +1,20 @@ +File of remarks for GEDCOM import. + +GEDCOM file : D:\Users\PRC\Documents\Gramps\data\tests\exp_sample_ged.ged +PRO-GEN file : C:\PG30\GB\DATA\SAMPLE +Date : 13/01/2017 + +Rec. Remarks (P=person, R=Marriage) +-------------------------------------------------------------------------------- + P1 (@I0000@) Surname (Anna Nana /Hansdotter/) has already been entered. +2 FAMC @F0008@ + P25 (@I0024@) Death_date (BEF 23 JUL 1930) too long. +2 FAMC @F0010@ + P43 (@I0042@) Surname (Frank /Neilsen/) has already been entered. +2 FAMC @F0005@ + P47 (@I0046@) Address_date (FROM 1 JAN 1964 TO 3 MAR 1970) too long. + (@I0046@) Address_date (I think 1970 to 1971) has already been entered. +2 FAMC @F0016@ +2 FAMC @F0016@ +2 FAMC @F0016@ +-------------------------------------------------------------------------------- diff --git a/data/tests/SAMPLE.X11 b/data/tests/SAMPLE.X11 new file mode 100644 index 0000000000000000000000000000000000000000..593f4708db84ac8fd0f5cc47c634f38c013fe9e4 GIT binary patch literal 4 LcmZQzU|;|M00aO5 literal 0 HcmV?d00001 diff --git a/data/tests/SAMPLE.X21 b/data/tests/SAMPLE.X21 new file mode 100644 index 0000000000000000000000000000000000000000..593f4708db84ac8fd0f5cc47c634f38c013fe9e4 GIT binary patch literal 4 LcmZQzU|;|M00aO5 literal 0 HcmV?d00001 diff --git a/data/tests/SAMPLE.gramps b/data/tests/SAMPLE.gramps new file mode 100644 index 000000000..f0ba8a26d --- /dev/null +++ b/data/tests/SAMPLE.gramps @@ -0,0 +1,1222 @@ + + + +
+ + + +
+ + + Birth + + + + + Death + + + + + Birth + + + + + Birth + + + + + Christening + + + + + Birth + + + + + Death + + + + + Birth + + + + + Birth + + + + + Christening + + + + + Birth + + + + Birth + + + + + Birth + + + + + Death + + + + + Birth + + + + + Birth + + + + + + Death + + + + + Burial + + + + + + Birth + + + + + Birth + + + + + Death + + + + Birth + + + + Birth + + + + + Birth + + + + + Death + + + + + Birth + + + + + Death + + + + + Birth + + + + + Death + + + + Birth + + + + + Birth + + + + + Birth + + + + + Death + + + + + Birth + + + + + Death + + + + + Birth + + + + + Death + + + + + Birth + + + + + Death + + + + + Birth + + + + + Christening + + + + + Death + + + + + Birth + + + + + Birth + + + + + Death + + + + + Birth + + + + + Birth + + + + + Death + + + + + Birth + + + + + Occupation + Retail Manager + + + Birth + + + + + Birth + + + + + Death + + + + + Birth + + + + + Birth + + + + + Birth + + + + + Birth + + + + + Birth + + + + + Christening + + + + + Death + + + + Occupation + Software Engineer + + + Birth + + + + + + Birth + + + + + Death + + + + + Birth + + + + + Death + + + + Birth + + + + + Birth + + + + Residence + + + see Address on 2017-10-27 + + + Birth + + + + + Residence + + + see Address on 1954-12-30 + + + Residence + + + see Address on 1970-04-19 + + + Residence + + + see Address on about 1954 + + + Birth + + + + + Death + + + + Burial + + + + + + F + + Anna + Annanana + Hansdotter + + + + + + + + M + + Keith Lloyd + Keith + Smith + + + + + + F + + Amber Marie + Amber + Smith + + + + + + + M + + Magnes + Smith + + + + + + + + M + + Ingeman + Smith + + + + + + M + + Mason Michael + Mason + Smith + + + + + + + M + + Edwin + Willard + + + + + + F + + Ingar + Smith + + + + + + M + + Hjalmar + Smith + + + + + + + + + M + + Emil + Smith + + + + + + M + + Hans Peter + Hans + Smith + + + + + + + + + + F + + Hanna + Smith + + + + + + M + + Herman Julius + Julius + Nielsen + + + + + + + F + + Evelyn + Michaels + + + + + + F + + Marjorie Lee + Marjorie + Smith + + + + + + M + + Gus + Smith + + + + + + + + F + + Jennifer + Anderson + + + + + + + F + + Lillie Harriet + Lillie + Jones + + + + + + + M + + John Hjalmar + John + Smith + + + + + + + M + + Eric Lloyd + Eric + Smith + + + + + + + M + + Carl Emil + Emil + Smith + + + + + + + M + + Hjalmar + Smith + + + + + + + M + + Martin + Smith + + + + + + + + + F + + Astrid Shermanna Augusta + Shermanna + Smith + + + + + + + + M + + Gustaf Sr. + Sr. + Smith + + + + + + + + + + F + + Marta + Ericsdotter + + + + + + F + + Kirsti Marie + Marie + Smith + + + + + + + + M + + Ingeman + Smith + + + + + + F + + Anna + Streiffert + + + + + + + M + + Craig Peter + Craig + Smith + + + + + + F + + Janice Ann + Janice + Adams + + + + + + + F + + Marjorie + Ohman + + + + + + + F + + Darcy + Horne + + + + + + M + + Lloyd + Smith + + + + + + + F + + Alice Paula + Alice + Perkins + + + + + + M + + Lars Peter + Lars + Smith + + + + + + F + + Elna + Jefferson + + + + + + + + M + + Edwin Michael + Edwin + Smith + + + + + + + + F + + Kerstina + Hansdotter + + + + + + + M + + Martin + Smith + + + + + + + + F + + Marjorie Alice + Marjorie + Smith + + + + + + F + + Janis Elaine + Janis + Green + + + + + + M + + ? + Ke ? + + + + + + M + + ???? + ???????? + + + + M + + The + Testy + Tester + + + +
+ + test village Akron OH 44177 Cuyahoga + Akron + Cuyahoga + 44177 +
+ + +
+ + F + + Mrs + Tester + + +
+ + 123 Main St. Winslow PA 12345 + 123 Main St. Winslow + 12345 + 440-871-3401 440-871-3401 800-871-3401 + +
+ + +
+ + M + + Tom + TesterNickname + Von Tester y tested + + +
+ + Denver Denver, Denver Co., CO San Francisco + USA + 440-871-3402 +
+ + +
+ + U + + Fake I + Fake + Person + + + + + +
+ + 8888 Cliff Dr Bay Village Ohio 44140 Cuyahoga + Bay Village + Cuyahoga + 44140 + 440-871-3400 +
+ +
+ + F + + Mary + Tester + + + + + F + + Martha + Tester + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Birth Records + 3 + + + + + findagrave.com + 3 + + + + + Birth, Death and Marriage Records + 3 + + + + + + Birth Records + + + findagrave.com + + + Birth, Death and Marriage Records + + + + + Löderup + + + + Sparks + + + + San Francisco + + + + Hayward + + + + Community Presbyterian Church + + + + Simrishamn + + + + R?nne + + + + Gladsax + + + + Reno + + + + Sweden + + + + Grostorp + + + + Hoya/Jona/Hoia + + + + Fremont + + + + Denver + + + + Sacramento + + + + Santa Rosa + + + + San Jose + + + + Smestorp + + + + Tommarp + + + + Akron + + + + 123 High St + + + + 123 Main St. Winslow + + + + Denver Denver, Denver Co., CO San Francisco + + + + Bay Village + + + + + + Surname: Anna Nana /Hansdotter/ +******************************************************************890123456789 +******************************************************************89 123456789 + + + BIOGRAPHY + +Hjalmar sailed from Copenhagen, Denmark on the OSCAR II, 14 November 1912 arriving in New York 27 November 1912. He was seventeen years old. On the ship passenger list his trade was listed as a Blacksmith. He came to Reno, Nevada and lived with his sister Marie for a time before settling in Sparks. He worked for Southern Pacific Railroad as a car inspector for a time, then went to work for Standard Oil +Company. He enlisted in the army at Sparks 7 December 1917 and served as a Corporal in the Medical Corp until his discharge 12 August 1919 at the Presidio in San Francisco, California. Both he and Marjorie are buried in the Masonic Memorial Gardens Mausoleum in Reno, he the 30th June 1975, and she the 25th of June 1980. + + + BIOGRAPHY +Martin was listed as being a Husman, (owning a house as opposed to a farm) in the house records of Gladsax. + + + Death_date: BEF 23 JUL 1930 + + + Surname: Frank /Neilsen/ +Some Unicode Characters: ?????????????? +Some Bold Unicode Characters: ?????????????? +Some Italic Unicode Characters: ?????????????? +Some Unicode Characters: ?????????????? +Some Bold Unicode Characters: ?????????????? +Some Italic Unicode Characters: ?????????????? + + + Address with PHON,FAX,EMAIL,WWW. attached directly to person is not legal Gedcom, but allowed here. + + + Address as event is legal, with PHON,FAX,EMAIL,WWW + + + Address_date: FROM 1 JAN 1964 TO 3 MAR 1970 +Address_date: I think 1970 to 1971 + + +
diff --git a/gramps/plugins/test/test_imports.py b/gramps/plugins/test/test_imports.py index 0d6ec18d1..50609607e 100644 --- a/gramps/plugins/test/test_imports.py +++ b/gramps/plugins/test/test_imports.py @@ -29,13 +29,14 @@ from time import localtime, strptime from unittest.mock import patch #import logging +from gramps.gen.utils.config import config +config.set('preferences.date-format', 0) from gramps.gen.db.utils import import_as_dict from gramps.gen.merge.diff import diff_dbs, to_struct from gramps.gen.simple import SimpleAccess from gramps.gen.utils.id import set_det_id from gramps.cli.user import User from gramps.gen.const import TEMP_DIR, DATA_DIR -from gramps.gen.utils.config import config from gramps.test.test_util import capture from gramps.plugins.export.exportxml import XmlWriter @@ -212,6 +213,8 @@ def make_tst_function(tstfile, file_name): skp_imp_adds = False else: skp_imp_adds = True + config.set('preferences.default-source', False) + config.set('preferences.tag-on-import', False) try: os.remove(fres) os.remove(fout) @@ -288,8 +291,8 @@ else: _tstfiles = [] for _tstfile in os.listdir(TEST_DIR): (fname, ext) = os.path.splitext(os.path.basename(_tstfile)) - if ext in (".gramps", ".difs", ".bak") \ - or not fname.startswith("imp_"): + if _tstfile != "SAMPLE.DEF" and (ext in (".gramps", ".difs", ".bak") \ + or not fname.startswith("imp_")): continue test_func = make_tst_function(_tstfile, fname) clname = 'Import_{0}'.format(_tstfile)