Add huge demo family for testing MyTimeline plugin
- Add generate_demo_family.py script to generate demo data - Add demo_family.gramps with large family tree: * 2 parents (John and Mary Smith) * 15 children * 5 spouses * ~20 grandchildren * Multiple families with marriage events * Birth and death events for all members - Perfect for testing the MyTimeline plugin with real data
This commit is contained in:
parent
77f36d6b8b
commit
da620972a6
715
demo_family.gramps
Normal file
715
demo_family.gramps
Normal file
@ -0,0 +1,715 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE database PUBLIC "-//Gramps//DTD Gramps XML 1.7.1//EN"
|
||||||
|
"http://gramps-project.org/xml/1.7.1/grampsxml.dtd">
|
||||||
|
<database xmlns="http://gramps-project.org/xml/1.7.1/">
|
||||||
|
<header>
|
||||||
|
<created date="2025-11-28" version="5.1.0"/>
|
||||||
|
<researcher>
|
||||||
|
<resname>Demo Family Generator</resname>
|
||||||
|
</researcher>
|
||||||
|
</header>
|
||||||
|
<tags>
|
||||||
|
</tags>
|
||||||
|
<events>
|
||||||
|
<event handle="_EVENT00000010" change="1764364164" id="E0010">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="1950-09-19"/>
|
||||||
|
<description>Birth of Smith, John</description>
|
||||||
|
</event>
|
||||||
|
|
||||||
|
<event handle="_EVENT00000011" change="1764364164" id="E0011">
|
||||||
|
<type>Death</type>
|
||||||
|
<dateval val="2010-08-18"/>
|
||||||
|
<description>Death of Smith, John</description>
|
||||||
|
</event>
|
||||||
|
|
||||||
|
<event handle="_EVENT00000020" change="1764364164" id="E0020">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="1952-09-19"/>
|
||||||
|
<description>Birth of Smith, Mary</description>
|
||||||
|
</event>
|
||||||
|
|
||||||
|
<event handle="_EVENT00000021" change="1764364164" id="E0021">
|
||||||
|
<type>Death</type>
|
||||||
|
<dateval val="2015-08-18"/>
|
||||||
|
<description>Death of Smith, Mary</description>
|
||||||
|
</event>
|
||||||
|
|
||||||
|
<event handle="_EVENT00000100" change="1764364164" id="E0100">
|
||||||
|
<type>Marriage</type>
|
||||||
|
<dateval val="1969-01-08"/>
|
||||||
|
<description>Marriage</description>
|
||||||
|
</event>
|
||||||
|
|
||||||
|
<event handle="_EVENT00000030" change="1764364164" id="E0030">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="1970-02-18"/>
|
||||||
|
<description>Birth of Smith, Steven</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000031" change="1764364164" id="E0031">
|
||||||
|
<type>Death</type>
|
||||||
|
<dateval val="2036-09-26"/>
|
||||||
|
<description>Death of Smith, Steven</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000040" change="1764364164" id="E0040">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="1972-10-07"/>
|
||||||
|
<description>Birth of Smith, Debra</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000050" change="1764364164" id="E0050">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="1974-12-11"/>
|
||||||
|
<description>Birth of Smith, Jeffrey</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000051" change="1764364164" id="E0051">
|
||||||
|
<type>Death</type>
|
||||||
|
<dateval val="2048-12-12"/>
|
||||||
|
<description>Death of Smith, Jeffrey</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000060" change="1764364164" id="E0060">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="1976-05-18"/>
|
||||||
|
<description>Birth of Smith, Patricia</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000070" change="1764364164" id="E0070">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="1978-09-11"/>
|
||||||
|
<description>Birth of Smith, William</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000071" change="1764364164" id="E0071">
|
||||||
|
<type>Death</type>
|
||||||
|
<dateval val="2055-11-04"/>
|
||||||
|
<description>Death of Smith, William</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000080" change="1764364164" id="E0080">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="1980-12-25"/>
|
||||||
|
<description>Birth of Smith, Dorothy</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000090" change="1764364164" id="E0090">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="1982-09-04"/>
|
||||||
|
<description>Birth of Smith, William</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000100" change="1764364164" id="E0100">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="1984-11-28"/>
|
||||||
|
<description>Birth of Smith, Brenda</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000110" change="1764364164" id="E0110">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="1986-11-23"/>
|
||||||
|
<description>Birth of Smith, Jason</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000120" change="1764364164" id="E0120">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="1988-06-16"/>
|
||||||
|
<description>Birth of Smith, Amanda</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000130" change="1764364164" id="E0130">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="1990-02-02"/>
|
||||||
|
<description>Birth of Smith, Anthony</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000140" change="1764364164" id="E0140">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="1992-08-11"/>
|
||||||
|
<description>Birth of Smith, Susan</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000150" change="1764364164" id="E0150">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="1994-06-28"/>
|
||||||
|
<description>Birth of Smith, Anthony</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000160" change="1764364164" id="E0160">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="1996-11-24"/>
|
||||||
|
<description>Birth of Smith, Rebecca</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000170" change="1764364164" id="E0170">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="1998-04-24"/>
|
||||||
|
<description>Birth of Smith, Michael</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000200" change="1764364164" id="E0200">
|
||||||
|
<type>Marriage</type>
|
||||||
|
<dateval val="1990-09-26"/>
|
||||||
|
<description>Marriage</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000300" change="1764364164" id="E0300">
|
||||||
|
<type>Marriage</type>
|
||||||
|
<dateval val="1991-08-27"/>
|
||||||
|
<description>Marriage</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000400" change="1764364164" id="E0400">
|
||||||
|
<type>Marriage</type>
|
||||||
|
<dateval val="1992-09-17"/>
|
||||||
|
<description>Marriage</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000500" change="1764364164" id="E0500">
|
||||||
|
<type>Marriage</type>
|
||||||
|
<dateval val="1993-06-01"/>
|
||||||
|
<description>Marriage</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000600" change="1764364164" id="E0600">
|
||||||
|
<type>Marriage</type>
|
||||||
|
<dateval val="1994-03-18"/>
|
||||||
|
<description>Marriage</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000180" change="1764364164" id="E0180">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="1968-08-10"/>
|
||||||
|
<description>Birth of Smith, Christine</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000190" change="1764364164" id="E0190">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="1995-02-04"/>
|
||||||
|
<description>Birth of Smith, Jeffrey</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000200" change="1764364164" id="E0200">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="1996-08-21"/>
|
||||||
|
<description>Birth of Smith, Deborah</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000210" change="1764364164" id="E0210">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="1997-07-27"/>
|
||||||
|
<description>Birth of Smith, Eric</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000220" change="1764364164" id="E0220">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="1970-10-21"/>
|
||||||
|
<description>Birth of Smith, Charles</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000230" change="1764364164" id="E0230">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="1998-10-28"/>
|
||||||
|
<description>Birth of Smith, Thomas</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000240" change="1764364164" id="E0240">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="1999-04-20"/>
|
||||||
|
<description>Birth of Smith, Nancy</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000250" change="1764364164" id="E0250">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="2000-03-04"/>
|
||||||
|
<description>Birth of Smith, David</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000260" change="1764364164" id="E0260">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="1975-04-06"/>
|
||||||
|
<description>Birth of Smith, Katherine</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000270" change="1764364164" id="E0270">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="2001-12-26"/>
|
||||||
|
<description>Birth of Smith, Scott</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000280" change="1764364164" id="E0280">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="2002-01-27"/>
|
||||||
|
<description>Birth of Smith, Betty</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000290" change="1764364164" id="E0290">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="2003-01-14"/>
|
||||||
|
<description>Birth of Smith, Robert</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000300" change="1764364164" id="E0300">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="2004-01-09"/>
|
||||||
|
<description>Birth of Smith, Anna</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000310" change="1764364164" id="E0310">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="2005-07-11"/>
|
||||||
|
<description>Birth of Smith, John</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000320" change="1764364164" id="E0320">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="1978-07-13"/>
|
||||||
|
<description>Birth of Smith, Richard</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000330" change="1764364164" id="E0330">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="2004-06-21"/>
|
||||||
|
<description>Birth of Smith, Joshua</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000340" change="1764364164" id="E0340">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="2005-07-10"/>
|
||||||
|
<description>Birth of Smith, Nancy</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000350" change="1764364164" id="E0350">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="2006-10-08"/>
|
||||||
|
<description>Birth of Smith, Jacob</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000360" change="1764364164" id="E0360">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="2007-10-09"/>
|
||||||
|
<description>Birth of Smith, Elizabeth</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000370" change="1764364164" id="E0370">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="2008-08-14"/>
|
||||||
|
<description>Birth of Smith, Ryan</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000380" change="1764364164" id="E0380">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="1978-12-04"/>
|
||||||
|
<description>Birth of Smith, Carol</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000390" change="1764364164" id="E0390">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="2007-06-26"/>
|
||||||
|
<description>Birth of Smith, George</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000400" change="1764364164" id="E0400">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="2008-10-04"/>
|
||||||
|
<description>Birth of Smith, Rebecca</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000410" change="1764364164" id="E0410">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="2009-12-08"/>
|
||||||
|
<description>Birth of Smith, Edward</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000420" change="1764364164" id="E0420">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="2010-07-21"/>
|
||||||
|
<description>Birth of Smith, Amanda</description>
|
||||||
|
</event>
|
||||||
|
<event handle="_EVENT00000430" change="1764364164" id="E0430">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="2011-08-15"/>
|
||||||
|
<description>Birth of Smith, Jacob</description>
|
||||||
|
</event>
|
||||||
|
</events>
|
||||||
|
<people>
|
||||||
|
<person handle="_PERSON00000001" change="1764364164" id="I0001">
|
||||||
|
<gender>M</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>John</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000010" role="Primary"/>
|
||||||
|
<eventref hlink="_EVENT00000011" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000002" change="1764364164" id="I0002">
|
||||||
|
<gender>F</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Mary</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000020" role="Primary"/>
|
||||||
|
<eventref hlink="_EVENT00000021" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000003" change="1764364164" id="I0003">
|
||||||
|
<gender>M</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Steven</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000030" role="Primary"/>
|
||||||
|
<eventref hlink="_EVENT00000031" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000004" change="1764364164" id="I0004">
|
||||||
|
<gender>F</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Debra</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000040" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000005" change="1764364164" id="I0005">
|
||||||
|
<gender>M</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Jeffrey</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000050" role="Primary"/>
|
||||||
|
<eventref hlink="_EVENT00000051" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000006" change="1764364164" id="I0006">
|
||||||
|
<gender>F</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Patricia</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000060" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000007" change="1764364164" id="I0007">
|
||||||
|
<gender>M</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>William</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000070" role="Primary"/>
|
||||||
|
<eventref hlink="_EVENT00000071" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000008" change="1764364164" id="I0008">
|
||||||
|
<gender>F</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Dorothy</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000080" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000009" change="1764364164" id="I0009">
|
||||||
|
<gender>M</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>William</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000090" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000010" change="1764364164" id="I0010">
|
||||||
|
<gender>F</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Brenda</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000100" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000011" change="1764364164" id="I0011">
|
||||||
|
<gender>M</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Jason</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000110" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000012" change="1764364164" id="I0012">
|
||||||
|
<gender>F</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Amanda</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000120" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000013" change="1764364164" id="I0013">
|
||||||
|
<gender>M</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Anthony</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000130" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000014" change="1764364164" id="I0014">
|
||||||
|
<gender>F</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Susan</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000140" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000015" change="1764364164" id="I0015">
|
||||||
|
<gender>M</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Anthony</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000150" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000016" change="1764364164" id="I0016">
|
||||||
|
<gender>F</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Rebecca</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000160" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000017" change="1764364164" id="I0017">
|
||||||
|
<gender>M</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Michael</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000170" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000018" change="1764364164" id="I0018">
|
||||||
|
<gender>F</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Christine</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000180" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000019" change="1764364164" id="I0019">
|
||||||
|
<gender>M</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Jeffrey</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000190" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000020" change="1764364164" id="I0020">
|
||||||
|
<gender>F</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Deborah</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000200" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000021" change="1764364164" id="I0021">
|
||||||
|
<gender>M</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Eric</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000210" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000022" change="1764364164" id="I0022">
|
||||||
|
<gender>M</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Charles</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000220" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000023" change="1764364164" id="I0023">
|
||||||
|
<gender>M</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Thomas</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000230" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000024" change="1764364164" id="I0024">
|
||||||
|
<gender>F</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Nancy</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000240" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000025" change="1764364164" id="I0025">
|
||||||
|
<gender>M</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>David</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000250" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000026" change="1764364164" id="I0026">
|
||||||
|
<gender>F</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Katherine</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000260" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000027" change="1764364164" id="I0027">
|
||||||
|
<gender>M</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Scott</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000270" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000028" change="1764364164" id="I0028">
|
||||||
|
<gender>F</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Betty</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000280" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000029" change="1764364164" id="I0029">
|
||||||
|
<gender>M</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Robert</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000290" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000030" change="1764364164" id="I0030">
|
||||||
|
<gender>F</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Anna</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000300" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000031" change="1764364164" id="I0031">
|
||||||
|
<gender>M</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>John</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000310" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000032" change="1764364164" id="I0032">
|
||||||
|
<gender>M</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Richard</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000320" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000033" change="1764364164" id="I0033">
|
||||||
|
<gender>M</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Joshua</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000330" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000034" change="1764364164" id="I0034">
|
||||||
|
<gender>F</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Nancy</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000340" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000035" change="1764364164" id="I0035">
|
||||||
|
<gender>M</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Jacob</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000350" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000036" change="1764364164" id="I0036">
|
||||||
|
<gender>F</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Elizabeth</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000360" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000037" change="1764364164" id="I0037">
|
||||||
|
<gender>M</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Ryan</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000370" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000038" change="1764364164" id="I0038">
|
||||||
|
<gender>F</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Carol</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000380" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000039" change="1764364164" id="I0039">
|
||||||
|
<gender>M</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>George</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000390" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000040" change="1764364164" id="I0040">
|
||||||
|
<gender>F</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Rebecca</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000400" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000041" change="1764364164" id="I0041">
|
||||||
|
<gender>M</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Edward</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000410" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000042" change="1764364164" id="I0042">
|
||||||
|
<gender>F</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Amanda</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000420" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
<person handle="_PERSON00000043" change="1764364164" id="I0043">
|
||||||
|
<gender>M</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>Jacob</first>
|
||||||
|
<surname>Smith</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="_EVENT00000430" role="Primary"/>
|
||||||
|
</person>
|
||||||
|
</people>
|
||||||
|
<families>
|
||||||
|
<family handle="_FAMILY00000001" change="1764364164" id="F0001">
|
||||||
|
<rel type="Married"/>
|
||||||
|
<father hlink="_PERSON00000001"/>
|
||||||
|
<mother hlink="_PERSON00000002"/>
|
||||||
|
<childref hlink="_PERSON00000003"/>
|
||||||
|
<childref hlink="_PERSON00000004"/>
|
||||||
|
<childref hlink="_PERSON00000005"/>
|
||||||
|
<childref hlink="_PERSON00000006"/>
|
||||||
|
<childref hlink="_PERSON00000007"/>
|
||||||
|
<childref hlink="_PERSON00000008"/>
|
||||||
|
<childref hlink="_PERSON00000009"/>
|
||||||
|
<childref hlink="_PERSON00000010"/>
|
||||||
|
<childref hlink="_PERSON00000011"/>
|
||||||
|
<childref hlink="_PERSON00000012"/>
|
||||||
|
<childref hlink="_PERSON00000013"/>
|
||||||
|
<childref hlink="_PERSON00000014"/>
|
||||||
|
<childref hlink="_PERSON00000015"/>
|
||||||
|
<childref hlink="_PERSON00000016"/>
|
||||||
|
<childref hlink="_PERSON00000017"/>
|
||||||
|
<eventref hlink="_EVENT00000100" role="Family"/>
|
||||||
|
</family>
|
||||||
|
<family handle="_FAMILY00000002" change="1764364164" id="F0002">
|
||||||
|
<rel type="Married"/>
|
||||||
|
<father hlink="_PERSON00000003"/>
|
||||||
|
<mother hlink="_PERSON00000018"/>
|
||||||
|
<childref hlink="_PERSON00000019"/>
|
||||||
|
<childref hlink="_PERSON00000020"/>
|
||||||
|
<childref hlink="_PERSON00000021"/>
|
||||||
|
<eventref hlink="_EVENT00000200" role="Family"/>
|
||||||
|
</family>
|
||||||
|
<family handle="_FAMILY00000003" change="1764364164" id="F0003">
|
||||||
|
<rel type="Married"/>
|
||||||
|
<father hlink="_PERSON00000004"/>
|
||||||
|
<mother hlink="_PERSON00000022"/>
|
||||||
|
<childref hlink="_PERSON00000023"/>
|
||||||
|
<childref hlink="_PERSON00000024"/>
|
||||||
|
<childref hlink="_PERSON00000025"/>
|
||||||
|
<eventref hlink="_EVENT00000300" role="Family"/>
|
||||||
|
</family>
|
||||||
|
<family handle="_FAMILY00000004" change="1764364164" id="F0004">
|
||||||
|
<rel type="Married"/>
|
||||||
|
<father hlink="_PERSON00000005"/>
|
||||||
|
<mother hlink="_PERSON00000026"/>
|
||||||
|
<childref hlink="_PERSON00000027"/>
|
||||||
|
<childref hlink="_PERSON00000028"/>
|
||||||
|
<childref hlink="_PERSON00000029"/>
|
||||||
|
<childref hlink="_PERSON00000030"/>
|
||||||
|
<childref hlink="_PERSON00000031"/>
|
||||||
|
<eventref hlink="_EVENT00000400" role="Family"/>
|
||||||
|
</family>
|
||||||
|
<family handle="_FAMILY00000005" change="1764364164" id="F0005">
|
||||||
|
<rel type="Married"/>
|
||||||
|
<father hlink="_PERSON00000006"/>
|
||||||
|
<mother hlink="_PERSON00000032"/>
|
||||||
|
<childref hlink="_PERSON00000033"/>
|
||||||
|
<childref hlink="_PERSON00000034"/>
|
||||||
|
<childref hlink="_PERSON00000035"/>
|
||||||
|
<childref hlink="_PERSON00000036"/>
|
||||||
|
<childref hlink="_PERSON00000037"/>
|
||||||
|
<eventref hlink="_EVENT00000500" role="Family"/>
|
||||||
|
</family>
|
||||||
|
<family handle="_FAMILY00000006" change="1764364164" id="F0006">
|
||||||
|
<rel type="Married"/>
|
||||||
|
<father hlink="_PERSON00000007"/>
|
||||||
|
<mother hlink="_PERSON00000038"/>
|
||||||
|
<childref hlink="_PERSON00000039"/>
|
||||||
|
<childref hlink="_PERSON00000040"/>
|
||||||
|
<childref hlink="_PERSON00000041"/>
|
||||||
|
<childref hlink="_PERSON00000042"/>
|
||||||
|
<childref hlink="_PERSON00000043"/>
|
||||||
|
<eventref hlink="_EVENT00000600" role="Family"/>
|
||||||
|
</family>
|
||||||
|
</families>
|
||||||
|
</database>
|
||||||
251
generate_demo_family.py
Normal file
251
generate_demo_family.py
Normal file
@ -0,0 +1,251 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
Generate a huge demo family for Gramps testing
|
||||||
|
"""
|
||||||
|
|
||||||
|
import random
|
||||||
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
|
# Generate unique handles
|
||||||
|
def gen_handle(prefix, num):
|
||||||
|
return f"_{prefix}{num:08d}"
|
||||||
|
|
||||||
|
# Generate a person
|
||||||
|
def gen_person(pid, first_name, surname, birth_year, death_year=None, gender="M"):
|
||||||
|
handle = gen_handle("PERSON", pid)
|
||||||
|
birth_handle = gen_handle("EVENT", pid * 10)
|
||||||
|
death_handle = gen_handle("EVENT", pid * 10 + 1) if death_year else None
|
||||||
|
|
||||||
|
person_xml = f""" <person handle="{handle}" change="{int(datetime.now().timestamp())}" id="I{pid:04d}">
|
||||||
|
<gender>{gender}</gender>
|
||||||
|
<name type="Birth Name">
|
||||||
|
<first>{first_name}</first>
|
||||||
|
<surname>{surname}</surname>
|
||||||
|
</name>
|
||||||
|
<eventref hlink="{birth_handle}" role="Primary"/>
|
||||||
|
"""
|
||||||
|
if death_handle:
|
||||||
|
person_xml += f""" <eventref hlink="{death_handle}" role="Primary"/>
|
||||||
|
"""
|
||||||
|
person_xml += """ </person>
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Birth event
|
||||||
|
birth_month = random.randint(1, 12)
|
||||||
|
birth_day = random.randint(1, 28)
|
||||||
|
birth_event = f""" <event handle="{birth_handle}" change="{int(datetime.now().timestamp())}" id="E{pid*10:04d}">
|
||||||
|
<type>Birth</type>
|
||||||
|
<dateval val="{birth_year}-{birth_month:02d}-{birth_day:02d}"/>
|
||||||
|
<description>Birth of {surname}, {first_name}</description>
|
||||||
|
</event>
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Death event
|
||||||
|
death_event = ""
|
||||||
|
if death_handle and death_year:
|
||||||
|
death_month = random.randint(1, 12)
|
||||||
|
death_day = random.randint(1, 28)
|
||||||
|
death_event = f""" <event handle="{death_handle}" change="{int(datetime.now().timestamp())}" id="E{pid*10+1:04d}">
|
||||||
|
<type>Death</type>
|
||||||
|
<dateval val="{death_year}-{death_month:02d}-{death_day:02d}"/>
|
||||||
|
<description>Death of {surname}, {first_name}</description>
|
||||||
|
</event>
|
||||||
|
"""
|
||||||
|
|
||||||
|
return person_xml, birth_event, death_event
|
||||||
|
|
||||||
|
# Generate a family
|
||||||
|
def gen_family(fid, father_handle, mother_handle, marriage_year, children_handles):
|
||||||
|
handle = gen_handle("FAMILY", fid)
|
||||||
|
marriage_handle = gen_handle("EVENT", fid * 100)
|
||||||
|
|
||||||
|
family_xml = f""" <family handle="{handle}" change="{int(datetime.now().timestamp())}" id="F{fid:04d}">
|
||||||
|
<rel type="Married"/>
|
||||||
|
<father hlink="{father_handle}"/>
|
||||||
|
<mother hlink="{mother_handle}"/>
|
||||||
|
"""
|
||||||
|
for child_handle in children_handles:
|
||||||
|
family_xml += f""" <childref hlink="{child_handle}"/>
|
||||||
|
"""
|
||||||
|
family_xml += f""" <eventref hlink="{marriage_handle}" role="Family"/>
|
||||||
|
</family>
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Marriage event
|
||||||
|
marriage_month = random.randint(1, 12)
|
||||||
|
marriage_day = random.randint(1, 28)
|
||||||
|
marriage_event = f""" <event handle="{marriage_handle}" change="{int(datetime.now().timestamp())}" id="E{fid*100:04d}">
|
||||||
|
<type>Marriage</type>
|
||||||
|
<dateval val="{marriage_year}-{marriage_month:02d}-{marriage_day:02d}"/>
|
||||||
|
<description>Marriage</description>
|
||||||
|
</event>
|
||||||
|
"""
|
||||||
|
|
||||||
|
return family_xml, marriage_event
|
||||||
|
|
||||||
|
# First names
|
||||||
|
male_names = ["James", "John", "Robert", "Michael", "William", "David", "Richard", "Joseph",
|
||||||
|
"Thomas", "Charles", "Daniel", "Matthew", "Anthony", "Mark", "Donald", "Steven",
|
||||||
|
"Paul", "Andrew", "Joshua", "Kenneth", "Kevin", "Brian", "George", "Timothy",
|
||||||
|
"Ronald", "Jason", "Edward", "Jeffrey", "Ryan", "Jacob", "Gary", "Nicholas",
|
||||||
|
"Eric", "Jonathan", "Stephen", "Larry", "Justin", "Scott", "Brandon", "Benjamin"]
|
||||||
|
|
||||||
|
female_names = ["Mary", "Patricia", "Jennifer", "Linda", "Elizabeth", "Barbara", "Susan",
|
||||||
|
"Jessica", "Sarah", "Karen", "Nancy", "Lisa", "Betty", "Margaret", "Sandra",
|
||||||
|
"Ashley", "Kimberly", "Emily", "Donna", "Michelle", "Dorothy", "Carol",
|
||||||
|
"Amanda", "Melissa", "Deborah", "Stephanie", "Rebecca", "Sharon", "Laura",
|
||||||
|
"Cynthia", "Kathleen", "Amy", "Angela", "Shirley", "Anna", "Brenda", "Pamela",
|
||||||
|
"Emma", "Nicole", "Helen", "Samantha", "Katherine", "Christine", "Debra"]
|
||||||
|
|
||||||
|
surnames = ["Smith", "Johnson", "Williams", "Brown", "Jones", "Garcia", "Miller", "Davis",
|
||||||
|
"Rodriguez", "Martinez", "Hernandez", "Lopez", "Wilson", "Anderson", "Thomas",
|
||||||
|
"Taylor", "Moore", "Jackson", "Martin", "Lee", "Thompson", "White", "Harris",
|
||||||
|
"Sanchez", "Clark", "Ramirez", "Lewis", "Robinson", "Walker", "Young", "Allen",
|
||||||
|
"King", "Wright", "Scott", "Torres", "Nguyen", "Hill", "Flores", "Green", "Adams"]
|
||||||
|
|
||||||
|
def main():
|
||||||
|
print("Generating huge demo family...")
|
||||||
|
|
||||||
|
# Generate main family
|
||||||
|
# Father: John Smith, born 1950, died 2010
|
||||||
|
father_id = 1
|
||||||
|
father_handle = gen_handle("PERSON", father_id)
|
||||||
|
father_person, father_birth, father_death = gen_person(father_id, "John", "Smith", 1950, 2010, "M")
|
||||||
|
|
||||||
|
# Mother: Mary Smith, born 1952, died 2015
|
||||||
|
mother_id = 2
|
||||||
|
mother_handle = gen_handle("PERSON", mother_id)
|
||||||
|
mother_person, mother_birth, mother_death = gen_person(mother_id, "Mary", "Smith", 1952, 2015, "F")
|
||||||
|
|
||||||
|
# Generate 15 children
|
||||||
|
children = []
|
||||||
|
child_handles = []
|
||||||
|
child_events = []
|
||||||
|
child_id = 3
|
||||||
|
|
||||||
|
for i in range(15):
|
||||||
|
gender = "M" if i % 2 == 0 else "F"
|
||||||
|
first_name = random.choice(male_names if gender == "M" else female_names)
|
||||||
|
birth_year = 1970 + (i * 2) # Spread births from 1970 to 1998
|
||||||
|
death_year = birth_year + random.randint(60, 90) if random.random() < 0.3 else None # 30% chance of death
|
||||||
|
|
||||||
|
child_handle = gen_handle("PERSON", child_id)
|
||||||
|
child_person, child_birth, child_death = gen_person(child_id, first_name, "Smith", birth_year, death_year, gender)
|
||||||
|
|
||||||
|
children.append(child_person)
|
||||||
|
child_handles.append(child_handle)
|
||||||
|
child_events.append(child_birth)
|
||||||
|
if child_death:
|
||||||
|
child_events.append(child_death)
|
||||||
|
child_id += 1
|
||||||
|
|
||||||
|
# Generate family
|
||||||
|
family_id = 1
|
||||||
|
family_xml, marriage_event = gen_family(family_id, father_handle, mother_handle, 1969, child_handles)
|
||||||
|
|
||||||
|
# Generate grandchildren (children of first 5 children)
|
||||||
|
grandchildren = []
|
||||||
|
grandchild_events = []
|
||||||
|
grandchild_id = child_id
|
||||||
|
|
||||||
|
for i in range(5): # First 5 children have children
|
||||||
|
parent_handle = child_handles[i]
|
||||||
|
parent_gender = "M" if i % 2 == 0 else "F"
|
||||||
|
spouse_gender = "F" if parent_gender == "M" else "M"
|
||||||
|
|
||||||
|
# Create spouse
|
||||||
|
spouse_name = random.choice(female_names if spouse_gender == "F" else male_names)
|
||||||
|
spouse_birth = 1970 + (i * 2) + random.randint(-2, 2)
|
||||||
|
spouse_handle = gen_handle("PERSON", grandchild_id)
|
||||||
|
spouse_person, spouse_birth_event, spouse_death_event = gen_person(
|
||||||
|
grandchild_id, spouse_name, "Smith", spouse_birth, None, spouse_gender
|
||||||
|
)
|
||||||
|
grandchildren.append(spouse_person)
|
||||||
|
grandchild_events.append(spouse_birth_event)
|
||||||
|
if spouse_death_event:
|
||||||
|
grandchild_events.append(spouse_death_event)
|
||||||
|
grandchild_id += 1
|
||||||
|
|
||||||
|
# Create 3-5 children per couple
|
||||||
|
num_grandchildren = random.randint(3, 5)
|
||||||
|
grandchild_handles = []
|
||||||
|
for j in range(num_grandchildren):
|
||||||
|
gchild_gender = "M" if j % 2 == 0 else "F"
|
||||||
|
gchild_name = random.choice(male_names if gchild_gender == "M" else female_names)
|
||||||
|
gchild_birth = 1995 + (i * 3) + j
|
||||||
|
gchild_handle = gen_handle("PERSON", grandchild_id)
|
||||||
|
gchild_person, gchild_birth_event, gchild_death_event = gen_person(
|
||||||
|
grandchild_id, gchild_name, "Smith", gchild_birth, None, gchild_gender
|
||||||
|
)
|
||||||
|
grandchildren.append(gchild_person)
|
||||||
|
grandchild_handles.append(gchild_handle)
|
||||||
|
grandchild_events.append(gchild_birth_event)
|
||||||
|
if gchild_death_event:
|
||||||
|
grandchild_events.append(gchild_death_event)
|
||||||
|
grandchild_id += 1
|
||||||
|
|
||||||
|
# Create family for this couple
|
||||||
|
family_id += 1
|
||||||
|
fam_xml, fam_marriage = gen_family(family_id, parent_handle, spouse_handle, 1990 + i, grandchild_handles)
|
||||||
|
family_xml += fam_xml
|
||||||
|
child_events.append(fam_marriage)
|
||||||
|
|
||||||
|
# Write XML file
|
||||||
|
xml_content = f"""<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE database PUBLIC "-//Gramps//DTD Gramps XML 1.7.1//EN"
|
||||||
|
"http://gramps-project.org/xml/1.7.1/grampsxml.dtd">
|
||||||
|
<database xmlns="http://gramps-project.org/xml/1.7.1/">
|
||||||
|
<header>
|
||||||
|
<created date="{datetime.now().strftime('%Y-%m-%d')}" version="5.1.0"/>
|
||||||
|
<researcher>
|
||||||
|
<resname>Demo Family Generator</resname>
|
||||||
|
</researcher>
|
||||||
|
</header>
|
||||||
|
<tags>
|
||||||
|
</tags>
|
||||||
|
<events>
|
||||||
|
{father_birth}
|
||||||
|
{father_death}
|
||||||
|
{mother_birth}
|
||||||
|
{mother_death}
|
||||||
|
{marriage_event}
|
||||||
|
"""
|
||||||
|
|
||||||
|
for event in child_events:
|
||||||
|
xml_content += event
|
||||||
|
for event in grandchild_events:
|
||||||
|
xml_content += event
|
||||||
|
|
||||||
|
xml_content += """ </events>
|
||||||
|
<people>
|
||||||
|
"""
|
||||||
|
xml_content += father_person
|
||||||
|
xml_content += mother_person
|
||||||
|
for child in children:
|
||||||
|
xml_content += child
|
||||||
|
for grandchild in grandchildren:
|
||||||
|
xml_content += grandchild
|
||||||
|
|
||||||
|
xml_content += """ </people>
|
||||||
|
<families>
|
||||||
|
"""
|
||||||
|
xml_content += family_xml
|
||||||
|
|
||||||
|
xml_content += """ </families>
|
||||||
|
</database>
|
||||||
|
"""
|
||||||
|
|
||||||
|
with open("demo_family.gramps", "w", encoding="utf-8") as f:
|
||||||
|
f.write(xml_content)
|
||||||
|
|
||||||
|
print(f"Generated demo_family.gramps with:")
|
||||||
|
print(f" - 2 parents (John and Mary Smith)")
|
||||||
|
print(f" - 15 children")
|
||||||
|
print(f" - 5 spouses")
|
||||||
|
print(f" - ~20 grandchildren")
|
||||||
|
print(f" - Multiple families with marriage events")
|
||||||
|
print(f" - Birth and death events for all")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user