* src/RelLib.py (MediaBase): Add base class for media references;
(BaseObject): Add has_handle_reference, remove_handle_references, and replace_handle_reference methods; (SourceNote): Add replace_source_references method; (People,Family,Event,MediaObject): Add handle_reference methods. svn: r4217
This commit is contained in:
parent
17fc1f1be1
commit
8f9092d8b1
@ -1,3 +1,10 @@
|
|||||||
|
2005-03-22 Alex Roitman <shura@gramps-project.org>
|
||||||
|
* src/RelLib.py (MediaBase): Add base class for media references;
|
||||||
|
(BaseObject): Add has_handle_reference, remove_handle_references,
|
||||||
|
and replace_handle_reference methods; (SourceNote): Add
|
||||||
|
replace_source_references method; (People,Family,Event,MediaObject):
|
||||||
|
Add handle_reference methods.
|
||||||
|
|
||||||
2005-03-21 Julio Sanchez <jsanchez@users.sourceforge.net>
|
2005-03-21 Julio Sanchez <jsanchez@users.sourceforge.net>
|
||||||
* src/MergeData.py: further changes to adapt to new API
|
* src/MergeData.py: further changes to adapt to new API
|
||||||
|
|
||||||
|
@ -149,6 +149,110 @@ class BaseObject:
|
|||||||
"""
|
"""
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
def has_handle_reference(self,classname,handle):
|
||||||
|
"""
|
||||||
|
Returns True if the object or any of its non-primary child objects
|
||||||
|
has reference to a given handle of given primary object type.
|
||||||
|
|
||||||
|
@param classname: The name of the primary object class.
|
||||||
|
@type classname: str
|
||||||
|
@param handle: The handle to be checked.
|
||||||
|
@type handle: str
|
||||||
|
@return: Returns whether the object or any of it's non-primary child objects has reference to this handle of this object type.
|
||||||
|
@rtype: bool
|
||||||
|
"""
|
||||||
|
# Run through its own items
|
||||||
|
if classname == 'Source' and isinstance(self,SourceNote):
|
||||||
|
if self.has_source_reference(handle):
|
||||||
|
return True
|
||||||
|
elif classname == 'MediaObject' and isinstance(self,MediaBase):
|
||||||
|
if self.has_media_reference(handle):
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
if handle in self.get_handleholder_list(classname):
|
||||||
|
return True
|
||||||
|
|
||||||
|
# Run through child objects
|
||||||
|
for obj in self.get_handleholder_child_list(classname):
|
||||||
|
if obj.has_handle_reference(classname,handle):
|
||||||
|
return True
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
|
def remove_handle_references(self,classname,handle_list):
|
||||||
|
"""
|
||||||
|
Removes references to object handles in the list
|
||||||
|
in this object and all child objects.
|
||||||
|
|
||||||
|
@param classname: The name of the primary object class.
|
||||||
|
@type classname: str
|
||||||
|
@param handle_list: The list of handles to be removed.
|
||||||
|
@type handle_list: str
|
||||||
|
"""
|
||||||
|
# Run through its own items
|
||||||
|
if classname == 'Source' and isinstance(self,SourceNote):
|
||||||
|
self.remove_source_references(handle_list)
|
||||||
|
elif classname == 'MediaObject' and isinstance(self,MediaBase):
|
||||||
|
self.remove_media_references(handle_list)
|
||||||
|
else:
|
||||||
|
self._remove_handle_references(classname,handle_list)
|
||||||
|
|
||||||
|
# Run through child objects
|
||||||
|
for obj in self.get_handleholder_child_list(classname):
|
||||||
|
obj.remove_handle_references(classname,handle_list)
|
||||||
|
|
||||||
|
def replace_handle_reference(self,classname,old_handle,new_handle):
|
||||||
|
"""
|
||||||
|
Replaces references to source handles in the list
|
||||||
|
in this object and all child objects.
|
||||||
|
|
||||||
|
@param classname: The name of the primary object class.
|
||||||
|
@type classname: str
|
||||||
|
@param old_handle: The handle to be replaced.
|
||||||
|
@type old_handle: str
|
||||||
|
@param new_handle: The handle to replace the old one with.
|
||||||
|
@type new_handle: str
|
||||||
|
"""
|
||||||
|
# Run through its own items
|
||||||
|
if classname == 'Source' and isinstance(self,SourceNote):
|
||||||
|
self.replace_source_references(old_handle,new_handle)
|
||||||
|
elif classname == 'MediaObject' and isinstance(self,MediaBase):
|
||||||
|
self.replace_media_references(old_handle,new_handle)
|
||||||
|
else:
|
||||||
|
self._replace_handle_reference(classname,old_handle,new_handle)
|
||||||
|
|
||||||
|
# Run through child objects
|
||||||
|
for obj in self.get_handleholder_child_list(classname):
|
||||||
|
obj.replace_handle_reference(classname,old_handle,new_handle)
|
||||||
|
|
||||||
|
def _replace_handle_reference(self,classname,old_handle,new_handle):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def _remove_handle_references(self,classname,handle_list):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def get_handleholder_list(self,classname):
|
||||||
|
"""
|
||||||
|
Returns the list of all bjects referring to handles of a given type.
|
||||||
|
|
||||||
|
@param classname: The name of the primary object class.
|
||||||
|
@type classname: str
|
||||||
|
@return: Returns the list of all attributes referring to handles of this type.
|
||||||
|
@rtype: list
|
||||||
|
"""
|
||||||
|
return []
|
||||||
|
|
||||||
|
def get_handleholder_child_list(self,classname):
|
||||||
|
"""
|
||||||
|
Returns the list of child objects that may refer to handles of a given type.
|
||||||
|
|
||||||
|
@param classname: The name of the primary object class.
|
||||||
|
@type classname: str
|
||||||
|
@return: Returns the list of child objects that may refer to handles of this type.
|
||||||
|
@rtype: list
|
||||||
|
"""
|
||||||
|
return []
|
||||||
|
|
||||||
class PrimaryObject(BaseObject):
|
class PrimaryObject(BaseObject):
|
||||||
"""
|
"""
|
||||||
The PrimaryObject is the base class for all primary objects in the
|
The PrimaryObject is the base class for all primary objects in the
|
||||||
@ -293,7 +397,7 @@ class SourceNote(BaseObject):
|
|||||||
to this source handle.
|
to this source handle.
|
||||||
|
|
||||||
@param src_handle: The source handle to be checked.
|
@param src_handle: The source handle to be checked.
|
||||||
@type src_ref: str
|
@type src_handle: str
|
||||||
@return: Returns whether the object or any of it's child objects has reference to this source handle.
|
@return: Returns whether the object or any of it's child objects has reference to this source handle.
|
||||||
@rtype: bool
|
@rtype: bool
|
||||||
"""
|
"""
|
||||||
@ -323,6 +427,23 @@ class SourceNote(BaseObject):
|
|||||||
for item in self.get_sourcref_child_list():
|
for item in self.get_sourcref_child_list():
|
||||||
item.remove_source_references(src_handle_list)
|
item.remove_source_references(src_handle_list)
|
||||||
|
|
||||||
|
def replace_source_references(self,old_handle,new_handle):
|
||||||
|
"""
|
||||||
|
Replaces references to source handles in the list
|
||||||
|
in this object and all child objects.
|
||||||
|
|
||||||
|
@param old_handle: The source handle to be replaced.
|
||||||
|
@type old_handle: str
|
||||||
|
@param new_handle: The source handle to replace the old one with.
|
||||||
|
@type new_handle: str
|
||||||
|
"""
|
||||||
|
while old_handle in self.source_list:
|
||||||
|
ix = self.source_list.index(old_handle)
|
||||||
|
self.source_list[ix] = new_handle
|
||||||
|
|
||||||
|
for item in self.get_sourcref_child_list():
|
||||||
|
item.replace_source_references(old_handle,new_handle)
|
||||||
|
|
||||||
def set_source_reference_list(self,src_ref_list) :
|
def set_source_reference_list(self,src_ref_list) :
|
||||||
"""
|
"""
|
||||||
Assigns the passed list to the object's list of source references.
|
Assigns the passed list to the object's list of source references.
|
||||||
@ -401,6 +522,116 @@ class SourceNote(BaseObject):
|
|||||||
"""Creates a unique instance of the current note"""
|
"""Creates a unique instance of the current note"""
|
||||||
self.note = Note(self.note.get())
|
self.note = Note(self.note.get())
|
||||||
|
|
||||||
|
class MediaBase(BaseObject):
|
||||||
|
"""
|
||||||
|
Base class for storing media references
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self,source=None):
|
||||||
|
"""
|
||||||
|
Create a new MediaBase, copying from source if not None
|
||||||
|
|
||||||
|
@param source: Object used to initialize the new object
|
||||||
|
@type source: MediaBase
|
||||||
|
"""
|
||||||
|
|
||||||
|
if source:
|
||||||
|
self.media_list = [ MediaRef(mref) for mref in source.media_list ]
|
||||||
|
else:
|
||||||
|
self.media_list = []
|
||||||
|
|
||||||
|
def add_media_reference(self,media_ref):
|
||||||
|
"""
|
||||||
|
Adds a L{MediaRef} instance to the object's media list.
|
||||||
|
|
||||||
|
@param media_ref: L{MediaRef} instance to be added to the object's
|
||||||
|
media list.
|
||||||
|
@type media_ref: L{MediaRef}
|
||||||
|
"""
|
||||||
|
self.media_list.append(media_ref)
|
||||||
|
|
||||||
|
def get_media_list(self):
|
||||||
|
"""
|
||||||
|
Returns the list of L{MediaRef} instances associated with the object.
|
||||||
|
|
||||||
|
@returns: list of L{MediaRef} instances associated with the object
|
||||||
|
@rtype: list
|
||||||
|
"""
|
||||||
|
return self.media_list
|
||||||
|
|
||||||
|
def set_media_list(self,media_ref_list):
|
||||||
|
"""
|
||||||
|
Sets the list of L{MediaRef} instances associated with the object.
|
||||||
|
It replaces the previous list.
|
||||||
|
|
||||||
|
@param media_ref_list: list of L{MediaRef} instances to be assigned
|
||||||
|
to the object.
|
||||||
|
@type media_ref_list: list
|
||||||
|
"""
|
||||||
|
self.media_list = media_ref_list
|
||||||
|
|
||||||
|
def get_mediaref_child_list(self):
|
||||||
|
"""
|
||||||
|
Returns the list of child secondary objects that may refer media.
|
||||||
|
|
||||||
|
@return: Returns the list of child secondary child objects that may refer media.
|
||||||
|
@rtype: list
|
||||||
|
"""
|
||||||
|
return []
|
||||||
|
|
||||||
|
def has_media_reference(self,obj_handle) :
|
||||||
|
"""
|
||||||
|
Returns True if the object or any of it's child objects has reference
|
||||||
|
to this media object handle.
|
||||||
|
|
||||||
|
@param obj_handle: The media handle to be checked.
|
||||||
|
@type obj_handle: str
|
||||||
|
@return: Returns whether the object or any of it's child objects has reference to this media handle.
|
||||||
|
@rtype: bool
|
||||||
|
"""
|
||||||
|
for media_ref in self.media_list:
|
||||||
|
# Using direct access here, not the getter method -- efficiency!
|
||||||
|
if media_ref.ref == obj_handle:
|
||||||
|
return True
|
||||||
|
|
||||||
|
for item in self.get_mediaref_child_list():
|
||||||
|
if item.has_media_reference(obj_handle):
|
||||||
|
return True
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
|
def remove_media_references(self,obj_handle_list):
|
||||||
|
"""
|
||||||
|
Removes references to all media handles in the list
|
||||||
|
in this object and all child objects.
|
||||||
|
|
||||||
|
@param obj_handle_list: The list of media handles to be removed.
|
||||||
|
@type obj_handle_list: list
|
||||||
|
"""
|
||||||
|
new_media_list = [ media_ref for media_ref in self.media_list \
|
||||||
|
if media_ref.ref not in obj_handle_list ]
|
||||||
|
self.media_list = new_media_list
|
||||||
|
|
||||||
|
for item in self.get_mediaref_child_list():
|
||||||
|
item.remove_media_references(obj_handle_list)
|
||||||
|
|
||||||
|
def replace_media_references(self,old_handle,new_handle):
|
||||||
|
"""
|
||||||
|
Replaces references to media handles in the list
|
||||||
|
in this object and all child objects.
|
||||||
|
|
||||||
|
@param old_handle: The media handle to be replaced.
|
||||||
|
@type old_handle: str
|
||||||
|
@param new_handle: The media handle to replace the old one with.
|
||||||
|
@type new_handle: str
|
||||||
|
"""
|
||||||
|
while old_handle in self.media_list:
|
||||||
|
ix = self.media_list.index(old_handle)
|
||||||
|
self.media_list[ix] = new_handle
|
||||||
|
|
||||||
|
for item in self.get_mediaref_child_list():
|
||||||
|
item.replace_media_references(old_handle,new_handle)
|
||||||
|
|
||||||
class DataObj(SourceNote):
|
class DataObj(SourceNote):
|
||||||
"""
|
"""
|
||||||
Base class for data elements, providing source, note, and privacy data
|
Base class for data elements, providing source, note, and privacy data
|
||||||
@ -440,7 +671,7 @@ class DataObj(SourceNote):
|
|||||||
"""
|
"""
|
||||||
return self.private
|
return self.private
|
||||||
|
|
||||||
class Person(PrimaryObject,DataObj):
|
class Person(PrimaryObject,DataObj,MediaBase):
|
||||||
"""
|
"""
|
||||||
Introduction
|
Introduction
|
||||||
============
|
============
|
||||||
@ -486,11 +717,11 @@ class Person(PrimaryObject,DataObj):
|
|||||||
PrimaryObject.__init__(self)
|
PrimaryObject.__init__(self)
|
||||||
DataObj.__init__(self)
|
DataObj.__init__(self)
|
||||||
SourceNote.__init__(self)
|
SourceNote.__init__(self)
|
||||||
|
MediaBase.__init__(self)
|
||||||
self.primary_name = Name()
|
self.primary_name = Name()
|
||||||
self.event_list = []
|
self.event_list = []
|
||||||
self.family_list = []
|
self.family_list = []
|
||||||
self.parent_family_list = []
|
self.parent_family_list = []
|
||||||
self.media_list = []
|
|
||||||
self.nickname = ""
|
self.nickname = ""
|
||||||
self.alternate_names = []
|
self.alternate_names = []
|
||||||
self.gender = Person.UNKNOWN
|
self.gender = Person.UNKNOWN
|
||||||
@ -552,6 +783,62 @@ class Person(PrimaryObject,DataObj):
|
|||||||
self.lds_seal, self.complete, self.source_list, self.note,
|
self.lds_seal, self.complete, self.source_list, self.note,
|
||||||
self.change,self.private) = (data + (False,))[0:23]
|
self.change,self.private) = (data + (False,))[0:23]
|
||||||
|
|
||||||
|
def _remove_handle_references(self,classname,handle_list):
|
||||||
|
if classname == 'Event':
|
||||||
|
new_list = [ handle for handle in self.event_list \
|
||||||
|
if handle not in handle_list ]
|
||||||
|
self.event_list = new_list
|
||||||
|
if self.death_handle and self.death_handle in handle_list:
|
||||||
|
self.death_handle = None
|
||||||
|
if self.birth_handle and self.birth_handle in handle_list:
|
||||||
|
self.birth_handle = None
|
||||||
|
elif classname == 'Family':
|
||||||
|
new_list = [ handle for handle in self.family_list \
|
||||||
|
if handle not in handle_list ]
|
||||||
|
self.family_list = new_list
|
||||||
|
new_list = [ item for item in self.parent_family_list \
|
||||||
|
if item[0] not in handle_list ]
|
||||||
|
self.parent_family_list = new_list
|
||||||
|
|
||||||
|
def _replace_handle_reference(self,classname,old_handle,new_handle):
|
||||||
|
if classname == 'Event':
|
||||||
|
while old_handle in self.event_list:
|
||||||
|
ix = self.event_list.index(old_handle)
|
||||||
|
self.event_list[ix] = new_handle
|
||||||
|
if self.death_handle and self.death_handle == old_handle:
|
||||||
|
self.death_handle = new_handle
|
||||||
|
if self.birth_handle and self.birth_handle == old_handle:
|
||||||
|
self.birth_handle = new_handle
|
||||||
|
elif classname == 'Family':
|
||||||
|
while old_handle in self.family_list:
|
||||||
|
ix = self.family_list.index(old_handle)
|
||||||
|
self.family_list[ix] = new_handle
|
||||||
|
|
||||||
|
new_list = []
|
||||||
|
for item in self.parent_family_list:
|
||||||
|
if item[0] == old_handle:
|
||||||
|
new_list.append((new_handle,item[1],item[2]))
|
||||||
|
else:
|
||||||
|
new_list.append(item)
|
||||||
|
self.parent_family_list = new_list
|
||||||
|
|
||||||
|
def get_handleholder_list(self,classname):
|
||||||
|
"""
|
||||||
|
Returns the list of all objects referring to handles of a given type.
|
||||||
|
|
||||||
|
@param classname: The name of the primary object class.
|
||||||
|
@type classname: str
|
||||||
|
@return: Returns the list of all attributes referring to handles of this type.
|
||||||
|
@rtype: list
|
||||||
|
"""
|
||||||
|
if classname == 'Event':
|
||||||
|
check_list = [self.birth_handle,self.death_handle]
|
||||||
|
add_list = [item for item in check_list if item]
|
||||||
|
return self.event_list + check_list
|
||||||
|
elif classname == 'Family':
|
||||||
|
return self.family_list + \
|
||||||
|
[item[0] for item in self.parent_family_list ]
|
||||||
|
|
||||||
def get_text_data_list(self):
|
def get_text_data_list(self):
|
||||||
"""
|
"""
|
||||||
Returns the list of all textual attributes of the object.
|
Returns the list of all textual attributes of the object.
|
||||||
@ -781,36 +1068,6 @@ class Person(PrimaryObject,DataObj):
|
|||||||
"""
|
"""
|
||||||
return self.death_handle
|
return self.death_handle
|
||||||
|
|
||||||
def add_media_reference(self,media_ref):
|
|
||||||
"""
|
|
||||||
Adds a L{MediaRef} instance to the Person's media list.
|
|
||||||
|
|
||||||
@param media_ref: L{MediaRef} instance to be added to the Person's
|
|
||||||
media list.
|
|
||||||
@type media_ref: L{MediaRef}
|
|
||||||
"""
|
|
||||||
self.media_list.append(media_ref)
|
|
||||||
|
|
||||||
def get_media_list(self):
|
|
||||||
"""
|
|
||||||
Returns the list of L{MediaRef} instances associated with the Person
|
|
||||||
|
|
||||||
@returns: list of L{MediaRef} instances associated with the Person
|
|
||||||
@rtype: list
|
|
||||||
"""
|
|
||||||
return self.media_list
|
|
||||||
|
|
||||||
def set_media_list(self,media_ref_list):
|
|
||||||
"""
|
|
||||||
Sets the list of L{MediaRef} instances associated with the Person.
|
|
||||||
It replaces the previous list.
|
|
||||||
|
|
||||||
@param media_ref_list: list of L{MediaRef} instances to be assigned
|
|
||||||
to the Person.
|
|
||||||
@type media_ref_list: list
|
|
||||||
"""
|
|
||||||
self.media_list = media_ref_list
|
|
||||||
|
|
||||||
def add_event_handle(self,event_handle):
|
def add_event_handle(self,event_handle):
|
||||||
"""
|
"""
|
||||||
Adds the L{Event} to the Person instance's L{Event} list. This is
|
Adds the L{Event} to the Person instance's L{Event} list. This is
|
||||||
@ -1220,7 +1477,7 @@ class Person(PrimaryObject,DataObj):
|
|||||||
"""
|
"""
|
||||||
return self.lds_seal
|
return self.lds_seal
|
||||||
|
|
||||||
class Family(PrimaryObject,SourceNote):
|
class Family(PrimaryObject,SourceNote,MediaBase):
|
||||||
"""
|
"""
|
||||||
Introduction
|
Introduction
|
||||||
============
|
============
|
||||||
@ -1256,12 +1513,12 @@ class Family(PrimaryObject,SourceNote):
|
|||||||
"""
|
"""
|
||||||
PrimaryObject.__init__(self)
|
PrimaryObject.__init__(self)
|
||||||
SourceNote.__init__(self)
|
SourceNote.__init__(self)
|
||||||
|
MediaBase.__init__(self)
|
||||||
self.father_handle = None
|
self.father_handle = None
|
||||||
self.mother_handle = None
|
self.mother_handle = None
|
||||||
self.child_list = []
|
self.child_list = []
|
||||||
self.type = Family.MARRIED
|
self.type = Family.MARRIED
|
||||||
self.event_list = []
|
self.event_list = []
|
||||||
self.media_list = []
|
|
||||||
self.attribute_list = []
|
self.attribute_list = []
|
||||||
self.lds_seal = None
|
self.lds_seal = None
|
||||||
self.complete = 0
|
self.complete = 0
|
||||||
@ -1298,6 +1555,50 @@ class Family(PrimaryObject,SourceNote):
|
|||||||
self.media_list, self.attribute_list, self.lds_seal,
|
self.media_list, self.attribute_list, self.lds_seal,
|
||||||
self.complete, self.source_list, self.note, self.change) = data
|
self.complete, self.source_list, self.note, self.change) = data
|
||||||
|
|
||||||
|
def _remove_handle_references(self,classname,handle_list):
|
||||||
|
if classname == 'Event':
|
||||||
|
new_list = [ handle for handle in self.event_list \
|
||||||
|
if handle not in handle_list ]
|
||||||
|
self.event_list = new_list
|
||||||
|
elif classname == 'Person':
|
||||||
|
new_list = [ handle for handle in self.child_list \
|
||||||
|
if handle not in handle_list ]
|
||||||
|
self.child_list = new_list
|
||||||
|
if self.father_handle in handle_list:
|
||||||
|
self.father_handle = None
|
||||||
|
if self.mother_handle in handle_list:
|
||||||
|
self.mother_handle = None
|
||||||
|
|
||||||
|
def _replace_handle_reference(self,classname,old_handle,new_handle):
|
||||||
|
if classname == 'Event':
|
||||||
|
while old_handle in self.event_list:
|
||||||
|
ix = self.event_list.index(old_handle)
|
||||||
|
self.event_list[ix] = new_handle
|
||||||
|
elif classname == 'Person':
|
||||||
|
while old_handle in self.child_list:
|
||||||
|
ix = self.child_list.index(old_handle)
|
||||||
|
self.child_list[ix] = new_handle
|
||||||
|
if self.father_handle == old_handle:
|
||||||
|
self.father_handle = new_handle
|
||||||
|
if self.mother_handle == old_handle:
|
||||||
|
self.mother_handle = new_handle
|
||||||
|
|
||||||
|
def get_handleholder_list(self,classname):
|
||||||
|
"""
|
||||||
|
Returns the list of all objects referring to handles of a given type.
|
||||||
|
|
||||||
|
@param classname: The name of the primary object class.
|
||||||
|
@type classname: str
|
||||||
|
@return: Returns the list of all attributes referring to handles of this type.
|
||||||
|
@rtype: list
|
||||||
|
"""
|
||||||
|
if classname == 'Event':
|
||||||
|
return self.event_list
|
||||||
|
elif classname == 'Person':
|
||||||
|
check_list = [self.father_handle,self.mother_handle]
|
||||||
|
add_list = [item for item in check_list if item]
|
||||||
|
return self.child_list + add_list
|
||||||
|
|
||||||
def get_text_data_child_list(self):
|
def get_text_data_child_list(self):
|
||||||
"""
|
"""
|
||||||
Returns the list of child objects that may carry textual data.
|
Returns the list of child objects that may carry textual data.
|
||||||
@ -1563,37 +1864,7 @@ class Family(PrimaryObject,SourceNote):
|
|||||||
"""
|
"""
|
||||||
self.event_list = event_list
|
self.event_list = event_list
|
||||||
|
|
||||||
def add_media_reference(self,media_ref):
|
class Event(PrimaryObject,DataObj,MediaBase):
|
||||||
"""
|
|
||||||
Adds a L{MediaRef} instance to the Family's media list.
|
|
||||||
|
|
||||||
@param media_ref: L{MediaRef} instance to be added to the Family's
|
|
||||||
media list.
|
|
||||||
@type media_ref: L{MediaRef}
|
|
||||||
"""
|
|
||||||
self.media_list.append(media_ref)
|
|
||||||
|
|
||||||
def get_media_list(self):
|
|
||||||
"""
|
|
||||||
Returns the list of L{MediaRef} instances associated with the Family
|
|
||||||
|
|
||||||
@returns: list of L{MediaRef} instances associated with the Family
|
|
||||||
@rtype: list
|
|
||||||
"""
|
|
||||||
return self.media_list
|
|
||||||
|
|
||||||
def set_media_list(self,media_ref_list):
|
|
||||||
"""
|
|
||||||
Sets the list of L{MediaRef} instances associated with the Person.
|
|
||||||
It replaces the previous list.
|
|
||||||
|
|
||||||
@param media_ref_list: list of L{MediaRef} instances to be assigned
|
|
||||||
to the Person.
|
|
||||||
@type media_ref_list: list
|
|
||||||
"""
|
|
||||||
self.media_list = media_ref_list
|
|
||||||
|
|
||||||
class Event(PrimaryObject,DataObj):
|
|
||||||
"""
|
"""
|
||||||
Introduction
|
Introduction
|
||||||
============
|
============
|
||||||
@ -1615,6 +1886,7 @@ class Event(PrimaryObject,DataObj):
|
|||||||
|
|
||||||
PrimaryObject.__init__(self,source)
|
PrimaryObject.__init__(self,source)
|
||||||
DataObj.__init__(self,source)
|
DataObj.__init__(self,source)
|
||||||
|
MediaBase.__init__(self,source)
|
||||||
|
|
||||||
if source:
|
if source:
|
||||||
self.place = source.place
|
self.place = source.place
|
||||||
@ -1622,7 +1894,6 @@ class Event(PrimaryObject,DataObj):
|
|||||||
self.description = source.description
|
self.description = source.description
|
||||||
self.name = source.name
|
self.name = source.name
|
||||||
self.cause = source.cause
|
self.cause = source.cause
|
||||||
self.media_list = [MediaRef(media_id) for media_id in source.media_list]
|
|
||||||
if source.witness != None:
|
if source.witness != None:
|
||||||
self.witness = source.witness[:]
|
self.witness = source.witness[:]
|
||||||
else:
|
else:
|
||||||
@ -1634,7 +1905,6 @@ class Event(PrimaryObject,DataObj):
|
|||||||
self.name = ""
|
self.name = ""
|
||||||
self.cause = ""
|
self.cause = ""
|
||||||
self.witness = None
|
self.witness = None
|
||||||
self.media_list = []
|
|
||||||
|
|
||||||
def serialize(self):
|
def serialize(self):
|
||||||
"""
|
"""
|
||||||
@ -1670,6 +1940,38 @@ class Event(PrimaryObject,DataObj):
|
|||||||
self.place, self.cause, self.private, self.source_list,
|
self.place, self.cause, self.private, self.source_list,
|
||||||
self.note, self.witness, self.media_list, self.change) = data
|
self.note, self.witness, self.media_list, self.change) = data
|
||||||
|
|
||||||
|
def _remove_handle_references(self,classname,handle_list):
|
||||||
|
if classname == 'Person' and self.witness:
|
||||||
|
new_list = [ witness for witness in self.witness \
|
||||||
|
if witness.type == ID and \
|
||||||
|
witness.val not in handle_list ]
|
||||||
|
self.witness = new_list
|
||||||
|
elif classname == 'Place' and self.place in handle_list:
|
||||||
|
self.place = u''
|
||||||
|
|
||||||
|
def _replace_handle_reference(self,classname,old_handle,new_handle):
|
||||||
|
if classname == 'Person' and self.witness:
|
||||||
|
for witness in self.witness:
|
||||||
|
if witness.type == ID and witness.val == old_handle:
|
||||||
|
witness.val = new_hanlde
|
||||||
|
elif classname == 'Place' and self.place == old_handle:
|
||||||
|
self.place = new_handle
|
||||||
|
|
||||||
|
def get_handleholder_list(self,classname):
|
||||||
|
"""
|
||||||
|
Returns the list of all objects referring to handles of a given type.
|
||||||
|
|
||||||
|
@param classname: The name of the primary object class.
|
||||||
|
@type classname: str
|
||||||
|
@return: Returns the list of all attributes referring to handles of this type.
|
||||||
|
@rtype: list
|
||||||
|
"""
|
||||||
|
if classname == 'Place':
|
||||||
|
return [self.place]
|
||||||
|
elif classname == 'Person' and self.witness:
|
||||||
|
return [ witness.val for witness in self.witness \
|
||||||
|
if witness.type == ID ]
|
||||||
|
|
||||||
def get_text_data_list(self):
|
def get_text_data_list(self):
|
||||||
"""
|
"""
|
||||||
Returns the list of all textual attributes of the object.
|
Returns the list of all textual attributes of the object.
|
||||||
@ -1702,36 +2004,6 @@ class Event(PrimaryObject,DataObj):
|
|||||||
"""
|
"""
|
||||||
return self.media_list
|
return self.media_list
|
||||||
|
|
||||||
def add_media_reference(self,media_ref):
|
|
||||||
"""
|
|
||||||
Adds a L{MediaRef} instance to the object's media list.
|
|
||||||
|
|
||||||
@param media_ref: L{MediaRef} instance to be added to the object's
|
|
||||||
media list.
|
|
||||||
@type media_ref: L{MediaRef}
|
|
||||||
"""
|
|
||||||
self.media_list.append(media_ref)
|
|
||||||
|
|
||||||
def get_media_list(self):
|
|
||||||
"""
|
|
||||||
Returns the list of media references associated with the object.
|
|
||||||
|
|
||||||
@return: Returns the list of L{MediaRef} objects assocated with
|
|
||||||
the object.
|
|
||||||
@rtype: list
|
|
||||||
"""
|
|
||||||
return self.media_list
|
|
||||||
|
|
||||||
def set_media_list(self,media_list):
|
|
||||||
"""
|
|
||||||
Assigns the passed list to the Event's list of media references.
|
|
||||||
|
|
||||||
@param media_list: List of media references to ba associated
|
|
||||||
with the Event
|
|
||||||
@type media_list: list of L{MediaRef} instances
|
|
||||||
"""
|
|
||||||
self.media_list = media_list
|
|
||||||
|
|
||||||
def get_witness_list(self):
|
def get_witness_list(self):
|
||||||
"""
|
"""
|
||||||
Returns the list of L{Witness} instances associated with the Event.
|
Returns the list of L{Witness} instances associated with the Event.
|
||||||
@ -1960,7 +2232,7 @@ class Event(PrimaryObject,DataObj):
|
|||||||
"""
|
"""
|
||||||
self.date = date
|
self.date = date
|
||||||
|
|
||||||
class Place(PrimaryObject,SourceNote):
|
class Place(PrimaryObject,SourceNote,MediaBase):
|
||||||
"""
|
"""
|
||||||
Contains information related to a place, including multiple address
|
Contains information related to a place, including multiple address
|
||||||
information (since place names can change with time), longitude, latitude,
|
information (since place names can change with time), longitude, latitude,
|
||||||
@ -1976,6 +2248,7 @@ class Place(PrimaryObject,SourceNote):
|
|||||||
"""
|
"""
|
||||||
PrimaryObject.__init__(self,source)
|
PrimaryObject.__init__(self,source)
|
||||||
SourceNote.__init__(self,source)
|
SourceNote.__init__(self,source)
|
||||||
|
MediaBase.__init__(self,source)
|
||||||
if source:
|
if source:
|
||||||
self.long = source.long
|
self.long = source.long
|
||||||
self.lat = source.lat
|
self.lat = source.lat
|
||||||
@ -1987,9 +2260,6 @@ class Place(PrimaryObject,SourceNote):
|
|||||||
self.urls = []
|
self.urls = []
|
||||||
for u in source.urls:
|
for u in source.urls:
|
||||||
self.urls.append(Url(u))
|
self.urls.append(Url(u))
|
||||||
self.media_list = []
|
|
||||||
for media_id in source.media_list:
|
|
||||||
self.media_list.append(MediaRef(media_id))
|
|
||||||
else:
|
else:
|
||||||
self.long = ""
|
self.long = ""
|
||||||
self.lat = ""
|
self.lat = ""
|
||||||
@ -1997,7 +2267,6 @@ class Place(PrimaryObject,SourceNote):
|
|||||||
self.main_loc = None
|
self.main_loc = None
|
||||||
self.alt_loc = []
|
self.alt_loc = []
|
||||||
self.urls = []
|
self.urls = []
|
||||||
self.media_list = []
|
|
||||||
|
|
||||||
def serialize(self):
|
def serialize(self):
|
||||||
"""
|
"""
|
||||||
@ -2201,36 +2470,6 @@ class Place(PrimaryObject,SourceNote):
|
|||||||
if location not in self.alt_loc:
|
if location not in self.alt_loc:
|
||||||
self.alt_loc.append(location)
|
self.alt_loc.append(location)
|
||||||
|
|
||||||
def add_media_reference(self,media_ref):
|
|
||||||
"""
|
|
||||||
Adds a L{MediaRef} instance to the object's media list.
|
|
||||||
|
|
||||||
@param media_ref: L{MediaRef} instance to be added to the objects's
|
|
||||||
media list.
|
|
||||||
@type media_ref: L{MediaRef}
|
|
||||||
"""
|
|
||||||
self.media_list.append(media_ref)
|
|
||||||
|
|
||||||
def get_media_list(self):
|
|
||||||
"""
|
|
||||||
Returns the list of L{MediaRef} instances associated with the object
|
|
||||||
|
|
||||||
@returns: list of L{MediaRef} instances associated with the object
|
|
||||||
@rtype: list
|
|
||||||
"""
|
|
||||||
return self.media_list
|
|
||||||
|
|
||||||
def set_media_list(self,media_ref_list):
|
|
||||||
"""
|
|
||||||
Sets the list of L{MediaRef} instances associated with the object.
|
|
||||||
It replaces the previous list.
|
|
||||||
|
|
||||||
@param media_ref_list: list of L{MediaRef} instances to be assigned
|
|
||||||
to the object.
|
|
||||||
@type media_ref_list: list
|
|
||||||
"""
|
|
||||||
self.media_list = media_ref_list
|
|
||||||
|
|
||||||
def get_display_info(self):
|
def get_display_info(self):
|
||||||
"""Gets the display information associated with the object. This includes
|
"""Gets the display information associated with the object. This includes
|
||||||
the information that is used for display and for sorting. Returns a list
|
the information that is used for display and for sorting. Returns a list
|
||||||
@ -2317,6 +2556,26 @@ class MediaObject(PrimaryObject,SourceNote):
|
|||||||
self.date, self.place) = data
|
self.date, self.place) = data
|
||||||
|
|
||||||
|
|
||||||
|
def _remove_handle_references(self,classname,handle_list):
|
||||||
|
if classname == 'Place' and self.place in handle_list:
|
||||||
|
self.place = u''
|
||||||
|
|
||||||
|
def _replace_handle_reference(self,classname,old_handle,new_handle):
|
||||||
|
if classname == 'Place' and self.place == old_handle:
|
||||||
|
self.place = new_handle
|
||||||
|
|
||||||
|
def get_handleholder_list(self,classname):
|
||||||
|
"""
|
||||||
|
Returns the list of all objects referring to handles of a given type.
|
||||||
|
|
||||||
|
@param classname: The name of the primary object class.
|
||||||
|
@type classname: str
|
||||||
|
@return: Returns the list of all attributes referring to handles of this type.
|
||||||
|
@rtype: list
|
||||||
|
"""
|
||||||
|
if classname == 'Place':
|
||||||
|
return [self.place]
|
||||||
|
|
||||||
def get_text_data_list(self):
|
def get_text_data_list(self):
|
||||||
"""
|
"""
|
||||||
Returns the list of all textual attributes of the object.
|
Returns the list of all textual attributes of the object.
|
||||||
@ -2457,17 +2716,17 @@ class MediaObject(PrimaryObject,SourceNote):
|
|||||||
def set_attribute_list(self,list):
|
def set_attribute_list(self,list):
|
||||||
self.attrlist = list
|
self.attrlist = list
|
||||||
|
|
||||||
class Source(PrimaryObject):
|
class Source(PrimaryObject,MediaBase):
|
||||||
"""A record of a source of information"""
|
"""A record of a source of information"""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
"""creates a new Source instance"""
|
"""creates a new Source instance"""
|
||||||
PrimaryObject.__init__(self)
|
PrimaryObject.__init__(self)
|
||||||
|
MediaBase.__init__(self)
|
||||||
self.title = ""
|
self.title = ""
|
||||||
self.author = ""
|
self.author = ""
|
||||||
self.pubinfo = ""
|
self.pubinfo = ""
|
||||||
self.note = Note()
|
self.note = Note()
|
||||||
self.media_list = []
|
|
||||||
self.datamap = {}
|
self.datamap = {}
|
||||||
self.abbrev = ""
|
self.abbrev = ""
|
||||||
|
|
||||||
@ -2543,36 +2802,6 @@ class Source(PrimaryObject):
|
|||||||
for item in self.get_sourcref_child_list():
|
for item in self.get_sourcref_child_list():
|
||||||
item.remove_source_references(src_handle_list)
|
item.remove_source_references(src_handle_list)
|
||||||
|
|
||||||
def add_media_reference(self,media_ref):
|
|
||||||
"""
|
|
||||||
Adds a L{MediaRef} instance to the object's media list.
|
|
||||||
|
|
||||||
@param media_ref: L{MediaRef} instance to be added to the objects's
|
|
||||||
media list.
|
|
||||||
@type media_ref: L{MediaRef}
|
|
||||||
"""
|
|
||||||
self.media_list.append(media_ref)
|
|
||||||
|
|
||||||
def get_media_list(self):
|
|
||||||
"""
|
|
||||||
Returns the list of L{MediaRef} instances associated with the object
|
|
||||||
|
|
||||||
@returns: list of L{MediaRef} instances associated with the object
|
|
||||||
@rtype: list
|
|
||||||
"""
|
|
||||||
return self.media_list
|
|
||||||
|
|
||||||
def set_media_list(self,media_ref_list):
|
|
||||||
"""
|
|
||||||
Sets the list of L{MediaRef} instances associated with the object.
|
|
||||||
It replaces the previous list.
|
|
||||||
|
|
||||||
@param media_ref_list: list of L{MediaRef} instances to be assigned
|
|
||||||
to the object.
|
|
||||||
@type media_ref_list: list
|
|
||||||
"""
|
|
||||||
self.media_list = media_ref_list
|
|
||||||
|
|
||||||
def get_data_map(self):
|
def get_data_map(self):
|
||||||
"""Returns the data map of attributes for the source"""
|
"""Returns the data map of attributes for the source"""
|
||||||
return self.datamap
|
return self.datamap
|
||||||
@ -3687,7 +3916,6 @@ class Name(DataObj):
|
|||||||
"""
|
"""
|
||||||
self.date = date
|
self.date = date
|
||||||
|
|
||||||
|
|
||||||
class Url(BaseObject):
|
class Url(BaseObject):
|
||||||
"""Contains information related to internet Uniform Resource Locators,
|
"""Contains information related to internet Uniform Resource Locators,
|
||||||
allowing gramps to store information about internet resources"""
|
allowing gramps to store information about internet resources"""
|
||||||
|
Loading…
Reference in New Issue
Block a user