* src/GrampsDb/_ConstXML.py: More XML export fixes.
* src/GrampsDb/_GrampsBSDDB.py: More XML export fixes. * src/GrampsDb/_GrampsDbBase.py: More XML export fixes. * src/GrampsDb/_GrampsInMemDB.py: More XML export fixes. * src/GrampsDb/_WriteXML.py: More XML export fixes. svn: r5842
This commit is contained in:
parent
4719ba7d36
commit
954d093c0f
@ -16,6 +16,12 @@
|
||||
* src/GrampsDb/_WriteGedcom.py: Convert from tuple to string.
|
||||
* src/GrampsDb/_WriteXML.py: Handle some of new XML.
|
||||
|
||||
* src/GrampsDb/_ConstXML.py: More XML export fixes.
|
||||
* src/GrampsDb/_GrampsBSDDB.py: More XML export fixes.
|
||||
* src/GrampsDb/_GrampsDbBase.py: More XML export fixes.
|
||||
* src/GrampsDb/_GrampsInMemDB.py: More XML export fixes.
|
||||
* src/GrampsDb/_WriteXML.py: More XML export fixes.
|
||||
|
||||
2006-01-25 Don Allingham <don@gramps-project.org>
|
||||
* src/DisplayTabs.py: use idle_loop to load data for source
|
||||
backreferences
|
||||
|
@ -165,6 +165,14 @@ marker_types = (
|
||||
(RelLib.PrimaryObject.MARKER_TODO , "todo"),
|
||||
)
|
||||
|
||||
url_types = (
|
||||
(RelLib.Url.UNKNOWN , "Unknown"),
|
||||
(RelLib.Url.EMAIL , "Email"),
|
||||
(RelLib.Url.WEB_HOME , "Home"),
|
||||
(RelLib.Url.WEB_SEARCH , "Search"),
|
||||
(RelLib.Url.WEB_FTP , "FTP"),
|
||||
)
|
||||
|
||||
# mapping from the tuple collection to the appropriate CUSTOM integer
|
||||
custom_types = {
|
||||
child_relations : RelLib.Person.CHILD_CUSTOM,
|
||||
@ -176,6 +184,7 @@ custom_types = {
|
||||
event_roles : RelLib.EventRef.CUSTOM,
|
||||
repository_types : RelLib.Repository.CUSTOM,
|
||||
marker_types : RelLib.PrimaryObject.MARKER_CUSTOM,
|
||||
url_types : RelLib.Url.CUSTOM,
|
||||
}
|
||||
|
||||
def str_for_xml(tuples,the_tuple):
|
||||
|
@ -842,10 +842,25 @@ 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 = [ unicode(val) for val in set(self.surnames.keys()) ]
|
||||
vals.sort(locale.strcoll)
|
||||
return vals
|
||||
vals = [ (strxfrm(unicode(val)),unicode(val))
|
||||
for val in set(self.surnames.keys()) ]
|
||||
vals.sort()
|
||||
return [item[0] for item in vals]
|
||||
|
||||
def get_person_event_type_list(self):
|
||||
vals = [ unicode(val) for val in set(self.eventnames.keys()) ]
|
||||
@ -876,6 +891,11 @@ class GrampsBSDDB(GrampsDbBase):
|
||||
If no such Family exists, a new Person is added to the database."""
|
||||
return self._get_obj_from_gramps_id(val,self.fid_trans,Family)
|
||||
|
||||
def get_event_from_gramps_id(self,val):
|
||||
"""finds a Family in the database from the passed gramps' ID.
|
||||
If no such Family exists, a new Person is added to the database."""
|
||||
return self._get_obj_from_gramps_id(val,self.eid_trans,Event)
|
||||
|
||||
def get_place_from_gramps_id(self,val):
|
||||
"""finds a Place in the database from the passed gramps' ID.
|
||||
If no such Place exists, a new Person is added to the database."""
|
||||
|
@ -706,6 +706,15 @@ class GrampsDbBase(GrampsDBCallback):
|
||||
"""
|
||||
assert False, "Needs to be overridden in the derived class"
|
||||
|
||||
def get_event_from_gramps_id(self,val):
|
||||
"""
|
||||
Finds an Event in the database from the passed GRAMPS ID.
|
||||
If no such Event exists, None is returned.
|
||||
|
||||
Needs to be overridden by the derrived class.
|
||||
"""
|
||||
assert False, "Needs to be overridden in the derived class"
|
||||
|
||||
def get_place_from_gramps_id(self,val):
|
||||
"""finds a Place in the database from the passed gramps' ID.
|
||||
If no such Place exists, a new Person is added to the database.
|
||||
@ -972,6 +981,14 @@ class GrampsDbBase(GrampsDBCallback):
|
||||
return self._all_handles(self.repository_map)
|
||||
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"
|
||||
|
||||
def _validated_id_prefix(self, val, default):
|
||||
if val:
|
||||
try:
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2000-2005 Donald N. Allingham
|
||||
# Copyright (C) 2000-2006 Donald N. Allingham
|
||||
#
|
||||
# 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
|
||||
@ -25,7 +25,13 @@ Provides the common infrastructure for database formats that
|
||||
must hold all of their data in memory.
|
||||
"""
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Python modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from bsddb import dbshelve, db
|
||||
import sets
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -34,7 +40,6 @@ from bsddb import dbshelve, db
|
||||
#-------------------------------------------------------------------------
|
||||
from RelLib import *
|
||||
from _GrampsDbBase import *
|
||||
import sets
|
||||
|
||||
class GrampsInMemCursor(GrampsCursor):
|
||||
"""
|
||||
@ -141,6 +146,27 @@ 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):
|
||||
|
@ -53,6 +53,9 @@ import RelLib
|
||||
import Date
|
||||
from QuestionDialog import ErrorDialog
|
||||
import _ConstXML
|
||||
from _GrampsDbBase import \
|
||||
PERSON_KEY,FAMILY_KEY,SOURCE_KEY,EVENT_KEY,\
|
||||
MEDIA_KEY,PLACE_KEY,REPOSITORY_KEY
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -67,7 +70,7 @@ except:
|
||||
_gzip_ok = 0
|
||||
|
||||
|
||||
_xml_version = "1.0.0"
|
||||
_xml_version = "1.1.0"
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -143,8 +146,8 @@ class XmlWriter:
|
||||
if os.path.isdir(base):
|
||||
if not os.access(base,os.W_OK) or not os.access(base,os.R_OK):
|
||||
ErrorDialog(_('Failure writing %s') % filename,
|
||||
_("The database cannot be saved because you do not "
|
||||
"have permission to write to the directory. "
|
||||
_("The database cannot be saved because you do "
|
||||
"not have permission to write to the directory. "
|
||||
"Please make sure you have write access to the "
|
||||
"directory and try again."))
|
||||
return 0
|
||||
@ -152,8 +155,8 @@ class XmlWriter:
|
||||
if os.path.exists(filename):
|
||||
if not os.access(filename,os.W_OK):
|
||||
ErrorDialog(_('Failure writing %s') % filename,
|
||||
_("The database cannot be saved because you do not "
|
||||
"have permission to write to the file. "
|
||||
_("The database cannot be saved because you do "
|
||||
"not have permission to write to the file. "
|
||||
"Please make sure you have write access to the "
|
||||
"file and try again."))
|
||||
return 0
|
||||
@ -243,14 +246,17 @@ class XmlWriter:
|
||||
self.g.write(' default="%s" home="_%s">\n' %
|
||||
(person.gramps_id,person.handle))
|
||||
|
||||
keys = self.db.get_person_handles(sort_handles=False)
|
||||
sorted_keys = []
|
||||
for key in keys:
|
||||
person = self.db.get_person_from_handle (key)
|
||||
sorted_keys.append ((person.gramps_id, person))
|
||||
sorted_keys.sort ()
|
||||
# keys = self.db.get_person_handles(sort_handles=False)
|
||||
# sorted_keys = []
|
||||
# for key in keys:
|
||||
# person = self.db.get_person_from_handle (key)
|
||||
# sorted_keys.append ((person.gramps_id, person))
|
||||
# sorted_keys.sort ()
|
||||
sorted_keys = self.db.get_gramps_ids(PERSON_KEY)
|
||||
sorted_keys.sort()
|
||||
|
||||
for (gramps_id, person) in sorted_keys:
|
||||
for gramps_id in sorted_keys:
|
||||
person = self.db.get_person_from_gramps_id(gramps_id)
|
||||
if self.callback and count % delta == 0:
|
||||
self.callback(float(count)/float(total))
|
||||
count += 1
|
||||
@ -274,13 +280,15 @@ class XmlWriter:
|
||||
|
||||
self.dump_ordinance("baptism",person.get_lds_baptism(),3)
|
||||
self.dump_ordinance("endowment",person.get_lds_endowment(),3)
|
||||
self.dump_ordinance("sealed_to_parents",person.get_lds_sealing(),3)
|
||||
self.dump_ordinance("sealed_to_parents",
|
||||
person.get_lds_sealing(),3)
|
||||
|
||||
self.write_media_list(person.get_media_list())
|
||||
|
||||
if len(person.get_address_list()) > 0:
|
||||
for address in person.get_address_list():
|
||||
self.g.write(' <address%s>\n' % conf_priv(address))
|
||||
self.g.write(' <address%s>\n'
|
||||
% conf_priv(address))
|
||||
self.write_date(address.get_date_object(),4)
|
||||
self.write_line("street",address.get_street(),4)
|
||||
self.write_line("city",address.get_city(),4)
|
||||
@ -301,17 +309,15 @@ class XmlWriter:
|
||||
if alt[1][0] != RelLib.Person.CHILD_BIRTH:
|
||||
mrel=' mrel="%s"' % _ConstXML.str_for_xml(
|
||||
_ConstXML.child_relations,alt[1])
|
||||
# const.child_rel_notrans[alt[1]]
|
||||
else:
|
||||
mrel=''
|
||||
if alt[2][0] != RelLib.Person.CHILD_BIRTH:
|
||||
frel=' frel="%s"' % _ConstXML.str_for_xml(
|
||||
_ConstXML.child_relations,alt[2])
|
||||
# const.child_rel_notrans[alt[2]]
|
||||
else:
|
||||
frel=''
|
||||
self.g.write(" <childof hlink=\"%s\"%s%s/>\n" % \
|
||||
("_"+alt[0], mrel, frel))
|
||||
self.g.write(' <childof hlink="_%s"%s%s/>\n' % \
|
||||
(alt[0], mrel, frel))
|
||||
|
||||
for family_handle in person.get_family_handle_list():
|
||||
self.write_ref("parentin",family_handle,3)
|
||||
@ -326,15 +332,17 @@ class XmlWriter:
|
||||
if family_len > 0:
|
||||
self.g.write(" <families>\n")
|
||||
|
||||
keys = self.db.get_family_handles()
|
||||
sorted_keys = []
|
||||
for key in keys:
|
||||
family = self.db.get_family_from_handle(key)
|
||||
value = (family.get_gramps_id (), family)
|
||||
sorted_keys.append (value)
|
||||
## keys = self.db.get_family_handles()
|
||||
## sorted_keys = []
|
||||
## for key in keys:
|
||||
## family = self.db.get_family_from_handle(key)
|
||||
## value = (family.get_gramps_id (), family)
|
||||
## sorted_keys.append (value)
|
||||
|
||||
sorted_keys = self.db.get_gramps_ids(FAMILY_KEY)
|
||||
sorted_keys.sort ()
|
||||
for (gramps_id, family) in sorted_keys:
|
||||
for gramps_id in sorted_keys:
|
||||
family = self.db.get_family_from_gramps_id(gramps_id)
|
||||
if self.callback and count % delta == 0:
|
||||
self.callback(float(count)/float(total))
|
||||
count = count + 1
|
||||
@ -348,7 +356,8 @@ class XmlWriter:
|
||||
self.write_ref("mother",mhandle,3)
|
||||
for event_ref in family.get_event_ref_list():
|
||||
self.dump_event_ref(event_ref,3)
|
||||
self.dump_ordinance("sealed_to_spouse",family.get_lds_sealing(),3)
|
||||
self.dump_ordinance("sealed_to_spouse",
|
||||
family.get_lds_sealing(),3)
|
||||
|
||||
self.write_media_list(family.get_media_list())
|
||||
|
||||
@ -364,14 +373,16 @@ class XmlWriter:
|
||||
|
||||
if event_len > 0:
|
||||
self.g.write(" <events>\n")
|
||||
keys = self.db.get_event_handles()
|
||||
sorted_keys = []
|
||||
for key in keys:
|
||||
event = self.db.get_event_from_handle(key)
|
||||
sorted_keys.append((event.gramps_id, event))
|
||||
## keys = self.db.get_event_handles()
|
||||
## sorted_keys = []
|
||||
## for key in keys:
|
||||
## event = self.db.get_event_from_handle(key)
|
||||
## sorted_keys.append((event.gramps_id, event))
|
||||
sorted_keys = self.db.get_gramps_ids(EVENT_KEY)
|
||||
sorted_keys.sort ()
|
||||
|
||||
for (gramps_id, event) in sorted_keys:
|
||||
for gramps_id in sorted_keys:
|
||||
event = self.db.get_event_from_gramps_id(gramps_id)
|
||||
if self.callback and count % delta == 0:
|
||||
self.callback(float(count)/float(total))
|
||||
count = count + 1
|
||||
@ -380,16 +391,15 @@ class XmlWriter:
|
||||
|
||||
if source_len > 0:
|
||||
self.g.write(" <sources>\n")
|
||||
keys = self.db.get_source_handles ()
|
||||
#keys = self.db.get_source_handles ()
|
||||
keys = self.db.get_gramps_ids(SOURCE_KEY)
|
||||
keys.sort ()
|
||||
for key in keys:
|
||||
source = self.db.get_source_from_handle(key)
|
||||
source = self.db.get_source_from_gramps_id(key)
|
||||
if self.callback and count % delta == 0:
|
||||
self.callback(float(count)/float(total))
|
||||
count = count + 1
|
||||
self.g.write(" <source id=\"%s\" handle=\"%s\" change=\"%d\">\n" %
|
||||
(source.get_gramps_id(), "_"+source.get_handle(),
|
||||
source.get_change_time()))
|
||||
self.write_primary_tag("source",source,2)
|
||||
self.write_force_line("stitle",source.get_title(),3)
|
||||
self.write_line("sauthor",source.get_author(),3)
|
||||
self.write_line("spubinfo",source.get_publication_info(),3)
|
||||
@ -397,17 +407,19 @@ class XmlWriter:
|
||||
if source.get_note() != "":
|
||||
self.write_note("note",source.get_note_object(),3)
|
||||
self.write_media_list(source.get_media_list())
|
||||
self.write_reporef_list(source.get_reporef_list())
|
||||
self.write_data_map(source.get_data_map())
|
||||
self.g.write(" </source>\n")
|
||||
self.g.write(" </sources>\n")
|
||||
|
||||
if place_len > 0:
|
||||
self.g.write(" <places>\n")
|
||||
keys = self.db.get_place_handles()
|
||||
#keys = self.db.get_place_handles()
|
||||
keys = self.db.get_gramps_ids(PLACE_KEY)
|
||||
keys.sort ()
|
||||
for key in keys:
|
||||
try:
|
||||
place = self.db.get_place_from_handle(key)
|
||||
place = self.db.get_place_from_gramps_id(key)
|
||||
if self.callback and count % delta == 0:
|
||||
self.callback(float(count)/float(total))
|
||||
self.write_place_obj(place)
|
||||
@ -419,22 +431,24 @@ class XmlWriter:
|
||||
|
||||
if len(objList) > 0:
|
||||
self.g.write(" <objects>\n")
|
||||
keys = self.db.get_media_object_handles()
|
||||
sorted_keys = []
|
||||
for key in keys:
|
||||
obj = self.db.get_object_from_handle (key)
|
||||
value = (obj.get_gramps_id (), obj)
|
||||
sorted_keys.append (value)
|
||||
#keys = self.db.get_media_object_handles()
|
||||
sorted_keys = self.db.get_gramps_ids(MEDIA_KEY)
|
||||
## sorted_keys = []
|
||||
## for key in keys:
|
||||
## obj = self.db.get_object_from_handle (key)
|
||||
## value = (obj.get_gramps_id (), obj)
|
||||
## sorted_keys.append (value)
|
||||
|
||||
sorted_keys.sort ()
|
||||
for (gramps_id, obj) in sorted_keys:
|
||||
for gramps_id in sorted_keys:
|
||||
obj = self.db.get_object_from_gramps_id(gramps_id)
|
||||
self.write_object(obj)
|
||||
self.g.write(" </objects>\n")
|
||||
|
||||
if len(self.db.get_bookmarks()) > 0:
|
||||
self.g.write(" <bookmarks>\n")
|
||||
for person_handle in self.db.get_bookmarks():
|
||||
self.g.write(' <bookmark hlink="%s"/>\n' % ("_"+person_handle))
|
||||
self.g.write(' <bookmark hlink="_%s"/>\n' % person_handle)
|
||||
self.g.write(" </bookmarks>\n")
|
||||
|
||||
if len(self.db.name_group) > 0:
|
||||
@ -509,11 +523,11 @@ class XmlWriter:
|
||||
role_text = ''
|
||||
|
||||
if eventref.get_note() == "":
|
||||
started = self.write_ref('eventref',eventref.ref,index,
|
||||
close=True,extra_text=priv_text+role_text)
|
||||
self.write_ref('eventref',eventref.ref,index,
|
||||
close=True,extra_text=priv_text+role_text)
|
||||
else:
|
||||
started = self.write_ref('eventref',eventref.ref,index,
|
||||
close=False,extra_text=priv_text+role_text)
|
||||
self.write_ref('eventref',eventref.ref,index,
|
||||
close=False,extra_text=priv_text+role_text)
|
||||
self.write_note("note",eventref.get_note_object(),index+1)
|
||||
self.g.write('%s</eventref>\n' % (" "*index))
|
||||
|
||||
@ -769,6 +783,8 @@ class XmlWriter:
|
||||
|
||||
def dump_location(self,loc):
|
||||
"Writes the location information to the output file"
|
||||
if loc.is_empty():
|
||||
return
|
||||
city = self.fix(loc.get_city())
|
||||
parish = self.fix(loc.get_parish())
|
||||
state = self.fix(loc.get_state())
|
||||
@ -843,41 +859,73 @@ class XmlWriter:
|
||||
self.g.write('%s<data_item key="%s" value="%s"/>' %
|
||||
(sp,key,datamap[key]))
|
||||
|
||||
def write_reporef_list(self,rrlist):
|
||||
for reporef in rrlist:
|
||||
if not reporef or not reporef.ref:
|
||||
continue
|
||||
|
||||
if reporef.call_number == "":
|
||||
callno_text = ''
|
||||
else:
|
||||
callno_text = ' callno="%s"' % reporef.call_number
|
||||
|
||||
mtype = _ConstXML.str_for_xml(_ConstXML.source_media_types,
|
||||
reporef.media_type)
|
||||
if mtype:
|
||||
type_text = ' type="%s"' % mtype
|
||||
else:
|
||||
type_text = ''
|
||||
|
||||
if reporef.get_note() == "":
|
||||
self.write_ref('reporef',reporef.ref,3,
|
||||
close=True,extra_text=callno_text+type_text)
|
||||
else:
|
||||
self.write_ref('reporef',reporef.ref,index,
|
||||
close=False,extra_text=callno_text+type_text)
|
||||
self.write_note("note",reporef.get_note_object(),4)
|
||||
self.g.write('%s</reporef>\n' % (" "*index))
|
||||
|
||||
def write_url_list(self,list):
|
||||
for url in list:
|
||||
self.g.write(' <url priv="%d" href="%s"' % \
|
||||
(url.get_privacy(),self.fix(url.get_path())))
|
||||
url_type = _ConstXML.str_for_xml(_ConstXML.url_types,
|
||||
url.get_type())
|
||||
if url_type:
|
||||
type_text = ' type="%s"' % url_type
|
||||
else:
|
||||
type_text = ''
|
||||
priv_text = conf_priv(url)
|
||||
if url.get_description() != "":
|
||||
self.g.write(' description="%s"' % self.fix(url.get_description()))
|
||||
self.g.write('/>\n')
|
||||
desc_text = ' description="%s"' % self.fix(
|
||||
url.get_description())
|
||||
else:
|
||||
desc_text = ''
|
||||
path_text = ' href="%s"' % self.fix(url.get_path())
|
||||
self.g.write(' <url%s%s%s%s/>\n' % \
|
||||
(priv_text,path_text,type_text,desc_text))
|
||||
|
||||
def write_place_obj(self,place):
|
||||
self.write_primary_tag("placeobj",place,2)
|
||||
|
||||
title = self.fix(place.get_title())
|
||||
longitude = self.fix(place.get_longitude())
|
||||
lat = self.fix(place.get_latitude())
|
||||
handle = place.get_gramps_id()
|
||||
main_loc = place.get_main_location()
|
||||
llen = len(place.get_alternate_locations()) + len(place.get_url_list()) + \
|
||||
len(place.get_media_list()) + len(place.get_source_references())
|
||||
llen = len(place.get_alternate_locations()) \
|
||||
+ len(place.get_url_list()) + \
|
||||
len(place.get_media_list()) + \
|
||||
len(place.get_source_references())
|
||||
|
||||
ml_empty = main_loc.is_empty()
|
||||
note = place.get_note()
|
||||
|
||||
if title == "":
|
||||
title = self.fix(self.build_place_title(place.get_main_location()))
|
||||
|
||||
self.g.write(' <placeobj id="%s" handle="%s" change="%d" title="%s"' %
|
||||
(handle,"_"+place.get_handle(),place.get_change_time(),title))
|
||||
|
||||
if longitude or lat or not ml_empty or llen > 0 or note:
|
||||
self.g.write('>\n')
|
||||
else:
|
||||
self.g.write('/>\n')
|
||||
return
|
||||
self.write_line("title",title,3)
|
||||
|
||||
if longitude or lat:
|
||||
self.g.write(' <coord long="%s" lat="%s"/>\n' % (longitude,lat))
|
||||
|
||||
self.g.write(' <coord long="%s" lat="%s"/>\n'
|
||||
% (longitude,lat))
|
||||
self.dump_location(main_loc)
|
||||
for loc in place.get_alternate_locations():
|
||||
self.dump_location(loc)
|
||||
@ -890,31 +938,28 @@ class XmlWriter:
|
||||
self.g.write(" </placeobj>\n")
|
||||
|
||||
def write_object(self,obj):
|
||||
self.write_primary_tag("object",obj,2)
|
||||
handle = obj.get_gramps_id()
|
||||
mime_type = obj.get_mime_type()
|
||||
path = obj.get_path()
|
||||
desc = obj.get_description()
|
||||
if desc:
|
||||
desc_text = ' description="%s"' % self.fix(desc)
|
||||
else:
|
||||
desc_text = ''
|
||||
if self.strip_photos:
|
||||
path = os.path.basename(path)
|
||||
self.g.write(' <object id="%s" handle="%s" change="%d" src="%s" mime="%s"' %
|
||||
(handle,"_"+obj.get_handle(),obj.get_change_time(),path,mime_type))
|
||||
self.g.write(' description="%s"' % self.fix(obj.get_description()))
|
||||
alist = obj.get_attribute_list()
|
||||
note = obj.get_note()
|
||||
self.g.write(' <file src="%s" mime="%s"%s/>\n'
|
||||
% (path,mime_type,desc_text))
|
||||
self.write_attribute_list(obj.get_attribute_list())
|
||||
if obj.get_note() != "":
|
||||
self.write_note("note",obj.get_note_object(),3)
|
||||
dval = obj.get_date_object()
|
||||
slist = obj.get_source_references()
|
||||
if len(alist) == 0 and len(slist) == 0 and note == "" \
|
||||
and not dval.is_empty():
|
||||
self.g.write('/>\n')
|
||||
else:
|
||||
self.g.write('>\n')
|
||||
self.write_attribute_list(alist)
|
||||
if note != "":
|
||||
self.write_note("note",obj.get_note_object(),3)
|
||||
if not dval.is_empty():
|
||||
self.write_date(dval,3)
|
||||
for s in slist:
|
||||
self.dump_source_ref(s,3)
|
||||
self.g.write(" </object>\n")
|
||||
if not dval.is_empty():
|
||||
self.write_date(dval,3)
|
||||
for s in obj.get_source_references():
|
||||
self.dump_source_ref(s,3)
|
||||
self.g.write(" </object>\n")
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
|
Loading…
Reference in New Issue
Block a user