From: Richard T. <rjt...@th...> - 2007-02-09 16:12:22
|
Hi I am working on my Certificate Manager app and I am creating a new gramps database from a Birth Certificate. But when I open this db in gramps the Relationships and Pedigree views do not work, what I mean is that people that are shown as related in the Family view are not connected in the Pedigree and Relationship view. If I export the db into xml and reimport, the connections are there, so I am clearly doing something wrong in the way that I am populating the database. Here is code that I am using, can anyone spot what I am doing wrong? Many thanks Richard trans = gramps_db.transaction_begin() # Create main source now = Date() now.set_as_text(time.strftime('%Y-%m-%d')) source = Source() source.title = \ self.__class__._description_format % self.name.get_regular_name() source.pubinfo = self.__class__._pubinfo source.set_note(self.note) gramps_db.add_source(source, trans) source.set_gramps_id(gramps_db.find_next_source_gramps_id()) gramps_db.commit_source(source, trans) descr = self._event_format % (self.name.get_regular_name()) source_ref = SourceRef() source_ref.set_text(descr) source_ref.set_reference_handle(source.get_handle()) source_ref.set_date_object(now) source_ref.set_confidence_level(SourceRef.CONF_HIGH) # Create Birth place place = Place() place.set_title('%s, %s, %s, %s' % (self.where_born, self.sub_district, self.district, self.county)) location = Location() location.set_street(self.where_born) location.set_parish(self.sub_district) location.set_city(self.district) location.set_county(self.county) place.set_main_location(location) place.add_source_reference(source_ref) gramps_db.add_place(place, trans) place.set_gramps_id(gramps_db.find_next_place_gramps_id()) gramps_db.commit_place(place, trans) # Create main Event event = Event() event.set_type(EventType.BIRTH) event.set_date_object(self.when_born) event.set_description(descr) event.set_place_handle(place.get_handle()) event.add_source_reference(source_ref) gramps_db.add_event(event, trans) event.set_gramps_id(gramps_db.find_next_event_gramps_id()) gramps_db.commit_event(event, trans) gramps_db.transaction_commit(trans, "") def make_event_ref(role): er = EventRef() er.set_reference_handle(event.get_handle()) er.set_role(role) return er event_ref = make_event_ref(EventRoleType.PRIMARY) # Create the people def person(gramps_id,name,gender=Person.UNKNOWN): if gramps_id == '': p = Person() p.set_primary_name(name) else: p = gramps_db.get_person_from_gramps_id(gramps_id) name.add_source_reference(source_ref) l = p.get_alternate_names() l.append(name) p.set_alternate_names(l) p.set_gender(gender) p.add_source_reference(source_ref) return p child = person(self.gramps_id,self.name,self.sex) child.set_birth_ref(event_ref) father = person(self.father_gramps_id,self.father_name,Person.MALE) mother = person(self.mother_gramps_id,self.mother_name,Person.FEMALE) informant = person(self.informant_gramps_id,self.informant_name) event_ref = make_event_ref(EventRoleType.WITNESS) event_ref.set_note(self.informant_description) informant.add_event_ref(event_ref) registrar = person(self.registrar_gramps_id,self.registrar_name) event_ref = make_event_ref(EventRoleType.WITNESS) registrar.add_event_ref(event_ref) def add_people(people): trans = gramps_db.transaction_begin() for p in people: if p.get_gramps_id == None: gramps_db.add_person(p, trans) p.set_gramps_id(gramps_db.find_next_person_gramps_id()) gramps_db.commit_person(p, trans) gramps_db.transaction_commit(trans, "") add_people((child, father, mother, registrar, informant)) # Add Family trans = gramps_db.transaction_begin() # TODO: Try to find existing family family = Family() family.set_father_handle(father.get_handle()) family.set_mother_handle(mother.get_handle()) child_ref = ChildRef() child_ref.set_reference_handle(child.get_handle()) family.add_child_ref(child_ref) family.add_source_reference(source_ref) family.set_relationship(FamilyRelType.UNKNOWN) gramps_db.add_family(family, trans) family.set_gramps_id(gramps_db.find_next_family_gramps_id()) gramps_db.commit_family(family, trans) gramps_db.transaction_commit(trans, "") |
From: <ben...@ug...> - 2007-02-09 16:51:49
|
I would assume logically from your description your backreferences are not set. So family knows A is father, but father does not contain ref to family. on export and import, this missing link might be corrected automatically. So the import code set's back ref ok. Perhaps because no handle exists yet as you store everything together, where normally in gramps, father exists before it is added to family, so lookup works in the save code? Benny Quoting Richard Taylor <rjt...@th...>: > Hi > > I am working on my Certificate Manager app and I am creating a new gramps > database from a Birth Certificate. But when I open this db in gramps the > Relationships and Pedigree views do not work, what I mean is that people that > are shown as related in the Family view are not connected in the Pedigree and > Relationship view. > > If I export the db into xml and reimport, the connections are there, so I am > clearly doing something wrong in the way that I am populating the database. > > Here is code that I am using, can anyone spot what I am doing wrong? > > Many thanks > > Richard > > trans = gramps_db.transaction_begin() > > # Create main source > now = Date() > now.set_as_text(time.strftime('%Y-%m-%d')) > source = Source() > source.title = \ > self.__class__._description_format % self.name.get_regular_name() > source.pubinfo = self.__class__._pubinfo > source.set_note(self.note) > > gramps_db.add_source(source, trans) > source.set_gramps_id(gramps_db.find_next_source_gramps_id()) > gramps_db.commit_source(source, trans) > > descr = self._event_format % (self.name.get_regular_name()) > source_ref = SourceRef() > source_ref.set_text(descr) > source_ref.set_reference_handle(source.get_handle()) > source_ref.set_date_object(now) > source_ref.set_confidence_level(SourceRef.CONF_HIGH) > > # Create Birth place > place = Place() > place.set_title('%s, %s, %s, %s' % (self.where_born, > self.sub_district, > self.district, > self.county)) > location = Location() > location.set_street(self.where_born) > location.set_parish(self.sub_district) > location.set_city(self.district) > location.set_county(self.county) > > place.set_main_location(location) > place.add_source_reference(source_ref) > > gramps_db.add_place(place, trans) > place.set_gramps_id(gramps_db.find_next_place_gramps_id()) > gramps_db.commit_place(place, trans) > > # Create main Event > event = Event() > event.set_type(EventType.BIRTH) > event.set_date_object(self.when_born) > event.set_description(descr) > event.set_place_handle(place.get_handle()) > event.add_source_reference(source_ref) > > gramps_db.add_event(event, trans) > event.set_gramps_id(gramps_db.find_next_event_gramps_id()) > gramps_db.commit_event(event, trans) > > gramps_db.transaction_commit(trans, "") > > def make_event_ref(role): > er = EventRef() > er.set_reference_handle(event.get_handle()) > er.set_role(role) > return er > > event_ref = make_event_ref(EventRoleType.PRIMARY) > > # Create the people > def person(gramps_id,name,gender=Person.UNKNOWN): > if gramps_id == '': > p = Person() > p.set_primary_name(name) > else: > p = gramps_db.get_person_from_gramps_id(gramps_id) > name.add_source_reference(source_ref) > l = p.get_alternate_names() > l.append(name) > p.set_alternate_names(l) > p.set_gender(gender) > p.add_source_reference(source_ref) > return p > > child = person(self.gramps_id,self.name,self.sex) > child.set_birth_ref(event_ref) > > father = person(self.father_gramps_id,self.father_name,Person.MALE) > mother = person(self.mother_gramps_id,self.mother_name,Person.FEMALE) > > informant = person(self.informant_gramps_id,self.informant_name) > event_ref = make_event_ref(EventRoleType.WITNESS) > event_ref.set_note(self.informant_description) > informant.add_event_ref(event_ref) > > registrar = person(self.registrar_gramps_id,self.registrar_name) > event_ref = make_event_ref(EventRoleType.WITNESS) > registrar.add_event_ref(event_ref) > > def add_people(people): > trans = gramps_db.transaction_begin() > for p in people: > if p.get_gramps_id == None: > gramps_db.add_person(p, trans) > p.set_gramps_id(gramps_db.find_next_person_gramps_id()) > gramps_db.commit_person(p, trans) > gramps_db.transaction_commit(trans, "") > > add_people((child, father, mother, registrar, informant)) > > # Add Family > > trans = gramps_db.transaction_begin() > > # TODO: Try to find existing family > family = Family() > family.set_father_handle(father.get_handle()) > family.set_mother_handle(mother.get_handle()) > > child_ref = ChildRef() > child_ref.set_reference_handle(child.get_handle()) > > family.add_child_ref(child_ref) > family.add_source_reference(source_ref) > family.set_relationship(FamilyRelType.UNKNOWN) > > gramps_db.add_family(family, trans) > family.set_gramps_id(gramps_db.find_next_family_gramps_id()) > gramps_db.commit_family(family, trans) > gramps_db.transaction_commit(trans, "") > > ------------------------------------------------------------------------- > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your > job easier. > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > _______________________________________________ > Gramps-devel mailing list > Gra...@li... > https://lists.sourceforge.net/lists/listinfo/gramps-devel > ---------------------------------------------------------------- This message was sent using IMP, the Internet Messaging Program. |
From: Alex R. <sh...@gr...> - 2007-02-13 01:47:07
|
Richard, Beny is 100% correct: you're adding father and mother handles and the child reference in the family. But you're not adding the family handle to the family list for each parent, and to the parent family list for the child. The person/family references are redundant and are stored both in family and in person. Alex On Fri, 2007-02-09 at 17:51 +0100, ben...@ug... wrote: > I would assume logically from your description your backreferences are=20 > not set. > So family knows A is father, but father does not contain ref to family. > on export and import, this missing link might be corrected automatically. > So the import code set's back ref ok. > Perhaps because no handle exists yet as you store everything together, wh= ere > normally in gramps, father exists before it is added to family, so=20 > lookup works > in the save code? >=20 >=20 > Benny >=20 > Quoting Richard Taylor <rjt...@th...>: >=20 > > Hi > > > > I am working on my Certificate Manager app and I am creating a new gram= ps > > database from a Birth Certificate. But when I open this db in gramps th= e > > Relationships and Pedigree views do not work, what I mean is that peopl= e that > > are shown as related in the Family view are not connected in the Pedigr= ee and > > Relationship view. > > > > If I export the db into xml and reimport, the connections are there, so= I am > > clearly doing something wrong in the way that I am populating the datab= ase. > > > > Here is code that I am using, can anyone spot what I am doing wrong? > > > > Many thanks > > > > Richard > > > > trans =3D gramps_db.transaction_begin() > > > > # Create main source > > now =3D Date() > > now.set_as_text(time.strftime('%Y-%m-%d')) > > source =3D Source() > > source.title =3D \ > > self.__class__._description_format % self.name.get_regular_n= ame() > > source.pubinfo =3D self.__class__._pubinfo > > source.set_note(self.note) > > > > gramps_db.add_source(source, trans) > > source.set_gramps_id(gramps_db.find_next_source_gramps_id()) > > gramps_db.commit_source(source, trans) > > > > descr =3D self._event_format % (self.name.get_regular_name()) > > source_ref =3D SourceRef() > > source_ref.set_text(descr) > > source_ref.set_reference_handle(source.get_handle()) > > source_ref.set_date_object(now) > > source_ref.set_confidence_level(SourceRef.CONF_HIGH) > > > > # Create Birth place > > place =3D Place() > > place.set_title('%s, %s, %s, %s' % (self.where_born, > > self.sub_district, > > self.district, > > self.county)) > > location =3D Location() > > location.set_street(self.where_born) > > location.set_parish(self.sub_district) > > location.set_city(self.district) > > location.set_county(self.county) > > > > place.set_main_location(location) > > place.add_source_reference(source_ref) > > > > gramps_db.add_place(place, trans) > > place.set_gramps_id(gramps_db.find_next_place_gramps_id()) > > gramps_db.commit_place(place, trans) > > > > # Create main Event > > event =3D Event() > > event.set_type(EventType.BIRTH) > > event.set_date_object(self.when_born) > > event.set_description(descr) > > event.set_place_handle(place.get_handle()) > > event.add_source_reference(source_ref) > > > > gramps_db.add_event(event, trans) > > event.set_gramps_id(gramps_db.find_next_event_gramps_id()) > > gramps_db.commit_event(event, trans) > > > > gramps_db.transaction_commit(trans, "") > > > > def make_event_ref(role): > > er =3D EventRef() > > er.set_reference_handle(event.get_handle()) > > er.set_role(role) > > return er > > > > event_ref =3D make_event_ref(EventRoleType.PRIMARY) > > > > # Create the people > > def person(gramps_id,name,gender=3DPerson.UNKNOWN): > > if gramps_id =3D=3D '': > > p =3D Person() > > p.set_primary_name(name) > > else: > > p =3D gramps_db.get_person_from_gramps_id(gramps_id) > > name.add_source_reference(source_ref) > > l =3D p.get_alternate_names() > > l.append(name) > > p.set_alternate_names(l) > > p.set_gender(gender) > > p.add_source_reference(source_ref) > > return p > > > > child =3D person(self.gramps_id,self.name,self.sex) > > child.set_birth_ref(event_ref) > > > > father =3D person(self.father_gramps_id,self.father_name,Person.= MALE) > > mother =3D person(self.mother_gramps_id,self.mother_name,Person.= FEMALE) > > > > informant =3D person(self.informant_gramps_id,self.informant_nam= e) > > event_ref =3D make_event_ref(EventRoleType.WITNESS) > > event_ref.set_note(self.informant_description) > > informant.add_event_ref(event_ref) > > > > registrar =3D person(self.registrar_gramps_id,self.registrar_nam= e) > > event_ref =3D make_event_ref(EventRoleType.WITNESS) > > registrar.add_event_ref(event_ref) > > > > def add_people(people): > > trans =3D gramps_db.transaction_begin() > > for p in people: > > if p.get_gramps_id =3D=3D None: > > gramps_db.add_person(p, trans) > > p.set_gramps_id(gramps_db.find_next_person_gramps_id= ()) > > gramps_db.commit_person(p, trans) > > gramps_db.transaction_commit(trans, "") > > > > add_people((child, father, mother, registrar, informant)) > > > > # Add Family > > > > trans =3D gramps_db.transaction_begin() > > > > # TODO: Try to find existing family > > family =3D Family() > > family.set_father_handle(father.get_handle()) > > family.set_mother_handle(mother.get_handle()) > > > > child_ref =3D ChildRef() > > child_ref.set_reference_handle(child.get_handle()) > > > > family.add_child_ref(child_ref) > > family.add_source_reference(source_ref) > > family.set_relationship(FamilyRelType.UNKNOWN) > > > > gramps_db.add_family(family, trans) > > family.set_gramps_id(gramps_db.find_next_family_gramps_id()) > > gramps_db.commit_family(family, trans) > > gramps_db.transaction_commit(trans, "") > > > > -----------------------------------------------------------------------= -- > > Using Tomcat but need to do more? Need to support web services, securit= y? > > Get stuff done quickly with pre-integrated technology to make your=20 > > job easier. > > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geron= imo > > http://sel.as-us.falkag.net/sel?cmd=3Dlnk&kid=3D120709&bid=3D263057&dat= =3D121642 > > _______________________________________________ > > Gramps-devel mailing list > > Gra...@li... > > https://lists.sourceforge.net/lists/listinfo/gramps-devel > > >=20 >=20 >=20 > ---------------------------------------------------------------- > This message was sent using IMP, the Internet Messaging Program. >=20 > ------------------------------------------------------------------------- > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job ea= sier. > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronim= o > http://sel.as-us.falkag.net/sel?cmd=3Dlnk&kid=3D120709&bid=3D263057&dat= =3D121642 > _______________________________________________ > Gramps-devel mailing list > Gra...@li... > https://lists.sourceforge.net/lists/listinfo/gramps-devel --=20 Alexander Roitman http://www.gramps-project.org |