* src/GrampsDb/_ReadGedcom.py: fix repeated translation call

svn: r5841
This commit is contained in:
Don Allingham 2006-01-27 05:01:48 +00:00
parent 94523aa953
commit 4719ba7d36
3 changed files with 44 additions and 12 deletions

View File

@ -2,6 +2,7 @@
* src/DisplayModels.py: optimization * src/DisplayModels.py: optimization
* src/DisplayTabs.py: improved docs * src/DisplayTabs.py: improved docs
* src/ViewManger.py: remove import_tool_callback * src/ViewManger.py: remove import_tool_callback
* src/GrampsDb/_ReadGedcom.py: fix repeated translation call
2006-01-25 Alex Roitman <shura@gramps-project.org> 2006-01-25 Alex Roitman <shura@gramps-project.org>
* src/GrampsDb/_GrampsBSDDB.py: Add proper upgrade path from * src/GrampsDb/_GrampsBSDDB.py: Add proper upgrade path from

View File

@ -122,6 +122,9 @@ pedi_type = {
'foster' : (RelLib.Person.CHILD_FOSTER,''), 'foster' : (RelLib.Person.CHILD_FOSTER,''),
} }
_event_family_str = _("%(event_name)s of %(family)s")
_event_person_str = _("%(event_name)s of %(person)s")
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
# GEDCOM events to GRAMPS events conversion # GEDCOM events to GRAMPS events conversion
@ -706,7 +709,8 @@ class GedcomParser:
self.source.set_abbreviation(matches[2]) self.source.set_abbreviation(matches[2])
elif matches[1] == TOKEN_REPO: elif matches[1] == TOKEN_REPO:
repo_ref = RelLib.RepoRef() repo_ref = RelLib.RepoRef()
repo_ref = self.find_or_create_repository(matches[2][1:-1]) repo = self.find_or_create_repository(matches[2][1:-1])
repo_ref.set_reference_handle(repo.handle)
self.parse_repo_ref(matches,repo_ref,level+1) self.parse_repo_ref(matches,repo_ref,level+1)
self.source.add_repo_reference(repo_ref) self.source.add_repo_reference(repo_ref)
elif matches[1] in (TOKEN_OBJE,TOKEN_CHAN,TOKEN__CAT): elif matches[1] in (TOKEN_OBJE,TOKEN_CHAN,TOKEN__CAT):
@ -931,7 +935,22 @@ class GedcomParser:
else: else:
self.barf(1) self.barf(1)
def parse_repo_ref(self, matches, repo, level): def parse_repo_ref(self, matches, repo_ref, level):
while True:
matches = self.get_next()
if int(matches[0]) < level:
self.backup()
return
elif matches[1] == TOKEN_CALN:
repo_ref.set_call_number(matches[2])
self.parse_repo_ref_caln(repo_ref, level+1)
elif matches[1] == TOKEN_NOTE:
note = self.parse_note(matches,repo_ref,level+1,"")
repo_ref.set_note(note)
else:
self.barf(1)
def parse_repo_ref_caln(self, repo, level):
while True: while True:
matches = self.get_next() matches = self.get_next()
if int(matches[0]) < level: if int(matches[0]) < level:
@ -1074,7 +1093,7 @@ class GedcomParser:
self.family.set_relationship((RelLib.Family.MARRIED,'')) self.family.set_relationship((RelLib.Family.MARRIED,''))
if event.get_type()[0] != RelLib.Event.CUSTOM: if event.get_type()[0] != RelLib.Event.CUSTOM:
if not event.get_description(): if not event.get_description():
text = _("%(event_name)s of %(family)s") % { text = _event_family_str % {
'event_name' : Utils.family_events[event.get_type()[0]], 'event_name' : Utils.family_events[event.get_type()[0]],
'family' : Utils.family_name(self.family,self.db), 'family' : Utils.family_name(self.family,self.db),
} }
@ -2289,11 +2308,10 @@ class GedcomParser:
def skip_record(self,matches,state): def skip_record(self,matches,state):
self.ignore_sub_junk(2) self.ignore_sub_junk(2)
def person_event_name(event,person): def person_event_name(event,person):
if event.get_type()[0] != RelLib.Event.CUSTOM: if event.get_type()[0] != RelLib.Event.CUSTOM:
if not event.get_description(): if not event.get_description():
text = _("%(event_name)s of %(person)s") % { text = _event_person_str % {
'event_name' : Utils.personal_events[event.get_type()[0]], 'event_name' : Utils.personal_events[event.get_type()[0]],
'person' : NameDisplay.displayer.display(person), 'person' : NameDisplay.displayer.display(person),
} }
@ -2320,7 +2338,7 @@ def create_id():
if __name__ == "__main__": if __name__ == "__main__":
import sys import sys
import profile import hotshot, hotshot.stats
import const import const
from GrampsDb import gramps_db_factory, gramps_db_reader_factory from GrampsDb import gramps_db_factory, gramps_db_reader_factory
@ -2333,9 +2351,22 @@ if __name__ == "__main__":
database = db_class() database = db_class()
database.load("test.grdb",lambda x: None, mode="w") database.load("test.grdb",lambda x: None, mode="w")
np = NoteParser(sys.argv[1],False) np = NoteParser(sys.argv[1],False)
import time
t = time.time()
g = GedcomParser(database,sys.argv[1],callback, codeset, np.get_map(),np.get_lines()) g = GedcomParser(database,sys.argv[1],callback, codeset, np.get_map(),np.get_lines())
#profile.run('g.parse_gedcom_file(False)')
g.parse_gedcom_file(False) if False:
print time.time() - t pr = hotshot.Profile('mystats.profile')
print "Start"
pr.runcall(g.parse_gedcom_file,False)
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()
g.parse_gedcom_file(False)
print time.time() - t

View File

@ -118,4 +118,4 @@ class RepoRef(BaseObject,NoteBase):
return self.media_type return self.media_type
def set_media_type(self,media_type): def set_media_type(self,media_type):
self.media_type = media_type self.media_type = media_type