Update ImportCsv and ExportCsv for citations.
svn: r18539
This commit is contained in:
parent
264e15b6fd
commit
30501a9c5b
@ -5,6 +5,7 @@
|
|||||||
# Copyright (C) 2004-2007 Donald N. Allingham
|
# Copyright (C) 2004-2007 Donald N. Allingham
|
||||||
# Copyright (C) 2008 Brian G. Matherly
|
# Copyright (C) 2008 Brian G. Matherly
|
||||||
# Copyright (C) 2010 Jakim Friant
|
# Copyright (C) 2010 Jakim Friant
|
||||||
|
# Copyright (C) 2011 Tim G Lyons
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# 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
|
# it under the terms of the GNU General Public License as published by
|
||||||
@ -93,8 +94,9 @@ def get_primary_event_ref_from_type(db, person, event_name):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
def get_primary_source_title(db, obj):
|
def get_primary_source_title(db, obj):
|
||||||
for ref in obj.get_source_references():
|
for citation_handle in obj.get_citation_list():
|
||||||
source = db.get_source_from_handle(ref.ref)
|
citation = db.get_citation_from_handle(citation_handle)
|
||||||
|
source = db.get_source_from_handle(citation.get_reference_handle())
|
||||||
if source:
|
if source:
|
||||||
return source.get_title()
|
return source.get_title()
|
||||||
return ""
|
return ""
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
# Copyright (C) 2000-2007 Donald N. Allingham
|
# Copyright (C) 2000-2007 Donald N. Allingham
|
||||||
# Copyright (C) 2008 Raphael Ackerman
|
# Copyright (C) 2008 Raphael Ackerman
|
||||||
# Copyright (C) 2008 Brian G. Matherly
|
# Copyright (C) 2008 Brian G. Matherly
|
||||||
|
# Copyright (C) 2011 Tim G Lyons
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# 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
|
# it under the terms of the GNU General Public License as published by
|
||||||
@ -482,17 +483,7 @@ class CSVParser(object):
|
|||||||
if source:
|
if source:
|
||||||
# add, if new
|
# add, if new
|
||||||
dummy_new, source = self.get_or_create_source(source)
|
dummy_new, source = self.get_or_create_source(source)
|
||||||
source_refs = child.get_source_references()
|
self.find_and_set_citation(child, source)
|
||||||
found = 0
|
|
||||||
for ref in source_refs:
|
|
||||||
LOG.debug("child: %s looking for ref: %s", ref.ref,
|
|
||||||
source.get_handle())
|
|
||||||
if ref.ref == source.get_handle():
|
|
||||||
found = 1
|
|
||||||
if not found:
|
|
||||||
sref = gen.lib.SourceRef()
|
|
||||||
sref.set_reference_handle(source.get_handle())
|
|
||||||
child.add_source_reference(sref)
|
|
||||||
# put note on child
|
# put note on child
|
||||||
if note:
|
if note:
|
||||||
# append notes, if previous notes
|
# append notes, if previous notes
|
||||||
@ -695,17 +686,7 @@ class CSVParser(object):
|
|||||||
if source:
|
if source:
|
||||||
# add, if new
|
# add, if new
|
||||||
new, source = self.get_or_create_source(source)
|
new, source = self.get_or_create_source(source)
|
||||||
source_refs = person.get_source_references()
|
self.find_and_set_citation(person, source)
|
||||||
found = 0
|
|
||||||
for ref in source_refs:
|
|
||||||
LOG.debug("person: %s looking for ref: %s", ref.ref,
|
|
||||||
source.get_handle())
|
|
||||||
if ref.ref == source.get_handle():
|
|
||||||
found = 1
|
|
||||||
if not found:
|
|
||||||
sref = gen.lib.SourceRef()
|
|
||||||
sref.set_reference_handle(source.get_handle())
|
|
||||||
person.add_source_reference(sref)
|
|
||||||
self.db.commit_person(person, self.trans)
|
self.db.commit_person(person, self.trans)
|
||||||
|
|
||||||
def get_or_create_family(self, family_ref, husband, wife):
|
def get_or_create_family(self, family_ref, husband, wife):
|
||||||
@ -772,17 +753,7 @@ class CSVParser(object):
|
|||||||
if place:
|
if place:
|
||||||
event.set_place_handle(place.get_handle())
|
event.set_place_handle(place.get_handle())
|
||||||
if source:
|
if source:
|
||||||
source_refs = event.get_source_references()
|
self.find_and_set_citation(event, source)
|
||||||
found = 0
|
|
||||||
for ref in source_refs:
|
|
||||||
LOG.debug("get_or_create_event: %s looking for ref: %s",
|
|
||||||
ref.ref, source.get_handle())
|
|
||||||
if ref.ref == source.get_handle():
|
|
||||||
found = 1
|
|
||||||
if not found:
|
|
||||||
sref = gen.lib.SourceRef()
|
|
||||||
sref.set_reference_handle(source.get_handle())
|
|
||||||
event.add_source_reference(sref)
|
|
||||||
self.db.commit_event(event, self.trans)
|
self.db.commit_event(event, self.trans)
|
||||||
LOG.debug(" returning existing event")
|
LOG.debug(" returning existing event")
|
||||||
return (0, event)
|
return (0, event)
|
||||||
@ -796,16 +767,7 @@ class CSVParser(object):
|
|||||||
if place:
|
if place:
|
||||||
event.set_place_handle(place.get_handle())
|
event.set_place_handle(place.get_handle())
|
||||||
if source:
|
if source:
|
||||||
source_refs = event.get_source_references()
|
self.find_and_set_citation(event, source)
|
||||||
found = 0
|
|
||||||
for ref in source_refs:
|
|
||||||
LOG.debug("%s looking for ref: %s", ref.ref, source.get_handle())
|
|
||||||
if ref.ref == source.get_handle():
|
|
||||||
found = 1
|
|
||||||
if not found:
|
|
||||||
sref = gen.lib.SourceRef()
|
|
||||||
sref.set_reference_handle(source.get_handle())
|
|
||||||
event.add_source_reference(sref)
|
|
||||||
self.db.add_event(event, self.trans)
|
self.db.add_event(event, self.trans)
|
||||||
return (1, event)
|
return (1, event)
|
||||||
|
|
||||||
@ -836,8 +798,35 @@ class CSVParser(object):
|
|||||||
for source_handle in source_list:
|
for source_handle in source_list:
|
||||||
source = self.db.get_source_from_handle(source_handle)
|
source = self.db.get_source_from_handle(source_handle)
|
||||||
if source.get_title() == source_text:
|
if source.get_title() == source_text:
|
||||||
|
LOG.debug(" returning existing source")
|
||||||
return (0, source)
|
return (0, source)
|
||||||
|
LOG.debug(" creating source")
|
||||||
source = gen.lib.Source()
|
source = gen.lib.Source()
|
||||||
source.set_title(source_text)
|
source.set_title(source_text)
|
||||||
self.db.add_source(source, self.trans)
|
self.db.add_source(source, self.trans)
|
||||||
return (1, source)
|
return (1, source)
|
||||||
|
|
||||||
|
def find_and_set_citation(self, obj, source):
|
||||||
|
# look for the source in the existing citations for the object
|
||||||
|
LOG.debug("find_and_set_citation: looking for source: %s",
|
||||||
|
source.get_gramps_id())
|
||||||
|
for citation_handle in obj.get_citation_list():
|
||||||
|
citation = self.db.get_citation_from_handle(citation_handle)
|
||||||
|
LOG.debug("find_and_set_citation: existing citation: %s",
|
||||||
|
citation.get_gramps_id())
|
||||||
|
poss_source = self.db.get_source_from_handle(
|
||||||
|
citation.get_reference_handle())
|
||||||
|
LOG.debug(" compare source %s == %s", source.get_gramps_id(),
|
||||||
|
poss_source.get_gramps_id())
|
||||||
|
if poss_source.get_handle() == source.get_handle():
|
||||||
|
# The source is already cited
|
||||||
|
LOG.debug(" source already cited")
|
||||||
|
return
|
||||||
|
# we couldn't find an appropriate citation, so we have to create one.
|
||||||
|
citation = gen.lib.Citation()
|
||||||
|
LOG.debug(" creating citation")
|
||||||
|
citation.set_reference_handle(source.get_handle())
|
||||||
|
self.db.add_citation(citation, self.trans)
|
||||||
|
LOG.debug(" created citation, citation %s %s" %
|
||||||
|
(citation, citation.get_gramps_id()))
|
||||||
|
obj.add_citation(citation.get_handle())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user