* src/GrampsDb/_GrampsBSDDB.py (get_gramps_ids): Move to
GrampsDbBase; (_get_obj_from_gramps_id,_find_from_handle): Only read data if the key exists. * src/GrampsDb/_GrampsDbBase.py (get_gramps_ids,has_gramps_id): Add methods; (check_*_from_handle): Add methods that make sure that object exists in the db, create as necessary, but do not read if it exists; (_check_from_handle): Add lower-level method; (_find_from_handle): Only read data if the key exists. * src/GrampsDb/_GrampsInMemDB.py (get_gramps_ids): Move to GrampsDbBase. * src/GrampsDb/_ReadXML.py: Multiple improvements. svn: r5858
This commit is contained in:
parent
9bdb810989
commit
9e7e630de0
13
ChangeLog
13
ChangeLog
@ -1,3 +1,16 @@
|
||||
2006-01-30 Alex Roitman <shura@gramps-project.org>
|
||||
* src/GrampsDb/_GrampsBSDDB.py (get_gramps_ids): Move to
|
||||
GrampsDbBase; (_get_obj_from_gramps_id,_find_from_handle): Only
|
||||
read data if the key exists.
|
||||
* src/GrampsDb/_GrampsDbBase.py (get_gramps_ids,has_gramps_id):
|
||||
Add methods; (check_*_from_handle): Add methods that make sure
|
||||
that object exists in the db, create as necessary, but do not read
|
||||
if it exists; (_check_from_handle): Add lower-level method;
|
||||
(_find_from_handle): Only read data if the key exists.
|
||||
* src/GrampsDb/_GrampsInMemDB.py (get_gramps_ids): Move to
|
||||
GrampsDbBase.
|
||||
* src/GrampsDb/_ReadXML.py: Multiple improvements.
|
||||
|
||||
2006-01-29 Don Allingham <don@gramps-project.org>
|
||||
* src/DdTargets.py: Add support for EventRef
|
||||
* src/DisplayTabs.py: Drag and drop support in base class
|
||||
|
@ -842,20 +842,6 @@ class GrampsBSDDB(GrampsDbBase):
|
||||
self.name_group.put(name,group,txn=self.txn)
|
||||
self.emit('person-rebuild')
|
||||
|
||||
def get_gramps_ids(self,obj_key):
|
||||
key2table = {
|
||||
PERSON_KEY: self.id_trans,
|
||||
FAMILY_KEY: self.fid_trans,
|
||||
SOURCE_KEY: self.sid_trans,
|
||||
EVENT_KEY: self.eid_trans,
|
||||
MEDIA_KEY: self.oid_trans,
|
||||
PLACE_KEY: self.pid_trans,
|
||||
REPOSITORY_KEY: self.rid_trans,
|
||||
}
|
||||
|
||||
table = key2table[obj_key]
|
||||
return table.keys()
|
||||
|
||||
def get_surname_list(self):
|
||||
vals = [ (locale.strxfrm(unicode(val)),unicode(val))
|
||||
for val in set(self.surnames.keys()) ]
|
||||
@ -873,8 +859,8 @@ class GrampsBSDDB(GrampsDbBase):
|
||||
return vals
|
||||
|
||||
def _get_obj_from_gramps_id(self,val,tbl,class_init):
|
||||
data = tbl.get(str(val),txn=self.txn)
|
||||
if data:
|
||||
if tbl.has_key(str(val)):
|
||||
data = tbl.get(str(val),txn=self.txn)
|
||||
obj = class_init()
|
||||
obj.unserialize(cPickle.loads(data))
|
||||
return obj
|
||||
@ -970,8 +956,8 @@ class GrampsBSDDB(GrampsDbBase):
|
||||
def _find_from_handle(self,handle,transaction,class_type,dmap,add_func):
|
||||
obj = class_type()
|
||||
handle = str(handle)
|
||||
data = dmap.get(handle,txn=self.txn)
|
||||
if data:
|
||||
if dmap.has_key(handle):
|
||||
data = dmap.get(handle,txn=self.txn)
|
||||
obj.unserialize(data)
|
||||
else:
|
||||
obj.set_handle(handle)
|
||||
|
@ -625,13 +625,20 @@ class GrampsDbBase(GrampsDBCallback):
|
||||
def _find_from_handle(self,handle,transaction,class_type,dmap,add_func):
|
||||
obj = class_type()
|
||||
handle = str(handle)
|
||||
if dmap.get(handle):
|
||||
if dmap.has_key(handle):
|
||||
obj.unserialize(dmap.get(handle))
|
||||
else:
|
||||
obj.set_handle(handle)
|
||||
add_func(obj,transaction)
|
||||
return obj
|
||||
|
||||
def _check_from_handle(self,handle,transaction,class_type,dmap,add_func):
|
||||
handle = str(handle)
|
||||
if not dmap.has_key(handle):
|
||||
obj = class_type()
|
||||
obj.set_handle(handle)
|
||||
add_func(obj,transaction)
|
||||
|
||||
def find_person_from_handle(self,handle,transaction):
|
||||
"""
|
||||
Finds a Person in the database from the passed GRAMPS ID.
|
||||
@ -642,7 +649,7 @@ class GrampsDbBase(GrampsDBCallback):
|
||||
|
||||
def find_source_from_handle(self,handle,transaction):
|
||||
"""
|
||||
Finds a Source in the database from the passed GRAMPS ID.
|
||||
Finds a Source in the database from the passed handle.
|
||||
If no such Source exists, a new Source is added to the database.
|
||||
"""
|
||||
return self._find_from_handle(handle,transaction,Source,
|
||||
@ -650,7 +657,7 @@ class GrampsDbBase(GrampsDBCallback):
|
||||
|
||||
def find_event_from_handle(self,handle,transaction):
|
||||
"""
|
||||
Finds a Event in the database from the passed GRAMPS ID.
|
||||
Finds a Event in the database from the passed handle.
|
||||
If no such Event exists, a new Event is added to the database.
|
||||
"""
|
||||
return self._find_from_handle(handle,transaction,Event,
|
||||
@ -658,15 +665,15 @@ class GrampsDbBase(GrampsDBCallback):
|
||||
|
||||
def find_object_from_handle(self,handle,transaction):
|
||||
"""
|
||||
Finds an MediaObject in the database from the passed GRAMPS ID.
|
||||
If no such MediaObject exists, a new Object is added to the database."""
|
||||
|
||||
Finds an MediaObject in the database from the passed handle.
|
||||
If no such MediaObject exists, a new Object is added to the database.
|
||||
"""
|
||||
return self._find_from_handle(handle,transaction,MediaObject,
|
||||
self.media_map,self.add_object)
|
||||
|
||||
def find_place_from_handle(self,handle,transaction):
|
||||
"""
|
||||
Finds a Place in the database from the passed GRAMPS ID.
|
||||
Finds a Place in the database from the passed handle.
|
||||
If no such Place exists, a new Place is added to the database.
|
||||
"""
|
||||
return self._find_from_handle(handle,transaction,Place,
|
||||
@ -674,7 +681,7 @@ class GrampsDbBase(GrampsDBCallback):
|
||||
|
||||
def find_family_from_handle(self,handle,transaction):
|
||||
"""
|
||||
Finds a Family in the database from the passed gramps' ID.
|
||||
Finds a Family in the database from the passed handle.
|
||||
If no such Family exists, a new Family is added to the database.
|
||||
"""
|
||||
return self._find_from_handle(handle,transaction,Family,
|
||||
@ -682,12 +689,71 @@ class GrampsDbBase(GrampsDBCallback):
|
||||
|
||||
def find_repository_from_handle(self,handle,transaction):
|
||||
"""
|
||||
Finds a Repository in the database from the passed gramps' ID.
|
||||
Finds a Repository in the database from the passed handle.
|
||||
If no such Repository exists, a new Repository is added to the database.
|
||||
"""
|
||||
return self._find_from_handle(handle,transaction,Repository,
|
||||
self.repository_map,self.add_repository)
|
||||
|
||||
def check_person_from_handle(self,handle,transaction):
|
||||
"""
|
||||
Checks whether a Person with the passed handle exists in the database.
|
||||
If no such Person exists, a new Person is added to the database.
|
||||
"""
|
||||
self._check_from_handle(handle,transaction,Person,
|
||||
self.person_map,self.add_person)
|
||||
|
||||
def check_source_from_handle(self,handle,transaction):
|
||||
"""
|
||||
Checks whether a Source with the passed handle exists in the database.
|
||||
If no such Source exists, a new Source is added to the database.
|
||||
"""
|
||||
self._check_from_handle(handle,transaction,Source,
|
||||
self.source_map,self.add_source)
|
||||
|
||||
def check_event_from_handle(self,handle,transaction):
|
||||
"""
|
||||
Checks whether an Event with the passed handle exists in the database.
|
||||
If no such Event exists, a new Event is added to the database.
|
||||
"""
|
||||
self._check_from_handle(handle,transaction,Event,
|
||||
self.event_map,self.add_event)
|
||||
|
||||
def check_object_from_handle(self,handle,transaction):
|
||||
"""
|
||||
Checks whether a MediaObject with the passed handle exists in
|
||||
the database. If no such MediaObject exists, a new Object is
|
||||
added to the database.
|
||||
"""
|
||||
|
||||
self._check_from_handle(handle,transaction,MediaObject,
|
||||
self.media_map,self.add_object)
|
||||
|
||||
def check_place_from_handle(self,handle,transaction):
|
||||
"""
|
||||
Checks whether a Place with the passed handle exists in the database.
|
||||
If no such Place exists, a new Place is added to the database.
|
||||
"""
|
||||
self._check_from_handle(handle,transaction,Place,
|
||||
self.place_map,self.add_place)
|
||||
|
||||
def check_family_from_handle(self,handle,transaction):
|
||||
"""
|
||||
Checks whether a Family with the passed handle exists in the database.
|
||||
If no such Family exists, a new Family is added to the database.
|
||||
"""
|
||||
self._check_from_handle(handle,transaction,Family,
|
||||
self.family_map,self.add_family)
|
||||
|
||||
def check_repository_from_handle(self,handle,transaction):
|
||||
"""
|
||||
Checks whether a Repository with the passed handle exists in the
|
||||
database. If no such Repository exists, a new Repository is added
|
||||
to the database.
|
||||
"""
|
||||
self._check_from_handle(handle,transaction,Repository,
|
||||
self.repository_map,self.add_repository)
|
||||
|
||||
def get_person_from_gramps_id(self,val):
|
||||
"""
|
||||
Finds a Person in the database from the passed GRAMPS ID.
|
||||
@ -982,13 +1048,33 @@ class GrampsDbBase(GrampsDBCallback):
|
||||
return []
|
||||
|
||||
def get_gramps_ids(self,obj_key):
|
||||
"""
|
||||
Returns the list of gramps IDs contained within the database
|
||||
for the objects of the obj_key type.
|
||||
The function must be overridden in the derived class.
|
||||
"""
|
||||
assert False, "Needs to be overridden in the derived class"
|
||||
|
||||
key2table = {
|
||||
PERSON_KEY: self.id_trans,
|
||||
FAMILY_KEY: self.fid_trans,
|
||||
SOURCE_KEY: self.sid_trans,
|
||||
EVENT_KEY: self.eid_trans,
|
||||
MEDIA_KEY: self.oid_trans,
|
||||
PLACE_KEY: self.pid_trans,
|
||||
REPOSITORY_KEY: self.rid_trans,
|
||||
}
|
||||
|
||||
table = key2table[obj_key]
|
||||
return table.keys()
|
||||
|
||||
def has_gramps_id(self,obj_key,gramps_id):
|
||||
key2table = {
|
||||
PERSON_KEY: self.id_trans,
|
||||
FAMILY_KEY: self.fid_trans,
|
||||
SOURCE_KEY: self.sid_trans,
|
||||
EVENT_KEY: self.eid_trans,
|
||||
MEDIA_KEY: self.oid_trans,
|
||||
PLACE_KEY: self.pid_trans,
|
||||
REPOSITORY_KEY: self.rid_trans,
|
||||
}
|
||||
|
||||
table = key2table[obj_key]
|
||||
return table.has_key(str(gramps_id))
|
||||
|
||||
def find_initial_person(self):
|
||||
person = self.get_default_person()
|
||||
if not person:
|
||||
|
@ -146,27 +146,6 @@ class GrampsInMemDB(GrampsDbBase):
|
||||
else:
|
||||
self.name_group[name] = group
|
||||
|
||||
def get_gramps_ids(self,obj_key):
|
||||
"""
|
||||
Returns the list of gramps IDs contained within the database
|
||||
for the objects of the obj_key type.
|
||||
The function must be overridden in the derived class.
|
||||
"""
|
||||
|
||||
key2table_getfun = {
|
||||
PERSON_KEY: (self.person_map, self.get_person_from_handle),
|
||||
FAMILY_KEY: (self.family_map, self.get_family_from_handle),
|
||||
SOURCE_KEY: (self.source_map, self.get_source_from_handle),
|
||||
EVENT_KEY: (self.event_map, self.get_event_from_handle),
|
||||
MEDIA_KEY: (self.media_map, self.get_object_from_handle),
|
||||
PLACE_KEY: (self.place_map, self.get_place_from_handle),
|
||||
REPOSITORY_KEY: (self.repository_map,
|
||||
self.get_repository_from_handle),
|
||||
}
|
||||
|
||||
table,getfun = key2table_getfun[obj_key]
|
||||
return [getfun(handle).gramps_id for handle in iter(table)]
|
||||
|
||||
def get_surname_list(self):
|
||||
a = {}
|
||||
for person_id in iter(self.person_map):
|
||||
|
@ -52,6 +52,9 @@ import Utils
|
||||
import DateHandler
|
||||
import NameDisplay
|
||||
import _ConstXML
|
||||
from _GrampsDbBase import \
|
||||
PERSON_KEY,FAMILY_KEY,SOURCE_KEY,EVENT_KEY,\
|
||||
MEDIA_KEY,PLACE_KEY,REPOSITORY_KEY
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -64,30 +67,13 @@ try:
|
||||
except:
|
||||
gzip_ok = 0
|
||||
|
||||
_FAMILY_TRANS = {
|
||||
'Married' : RelLib.Family.MARRIED,
|
||||
'Unmarried' : RelLib.Family.UNMARRIED,
|
||||
'Partners' : RelLib.Family.UNMARRIED,
|
||||
'Civil Union' : RelLib.Family.CIVIL_UNION,
|
||||
'Unknown' : RelLib.Family.UNKNOWN,
|
||||
'Other' : RelLib.Family.CUSTOM,
|
||||
}
|
||||
|
||||
_NAME_TRANS = {
|
||||
"Unknown" : RelLib.Name.UNKNOWN,
|
||||
"Custom" : RelLib.Name.CUSTOM,
|
||||
"Also Known As" : RelLib.Name.AKA,
|
||||
"Birth Name" : RelLib.Name.BIRTH,
|
||||
"Married Name" : RelLib.Name.MARRIED,
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Importing data into the currently open database.
|
||||
# Must takes care of renaming media files according to their new IDs.
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
def importData(database, filename, callback=None,cl=0,use_trans=True):
|
||||
def importData(database, filename, callback=None,cl=0,use_trans=False):
|
||||
|
||||
filename = os.path.normpath(filename)
|
||||
basefile = os.path.dirname(filename)
|
||||
@ -98,8 +84,11 @@ def importData(database, filename, callback=None,cl=0,use_trans=True):
|
||||
change = os.path.getmtime(filename)
|
||||
parser = GrampsParser(database,callback,basefile,change,filename)
|
||||
|
||||
print "starting line parser"
|
||||
linecounter = LineParser(filename)
|
||||
print "finished parser"
|
||||
lc = linecounter.get_count()
|
||||
print "got line count:", lc
|
||||
|
||||
ro = database.readonly
|
||||
database.readonly = False
|
||||
@ -267,20 +256,13 @@ class GrampsParser:
|
||||
self.conf = 2
|
||||
self.gid2id = {}
|
||||
self.gid2fid = {}
|
||||
self.gid2eid = {}
|
||||
self.gid2pid = {}
|
||||
self.gid2oid = {}
|
||||
self.gid2sid = {}
|
||||
self.gid2rid = {}
|
||||
self.change = change
|
||||
self.dp = DateHandler.parser
|
||||
self.child_relmap = {
|
||||
"None" : RelLib.Person.CHILD_NONE,
|
||||
"Birth" : RelLib.Person.CHILD_BIRTH,
|
||||
"Adopted" : RelLib.Person.CHILD_ADOPTED,
|
||||
"Stepchild" : RelLib.Person.CHILD_STEPCHILD,
|
||||
"Sponsored" : RelLib.Person.CHILD_SPONSORED,
|
||||
"Foster" : RelLib.Person.CHILD_FOSTER,
|
||||
"Unknown" : RelLib.Person.CHILD_UNKNOWN,
|
||||
}
|
||||
self.place_names = sets.Set()
|
||||
cursor = database.get_place_cursor()
|
||||
data = cursor.next()
|
||||
@ -293,6 +275,8 @@ class GrampsParser:
|
||||
self.ord = None
|
||||
self.objref = None
|
||||
self.object = None
|
||||
self.repo = None
|
||||
self.reporef = None
|
||||
self.pref = None
|
||||
self.use_p = 0
|
||||
self.in_note = 0
|
||||
@ -341,9 +325,11 @@ class GrampsParser:
|
||||
self.witness_comment = ""
|
||||
self.idswap = {}
|
||||
self.fidswap = {}
|
||||
self.eidswap = {}
|
||||
self.sidswap = {}
|
||||
self.pidswap = {}
|
||||
self.oidswap = {}
|
||||
self.ridswap = {}
|
||||
self.eidswap = {}
|
||||
|
||||
self.func_map = {
|
||||
@ -432,69 +418,10 @@ class GrampsParser:
|
||||
"street" : (None, self.stop_street),
|
||||
"suffix" : (None, self.stop_suffix),
|
||||
"title" : (None, self.stop_title),
|
||||
"url" : (self.start_url, None)
|
||||
}
|
||||
|
||||
self.save_attr = {
|
||||
"Unknown" : RelLib.Attribute.UNKNOWN,
|
||||
"Custom" : RelLib.Attribute.CUSTOM,
|
||||
"Caste" : RelLib.Attribute.CASTE,
|
||||
"Description" : RelLib.Attribute.DESCRIPTION,
|
||||
"Identification Number" : RelLib.Attribute.ID,
|
||||
"National Origin" : RelLib.Attribute.NATIONAL,
|
||||
"Number of Children" : RelLib.Attribute.NUM_CHILD,
|
||||
"Social Security Number" : RelLib.Attribute.SSN,
|
||||
"Number of Children" : RelLib.Attribute.NUM_CHILD,
|
||||
}
|
||||
|
||||
self.save_event = {
|
||||
"Unknown" : RelLib.Event.UNKNOWN,
|
||||
"Custom" : RelLib.Event.CUSTOM,
|
||||
"Marriage" : RelLib.Event.MARRIAGE,
|
||||
"Marriage Settlement" : RelLib.Event.MARR_SETTL,
|
||||
"Marriage License" : RelLib.Event.MARR_LIC,
|
||||
"Marriage Contract" : RelLib.Event.MARR_CONTR,
|
||||
"Marriage Banns" : RelLib.Event.MARR_BANNS,
|
||||
"Engagement" : RelLib.Event.ENGAGEMENT,
|
||||
"Divorce" : RelLib.Event.DIVORCE,
|
||||
"Divorce Filing" : RelLib.Event.DIV_FILING,
|
||||
"Annulment" : RelLib.Event.ANNULMENT,
|
||||
"Alternate Marriage" : RelLib.Event.MARR_ALT,
|
||||
"Adopted" : RelLib.Event.ADOPT,
|
||||
"Birth" : RelLib.Event.BIRTH,
|
||||
"Death" : RelLib.Event.DEATH,
|
||||
"Adult Christening" : RelLib.Event.ADULT_CHRISTEN,
|
||||
"Baptism" : RelLib.Event.BAPTISM,
|
||||
"Bar Mitzvah" : RelLib.Event.BAR_MITZVAH,
|
||||
"Bas Mitzvah" : RelLib.Event.BAS_MITZVAH,
|
||||
"Blessing" : RelLib.Event.BLESS,
|
||||
"Burial" : RelLib.Event.BURIAL,
|
||||
"Cause Of Death" : RelLib.Event.CAUSE_DEATH,
|
||||
"Census" : RelLib.Event.CENSUS,
|
||||
"Christening" : RelLib.Event.CHRISTEN,
|
||||
"Confirmation" : RelLib.Event.CONFIRMATION,
|
||||
"Cremation" : RelLib.Event.CREMATION,
|
||||
"Degree" : RelLib.Event.DEGREE,
|
||||
"Divorce Filing" : RelLib.Event.DIV_FILING,
|
||||
"Education" : RelLib.Event.EDUCATION,
|
||||
"Elected" : RelLib.Event.ELECTED,
|
||||
"Emigration" : RelLib.Event.EMIGRATION,
|
||||
"First Communion" : RelLib.Event.FIRST_COMMUN,
|
||||
"Immigration" : RelLib.Event.IMMIGRATION,
|
||||
"Graduation" : RelLib.Event.GRADUATION,
|
||||
"Medical Information" : RelLib.Event.MED_INFO,
|
||||
"Military Service" : RelLib.Event.MILITARY_SERV,
|
||||
"Naturalization" : RelLib.Event.NATURALIZATION,
|
||||
"Nobility Title" : RelLib.Event.NOB_TITLE,
|
||||
"Number of Marriages" : RelLib.Event.NUM_MARRIAGES,
|
||||
"Occupation" : RelLib.Event.OCCUPATION,
|
||||
"Ordination" : RelLib.Event.ORDINATION,
|
||||
"Probate" : RelLib.Event.PROBATE,
|
||||
"Property" : RelLib.Event.PROPERTY,
|
||||
"Religion" : RelLib.Event.RELIGION,
|
||||
"Residence" : RelLib.Event.RESIDENCE,
|
||||
"Retirement" : RelLib.Event.RETIREMENT,
|
||||
"Will" : RelLib.Event.WILL,
|
||||
"url" : (self.start_url, None),
|
||||
"repository" : (self.start_repo,self.stop_repo),
|
||||
"reporef" : (self.start_reporef,self.stop_reporef),
|
||||
"rname" : (None, self.stop_rname),
|
||||
}
|
||||
|
||||
def find_person_by_gramps_id(self,gramps_id):
|
||||
@ -523,6 +450,19 @@ class GrampsParser:
|
||||
self.gid2fid[gramps_id] = intid
|
||||
return family
|
||||
|
||||
def find_event_by_gramps_id(self,gramps_id):
|
||||
intid = self.gid2eid.get(gramps_id)
|
||||
if intid:
|
||||
event = self.db.get_event_from_handle(intid)
|
||||
else:
|
||||
intid = Utils.create_id()
|
||||
event = RelLib.Event()
|
||||
event.set_handle(intid)
|
||||
event.set_gramps_id(gramps_id)
|
||||
self.db.add_event(event,self.trans)
|
||||
self.gid2eid[gramps_id] = intid
|
||||
return event
|
||||
|
||||
def find_place_by_gramps_id(self,gramps_id):
|
||||
intid = self.gid2pid.get(gramps_id)
|
||||
if intid:
|
||||
@ -562,47 +502,76 @@ class GrampsParser:
|
||||
self.gid2oid[gramps_id] = intid
|
||||
return obj
|
||||
|
||||
def map_gid(self,handle):
|
||||
if not self.idswap.get(handle):
|
||||
if self.db.get_person_from_gramps_id(handle):
|
||||
self.idswap[handle] = self.db.find_next_person_gramps_id()
|
||||
else:
|
||||
self.idswap[handle] = handle
|
||||
return self.idswap[handle]
|
||||
def find_repository_by_gramps_id(self,gramps_id):
|
||||
intid = self.gid2rid.get(gramps_id)
|
||||
if intid:
|
||||
repo = self.db.get_repository_from_handle(intid)
|
||||
else:
|
||||
intid = Utils.create_id()
|
||||
repo = RelLib.Repository()
|
||||
repo.set_handle(intid)
|
||||
repo.set_gramps_id(gramps_id)
|
||||
self.db.add_repository(repo,self.trans)
|
||||
self.gid2rid[gramps_id] = intid
|
||||
return repo
|
||||
|
||||
def map_fid(self,handle):
|
||||
if not self.fidswap.get(handle):
|
||||
if self.db.get_family_from_gramps_id(handle):
|
||||
self.fidswap[handle] = self.db.find_next_family_gramps_id()
|
||||
def map_gid(self,gramps_id):
|
||||
if not self.idswap.get(gramps_id):
|
||||
if self.db.has_gramps_id(PERSON_KEY,gramps_id):
|
||||
self.idswap[gramps_id] = self.db.find_next_person_gramps_id()
|
||||
else:
|
||||
self.fidswap[handle] = handle
|
||||
return self.fidswap[handle]
|
||||
self.idswap[gramps_id] = gramps_id
|
||||
return self.idswap[gramps_id]
|
||||
|
||||
def map_pid(self,handle):
|
||||
if not self.pidswap.get(handle):
|
||||
if self.db.get_place_from_gramps_id(handle):
|
||||
self.pidswap[handle] = self.db.find_next_place_gramps_id()
|
||||
def map_fid(self,gramps_id):
|
||||
if not self.fidswap.get(gramps_id):
|
||||
if self.db.has_gramps_id(FAMILY_KEY,gramps_id):
|
||||
self.fidswap[gramps_id] = self.db.find_next_family_gramps_id()
|
||||
else:
|
||||
self.pidswap[handle] = handle
|
||||
return self.pidswap[handle]
|
||||
self.fidswap[gramps_id] = gramps_id
|
||||
return self.fidswap[gramps_id]
|
||||
|
||||
def map_sid(self,handle):
|
||||
if not self.sidswap.get(handle):
|
||||
if self.db.get_source_from_gramps_id(handle):
|
||||
self.sidswap[handle] = self.db.find_next_source_gramps_id()
|
||||
def map_eid(self,gramps_id):
|
||||
if not self.eidswap.get(gramps_id):
|
||||
if self.db.has_gramps_id(EVENT_KEY,gramps_id):
|
||||
self.eidswap[gramps_id] = self.db.find_next_event_gramps_id()
|
||||
else:
|
||||
self.sidswap[handle] = handle
|
||||
return self.sidswap[handle]
|
||||
self.eidswap[gramps_id] = gramps_id
|
||||
return self.eidswap[gramps_id]
|
||||
|
||||
def map_oid(self,handle):
|
||||
if not self.oidswap.get(handle):
|
||||
if self.db.get_object_from_gramps_id(handle):
|
||||
self.oidswap[handle] = self.db.find_next_object_gramps_id()
|
||||
def map_pid(self,gramps_id):
|
||||
if not self.pidswap.get(gramps_id):
|
||||
if self.db.has_gramps_id(PLACE_KEY,gramps_id):
|
||||
self.pidswap[gramps_id] = self.db.find_next_place_gramps_id()
|
||||
else:
|
||||
self.oidswap[handle] = handle
|
||||
return self.oidswap[handle]
|
||||
self.pidswap[gramps_id] = gramps_id
|
||||
return self.pidswap[gramps_id]
|
||||
|
||||
def parse(self,file,use_trans=True,linecount=0):
|
||||
def map_sid(self,gramps_id):
|
||||
if not self.sidswap.get(gramps_id):
|
||||
if self.db.has_gramps_id(SOURCE_KEY,gramps_id):
|
||||
self.sidswap[gramps_id] = self.db.find_next_source_gramps_id()
|
||||
else:
|
||||
self.sidswap[gramps_id] = gramps_id
|
||||
return self.sidswap[gramps_id]
|
||||
|
||||
def map_oid(self,gramps_id):
|
||||
if not self.oidswap.get(gramps_id):
|
||||
if self.db.has_gramps_id(MEDIA_KEY,gramps_id):
|
||||
self.oidswap[gramps_id] = self.db.find_next_object_gramps_id()
|
||||
else:
|
||||
self.oidswap[gramps_id] = gramps_id
|
||||
return self.oidswap[gramps_id]
|
||||
|
||||
def map_rid(self,gramps_id):
|
||||
if not self.ridswap.get(gramps_id):
|
||||
if self.db.has_gramps_id(REPOSITORY_KEY,gramps_id):
|
||||
self.ridswap[gramps_id] = self.db.find_next_repository_gramps_id()
|
||||
else:
|
||||
self.ridswap[gramps_id] = gramps_id
|
||||
return self.ridswap[gramps_id]
|
||||
|
||||
def parse(self,file,use_trans=False,linecount=0):
|
||||
|
||||
self.trans = self.db.transaction_begin("",batch=True)
|
||||
self.linecount = linecount
|
||||
@ -630,8 +599,7 @@ class GrampsParser:
|
||||
del self.func_map
|
||||
del self.func_list
|
||||
del self.p
|
||||
if use_trans:
|
||||
self.db.transaction_commit(self.trans,_("GRAMPS XML import"))
|
||||
self.db.transaction_commit(self.trans,_("GRAMPS XML import"))
|
||||
self.db.enable_signals()
|
||||
self.db.request_rebuild()
|
||||
|
||||
@ -660,33 +628,33 @@ class GrampsParser:
|
||||
|
||||
def start_sealed_to(self,attrs):
|
||||
try:
|
||||
family = self.db.find_family_from_handle(
|
||||
attrs['hlink'].replace('_',''),self.trans)
|
||||
handle = attrs['hlink'].replace('_','')
|
||||
self.db.check_family_from_handle(handle,self.trans)
|
||||
except KeyError:
|
||||
handle = self.map_fid(attrs['ref'])
|
||||
family = self.find_family_by_gramps_id(handle)
|
||||
self.ord.set_family_handle(family.get_handle())
|
||||
gramps_id = self.map_fid(attrs['ref'])
|
||||
family = self.find_family_by_gramps_id(gramps_id)
|
||||
handle = family.handle
|
||||
self.ord.set_family_handle(handle)
|
||||
|
||||
def start_place(self,attrs):
|
||||
try:
|
||||
self.placeobj = self.db.find_place_from_handle(
|
||||
attrs['hlink'].replace('_',''),self.trans)
|
||||
except KeyError:
|
||||
handle = self.map_pid(attrs['ref'])
|
||||
self.placeobj = self.find_place_by_gramps_id(handle)
|
||||
gramps_id = self.map_pid(attrs['ref'])
|
||||
self.placeobj = self.find_place_by_gramps_id(gramps_id)
|
||||
|
||||
def start_placeobj(self,attrs):
|
||||
handle = self.map_pid(attrs['id'])
|
||||
gramps_id = self.map_pid(attrs['id'])
|
||||
try:
|
||||
self.placeobj = self.db.find_place_from_handle(
|
||||
attrs['handle'].replace('_',''),self.trans)
|
||||
self.placeobj.set_gramps_id(handle)
|
||||
self.placeobj.set_gramps_id(gramps_id)
|
||||
except KeyError:
|
||||
self.placeobj = self.find_place_by_gramps_id(handle)
|
||||
self.placeobj = self.find_place_by_gramps_id(gramps_id)
|
||||
# GRAMPS LEGACY: title in the placeobj tag
|
||||
self.placeobj.title = attrs.get('title','')
|
||||
self.locations = 0
|
||||
|
||||
self.update()
|
||||
|
||||
def start_location(self,attrs):
|
||||
@ -717,10 +685,10 @@ class GrampsParser:
|
||||
self.event.set_note(note_text)
|
||||
return
|
||||
|
||||
if attrs.has_key('hlink'):
|
||||
person = self.db.find_person_from_handle(
|
||||
attrs['hlink'].replace('_',''),self.trans)
|
||||
elif attrs.has_key('ref'):
|
||||
try:
|
||||
handle = attrs['hlink'].replace('_','')
|
||||
person = self.db.find_person_from_handle(handle,self.trans)
|
||||
except KeyError:
|
||||
person = self.find_person_by_gramps_id(self.map_gid(attrs["ref"]))
|
||||
# Add an EventRef from that person
|
||||
# to this event using ROLE_WITNESS role
|
||||
@ -735,19 +703,26 @@ class GrampsParser:
|
||||
self.placeobj.long = attrs.get('long','')
|
||||
|
||||
def start_event(self,attrs):
|
||||
self.event = RelLib.Event()
|
||||
if self.person or self.family:
|
||||
# GRAMPS LEGACY: old events that were written inside
|
||||
# person or family objects.
|
||||
self.event = RelLib.Event()
|
||||
self.event.handle = Utils.create_id()
|
||||
self.event.type = _ConstXML.tuple_from_xml(_ConstXML.events,
|
||||
attrs['type'])
|
||||
self.db.add_event(self.event,self.trans)
|
||||
else:
|
||||
# This is new event, with handle already existing
|
||||
self.event.handle = attrs['handle'].replace('_','')
|
||||
# This is new event, with ID and handle already existing
|
||||
self.update()
|
||||
gramps_id = self.map_eid(attrs["id"])
|
||||
try:
|
||||
self.event = self.db.find_event_from_handle(
|
||||
attrs['handle'].replace('_',''),self.trans)
|
||||
self.event.gramps_id = gramps_id
|
||||
except KeyError:
|
||||
self.event = self.find_event_by_gramps_id(gramps_id)
|
||||
self.event.conf = int(attrs.get("conf",2))
|
||||
self.event.private = bool(attrs.get("priv"))
|
||||
self.db.add_event(self.event,self.trans)
|
||||
|
||||
def start_eventref(self,attrs):
|
||||
self.eventref = RelLib.EventRef()
|
||||
@ -788,18 +763,18 @@ class GrampsParser:
|
||||
|
||||
def start_address(self,attrs):
|
||||
self.address = RelLib.Address()
|
||||
self.person.add_address(self.address)
|
||||
self.address.conf = int(attrs.get("conf",2))
|
||||
self.address.private = bool(attrs.get("priv"))
|
||||
|
||||
def start_bmark(self,attrs):
|
||||
try:
|
||||
person = self.db.find_person_from_handle(
|
||||
attrs['hlink'].replace('_',''),self.trans)
|
||||
handle = attrs['hlink'].replace('_','')
|
||||
self.db.check_person_from_handle(handle,self.trans)
|
||||
except KeyError:
|
||||
handle = self.map_gid(attrs["ref"])
|
||||
person = self.find_person_by_gramps_id(handle)
|
||||
self.db.bookmarks.append(person.get_handle())
|
||||
gramps_id = self.map_gid(attrs["ref"])
|
||||
person = self.find_person_by_gramps_id(gramps_id)
|
||||
handle = person.handle
|
||||
self.db.bookmarks.append(handle)
|
||||
|
||||
def start_person(self,attrs):
|
||||
self.update()
|
||||
@ -826,27 +801,30 @@ class GrampsParser:
|
||||
|
||||
def start_father(self,attrs):
|
||||
try:
|
||||
person = self.db.find_person_from_handle(
|
||||
attrs['hlink'].replace('_',''),self.trans)
|
||||
handle = attrs['hlink'].replace('_','')
|
||||
self.db.check_person_from_handle(handle,self.trans)
|
||||
except KeyError:
|
||||
person = self.find_person_by_gramps_id(self.map_gid(attrs["ref"]))
|
||||
self.family.set_father_handle(person.get_handle())
|
||||
handle = person_handle
|
||||
self.family.set_father_handle(handle)
|
||||
|
||||
def start_mother(self,attrs):
|
||||
try:
|
||||
person = self.db.find_person_from_handle(
|
||||
attrs['hlink'].replace('_',''),self.trans)
|
||||
handle = attrs['hlink'].replace('_','')
|
||||
self.db.check_person_from_handle(handle,self.trans)
|
||||
except KeyError:
|
||||
person = self.find_person_by_gramps_id(self.map_gid(attrs["ref"]))
|
||||
self.family.set_mother_handle(person.get_handle())
|
||||
handle = person_handle
|
||||
self.family.set_mother_handle(handle)
|
||||
|
||||
def start_child(self,attrs):
|
||||
try:
|
||||
person = self.db.find_person_from_handle(
|
||||
attrs['hlink'].replace('_',''),self.trans)
|
||||
handle = attrs['hlink'].replace('_','')
|
||||
self.db.check_person_from_handle(handle,self.trans)
|
||||
except KeyError:
|
||||
person = self.find_person_by_gramps_id(self.map_gid(attrs["ref"]))
|
||||
self.family.add_child_handle(person.get_handle())
|
||||
handle = person_handle
|
||||
self.family.add_child_handle(handle)
|
||||
|
||||
def start_url(self,attrs):
|
||||
if not attrs.has_key("href"):
|
||||
@ -859,16 +837,18 @@ class GrampsParser:
|
||||
self.person.add_url(url)
|
||||
elif self.placeobj:
|
||||
self.placeobj.add_url(url)
|
||||
elif self.repo:
|
||||
self.repo.add_url(url)
|
||||
|
||||
def start_family(self,attrs):
|
||||
self.update()
|
||||
handle = self.map_fid(attrs["id"])
|
||||
gramps_id = self.map_fid(attrs["id"])
|
||||
try:
|
||||
self.family = self.db.find_family_from_handle(
|
||||
attrs['handle'].replace('_',''),self.trans)
|
||||
self.family.set_gramps_id(handle)
|
||||
self.family.set_gramps_id(gramps_id)
|
||||
except KeyError:
|
||||
self.family = self.find_family_by_gramps_id(handle)
|
||||
self.family = self.find_family_by_gramps_id(gramps_id)
|
||||
# GRAMPS LEGACY: the type now belongs to <rel> tag
|
||||
# Here we need to support old format of <family type="Married">
|
||||
self.family.type = _ConstXML.tuple_from_xml(
|
||||
@ -897,24 +877,26 @@ class GrampsParser:
|
||||
|
||||
def start_childof(self,attrs):
|
||||
try:
|
||||
family = self.db.find_family_from_handle(
|
||||
attrs["hlink"].replace('_',''),self.trans)
|
||||
handle = attrs["hlink"].replace('_','')
|
||||
self.db.check_family_from_handle(handle,self.trans)
|
||||
except KeyError:
|
||||
family = self.find_family_by_gramps_id(self.map_fid(attrs["ref"]))
|
||||
handle = family.handle
|
||||
|
||||
mrel = _ConstXML.tuple_from_xml(_ConstXML.child_relations,
|
||||
attrs.get('mrel','Birth'))
|
||||
frel = _ConstXML.tuple_from_xml(_ConstXML.child_relations,
|
||||
attrs.get('frel','Birth'))
|
||||
self.person.add_parent_family_handle(family.handle,mrel,frel)
|
||||
self.person.add_parent_family_handle(handle,mrel,frel)
|
||||
|
||||
def start_parentin(self,attrs):
|
||||
try:
|
||||
family = self.db.find_family_from_handle(
|
||||
attrs['hlink'].replace('_',''),self.trans)
|
||||
handle = attrs["hlink"].replace('_','')
|
||||
self.db.check_family_from_handle(handle,self.trans)
|
||||
except KeyError:
|
||||
family = self.find_family_by_gramps_id(self.map_fid(attrs["ref"]))
|
||||
self.person.add_family_handle(family.handle)
|
||||
handle = family.handle
|
||||
self.person.add_family_handle(handle)
|
||||
|
||||
def start_name(self,attrs):
|
||||
if not self.in_witness:
|
||||
@ -939,13 +921,14 @@ class GrampsParser:
|
||||
def start_sourceref(self,attrs):
|
||||
self.source_ref = RelLib.SourceRef()
|
||||
try:
|
||||
source = self.db.find_source_from_handle(
|
||||
attrs["hlink"].replace('_',''),self.trans)
|
||||
handle = attrs["hlink"].replace('_','')
|
||||
self.db.check_source_from_handle(handle,self.trans)
|
||||
except KeyError:
|
||||
source = self.find_source_by_gramps_id(self.map_sid(attrs["ref"]))
|
||||
|
||||
handle = source.handle
|
||||
|
||||
self.source_ref.ref = handle
|
||||
self.source_ref.confidence = int(attrs.get("conf",self.conf))
|
||||
self.source_ref.ref = source.handle
|
||||
if self.photo:
|
||||
self.photo.add_source_reference(self.source_ref)
|
||||
elif self.ord:
|
||||
@ -971,23 +954,41 @@ class GrampsParser:
|
||||
|
||||
def start_source(self,attrs):
|
||||
self.update()
|
||||
handle = self.map_sid(attrs["id"])
|
||||
gramps_id = self.map_sid(attrs["id"])
|
||||
try:
|
||||
self.source = self.db.find_source_from_handle(
|
||||
attrs['handle'].replace('_',''),self.trans)
|
||||
self.source.set_gramps_id(handle)
|
||||
self.source.set_gramps_id(gramps_id)
|
||||
except KeyError:
|
||||
self.source = self.find_source_by_gramps_id(handle)
|
||||
self.source = self.find_source_by_gramps_id(gramps_id)
|
||||
|
||||
def start_reporef(self,attrs):
|
||||
self.reporef = RelLib.RepoRef()
|
||||
try:
|
||||
handle = attrs['hlink'].replace('_','')
|
||||
self.db.check_repository_from_handle(handle,self.trans)
|
||||
except KeyError:
|
||||
repo = self.find_repo_by_gramps_id(self.map_rid(attrs['ref']))
|
||||
handle = repo.handle
|
||||
|
||||
self.reporef.ref = handle
|
||||
self.reporef.call_number = attrs.get('callno','')
|
||||
self.reporef.media_type = _ConstXML.tuple_from_xml(
|
||||
_ConstXML.source_media_types,attrs.get('medium',"Unknown"))
|
||||
# we count here on self.source being available
|
||||
# reporefs can only be found within source
|
||||
self.source.add_repo_reference(self.reporef)
|
||||
|
||||
def start_objref(self,attrs):
|
||||
self.objref = RelLib.MediaRef()
|
||||
try:
|
||||
obj = self.db.find_object_from_handle(
|
||||
attrs['hlink'].replace('_',''),self.trans)
|
||||
handle = attrs['hlink'].replace('_','')
|
||||
self.db.check_object_from_handle(handle,self.trans)
|
||||
except KeyError:
|
||||
obj = self.find_object_by_gramps_id(self.map_oid(attrs['ref']))
|
||||
handle = obj.handle
|
||||
|
||||
self.objref.ref = obj.handle
|
||||
self.objref.ref = handle
|
||||
self.objref.private = bool(attrs.get('priv'))
|
||||
if self.event:
|
||||
self.event.add_media_reference(self.objref)
|
||||
@ -1001,13 +1002,13 @@ class GrampsParser:
|
||||
self.placeobj.add_media_reference(self.objref)
|
||||
|
||||
def start_object(self,attrs):
|
||||
handle = self.map_oid(attrs['id'])
|
||||
gramps_id = self.map_oid(attrs['id'])
|
||||
try:
|
||||
self.object = self.db.find_object_from_handle(
|
||||
attrs['handle'].replace('_',''),self.trans)
|
||||
self.object.set_gramps_id(handle)
|
||||
self.object.set_gramps_id(gramps_id)
|
||||
except KeyError:
|
||||
self.object = self.find_object_by_gramps_id(handle)
|
||||
self.object = self.find_object_by_gramps_id(gramps_id)
|
||||
|
||||
# GRAMPS LEGACY: src, mime, and description attributes
|
||||
# now belong to the <file> tag. Here we are supporting
|
||||
@ -1021,6 +1022,15 @@ class GrampsParser:
|
||||
src = os.path.dirname(fullpath) + '/' + src
|
||||
self.object.path = src
|
||||
|
||||
def start_repo(self,attrs):
|
||||
gramps_id = self.map_rid(attrs['id'])
|
||||
try:
|
||||
self.repo = self.db.find_repository_from_handle(
|
||||
attrs['handle'].replace('_',''),self.trans)
|
||||
self.repo.set_gramps_id(gramps_id)
|
||||
except KeyError:
|
||||
self.repo = self.find_repository_by_gramps_id(gramps_id)
|
||||
|
||||
def stop_people(self,*tag):
|
||||
pass
|
||||
|
||||
@ -1034,6 +1044,13 @@ class GrampsParser:
|
||||
def stop_objref(self,*tag):
|
||||
self.objref = None
|
||||
|
||||
def stop_repo(self,*tag):
|
||||
self.db.commit_repository(self.repo,self.trans,self.change)
|
||||
self.repo = None
|
||||
|
||||
def stop_reporef(self,*tag):
|
||||
self.reporef = None
|
||||
|
||||
def start_photo(self,attrs):
|
||||
self.photo = RelLib.MediaObject()
|
||||
self.pref = RelLib.MediaRef()
|
||||
@ -1253,6 +1270,10 @@ class GrampsParser:
|
||||
self.attribute.set_value(tag)
|
||||
|
||||
def stop_address(self,*tag):
|
||||
if self.person:
|
||||
self.person.add_address(self.address)
|
||||
elif self.repo:
|
||||
self.repo.add_address(self.address)
|
||||
self.address = None
|
||||
|
||||
def stop_places(self,*tag):
|
||||
@ -1278,12 +1299,15 @@ class GrampsParser:
|
||||
def stop_family(self,*tag):
|
||||
self.db.commit_family(self.family,self.trans,self.change)
|
||||
self.family = None
|
||||
while gtk.events_pending():
|
||||
gtk.main_iteration()
|
||||
|
||||
def stop_type(self,tag):
|
||||
# Event type
|
||||
self.event.type = _ConstXML.tuple_from_xml(_ConstXML.events,tag)
|
||||
if self.event:
|
||||
# Event type
|
||||
self.event.type = _ConstXML.tuple_from_xml(_ConstXML.events,tag)
|
||||
elif self.repo:
|
||||
# Repository type
|
||||
self.repo.type = _ConstXML.tuple_from_xml(
|
||||
_ConstXML.repository_types,tag)
|
||||
|
||||
def stop_eventref(self,tag):
|
||||
self.eventref = None
|
||||
@ -1310,8 +1334,8 @@ class GrampsParser:
|
||||
self.event = None
|
||||
|
||||
def stop_name(self,tag):
|
||||
# Parse witnesses created by older gramps
|
||||
if self.in_witness:
|
||||
# Parse witnesses created by older gramps
|
||||
note_text = self.event.get_note() + "\n" + \
|
||||
_("Witness name: %s") % tag
|
||||
self.event.set_note(note_text)
|
||||
@ -1327,6 +1351,10 @@ class GrampsParser:
|
||||
self.person.get_primary_name().build_sort_name()
|
||||
self.name = None
|
||||
|
||||
def stop_rname(self,tag):
|
||||
# Repository name
|
||||
self.repo.name = tag
|
||||
|
||||
def stop_ref(self,tag):
|
||||
# Parse witnesses created by older gramps
|
||||
person = self.find_person_by_gramps_id(self.map_gid(tag))
|
||||
@ -1353,8 +1381,6 @@ class GrampsParser:
|
||||
self.event.set_place_handle(self.placeobj.get_handle())
|
||||
self.db.commit_place(self.placeobj,self.trans,self.change)
|
||||
self.placeobj = None
|
||||
while gtk.events_pending():
|
||||
gtk.main_iteration()
|
||||
|
||||
def stop_date(self,tag):
|
||||
if tag:
|
||||
@ -1372,8 +1398,6 @@ class GrampsParser:
|
||||
def stop_person(self,*tag):
|
||||
self.db.commit_person(self.person,self.trans,self.change)
|
||||
self.person = None
|
||||
while gtk.events_pending():
|
||||
gtk.main_iteration()
|
||||
|
||||
def stop_description(self,tag):
|
||||
self.event.description = tag
|
||||
@ -1391,7 +1415,7 @@ class GrampsParser:
|
||||
self.person.set_gender (RelLib.Person.UNKNOWN)
|
||||
|
||||
def stop_stitle(self,tag):
|
||||
self.source.set_title(tag)
|
||||
self.source.title = tag
|
||||
|
||||
def stop_sourceref(self,*tag):
|
||||
self.source_ref = None
|
||||
@ -1401,22 +1425,22 @@ class GrampsParser:
|
||||
self.source = None
|
||||
|
||||
def stop_sauthor(self,tag):
|
||||
self.source.set_author(tag)
|
||||
self.source.author = tag
|
||||
|
||||
def stop_phone(self,tag):
|
||||
self.address.set_phone(tag)
|
||||
self.address.phone = tag
|
||||
|
||||
def stop_street(self,tag):
|
||||
self.address.set_street(tag)
|
||||
self.address.street = tag
|
||||
|
||||
def stop_city(self,tag):
|
||||
self.address.set_city(tag)
|
||||
self.address.city = tag
|
||||
|
||||
def stop_state(self,tag):
|
||||
self.address.set_state(tag)
|
||||
self.address.state = tag
|
||||
|
||||
def stop_country(self,tag):
|
||||
self.address.set_country(tag)
|
||||
self.address.country = tag
|
||||
|
||||
def stop_postal(self,tag):
|
||||
self.address.set_postal_code(tag)
|
||||
@ -1504,6 +1528,10 @@ class GrampsParser:
|
||||
self.placeobj.set_note_object(self.note)
|
||||
elif self.eventref:
|
||||
self.eventref.set_note_object(self.note)
|
||||
elif self.repo:
|
||||
self.repo.set_note_object(self.note)
|
||||
elif self.reporef:
|
||||
self.reporef.set_note_object(self.note)
|
||||
|
||||
def stop_research(self,tag):
|
||||
self.owner.set(self.resname, self.resaddr, self.rescity, self.resstate,
|
||||
@ -1587,22 +1615,64 @@ def append_value(orig,val):
|
||||
|
||||
def build_place_title(loc):
|
||||
"Builds a title from a location"
|
||||
city = loc.get_city()
|
||||
state = loc.get_state()
|
||||
country = loc.get_country()
|
||||
county = loc.get_county()
|
||||
parish = loc.get_parish()
|
||||
|
||||
value = ""
|
||||
|
||||
if parish:
|
||||
value = parish
|
||||
if city:
|
||||
value = append_value(value,city)
|
||||
if county:
|
||||
value = append_value(value,county)
|
||||
if state:
|
||||
value = append_value(value,state)
|
||||
if country:
|
||||
value = append_value(value,country)
|
||||
if loc.parish:
|
||||
value = loc.parish
|
||||
if loc.city:
|
||||
value = append_value(value,loc.city)
|
||||
if loc.county:
|
||||
value = append_value(value,loc.county)
|
||||
if loc.state:
|
||||
value = append_value(value,loc.state)
|
||||
if loc.country:
|
||||
value = append_value(value,loc.country)
|
||||
return value
|
||||
|
||||
if __name__ == "__main__":
|
||||
import sys
|
||||
import hotshot#, hotshot.stats
|
||||
import const
|
||||
from GrampsDb import gramps_db_factory, gramps_db_reader_factory
|
||||
|
||||
def callback(val):
|
||||
print val
|
||||
|
||||
codeset = None
|
||||
|
||||
db_class = gramps_db_factory(const.app_gramps)
|
||||
database = db_class()
|
||||
database.load("test.grdb",lambda x: None, mode="w")
|
||||
|
||||
filename = os.path.normpath(sys.argv[1])
|
||||
basefile = os.path.dirname(filename)
|
||||
change = os.path.getmtime(filename)
|
||||
|
||||
parser = GrampsParser(database,callback,basefile,change,filename)
|
||||
|
||||
print "starting line parser"
|
||||
linecounter = LineParser(filename)
|
||||
print "finished parser"
|
||||
lc = linecounter.get_count()
|
||||
print "got line count:", lc
|
||||
|
||||
xml_file = gzip.open(filename,"rb")
|
||||
|
||||
if True:
|
||||
pr = hotshot.Profile('mystats.profile')
|
||||
print "Start"
|
||||
pr.runcall(parser.parse,xml_file,False,lc)
|
||||
print "Finished"
|
||||
pr.close()
|
||||
## print "Loading profile"
|
||||
## stats = hotshot.stats.load('mystats.profile')
|
||||
## print "done"
|
||||
## stats.strip_dirs()
|
||||
## stats.sort_stats('time','calls')
|
||||
## stats.print_stats(100)
|
||||
else:
|
||||
import time
|
||||
t = time.time()
|
||||
parser.parse(xml_file,False,lc)
|
||||
print time.time() - t
|
||||
|
||||
xml_file.close()
|
||||
|
Loading…
Reference in New Issue
Block a user