Update database proxies to include tag objects
svn: r15950
This commit is contained in:
parent
8c180108f7
commit
b733d9e306
@ -282,5 +282,6 @@ class LivingProxyDb(ProxyDbBase):
|
||||
new_person.set_family_handle_list(person.get_family_handle_list())
|
||||
new_person.set_parent_family_handle_list(
|
||||
person.get_parent_family_handle_list() )
|
||||
new_person.set_tag_list(person.get_tag_list())
|
||||
|
||||
return new_person
|
||||
|
@ -816,6 +816,9 @@ def sanitize_person(db, person):
|
||||
copy_notes(db, person, new_person)
|
||||
copy_associations(db, person, new_person)
|
||||
|
||||
# copy tags
|
||||
new_person.set_tag_list(person.get_tag_list())
|
||||
|
||||
return new_person
|
||||
|
||||
def sanitize_source(db, source):
|
||||
|
@ -99,6 +99,7 @@ class ProxyDbBase(DbReadBase):
|
||||
include_media_object = \
|
||||
include_repository = \
|
||||
include_note = \
|
||||
include_tag = \
|
||||
None
|
||||
|
||||
def get_person_handles(self, sort_handles=True):
|
||||
@ -181,6 +182,16 @@ class ProxyDbBase(DbReadBase):
|
||||
else:
|
||||
return []
|
||||
|
||||
def get_tag_handles(self, sort_handles=True):
|
||||
"""
|
||||
Return a list of database handles, one handle for each Tag in
|
||||
the database.
|
||||
"""
|
||||
if self.db.is_open:
|
||||
return list(self.iter_tag_handles())
|
||||
else:
|
||||
return []
|
||||
|
||||
def get_default_person(self):
|
||||
"""returns the default Person of the database"""
|
||||
return self.db.get_default_person()
|
||||
@ -245,6 +256,13 @@ class ProxyDbBase(DbReadBase):
|
||||
"""
|
||||
return ifilter(self.include_note, self.db.iter_note_handles())
|
||||
|
||||
def iter_tag_handles(self):
|
||||
"""
|
||||
Return an iterator over database handles, one handle for each Tag in
|
||||
the database.
|
||||
"""
|
||||
return ifilter(self.include_tag, self.db.iter_tag_handles())
|
||||
|
||||
@staticmethod
|
||||
def __iter_object(filter, method):
|
||||
""" Helper function to return an iterator over an object class """
|
||||
@ -301,6 +319,12 @@ class ProxyDbBase(DbReadBase):
|
||||
"""
|
||||
return self.__iter_object(self.include_note, self.db.iter_notes)
|
||||
|
||||
def iter_tags(self):
|
||||
"""
|
||||
Return an iterator over Tag objects in the database
|
||||
"""
|
||||
return self.__iter_object(self.include_tag, self.db.iter_tags)
|
||||
|
||||
@staticmethod
|
||||
def gfilter(predicate, obj):
|
||||
"""
|
||||
@ -398,6 +422,14 @@ class ProxyDbBase(DbReadBase):
|
||||
return self.gfilter(self.include_note,
|
||||
self.db.get_note_from_handle(handle))
|
||||
|
||||
def get_tag_from_handle(self, handle):
|
||||
"""
|
||||
Finds a Tag in the database from the passed gramps handle.
|
||||
If no such Tag exists, None is returned.
|
||||
"""
|
||||
return self.gfilter(self.include_tag,
|
||||
self.db.get_tag_from_handle(handle))
|
||||
|
||||
def get_person_from_gramps_id(self, val):
|
||||
"""
|
||||
Finds a Person in the database from the passed GRAMPS ID.
|
||||
@ -462,6 +494,14 @@ class ProxyDbBase(DbReadBase):
|
||||
return self.gfilter(self.include_note,
|
||||
self.db.get_note_from_gramps_id(val))
|
||||
|
||||
def get_tag_from_name(self, val):
|
||||
"""
|
||||
Finds a Tag in the database from the passed tag name.
|
||||
If no such Tag exists, None is returned.
|
||||
"""
|
||||
return self.gfilter(self.include_tag,
|
||||
self.db.get_tag_from_name(val))
|
||||
|
||||
def get_name_group_mapping(self, name):
|
||||
"""
|
||||
Return the default grouping name for a surname
|
||||
@ -528,6 +568,12 @@ class ProxyDbBase(DbReadBase):
|
||||
"""
|
||||
return self.db.get_number_of_notes()
|
||||
|
||||
def get_number_of_tags(self):
|
||||
"""
|
||||
Return the number of tags currently in the database.
|
||||
"""
|
||||
return self.db.get_number_of_tags()
|
||||
|
||||
def get_save_path(self):
|
||||
"""returns the save path of the file, or "" if one does not exist"""
|
||||
return self.db.get_save_path()
|
||||
@ -625,6 +671,9 @@ class ProxyDbBase(DbReadBase):
|
||||
def get_raw_note_data(self, handle):
|
||||
return self.db.get_raw_note_data(handle)
|
||||
|
||||
def get_raw_tag_data(self, handle):
|
||||
return self.db.get_raw_tag_data(handle)
|
||||
|
||||
def has_person_handle(self, handle):
|
||||
"""
|
||||
Returns True if the handle exists in the current Person database.
|
||||
@ -681,6 +730,13 @@ class ProxyDbBase(DbReadBase):
|
||||
return self.gfilter(self.include_note,
|
||||
self.db.get_note_from_gramps_id(val)) is not None
|
||||
|
||||
def has_tag_handle(self, handle):
|
||||
"""
|
||||
returns True if the handle exists in the current Tag database.
|
||||
"""
|
||||
return self.gfilter(self.include_tag,
|
||||
self.db.get_tag_from_handle(handle)) is not None
|
||||
|
||||
def get_mediapath(self):
|
||||
"""returns the default media path of the database"""
|
||||
return self.db.get_mediapath()
|
||||
|
@ -49,6 +49,7 @@ class ReferencedProxyDb(ProxyDbBase):
|
||||
self.unreferenced_repositories = set()
|
||||
self.unreferenced_media_objects = set()
|
||||
self.unreferenced_notes = set()
|
||||
self.unreferenced_tags = set()
|
||||
|
||||
# Build lists of unreferenced objects
|
||||
self.__find_unreferenced_objects()
|
||||
@ -89,6 +90,12 @@ class ReferencedProxyDb(ProxyDbBase):
|
||||
"""
|
||||
return handle not in self.unreferenced_notes
|
||||
|
||||
def include_tag(self, handle):
|
||||
"""
|
||||
Filter for tags
|
||||
"""
|
||||
return handle not in self.unreferenced_tags
|
||||
|
||||
def find_backlink_handles(self, handle, include_classes=None):
|
||||
"""
|
||||
Find all objects that hold a reference to the object handle.
|
||||
@ -155,6 +162,7 @@ class ReferencedProxyDb(ProxyDbBase):
|
||||
(self.unreferenced_media_objects,
|
||||
self.get_media_object_handles),
|
||||
(self.unreferenced_notes, self.get_note_handles),
|
||||
(self.unreferenced_tags, self.get_tag_handles),
|
||||
)
|
||||
|
||||
last_count = 0
|
||||
|
@ -86,6 +86,7 @@ class ReferencedBySelectionProxyDb(ProxyDbBase):
|
||||
"Repository": set(),
|
||||
"MediaObject": set(),
|
||||
"Note": set(),
|
||||
"Tag": set(),
|
||||
}
|
||||
|
||||
def process_object(self, class_name, handle):
|
||||
@ -179,6 +180,7 @@ class ReferencedBySelectionProxyDb(ProxyDbBase):
|
||||
self.process_lds_ords(person)
|
||||
self.process_notes(person)
|
||||
self.process_associations(person)
|
||||
self.process_tags(person)
|
||||
|
||||
def process_family(self, family):
|
||||
"""
|
||||
@ -302,6 +304,15 @@ class ReferencedBySelectionProxyDb(ProxyDbBase):
|
||||
|
||||
# --------------------------------------------
|
||||
|
||||
def process_tags(self, original_obj):
|
||||
"""
|
||||
Record the tags referenced by the primary object.
|
||||
"""
|
||||
for tag_handle in original_obj.get_tag_list():
|
||||
self.referenced["Tag"].add(tag_handle)
|
||||
|
||||
# --------------------------------------------
|
||||
|
||||
def process_name(self, name):
|
||||
""" Find all of the primary objects referred to """
|
||||
self.process_source_ref_list(name)
|
||||
@ -446,6 +457,12 @@ class ReferencedBySelectionProxyDb(ProxyDbBase):
|
||||
"""
|
||||
return handle in self.referenced["Note"]
|
||||
|
||||
def include_tag(self, handle):
|
||||
"""
|
||||
Filter for tags
|
||||
"""
|
||||
return handle in self.referenced["Tag"]
|
||||
|
||||
def find_backlink_handles(self, handle, include_classes=None):
|
||||
"""
|
||||
Return appropriate backlink handles for this proxy.
|
||||
|
Loading…
Reference in New Issue
Block a user