def set_person_attribute(self, person, record_id): attr_name = 'Ancestry APID H:{}'.format(self._dbid) existing_attrs = [a for a in person.get_attribute_list() if(str(a.get_type()) == attr_name)] if existing_attrs: existing_attrs[0].set_value(str(record_id)) for extra_attr in existing_attrs[1:]: person.remove_attribute(extra_attr) else: attr = Attribute() attr.set_type(attr_name) attr.set_value(str(record_id)) person.add_attribute(attr) with DbTxn(_("Setting Ancestry Record ID"), self.dbstate.db) as trans: self.dbstate.db.commit_person(person, trans)
def generate_md5(self, button): """ Generate md5 hashes for media files and attach them as attributes to media objects. """ self.clear_models() progress = ProgressMeter(self.window_name, can_cancel=True, parent=self.window) length = self.db.get_number_of_media_objects() progress.set_pass(_('Generating media hashes'), length) with DbTxn(_("Set media hashes"), self.db, batch=True) as trans: for handle in self.db.get_media_object_handles(): media = self.db.get_object_from_handle(handle) full_path = media_path_full(self.db, media.get_path()) try: with io.open(full_path, 'rb') as media_file: md5sum = hashlib.md5(media_file.read()).hexdigest() except IOError as err: error_msg = '%s: %s' % (err.strerror, full_path) self.models[5].append((error_msg, None)) progress.step() continue for attr in media.get_attribute_list(): if str(attr.get_type()) == 'md5': media.remove_attribute(attr) break attr = Attribute() attr.set_type(AttributeType('md5')) attr.set_value(md5sum) media.add_attribute(attr) self.db.commit_media_object(media, trans) progress.step() if progress.get_cancelled(): break self.show_tabs() progress.close()
def save(self): """ Save the census headings to the database. """ new_list = [] for attr in self.event.get_attribute_list(): if attr.get_type() not in self.heading_list: new_list.append(attr) for row in self.model: if row[1]: attr = Attribute() attr.set_type(row[0]) attr.set_value(row[1]) new_list.append(attr) self.event.set_attribute_list(new_list)
def save(self): """ Save the form headings to the database. """ new_list = [] for attr in self.event.get_attribute_list(): if attr.get_type() not in self.heading_list: new_list.append(attr) for row in self.model: if row[1]: attr = Attribute() attr.set_type(row[0]) attr.set_value(row[1]) attr.add_citation(self.citation.handle) new_list.append(attr) self.event.set_attribute_list(new_list)
def set_attribute(event_ref, attrs, name, value): """ Set a named attribute to a given value. Create the attribute if it does not already exist. Delete it if the value is None or ''. """ attr = get_attribute(attrs, name) if attr is None: if value: # Add attr = Attribute() attr.set_type(name) attr.set_value(value) if name == ORDER_ATTR: attr.set_privacy(True) event_ref.add_attribute(attr) else: if not value: # Remove event_ref.remove_attribute(attr) elif attr.get_value() != value: # Update attr.set_value(value)
def set_attribute(citation, event_ref, name, value): """ Set a named attribute to a given value. Create the attribute if it does not already exist. Delete it if the value is None or ''. """ attrs = event_ref.get_attribute_list() attr = get_attribute(attrs, name) if attr is None: if value: # Add attr = Attribute() attr.set_type(name) attr.set_value(value) attr.add_citation(citation.handle) if name == ORDER_ATTR: attr.set_privacy(True) event_ref.add_attribute(attr) else: if not value: # Remove event_ref.remove_attribute(attr) elif attr.get_value() != value: # Update attr.set_value(value)