From 301348a0dff8dc0152f88aef3c1cd785dc7119e5 Mon Sep 17 00:00:00 2001 From: Alex Roitman Date: Tue, 17 Jul 2007 22:44:24 +0000 Subject: [PATCH] 2007-07-17 Alex Roitman * src/GrampsDb/_GrampsBSDDB.py (convert_notes_13): Add reporef privacy on upgrade. * src/GrampsDbUtils/_ReadXML.py (start_note): Set privacy for reporef's notes; (start_reporef): Parse prvacy attribute for reporefs. * src/GrampsDb/_GrampsDbWriteXML.py (write_reporef_list): Write privacy attribitue. * src/RelLib/_RepoRef.py: Add privacy. svn: r8730 --- ChangeLog | 10 ++++++++++ src/GrampsDb/_GrampsBSDDB.py | 3 ++- src/GrampsDb/_GrampsDbWriteXML.py | 13 +++++++++---- src/GrampsDbUtils/_ReadXML.py | 3 ++- src/RelLib/_RepoRef.py | 11 ++++++++--- 5 files changed, 31 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 54b3df407..6dd6e6180 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2007-07-17 Alex Roitman + * src/GrampsDb/_GrampsBSDDB.py (convert_notes_13): Add reporef + privacy on upgrade. + * src/GrampsDbUtils/_ReadXML.py (start_note): Set privacy for + reporef's notes; + (start_reporef): Parse prvacy attribute for reporefs. + * src/GrampsDb/_GrampsDbWriteXML.py (write_reporef_list): Write + privacy attribitue. + * src/RelLib/_RepoRef.py: Add privacy. + 2007-07-17 Zsolt Foldvari * src/Spell.py: Complete list of official dictionaries. diff --git a/src/GrampsDb/_GrampsBSDDB.py b/src/GrampsDb/_GrampsBSDDB.py index ff468744f..b0675caea 100644 --- a/src/GrampsDb/_GrampsBSDDB.py +++ b/src/GrampsDb/_GrampsBSDDB.py @@ -2065,7 +2065,8 @@ class GrampsBSDDB(GrampsDbBase, UpdateCallback): (note, ref, call_number, media_type) = obj (note_list, note_handles) = self.convert_notes_13('Note', note, nttype=NoteType.REPOREF) - new_obj = (note_list, ref, call_number, media_type) + # Add the privacy field with 'False' content + new_obj = (note_list, ref, call_number, media_type, False) elif name == 'SourceRef': (date, priv, note, conf, ref, page, text) = obj (note_list, note_handles) = self.convert_notes_13('Note', note, diff --git a/src/GrampsDb/_GrampsDbWriteXML.py b/src/GrampsDb/_GrampsDbWriteXML.py index 94ae35d41..04f3a6551 100644 --- a/src/GrampsDb/_GrampsDbWriteXML.py +++ b/src/GrampsDb/_GrampsDbWriteXML.py @@ -968,6 +968,11 @@ class GrampsDbXmlWriter(object): if not reporef or not reporef.ref: continue + if reporef.get_privacy(): + priv_text = ' priv="1"' + else: + priv_text = '' + if reporef.call_number == "": callno_text = '' else: @@ -981,11 +986,11 @@ class GrampsDbXmlWriter(object): note_list = reporef.get_note_list() if len(note_list) == 0: - self.write_ref('reporef',reporef.ref,index, - close=True,extra_text=callno_text+type_text) + self.write_ref('reporef',reporef.ref,index,close=True, + extra_text=priv_text+callno_text+type_text) else: - self.write_ref('reporef',reporef.ref,index, - close=False,extra_text=callno_text+type_text) + self.write_ref('reporef',reporef.ref,index,close=False, + extra_text=priv_text+callno_text+type_text) self.write_note_list(note_list,index+1) sp = " "*index self.g.write('%s\n' % sp) diff --git a/src/GrampsDbUtils/_ReadXML.py b/src/GrampsDbUtils/_ReadXML.py index 320d9fc5b..3a0b1551e 100644 --- a/src/GrampsDbUtils/_ReadXML.py +++ b/src/GrampsDbUtils/_ReadXML.py @@ -1201,7 +1201,7 @@ class GrampsParser(UpdateCallback): self.note.private = self.repo.private elif self.reporef: self.note.type.set(RelLib.NoteType.REPOREF) - # reporef has no private, correct + self.note.private = self.reporef.private self.db.add_note(self.note,self.trans) @@ -1309,6 +1309,7 @@ class GrampsParser(UpdateCallback): self.reporef.ref = handle self.reporef.call_number = attrs.get('callno','') self.reporef.media_type.set_from_xml_str(attrs['medium']) + self.reporef.private = bool(attrs.get("priv")) # we count here on self.source being available # reporefs can only be found within source self.source.add_repo_reference(self.reporef) diff --git a/src/RelLib/_RepoRef.py b/src/RelLib/_RepoRef.py index bd87d14da..b9e650f1f 100644 --- a/src/RelLib/_RepoRef.py +++ b/src/RelLib/_RepoRef.py @@ -32,6 +32,7 @@ __revision__ = "$Revision$" # #------------------------------------------------------------------------- from _SecondaryObject import SecondaryObject +from _PrivacyBase import PrivacyBase from _NoteBase import NoteBase from _RefBase import RefBase from _SourceMediaType import SourceMediaType @@ -41,13 +42,14 @@ from _SourceMediaType import SourceMediaType # Repository Reference for Sources # #------------------------------------------------------------------------- -class RepoRef(SecondaryObject, NoteBase, RefBase): +class RepoRef(SecondaryObject, PrivacyBase, NoteBase, RefBase): """ Repository reference class. """ def __init__(self, source=None): SecondaryObject.__init__(self) + PrivacyBase.__init__(self, source) NoteBase.__init__(self, source) RefBase.__init__(self, source) if source: @@ -64,14 +66,17 @@ class RepoRef(SecondaryObject, NoteBase, RefBase): return ( NoteBase.serialize(self), RefBase.serialize(self), - self.call_number, self.media_type.serialize()) + self.call_number, self.media_type.serialize(), + PrivacyBase.serialize(self), + ) def unserialize(self, data): """ Converts a serialized tuple of data to an object """ - (note_list, ref, self.call_number, media_type) = data + (note_list, ref, self.call_number, media_type, privacy) = data self.media_type.unserialize(media_type) + PrivacyBase.unserialize(self, privacy) NoteBase.unserialize(self, note_list) RefBase.unserialize(self, ref) return self