From cb45384a4af592c96ec516c99743073e2cc76226 Mon Sep 17 00:00:00 2001 From: naath Date: Fri, 18 Apr 2014 13:10:26 +0100 Subject: [PATCH 1/1] Added list by number of children; refarctored other list-by-count --- cgiFiles/age.py | 33 - cgiFiles/ageDeath.py | 33 - cgiFiles/everyPage.py | 15 +- cgiFiles/listAge.py | 18 +- cgiFiles/listAgeDeath.py | 19 +- cgiFiles/listChildCount.py | 34 + cgiFiles/make_dot.py | 4 +- familyTree/askQuestion.py | 94 +- familyTree/tree | 2062 +++++++++++++++++++++++++++++++++++- familyTree/tree.db | Bin 93184 -> 105472 bytes 10 files changed, 2183 insertions(+), 129 deletions(-) delete mode 100755 cgiFiles/age.py delete mode 100755 cgiFiles/ageDeath.py create mode 100755 cgiFiles/listChildCount.py diff --git a/cgiFiles/age.py b/cgiFiles/age.py deleted file mode 100755 index dc888d4..0000000 --- a/cgiFiles/age.py +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env python -# -*- coding: UTF-8 -*- - -# enable debugging -import cgi -import cgitb -import sys -import re -sys.path.append('/home/naath/familyTreeProject/familyTree') -import askQuestion -import everyPage - -cgitb.enable() - -[conn,form]=everyPage.top() - -age = form.getvalue('age') -if age == None: - age = 20 - -result = re.match('[-]{0,1}[0-9]{1,4}$', str(age)) - -if result == None: - everyPage.bad() -else: - printMe = askQuestion.people_had_child_at_age(age,'
') - if len(printMe)<10: - printMe = 'sorry, no data
' - - everyPage.good(printMe) - - -everyPage.bottom(conn) diff --git a/cgiFiles/ageDeath.py b/cgiFiles/ageDeath.py deleted file mode 100755 index 3e7bcd7..0000000 --- a/cgiFiles/ageDeath.py +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env python -# -*- coding: UTF-8 -*- - -# enable debugging -import cgi -import cgitb -import sys -import re -sys.path.append('/home/naath/familyTreeProject/familyTree') -import askQuestion -import everyPage - -cgitb.enable() - -[conn,form]=everyPage.top() - -age = form.getvalue('age') -if age == None: - age = 20 - -result = re.match('[-]{0,1}[0-9]{1,4}$', str(age)) - -if result == None: - everyPage.bad() -else: - printMe = askQuestion.people_died_at_age(age,'
') - if len(printMe)<10: - printMe = 'sorry, no data
' - - everyPage.good(printMe) - - -everyPage.bottom(conn) diff --git a/cgiFiles/everyPage.py b/cgiFiles/everyPage.py index 413b873..5ae696d 100755 --- a/cgiFiles/everyPage.py +++ b/cgiFiles/everyPage.py @@ -17,18 +17,25 @@ def links(): print '
  • Search for people
  • ' print '
  • list of people
  • ' + 'listPeople.py> List of people' print '
  • list of territories
  • ' + 'listTerr.py> List of territories' + print '
  • big graph
  • ' + print '' + print '' print '
    ' + + + def footer(): print '
    ' print 'This somewhat silly thing made by ' diff --git a/cgiFiles/listAge.py b/cgiFiles/listAge.py index b0b4091..e1a8d61 100755 --- a/cgiFiles/listAge.py +++ b/cgiFiles/listAge.py @@ -10,16 +10,26 @@ import everyPage [conn,form]=everyPage.top() -result = 1 -if result == None: - everyPage.bad() -else: +age = form.getvalue('age') +if age == None: printMe = askQuestion.count_age_at_child('
    ') if len(printMe)<3: printMe = 'sorry, no data
    ' everyPage.good(printMe) +else: + result = re.match('[-]{0,1}[0-9]{1,4}$', str(age)) + + if result == None: + everyPage.bad() + else: + printMe = askQuestion.people_had_child_at_age(age,'
    ') + if len(printMe)<10: + printMe = 'sorry, no data
    ' + + everyPage.good(printMe) + everyPage.bottom(conn) diff --git a/cgiFiles/listAgeDeath.py b/cgiFiles/listAgeDeath.py index 061314d..44a724c 100755 --- a/cgiFiles/listAgeDeath.py +++ b/cgiFiles/listAgeDeath.py @@ -10,16 +10,27 @@ import everyPage [conn,form]=everyPage.top() cgitb.enable() -result = 1 -if result == None: - everyPage.bad() -else: + +age = form.getvalue('age') + +if age == None: printMe = askQuestion.count_age_at_death('
    ') if len(printMe)<3: printMe = 'sorry, no data
    ' everyPage.good(printMe) +else: + result = re.match('[-]{0,1}[0-9]{1,4}$', str(age)) + if result==None: + everyPage.bad() + else: + + printMe = askQuestion.people_died_at_age(age,'
    ') + if len(printMe)<10: + printMe = 'sorry, no data
    ' + + everyPage.good(printMe) everyPage.bottom(conn) diff --git a/cgiFiles/listChildCount.py b/cgiFiles/listChildCount.py new file mode 100755 index 0000000..689a5a6 --- /dev/null +++ b/cgiFiles/listChildCount.py @@ -0,0 +1,34 @@ +#!/usr/bin/python + +import cgi +import cgitb +import sys +import re +sys.path.append('/home/naath/familyTreeProject/familyTree') +import askQuestion +import everyPage + +[conn,form]=everyPage.top() + +nc = form.getvalue('nc') +if nc == None: + printMe = askQuestion.count_children('
    ') + if len(printMe)<3: + printMe = 'sorry, no data
    ' + + everyPage.good(printMe) + +else: + result = re.match('^[0-9]{0,4}$', str(nc)) + + if result == None: + everyPage.bad() + else: + printMe = askQuestion.parents_with_children(int(nc),'
    ') + if len(printMe)<10: + printMe = 'sorry, no data
    ' + + everyPage.good(printMe) + + +everyPage.bottom(conn) diff --git a/cgiFiles/make_dot.py b/cgiFiles/make_dot.py index abf3071..0e78525 100755 --- a/cgiFiles/make_dot.py +++ b/cgiFiles/make_dot.py @@ -122,7 +122,7 @@ def start_dot(fs): edges=[] cNodes={} dot = "digraph G{\n" - dot = dot + "ranksep = 0.2 nodesep = 0\n" + dot = dot + "ranksep = 0.2 nodesep = 0.1\n" subgraphs=[] set_attr(fs) @@ -169,7 +169,7 @@ def set_attr(fs): global debug_edge_attr zero_size = [('width','0'),('height','0')] person_attr = [('fontsize',str(fs))]+\ - [('shape','plaintext'),('margin','0.1'),\ + [('shape','plaintext'),('margin','0'),\ ('style','filled'),('fillcolor','white')] +\ zero_size highlight_attr = \ diff --git a/familyTree/askQuestion.py b/familyTree/askQuestion.py index a5a6b30..d0380d7 100755 --- a/familyTree/askQuestion.py +++ b/familyTree/askQuestion.py @@ -124,7 +124,7 @@ def print_people(n): def print_age_child_count(row,newLine): if newLine == '
    ': - script = "age.py?age="+str(row[0]) + script = "listAge.py?age="+str(row[0]) link = link_Template.substitute(script = \ script, title = add_quotes(row[0]), text = row[0]) out = str(row[1])+print_people(row[1]) @@ -136,7 +136,7 @@ def print_age_child_count(row,newLine): def print_age_death_count(row,newLine): if newLine =='
    ': - script = "ageDeath.py?age="+str(row[0]) + script = "listAgeDeath.py?age="+str(row[0]) link = link_Template.substitute(script = script,\ title = add_quotes(row[0]),text = row[0]) out = str(row[1])+print_people(row[1]) @@ -154,6 +154,34 @@ def print_name_count(row,newLine): else: return print_row(row,newLine) +def print_children_count(row,newLine): + out = str(row[0]) + + if row[0]==1: + out = out + ' person ' + else: + out = out + ' people ' + out = out +'had ' + + if newLine == '
    ': + script = "listChildCount.py?nc="+str(row[1]) + link = link_Template.substitute(script =\ + script, title = add_quotes(row[1]),text = row[1]) + else: + link = str(row[1]) + + out = out + link + + if row[1] == 1: + out = out + ' child ' + else: + out = out + ' children ' + + + out = out + newLine + + return out + def print_tagged_name(relationship,row,newLine): if row[0]==None: out = relationship + " not yet entered: " + row[1] @@ -338,6 +366,59 @@ def count_names(newLine): return out + +def count_children(newLine): + + s = "SELECT count(*),nc"\ + +" FROM ("\ + +" SELECT count(*) AS nc"\ + +" FROM parents"\ + +" GROUP BY parentID"\ + +" HAVING parentID <>'?'"\ + +" AND parentID <> '0')"\ + +" GROUP BY nc;" + + out = '' + for row in run_query(s,()): + out = out + print_children_count(row,newLine) + return out + +def parents_with_children(nChildren,newLine): + s = "SELECT name,parentID"\ + + " FROM parents"\ + + " LEFT JOIN people"\ + + " ON parentID = people.ID"\ + + " GROUP BY parentID"\ + + " HAVING count(*) = ?"\ + + " AND parentID <> 0"\ + + " ORDER BY bornYear;" + + + u = "SELECT count(*)"\ + +" FROM parents INNER JOIN people"\ + +" ON parents.ID = people.ID"\ + +" WHERE parentID = ?"\ + +" AND (diedyear-bornyear>? OR died='present');" + + out = "People who had " + str(nChildren) + if nChildren==1: + out = out + " child" + else: + out = out + " children" + out = out + ':' + newLine + + + + for row in run_query(s,(nChildren,)): + out = out + name_html(row,newLine) + for r in run_query(u,(row[1],1)): + out += " %d survived infancy" % r[0] + for r in run_query(u,(row[1],18)): + out = out +" and " +str(r[0])+" survived to adulthood" + out = out +newLine + + return out + def search_name(name,newLine): s = "SELECT name, ID"\ +" FROM people"\ @@ -475,6 +556,7 @@ def count_age_at_death(newLine): out = out + print_age_death_count(row,newLine) return out + def people_died_at_age(age,newLine): s = "SELECT diedYear-bornYear as age, name,ID"\ +" FROM people"\ @@ -742,11 +824,11 @@ def isKing(ID): t = (ID,) k = 0 + spellingsOfKing = ['King','Queen','king','queen'] for row in run_query(s,t): - a=re.match('.*King',row[0]) - b=re.match('.*Queen',row[0]) - if a!=None or b!=None: - k=1 + for s in spellingsOfKing: + if re.match('.*'+s,row[0]) != None: + k = 1 return k diff --git a/familyTree/tree b/familyTree/tree index f1c9448..04f57de 100644 --- a/familyTree/tree +++ b/familyTree/tree @@ -1428,10 +1428,10 @@ Name: Edward IV URL: -. +http://en.wikipedia.org/wiki/Edward_IV_of_England Picture: -. +http://upload.wikimedia.org/wikipedia/commons/thumb/4/4d/Edward4.jpg/229px-Edward4.jpg Born: 28/04/1442 @@ -1480,10 +1480,10 @@ Name: Edward V URL: -. +http://en.wikipedia.org/wiki/Edward_V_of_England Picture: -. +http://upload.wikimedia.org/wikipedia/commons/thumb/5/53/King-edward-v.jpg/200px-King-edward-v.jpg Born: 02/11/1470 @@ -1516,10 +1516,10 @@ Name: Richard III URL: -. +http://en.wikipedia.org/wiki/Richard_III_of_England Picture: -. +http://upload.wikimedia.org/wikipedia/commons/thumb/0/09/Richard_III_earliest_surviving_portrait.jpg/230px-Richard_III_earliest_surviving_portrait.jpg Born: 02/10/1452 @@ -1555,10 +1555,10 @@ Name: Henry VII URL: -. +http://en.wikipedia.org/wiki/Henry_VII_of_England Picture: -. +http://upload.wikimedia.org/wikipedia/commons/thumb/e/e9/King_Henry_VII.jpg/220px-King_Henry_VII.jpg Born: 28/01/1457 @@ -1594,10 +1594,10 @@ Name: Henry VIII URL: -. +http://en.wikipedia.org/wiki/Henry_VIII_of_England Picture: -. +http://upload.wikimedia.org/wikipedia/commons/thumb/0/07/Workshop_of_Hans_Holbein_the_Younger_-_Portrait_of_Henry_VIII_-_Google_Art_Project.jpg/220px-Workshop_of_Hans_Holbein_the_Younger_-_Portrait_of_Henry_VIII_-_Google_Art_Project.jpg Born: 28/06/1491 @@ -1686,10 +1686,10 @@ Name: Edward VI URL: -. +http://en.wikipedia.org/wiki/Edward_VI_of_England Picture: -. +http://upload.wikimedia.org/wikipedia/commons/thumb/7/7f/Portrait_of_Edward_VI_of_England.jpg/220px-Portrait_of_Edward_VI_of_England.jpg Born: 21/10/1537 @@ -1725,10 +1725,10 @@ Name: Jane Grey URL: -. +http://en.wikipedia.org/wiki/Lady_Jane_Grey Picture: -. +http://upload.wikimedia.org/wikipedia/commons/thumb/8/87/Streathamladyjayne.jpg/220px-Streathamladyjayne.jpg Born: C1536-1537 @@ -1764,10 +1764,10 @@ Name: Mary I URL: -. +http://en.wikipedia.org/wiki/Mary_I_of_England Picture: -. +http://upload.wikimedia.org/wikipedia/commons/thumb/6/6e/Maria_Tudor1.jpg/220px-Maria_Tudor1.jpg Born: 18/02/1516 @@ -1848,10 +1848,10 @@ Name: Elizabeth I URL: -. +http://en.wikipedia.org/wiki/Elizabeth_I_of_England Picture: -. +http://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Darnley_stage_3.jpg/220px-Darnley_stage_3.jpg Born: 07/09/1533 @@ -1884,10 +1884,10 @@ Name: James VI & I URL: -. +http://en.wikipedia.org/wiki/James_VI_and_I Picture: -. +http://upload.wikimedia.org/wikipedia/commons/thumb/7/72/James_I_of_England_by_Daniel_Mytens.jpg/200px-James_I_of_England_by_Daniel_Mytens.jpg Born: 19/06/1566 @@ -1933,10 +1933,10 @@ Name: Charles I URL: -. +http://en.wikipedia.org/wiki/Charles_I_of_England Picture: -. +http://upload.wikimedia.org/wikipedia/commons/thumb/d/d5/King_Charles_I_after_original_by_van_Dyck.jpg/220px-King_Charles_I_after_original_by_van_Dyck.jpg Born: 19/11/1600 @@ -1983,10 +1983,10 @@ Name: Charles II URL: -. +http://en.wikipedia.org/wiki/Charles_II_of_England Picture: -. +http://upload.wikimedia.org/wikipedia/commons/thumb/5/51/King_Charles_II_by_John_Michael_Wright_or_studio.jpg/220px-King_Charles_II_by_John_Michael_Wright_or_studio.jpg Born: 26/05/1630 @@ -2033,10 +2033,10 @@ Name: James VII & II URL: -. +http://en.wikipedia.org/wiki/James_II_of_England Picture: -. +http://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/King_James_II_by_Sir_Godfrey_Kneller%2C_Bt.jpg/220px-King_James_II_by_Sir_Godfrey_Kneller%2C_Bt.jpg Born: 14/10/1633 @@ -2074,10 +2074,10 @@ Name: Mary II URL: -. +http://en.wikipedia.org/wiki/Mary_II_of_England Picture: -. +http://upload.wikimedia.org/wikipedia/commons/thumb/6/65/1662_Mary_II.jpg/220px-1662_Mary_II.jpg Born: 30/04/1662 @@ -2117,10 +2117,10 @@ Name: William II & III URL: -. +http://en.wikipedia.org/wiki/William_III_of_England Picture: -. +http://upload.wikimedia.org/wikipedia/commons/thumb/5/5c/King_William_III_of_England%2C_%281650-1702%29_%28lighter%29.jpg/220px-King_William_III_of_England%2C_%281650-1702%29_%28lighter%29.jpg Born: 04/11/1650 @@ -2176,10 +2176,10 @@ Name: Anne URL: -. +http://en.wikipedia.org/wiki/Anne,_Queen_of_Great_Britain Picture: -. +http://upload.wikimedia.org/wikipedia/commons/thumb/7/75/Anne1705.jpg/220px-Anne1705.jpg Born: 06/02/1665 @@ -2228,10 +2228,10 @@ Name: George I URL: -. +http://en.wikipedia.org/wiki/George_I_of_Great_Britain Picture: -. +http://upload.wikimedia.org/wikipedia/commons/thumb/0/02/King_George_I_by_Sir_Godfrey_Kneller%2C_Bt_%283%29.jpg/226px-King_George_I_by_Sir_Godfrey_Kneller%2C_Bt_%283%29.jpg Born: 28/05/1660 @@ -2279,10 +2279,10 @@ Name: George II URL: -. +http://en.wikipedia.org/wiki/George_II_of_Great_Britain Picture: -. +http://upload.wikimedia.org/wikipedia/commons/thumb/c/cf/George_II_by_Thomas_Hudson.jpg/220px-George_II_by_Thomas_Hudson.jpg Born: 10/11/1683 @@ -2320,10 +2320,10 @@ Name: George III URL: -. +http://en.wikipedia.org/wiki/George_III_of_the_United_Kingdom Picture: -. +http://upload.wikimedia.org/wikipedia/commons/thumb/5/54/George_III_in_Coronation_edit.jpg/250px-George_III_in_Coronation_edit.jpg Born: 04/06/1738 @@ -3226,7 +3226,7 @@ Picture: . Born: -C 1057 +? Died: 1066 @@ -4491,7 +4491,7 @@ Picture: . Born: -02/04/1683 +02/04/1653 Died: 28/10/1708 @@ -9752,7 +9752,7 @@ Mother: Anne Spouses: -275 +295 Style: Duke of Burnswick Luneburg @@ -9789,7 +9789,7 @@ Mother: Sophie Margarete Spouses: -295 +276 Style: Margrave of Brandenburg-Ansbach @@ -10391,7 +10391,7 @@ ID: 295 Name: -Eleonore Desmier d'Obreuse +Eleonore Desmier d'Olbreuse URL: . @@ -13704,3 +13704,1979 @@ Spouses: +ID: +410 + +Name: +Mary of York + +URL: +. + +Picture: +. + +Born: +11/08/1467 +Died: +23/05/1482 + +Father: +34 +Mother: +101 + +Spouses: + + + + +ID: +411 + +Name: +Cecily of York + +URL: +. + +Picture: +. + +Born: +20/03/1469 +Died: +24/08/1507 + +Father: +34 +Mother: +101 + +Spouses: +Ralph Scrope +JohnWelles +Thomas Kyme + + + +ID: +412 + +Name: +Margaret of York + +URL: +. + +Picture: +. + +Born: +10/04/1472 +Died: +11/12/1472 + +Father: +34 +Mother: +101 + +Spouses: + + + + +ID: +413 + +Name: +Richard of Shrewsbury + +URL: +. + +Picture: +. + +Born: +17/08/1473 +Died: +? + +Father: +34 +Mother: +101 + +Spouses: +Anne de Mowbray + +Style: +Duke of York +Territories: +York + +From: +05/1474 +To: +? + + + +ID: +414 + +Name: +Anne of York + +URL: +. + +Picture: +. + +Born: +2/11/1475 +Died: +23/11/1511 + +Father: +34 +Mother: +101 + +Spouses: +Thomas Howard + + + +ID: +415 + +Name: +George Plantagenet + +URL: +. + +Picture: +. + +Born: +03/1477 +Died: +03/1479 + +Father: +34 +Mother: +101 + +Style: +Duke of Bedford +Territories: +Bedford + +From: + + + +ID: +416 + +Name: +Catherine of York + +URL: +. + +Picture: +. + +Born: +14/08/1479 +Died: +15/11/1527 + +Father: +34 +Mother: +101 + +Spouses: +William Courtenay + + + +ID: +417 + +Name: +Bridget of York + +URL: +. + +Picture: +. + +Born: +10/11/1480 +Died: +1517 + +Father: +34 +Mother: +101 + +Spouses: + + + + +ID: +418 + +Name: +Edward of Middleham + +URL: +. + +Picture: +. + +Born: +11/1473 +Died: +09/04/1484 + +Father: +36 +Mother: +102 + +Style: +Prince of Wales, Duke of Cornwall, Earl of Chester, Earl of Salisbury +Territories: +Wales +Cornwall +Chester +Salisbury + +From: +? +To: +? + + + +ID: +419 + +Name: +Elizabeth Tudor + +URL: +. + +Picture: +. + +Born: +02/07/1492 +Died: +14/09/1495 + +Father: +37 +Mother: +103 + +Spouses: + + + + +ID: +420 + +Name: +Edmund Tudor + +URL: +. + +Picture: +. + +Born: +21/02/1499 +Died: +19/06/1500 + +Father: +37 +Mother: +103 + +Style: +Duke of Somerset +Territories: +Somerset + +From: +? +To: +? + + + +ID: +421 + +Name: +Katherine Tudor + +URL: +. + +Picture: +. + +Born: +02/02/1503 +Died: +10/02/1503 + +Father: +37 +Mother: +103 + +Spouses: + + + + +ID: +422 + +Name: +daughter + +URL: +. + +Picture: +. + +Born: +31/01/1510 +Died: +31/01/1510 + +Father: +38 +Mother: +104 + +Spouses: + + + + +ID: +423 + +Name: +Henry + +URL: +. + +Picture: +. + +Born: +01/01/1511 +Died: +22/02/1511 + +Father: +38 +Mother: +104 + +Spouses: + + + + +ID: +424 + +Name: +son + +URL: +. + +Picture: +. + +Born: +11/1513 +Died: +11/1513 + +Father: +38 +Mother: +104 + +Spouses: + + + + +ID: +425 + +Name: +Henry + +URL: +. + +Picture: +. + +Born: +12/1514 +Died: +12/1514 + +Father: +38 +Mother: +104 + +Spouses: + + + + +ID: +426 + +Name: +daughter + +URL: +. + +Picture: +. + +Born: +11/1518 +Died: +11/1518 + +Father: +38 +Mother: +104 + +Spouses: + + + + +ID: +427 + +Name: +Henry + +URL: +. + +Picture: +. + +Born: +08/1534 +Died: +08/1534 + +Father: +38 +Mother: +105 + +Spouses: + + + + +ID: +428 + +Name: +Henry Frederick + +URL: +. + +Picture: +. + +Born: +19/02/1594 +Died: +06/11/1612 + +Father: +43 +Mother: +112 + +Style: +Prince of Wales, Duke of Cornwall, Earl of Chester +Territories: +Wales +Cornwall +Chester + +From: +? +To: +? + + + +ID: +429 + +Name: +Margaret Stuart + +URL: +. + +Picture: +. + +Born: +24/12/1598 +Died: +03/1600 + +Father: +43 +Mother: +112 + +Spouses: + + + + +ID: +430 + +Name: +Robert + +URL: +. + +Picture: +. + +Born: +18/01/1602 +Died: +24/05/1602 + +Father: +43 +Mother: +112 + +Spouses: + + + + +ID: +431 + +Name: +Mary Stuart + +URL: +. + +Picture: +. + +Born: +08/04/1605 +Died: +06/09/1607 + +Father: +43 +Mother: +112 + +Spouses: + + + + +ID: +432 + +Name: +Sophia of England + +URL: +. + +Picture: +. + +Born: +22/06/1606 +Died: +23/06/1606 + +Father: +43 +Mother: +112 + +Spouses: + + + + +ID: +433 + +Name: +Charles James + +URL: +. + +Picture: +. + +Born: +13/05/1629 +Died: +13/05/1629 + +Father: +44 +Mother: +113 + +Spouses: + + + + +ID: +434 + +Name: +Elizabeth + +URL: +. + +Picture: +. + +Born: +28/12/1635 +Died: +08/09/1650 + +Father: +44 +Mother: +113 + +Spouses: + + + + +ID: +435 + +Name: +Anne of England + +URL: +. + +Picture: +. + +Born: +17/03/1637 +Died: +05/11/1640 + +Father: +44 +Mother: +113 + +Spouses: + + + + +ID: +436 + +Name: +Henry Stuart + +URL: +. + +Picture: +. + +Born: +08/07/1640 +Died: +13/09/1660 + +Father: +44 +Mother: +113 + +Style: +Duke of Gloucester +Territories: +Gloucester + +From: +? +To: +? + + + +ID: +437 + +Name: +Henrietta of England + +URL: +. + +Picture: +. + +Born: +16/06/16344 +Died: +30/06/1670 + +Father: +44 +Mother: +113 + +Spouses: +Philippe of France + + + +ID: +438 + +Name: +Catherine + +URL: +. + +Picture: +. + +Born: +29/06/1639 +Died: +29/06/1639 + +Father: +44 +Mother: +113 + +Spouses: + + + + +ID: +439 + +Name: +Charles Stuart + +URL: +. + +Picture: +. + +Born: +22/10/1660 +Died: +05/05/1661 + +Father: +46 +Mother: +115 + +Style: +Duke of Cambridge +Territories: +Cambridge + +From: +? +To: +? + + + +ID: +440 + +Name: +James Stuart + +URL: +. + +Picture: +. + +Born: +12/07/1663 +Died: +20/06/1667 + +Father: +46 +Mother: +115 + +Style: +Duke of Cambridge +Territories: +Cambridge + +From: +? +To: +? + + + +ID: +441 + +Name: +Charles Stuart + +URL: +. + +Picture: +. + +Born: +04/07/1666 +Died: +22/05/1667 + +Father: +46 +Mother: +115 + +Style: +Duke of Kendal +Territories: +Kendal + +From: +? +To: +? + + + +ID: +442 + +Name: +Edgar Stuart + +URL: +. + +Picture: +. + +Born: +14/09/1667 +Died: +08/06/1674 + +Father: +46 +Mother: +115 + +Style: +Duke of Cambridge +Territories: +Cambridge + +From: +? +To: +? + + + +ID: +443 + +Name: +Henrietta + +URL: +. + +Picture: +. + +Born: +14/01/1669 +Died: +15/01/1669 + +Father: +46 +Mother: +115 + +Spouses: + + + + +ID: +444 + +Name: +Catherine + +URL: +. + +Picture: +. + +Born: +09/02/1671 +Died: +05/12/1671 + +Father: +46 +Mother: +115 + +Spouses: + + + + +ID: +446 + +Name: +Catherine Laura + +URL: +. + +Picture: +. + +Born: +16/08/1682 +Died: +16/10/1682 + +Father: +46 +Mother: +116 + +Spouses: + + + + +ID: +447 + +Name: +Isabel Stuart + +URL: +. + +Picture: +. + +Born: +28/08/1676 +Died: +02/03/1681 + +Father: +46 +Mother: +116 + +Spouses: + + + + +ID: +448 + +Name: +Charles Stuart + +URL: +. + +Picture: +. + +Born: +07/11/1677 +Died: +12/12/1677 + +Father: +46 +Mother: +116 + +Style: +Duke of Cambridge +Territories: +Cambridge + +From: +? +To: +? + + + +ID: +449 + +Name: +Elizabeth + +URL: +. + +Picture: +. + +Born: +1678 +Died: +1678 + +Father: +46 +Mother: +116 + +Spouses: + + + + +ID: +450 + +Name: +Charlotte Maria + +URL: +. + +Picture: +. + +Born: +16/08/1682 +Died: +16/08/1682 + +Father: +46 +Mother: +116 + +Spouses: + + + + +ID: +451 + +Name: +James Francis Edward Stuart + +URL: +. + +Picture: +. + +Born: +10/06/1688 +Died: +01/01/1766 + +Father: +46 +Mother: +116 + +Spouses: +Maria Clementina Sobieska + + + +ID: +452 + +Name: +Louisa Maria Teresa Stuart + +URL: +. + +Picture: +. + +Born: +28/06/1692 +Died: +18/04/1712 + +Father: +46 +Mother: +116 + +Spouses: + + + + +ID: +453 + +Name: +Mary + +URL: +. + +Picture: +. + +Born: +02/06/1685 +Died: +08/02/1687 + +Father: +117 +Mother: +49 + +Spouses: + + + + +ID: +454 + +Name: +Anne Sophia + +URL: +. + +Picture: +. + +Born: +12/05/1686 +Died: +02/02/1687 + +Father: +117 +Mother: +49 + +Spouses: + + + + +ID: +455 + +Name: +William + +URL: +. + +Picture: +. + +Born: +24/07/1689 +Died: +30/07/1700 + +Father: +117 +Mother: +49 + +Style: +Duke of Gloucester +Territories: +Gloucester + +From: +? +To: +? + + + +ID: +456 + +Name: +Mary + +URL: +. + +Picture: +. + +Born: +14/10/1690 +Died: +14/10/1690 + +Father: +117 +Mother: +49 + +Spouses: + + + + +ID: +457 + +Name: +George + +URL: +. + +Picture: +. + +Born: +17/04/1692 +Died: +17/04/1692 + +Father: +117 +Mother: +49 + +Spouses: + + + + +ID: +458 + +Name: +Sophia Dorothea of Hanover + +URL: +. + +Picture: +. + +Born: +26/03/1687 +Died: +28/06/1757 + +Father: +50 +Mother: +118 + +Spouses: +Frederick of Prussia + + + +ID: +459 + +Name: +Anne + +URL: +. + +Picture: +. + +Born: +02/11/1709 +Died: +12/01/1759 + +Father: +51 +Mother: +119 + +Spouses: +William IV of Orange + + + +ID: +460 + +Name: +Amelia + +URL: +. + +Picture: +. + +Born: +30/05/1711 +Died: +31/10/1786 + +Father: +51 +Mother: +119 + +Spouses: + + + + +ID: +461 + +Name: +Caroline + +URL: +. + +Picture: +. + +Born: +10/06/1713 +Died: +28/11/1757 + +Father: +51 +Mother: +119 + +Spouses: + + + + +ID: +462 + +Name: +son + +URL: +. + +Picture: +. + +Born: +30/11/1716 +Died: +30/11/1716 + +Father: +51 +Mother: +119 + +Spouses: + + + + +ID: +463 + +Name: +George William + +URL: +. + +Picture: +. + +Born: +13/11/1717 +Died: +17/02/1718 + +Father: +51 +Mother: +119 + +Spouses: + + + + +ID: +464 + +Name: +William + +URL: +. + +Picture: +. + +Born: +26/04/1721 +Died: +31/10/1765 + +Father: +51 +Mother: +119 + +Style: +Duke of Cumberland +Territories: +Cumberland + +From: +? +To: +? + + + +ID: +465 + +Name: +Princess Mary + +URL: +. + +Picture: +. + +Born: +05/03/1723 +Died: +14/01/1772 + +Father: +51 +Mother: +119 + +Spouses: +Frederick II + + + +ID: +466 + +Name: +Louise + +URL: +. + +Picture: +. + +Born: +107/12/1724 +Died: +19/12/1751 + +Father: +51 +Mother: +119 + +Spouses: +Frederick V + + + +ID: +467 + +Name: +Charlotte + +URL: +. + +Picture: +. + +Born: +29/09/1766 +Died: +05/10/1828 + +Father: +52 +Mother: +120 + +Spouses: +Frederick II + + + +ID: +468 + +Name: +Augusta Sophia + +URL: +. + +Picture: +. + +Born: +08/11/1768 +Died: +22/09/1840 + +Father: +52 +Mother: +120 + +Spouses: + + + + +ID: +469 + +Name: +Elizabeth + +URL: +. + +Picture: +. + +Born: +22/05/1770 +Died: +10/01/1840 + +Father: +52 +Mother: +120 + +Spouses: +Frederick VI + + + +ID: +470 + +Name: +Ernest Augustus + +URL: +. + +Picture: +. + +Born: +05/06/1771 +Died: +18/11/1851 + +Father: +52 +Mother: +120 + +Spouses: +Frederica + +Style: +King of Hanover +Territories: +Hanover + +From: +20/06/1837 +To: +18/11/1851 + + + +ID: +471 + +Name: +Augustus Frederick + +URL: +. + +Picture: +. + +Born: +27/01/1773 +Died: +21/04/1843 + +Father: +52 +Mother: +120 + +Spouses: +Augusta Murray +Cecilia Letitia Buggin + +Style: +Duke of Sussex +Territories: +Sussex + +From: +? +To: +? + + + +ID: +472 + +Name: +Adolphus Frederick + +URL: +. + +Picture: +. + +Born: +24/02/1774 +Died: +08/07/1850 + +Father: +52 +Mother: +120 + +Spouses: +Augusta + +Style: +Duke of Cambridge +Territories: +Cambridge + +From: +? +To: +? + + + +ID: +473 + +Name: +Mary + +URL: +. + +Picture: +. + +Born: +25/04/1776 +Died: +30/04/1857 + +Father: +52 +Mother: +120 + +Spouses: +William Frederick + + + +ID: +474 + +Name: +Sophia + +URL: +. + +Picture: +. + +Born: +03/11/1777 +Died: +27/05/1848 + +Father: +52 +Mother: +120 + +Spouses: + + + + +ID: +475 + +Name: +Octavius + +URL: +. + +Picture: +. + +Born: +23/02/1779 +Died: +03/05/1783 + +Father: +52 +Mother: +120 + +Spouses: + + + + +ID: +476 + +Name: +Alfred + +URL: +. + +Picture: +. + +Born: +22/09/1780 +Died: +20/08/1782 + +Father: +52 +Mother: +120 + +Spouses: + + + + +ID: +477 + +Name: +Amelia + +URL: +. + +Picture: +. + +Born: +07/08/1783 +Died: +02/11/1810 + +Father: +52 +Mother: +120 + +Spouses: + + + + +ID: +478 + +Name: +Frederick + +URL: +. + +Picture: +. + +Born: +16/08/1763 +Died: +05/01/1827 + +Father: +52 +Mother: +120 + +Spouses: +Frederica Charlotte + +Style: +Duke of York and Albany +Territories: +Albany +York + +From: +? +To: +? + + + diff --git a/familyTree/tree.db b/familyTree/tree.db index 1f5e3c198af2ba003a8035f43a662406036b073b..969caa5a58bb0efa7e04a2e6f456774c9a37fb4d 100644 GIT binary patch delta 12763 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 delta 2237 zcmZXW3s6+&701uxg6nvJ<>iVf3$nt(E|29QAj=A9BM80#g{V}Fj~GOnN0TB_;O-)} zjBVL$Wz)o{Q=(0q#?if*-8O1<9F0y*A5NQ^HcjKScG@PH`iQBu(YEKtjyq28%>HKX z|DNwV=ls9#yLX3w6g&KG%=pY$((BI%>C&;TSJ-6bHc?=0KviaEy}?KLRsJsT z;|U(;F&^PT?&GJqhqrJSui-Y`Ws2jWM}4XcY4;8Y+q^x(R_{7ti+71|g||Yu)SDx0 z@>+xq-l@Vzw0_}2ZJV%GTPv*5nuYTuJtkzX^A8%^* zS>@&nJ{Hz_w+h`}qunxZk+8s0e0Hr%Xww>mSz3wEs-+8O4+&-(#mq3OO);J% zryH46{;?3&1XS}3JuBq}UcG8GUWApqs)fr(HVc=GlnED)7}nSOI)xseF+-Klm|>pR zu+#PV!sKX1H*?n;I`cIlOyke^Q@$p1Uu6Gys(#awI#sPIH)%GeWK1fl(37)n#BwW=@}=vhNo7EOUsEd+!3}(d_wW+7&>v`$wo)P9 z#0U=HLYx9W13#>nkpH^^uU%ZF*B-r$@l|C~c(faP$gr)d^dWJMZip2n_iOy0>v#7V z-MCyTrbZpI?9Udlwphi2Xp8UdFA=eW9Uk(lH&wE z$D{0_8+3-gPEE2Q&f+L~;5LL|J2>wzW#GAMV|xA7B^>%|tdiLbe1iMAhHld-+AU*D zcoE031>@iXd<&ZWT25f(lL6iHaV6&)^(BG__!w{FJo+;opf0lDWjrLCW)(V7k%RUs z^n%AJMdc^;K$e@YI!86I|i4-fijl(7s z*Vh5R$pd2H9Xdh%)JSpo8+-{n(E`7PAguFi^MdEBSRHxPj8AYlMaGm?8K=R=Eu2p8 z$ou0dauDHZd=_ir9{dEJ2IGDG@D)7oz^X{aEc_;iGjXbE_DSB!rDA{R^QFFr=WsVR zB8!#dMxn0Y`BE9sZpSA%>_oADwXtM-csVE2`*cW-pcOyHN!*B8a7hYX?bnKfrxsvc zMK+$%Y7AJ z!#-Swx$tlJIea6KxyT*7ycY8!%`4ExvCZCGmFj}ewW2jR(Te%uHdK`SWatJy%LllV zZDP<#8l%Ukl2rVo9G^aHlG*M_%dbPXUvo$5I&gx+>rhcM;%E%`iY(0$-o=kg*Rz=E zL;97RjaO()-=J)z$XGY_$Hd3*O5jTz;^+ApUMc?;7I0+cGpH+)aX2`o4;v-Am?Fdd nvVG)JaS$Z7mn&qG9H${F$6I&|x5#$90tfxtVC3KccJY4!JAUb^ -- 2.30.2