From cfada61886cd0e998d20ec4002c0c157dc25d3aa Mon Sep 17 00:00:00 2001 From: "Naath (Helen) Cousins" Date: Sat, 29 Mar 2014 16:58:15 +0000 Subject: [PATCH 1/1] initial commit --- ancestors.py | 45 + countNames.py | 25 + everyPage.py | 68 + everyPage.pyc | Bin 0 -> 2749 bytes familyTree/askQuestion.py | 471 +++ familyTree/askQuestion.pyc | Bin 0 -> 12255 bytes familyTree/findYear.py | 26 + familyTree/findYear.pyc | Bin 0 -> 602 bytes familyTree/makeDataBase | 6 + familyTree/makeMarriageTable.py | 5 + familyTree/makeTables.py | 21 + familyTree/marriageSQL.py | 54 + familyTree/notes | 19 + familyTree/printAncestors.py | 20 + familyTree/printLists.py | 20 + familyTree/printPerson.py | 18 + familyTree/printRulers.py | 20 + familyTree/printYearBorn.py | 18 + familyTree/spousesRelated.py | 25 + familyTree/text2SQL.py | 94 + familyTree/tree | 4781 +++++++++++++++++++++++++++++++ familyTree/tree.db | Bin 0 -> 45056 bytes listPeople.py | 25 + listTerr.py | 25 + person.py | 36 + territory.py | 29 + 26 files changed, 5851 insertions(+) create mode 100755 ancestors.py create mode 100755 countNames.py create mode 100755 everyPage.py create mode 100644 everyPage.pyc create mode 100755 familyTree/askQuestion.py create mode 100644 familyTree/askQuestion.pyc create mode 100755 familyTree/findYear.py create mode 100644 familyTree/findYear.pyc create mode 100755 familyTree/makeDataBase create mode 100755 familyTree/makeMarriageTable.py create mode 100755 familyTree/makeTables.py create mode 100755 familyTree/marriageSQL.py create mode 100644 familyTree/notes create mode 100755 familyTree/printAncestors.py create mode 100755 familyTree/printLists.py create mode 100755 familyTree/printPerson.py create mode 100755 familyTree/printRulers.py create mode 100755 familyTree/printYearBorn.py create mode 100755 familyTree/spousesRelated.py create mode 100755 familyTree/text2SQL.py create mode 100644 familyTree/tree create mode 100644 familyTree/tree.db create mode 100755 listPeople.py create mode 100755 listTerr.py create mode 100755 person.py create mode 100755 territory.py diff --git a/ancestors.py b/ancestors.py new file mode 100755 index 0000000..a03afa6 --- /dev/null +++ b/ancestors.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- + +# enable debugging +import cgi +import cgitb +import sys +import re +sys.path.append('/home/naath/familyTree') +import askQuestion +import everyPage + +[conn,form]=everyPage.top() + +ID = form.getvalue('ID') +if ID == None: + ID = 1 + +ID2 = form.getvalue('ID2') +if ID2 == None: + type =1 +else: + type =2 + +result = re.match('^[0-9]{1,3}$', str(ID)) +if type==2: + result2 = re.match('^[0-9]{1,3}$', str(ID2)) +else: + result2 = 1 + +if result == None or result2==None: + everyPage.bad() +else: + if type==1: + printMe = askQuestion.all_ancestors(ID,'
')[0] + + else: + printMe = askQuestion.common_ancestors(ID,ID2,'
')[0] + if len(printMe)<10: + printMe = 'sorry, no data
' + + everyPage.good(printMe) + + +everyPage.bottom(conn) diff --git a/countNames.py b/countNames.py new file mode 100755 index 0000000..2a66ecf --- /dev/null +++ b/countNames.py @@ -0,0 +1,25 @@ +#!/usr/bin/python + +import cgi +import cgitb +import sys +import re +sys.path.append('/home/naath/familyTree') +import askQuestion +import everyPage + +[conn,form]=everyPage.top() + +result = 1 +if result == None: + everyPage.bad() +else: + printMe = askQuestion.count_names('
') + if len(printMe)<10: + printMe = 'sorry, no data
' + + everyPage.good(printMe) + + +everyPage.bottom(conn) + diff --git a/everyPage.py b/everyPage.py new file mode 100755 index 0000000..8bdc2ce --- /dev/null +++ b/everyPage.py @@ -0,0 +1,68 @@ +#!/usr/bin/python +import cgi +import cgitb +import sys +import re +sys.path.append('/home/naath/familyTree') +import askQuestion +import everyPage + +def base_url(): + return 'http://www.chiark.greenend.org.uk/ucgi/~naath/' + +def links(): + print '
' + print ' list of people' + print '
' + print ' list of territories' + print '
' + print ' count how many times first names are use' + + print '
' +def footer(): + print '
' + print 'This somewhat silly thing made by ' + print 'naath' + print '
' + print 'Thanks to chiark for hosting this' + +def title(titleNum): + return 'Silly toy' + +def page_header(): + print 'This is a silly toy for exploring the genealogy of the monarchs of England' +def top(): + + + print "Content-Type: text/html;charset=utf-8" + print + + conn = askQuestion.connect() + + form = cgi.FieldStorage() + return [conn,form] + +def html_start(titleNum): + print "" + print "" + print ""+ title(titleNum) +"" + print "" + print "" + page_header() + links() + +def bad(): + html_start(1) + print 'Go Away' + +def good(printMe): + html_start(2) + print printMe + +def bottom(conn): + links() + footer() + print "" + print "" + askQuestion.close(conn) + diff --git a/everyPage.pyc b/everyPage.pyc new file mode 100644 index 0000000000000000000000000000000000000000..af844d9db2064c2f11f5e3f6a1942871b3bc5970 GIT binary patch literal 2749 zcmbVO-*4kY5MDdKnl`;FoJ60H3<4=UG=4xjK`$49D!2-XaHM_8OSOqNu@%Q_c{k)N z9lVskiFf`4{uQ2hgKuUNr>#zqlEjlZ7J@wOHtg=zxV|5w%%(BBDbUo{H#*g%c5VSa^@%UUiQFJ^34-q4@w} z80)19GbwEx&g3#l%j-g^%3}{I7r0Cv1Kax$hNg!xwl+Tx!}WUIo5qPO7QH!4GnGX> zUCeu{MYx*IlkgXJco!Dp!C*eZTDbarbN_rbNt5Xr8L6LCQNEUQ)yqqJ0Ii8M>Sk4> zhmZ|n5MBk6rVR2D0zkgHM2M{rw?dpEnx~l8?=Lpqwba(gs}4bjvm=-24~a)D;%5W^t+~dsC*BJ2))RBT z^7B)eT{}LHl1~ zxL3Id2zN9M+XREj2#g0X;jvR{|PdI#z5g})L zBQt5ZU^w3+a%Myvvc!RDs*Q5KQ92*(3LP}j*6QT|(x%V0ycTD_`##o22N>MFP>&O? zOj8;-AVi_K0&~0)SvpDPIo@d;I%}>h1bJ!`(IJ literal 0 HcmV?d00001 diff --git a/familyTree/askQuestion.py b/familyTree/askQuestion.py new file mode 100755 index 0000000..42621f3 --- /dev/null +++ b/familyTree/askQuestion.py @@ -0,0 +1,471 @@ +#!/usr/bin/python + +import sqlite3 +import findYear + +def run_query(s,t): + c = make_cursor() + return c.execute(s,t) + +def print_row(row,newLine): + out = '' + for item in row: + out = out + str(item)+'|' + return out[:-1] + newLine + +def print_query(s,t,newLine): + printMe = '' + for row in run_query(s,t): + printMe = printMe + print_row(row,newLine) + return printMe + +def is_number(s): + try: + float(s) + return 1 + except ValueError: + return 0 + +def print_relation(relationship,s,t,newLine): + mine = '' + for row in run_query(s,t): + mine = mine + print_none_value(relationship,row,newLine) + return mine + +def relationship_html(ID,ID2,newLine): + if newLine=='
': + relationship = common_ancestors(ID,ID2,newLine)[2] + url="http://www.chiark.greenend.org.uk/ucgi/~naath/ancestors.py?ID="+ID+"&ID2="\ + +str(ID2) + return relationship + ': Common Ancestors'+newLine + else: + return '' + +def terr_html(terr,newLine): + if newLine=='
': + url = "http://www.chiark.greenend.org.uk/ucgi/~naath/territory.py?terr=" + return ''+terr+'' + + else: + return terr +def row_html(row,html): + if html == 1: + url = "http://www.chiark.greenend.org.uk/ucgi/~naath/person.py?ID=" + str(row[1]) + name = row[0] + return ""+name+"" + if row[0] == None: + return row[1] + else: + return row[0] + "," +str(row[1]) + +def print_none_value(relationship,row,newLine): + if row[0]==None: + out = relationship + " not yet entered: " + row[1] + else: + if newLine == '
': + html = 1 + else: + html=0 + if relationship =='': + out = row_html(row,html) + ' ' + else: + out = relationship + ": " + row_html(row,html) + return out + newLine + +def list_territories(newLine): + s = "SELECT DISTINCT territory"\ + +" FROM territories"\ + +" ORDER BY territory;" + + out = '' + for row in run_query(s,()): + out =out + terr_html(row[0],newLine) +newLine + return out + +def list_people(newLine): + s = "SELECT name,id,bornyear"\ + +" FROM people"\ + +" ORDER BY bornyear;" + + out = '' + year = 0 + out = out + 'born in unknown year:' +newLine + for row in run_query(s,()): + if row[2]!=0 and row[2]/100==0: + out = out +newLine+ 'born in 1st century:' +newLine + + if row[2]/100!=year/100: + century = row[2]/100 + 1 + out = out +newLine+ 'born in ' + str(century) + + if century==21: + out = out + 'st' + elif century==2: + out = out + 'nd' + else: + out = out + 'th' + + out = out + ' century:' + newLine + + out = out + print_none_value('',row,newLine) + year = row[2] + return out + +def count_names(newLine): + s = "SELECT firstName, count(*)"\ + +" FROM people"\ + +" GROUP BY firstName"\ + +" ORDER BY count(*) DESC;" + + out = print_query(s,(),newLine) + + + return out + +def all_ancestors(personID,newLine): + #find parents + s = "SELECT people.Name,parents.parentID FROM"\ + +" parents LEFT JOIN people"\ + +" ON parents.parentID = people.ID"\ + +" WHERE parents.ID = ?"\ + +" AND parents.parentID <> '.';" + + + ancestors = [personID] + allAncestors = [personID] + trackLevel = [0] + level = 0 + + t = "SELECT name,id FROM people WHERE id==?" + id = (personID,) + + out = "Ancestors of " + for row in run_query(t,id): + out = out + print_none_value('',row,newLine) + + while len(ancestors)>0: + level = level+1 + newA =[] + out = out+newLine + parent_level(level) +':' + newLine + for ancestor in ancestors: + id = (ancestor,) + for row in run_query(s,id): + out = out + print_none_value('',row,newLine) + if row[1] not in allAncestors and is_number(row[1])!=0: + newA.append(row[1]) + allAncestors.append(row[1]) + trackLevel.append(level) + ancestors = newA + + + return [out, allAncestors,trackLevel] + + +def common_ancestors(IDA, IDB,newLine): + out = 'Common ancestors of:' + newLine + + s = "SELECT name,id FROM people WHERE id==?" + + + names=[] + for id in (IDA,IDB): + t = (id,) + for row in run_query(s,t): + out = out + print_none_value('',row,newLine) + names.append(row[0]) + if id==IDA: + out = out + 'and' + out = out + newLine + + if len(names)!=2: + related = 'No details held on one party' + out = out + related + return [out,[],related] + + + a = all_ancestors(IDA,newLine) + b = all_ancestors(IDB,newLine) + + ancestorsB = set(b[1]) + ancestorsA = set(a[1]) + + common = ancestorsA.intersection(ancestorsB) + common = list(common) + + + aLevels=[] + bLevels=[] + for c in common: + i = a[1].index(c) + aLevels.append(a[2][i]) + i = b[1].index(c) + bLevels.append(b[2][i]) + + s = "SELECT Name, ID, bornyear"\ + +" FROM people"\ + +" WHERE ID IN (" + for i in range(len(common)): + s = s+ "?," + if len(common)>0: + s = s[:-1] + + + s = s+") ORDER BY bornyear;" + + + if len(common)==0: + related = names[0]+' and '+names[1]+' are not related' + out = out + newLine + related + return [out, common,related] + + + out = out + print_relation('',s,common,newLine) + + indexA=[] + indexB=[] + + for i in range(len(common)): + if aLevels[i] == min(aLevels): + indexA.append(i) + if bLevels[i] == min(bLevels): + indexB.append(i) + + + + s = "SELECT name, id"\ + +" FROM people"\ + +" WHERE id=?" + + out = out + newLine + 'Most Recent Common Ancestors:' + newLine + for a in indexA: + t = (common[a],) + out = out + print_relation('',s,t,newLine) + if a!=indexA[-1]: + out = out + 'and' + newLine + + out = out + parent_level(aLevels[indexA[0]]) + if len(indexA) >1: + out = out + 's' + + out = out + ' of ' + print_none_value('',[names[0],IDA],newLine) + + out = out + newLine + for b in indexB: + t = (common[b],) + out = out + print_relation('',s,t,newLine) + if b!=indexB[-1]: + out = out + 'and' + newLine + + out = out + parent_level(bLevels[indexB[0]]) + if len(indexB)>1: + out = out + 's' + out = out + ' of ' + print_none_value('',[names[1],IDB],newLine) + + + al = aLevels[indexA[0]] + bl = bLevels[indexB[0]] + + related = relationship(al,bl,names) + out = out+newLine + related + + return [out,common,related] + +def relationship(level1, level2,names): + + if level1==0 and level2==0: + return names[0] + ' is ' +names[1] + if level1==0: + return names[0] + ' is ' + names[1] + '\'s '+ parent_level(level2) + if level2==0: + return names[1] + ' is ' + names[0] + '\'s '+ parent_level(level1) + + if level1==level2: + remove = 0 + if level1==1: + return names[0] +' and '+names[1] +' are '+' siblings' + else: + cousinNum = level1-1 + + if level1>level2: + remove = level1-level2 + cousinNum = level2-1 + else: + remove = level2-level1 + cousinNum = level1-1 + + if cousinNum==0: + if level1< level2: + return names[0] + ' is ' + names[1] + '\'s uncle or aunt' + + if level2 ?" + + ids = (row[1],t[0]) + + for row in run_query(u,ids): + output = output + print_none_value('With',row,newLine) + + output = output + newLine + + return output + +def connect(): + global conn + conn = sqlite3.connect('/home/naath/familyTree/tree.db') + return conn + +def make_cursor(): + return conn.cursor() + +def close(conn): + conn.close + +#def main(): + +# [c, conn] = connect() +# +# person_info(1,c) +# person_info(17,c) +# person_info(38,c) +# person_info(90,c) +# +# close(conn) diff --git a/familyTree/askQuestion.pyc b/familyTree/askQuestion.pyc new file mode 100644 index 0000000000000000000000000000000000000000..00fac13e0b0eca5019bf294c5c5de16f67792c97 GIT binary patch literal 12255 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 literal 0 HcmV?d00001 diff --git a/familyTree/findYear.py b/familyTree/findYear.py new file mode 100755 index 0000000..179460a --- /dev/null +++ b/familyTree/findYear.py @@ -0,0 +1,26 @@ +#!/usr/bin/python + +import re + +def find_year(date): + + dates = date.split('/') + + if len(dates)==3: + return dates[2] + + if len(dates)==2: + return dates[1] + + if len(dates)==1: + parts = date.split('-') + + matches = re.search('[0-9]{1,4}',parts[0]) + if matches==None: + return 0 + else: + return matches.group(0) + + return 0 + + diff --git a/familyTree/findYear.pyc b/familyTree/findYear.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1557a839ec8b3a42516ce2dd891d0ec259c99a13 GIT binary patch literal 602 zcmb7AJx{|h5Is8${ZOk4AtAalWuOEk7?2P`VqxmgumD0RN?a0XlPGqFiexIkh5y6O zuiy{BJGW9{#In!N@7+D0{qfc7e5R*CMC&23Ut;M2LX0Wsh3F1I(i?zaCh#1n={LqG z5`c~My27sC5h}>GcqynBWCT@$fZ_5iDQ}a&Id*6eh>hm_)*64chSjc7w{mvbt(IgY zr4GegR7r}PG+0Wi9jZW)t#C#UK3j6AJAn5` z!?TCi2z^ZD&X9(%~X+!5{d>dRfx6RzBr9=AN^md0I#&2|5}vxU<0Ssu@)>Vp45vujuW03bSS A0: + print back[2] + +askQuestion.close(conn) + + + + diff --git a/familyTree/text2SQL.py b/familyTree/text2SQL.py new file mode 100755 index 0000000..6b9d310 --- /dev/null +++ b/familyTree/text2SQL.py @@ -0,0 +1,94 @@ +#!/usr/bin/python +import findYear + +def add_quotes(s): + return '\''+s+'\'' + +def is_number(s): + try: + float(s) + return s + except ValueError: + return add_quotes(s) + +def make_insert(table,fields): + s = 'INSERT INTO ' + table + ' VALUES(' + for f in fields: + s = s + str(f) + ',' + s = s[:-1] + s = s+');' + return s + +f = open('tree','r') + +lastline=''; +finishedRecord = 0; +hasStyle = 0; +terr = 0; +for line in f: + thisline = line + if thisline[-2:] == '\r\n': + thisline = thisline[:-2] + if lastline == 'ID:': + thisID = thisline + if lastline == 'Name:': + names = thisline.split() + if len(names)>0: + firstName = add_quotes(names[0]) + else: + firstName = '' + thisName = add_quotes(thisline) + if lastline == 'Born:': + yb = findYear.find_year(thisline) + thisBorn = add_quotes(thisline) + if lastline == 'Died:': + yd = findYear.find_year(thisline) + thisDied = add_quotes(thisline) + finishedRecord = 1 + if lastline == 'Father:': + a = is_number(thisline) + s = make_insert('parents',[thisID, a]) + print s + if lastline=='Mother:': + a=is_number(thisline) + s = make_insert('parents',[thisID, a]) + print s + + if finishedRecord ==1: + s = make_insert('people',\ + [thisID,thisName,firstName,thisBorn,yb,thisDied,yd]) + print s + finishedRecord = 0 + if lastline == 'Style:': + thisStyle = add_quotes(thisline) + hasStyle = 1; + if terr ==1: + if thisline=='': + terr=0; + else: + thisTerr.append(add_quotes(thisline)) + if lastline == 'Territories:': + thisTerr=[add_quotes(thisline)] + terr = 1; + if hasStyle == 1: + if lastline=='From:': + yf = findYear.find_year(thisline) + thisFrom = add_quotes(thisline) + if lastline =='To:': + yt = findYear.find_year(thisline) + thisTo = add_quotes(thisline) + s = make_insert('styles',[thisID,thisStyle,thisFrom,\ + yf,thisTo,yt]) + print s + + for terr in thisTerr: + s = make_insert('territories',[thisID,terr,\ + thisFrom,yf,thisTo,yt]) + + print s + + hasStyle = 0 + + lastline = thisline + + diff --git a/familyTree/tree b/familyTree/tree new file mode 100644 index 0000000..70bb633 --- /dev/null +++ b/familyTree/tree @@ -0,0 +1,4781 @@ +ID: +1 + +Name: +Alfred the Great + +Born: +849 +Died: +26/10/899 + +Father: +Aethelwulf +Mother: +Osburh + +Spouses: +61 + +Style: +King of Wessex +Territories: +Wessex + +From: +871 +To: +899 + + + +ID: +2 + +Name: +Edward the Elder + +Born: +874-877 +Died: +17/07/924 + +Father: +1 +Mother: +61 + +Spouses: +62 +63 + +Style: +King of Wessex +Territories: +Wessex + +From: +26/10/899 +To: +17/07/924 + + + +ID: +3 + +Name: +Aethelstan + +Born: +893-895 +Died: +27/10/939 + +Father: +2 +Mother: +62 + +Style: +King of the Anlgo-Saxons +Territories: +Anglo-Saxons + +From: +924 +To: +927 + +Style: +English +Territories: +England + +From: +927 +To: +939 + + + +ID: +4 + +Name: +Edmund I + +Born: +921 +Died: +26/05/946 + +Father: +2 +Mother: +64 + +Spouses: +65 +66 + +Style: +King of the English +Territories: +England + +From: +936 +To: +26/05/946 + + + +ID: +5 + +Name: +Eadred + +Born: +? +Died: +23/11/955 + +Father: +2 +Mother: +64 + +Style: +King of the English +Territories: +England + +From: +26/05/946 +To: +23/11/955 + + + +ID: +6 + +Name: +Eadwig (Edwy) + +Born: +941? +Died: +01/10/959 + +Father: +4 +Mother: +65 + +Spouses: +67 + +Style: +King of the English +Territories: +England + +From: +23/11/955 +To: +01/10/959 + + + +ID: +7 + +Name: +Edgar the Peaceful + +Born: +07/28/943 +Died: +08/07/975 + +Father: +4 +Mother: +65 + +Spouses: +68 +69 +70 + +Style: +King of the English +Territories: +England + +From: +01/10/959 +To: +08/07/975 + + + +ID: +8 + +Name: +Edward the Martyr + +Born: +962 +Died: +18/03/978 + +Father: +7 +Mother: +68 or 69 + +Style: +King of the English +Territories: +England + +From: +08/07/975 +To: +18/03/978 + + + +ID: +9 + +Name: +Aethelred the Unready + +Born: +966-968 +Died: +23/04/1016 + +Father: +7 +Mother: +70 + +Spouses: +71 +72 + +Style: +King of the English +Territories: +England + +From: +18/03/978 +To: +1013 + +Style: +English +Territories: +England + +From: +1014 +To: +23/04/1016 + + + +ID: +10 + +Name: +Sweyn Forkbeard + +Born: +960 +Died: +03/02/1014 + +Father: +Harald Bluetooth +Mother: +Gunhild/Tove + +Spouses: +73 + +Style: +King of the English +Territories: +England + +From: +1013 +To: +03/02/1014 + +Style: +Denmark +Territories: +Denmark + +From: +986 +To: +03/02/1014 + +Style: +Norway +Territories: +Norway + +From: +986 +To: +995 + +Style: +Norway +Territories: +Norway + +From: +999 +To: +03/02/14 + + + +ID: +11 + +Name: +Edmund Ironside + +Born: +989 +Died: +30/11/1016 + +Father: +9 +Mother: +71 + +Spouses: +74 + +Style: +King of the English +Territories: +England + +From: +23/04/1016 +To: +30/11/1016 + + + +ID: +12 + +Name: +Cnut + +Born: +985 +Died: +12/11/1035 + +Father: +10 +Mother: +73 + +Spouses: +75 +72 + +Style: +King of the English +Territories: +England + +From: +1016 +To: +1035 + +Style: +Denmark +Territories: +Denmark + +From: +1018 +To: +1035 + +Style: +Norway +Territories: +Norway + +From: +1028 +To: +1035 + + + +ID: +13 + +Name: +Harold I Harefoot + +Born: +c1015 +Died: +17/03/1040 + +Father: +12 +Mother: +75 + +Style: +King of the English +Territories: +England + +From: +1035 +To: +17/03/1040 + + + +ID: +14 + +Name: +Harthacnut + +Born: +c1018 +Died: +08/06/1042 + +Father: +12 +Mother: +72 + +Style: +King of the English +Territories: +England + +From: +17/03/1040 +To: +08/06/1042 + +Style: +Denmark +Territories: +Denmark + +From: +1035 +To: +1042 + + + +ID: +15 + +Name: +Edward the Confessor + +Born: +C1003-1005 +Died: +4-5/01/1066 + +Father: +9 +Mother: +72 + +Spouses: +76 + +Style: +King of the English +Territories: +England + +From: +08/06/1042 +To: +4-5/01/1066 + + + +ID: +16 + +Name: +Harold II Godwinson + +Born: +c1022 +Died: +14/10/1066 + +Father: +176 +Mother: +177 + +Spouses: +77 +78 + +Style: +King of the English +Territories: +England + +From: +4-5/01/1066 +To: +14/10/1066 + + + +ID: +17 + +Name: +William I the Conqueror + +Born: +c1028 +Died: +09/09/1087 + +Father: +128 +Mother: +129 + +Spouses: +79 + +Style: +King of the English +Territories: +England + +From: +25/11/1066 +To: +09/09/1087 + +Style: +Duke of Normandy +Territories: +Normandy + +From: +03/07/1035 +To: +09/09/1087 + + + +ID: +18 + +Name: +William II + +Born: +c1056 +Died: +02/08/1100 + +Father: +17 +Mother: +79 + +Style: +King of the English +Territories: +England + +From: +09/09/1087 +To: +02/08/1100 + + + +ID: +19 + +Name: +Henry I Beuclerc + +Born: +1068 +Died: +01/12/1135 + +Father: +17 +Mother: +79 + +Spouses: +80 +81 + +Style: +King of the English, Duke of the Normans +Territories: +England +Normandy + +From: +02/08/1100 +To: +01/12/1135 + + + +ID: +20 + +Name: +Stephen + +Born: +C1092-1096 +Died: +25/10/1154 + +Father: +130 +Mother: +131 + +Spouses: +82 + +Style: +King of the English, Duke of the Normans +Territories: +England +Normandy + +From: +22/11/1135 +To: +?/04/1141 + +Style: +English +Territories: +England + +From: +?/11/1141 +To: +25/10/1154 + + + +ID: +21 + +Name: +Matilda + +Born: +07/02/1102 +Died: +10/09/1167 + +Father: +19 +Mother: +80 + +Spouses: +83 +84 + +Style: +Queen of England, Duke of Normans +Territories: +England +Normandy + +From: +?/04/1141 +To: +?/11/1141 + + + +ID: +22 + +Name: +Henry II Plantagenet + +Born: +05/03/1133 +Died: +06/07/1189 + +Father: +84 +Mother: +21 + +Spouses: +85 + +Style: +King of England, Duke of Normandy, and of Aquitaine and Count of Anjou +Territories: +England +Normandy +Aquitaine +Anjou + +From: +25/10/1154 +To: +06/07/1189 + + + +ID: +23 + +Name: +Henry the young king + +Born: +28/02/1155 +Died: +11/06/1183 + +Father: +22 +Mother: +85 + +Spouses: +86 + +Style: +English (junior king) +Territories: +England + +From: +28/02/155 +To: +11/06/1183 + + + +ID: +24 + +Name: +Richard I Lionheart + +Born: +08/09/1157 +Died: +06/04/1199 + +Father: +22 +Mother: +85 + +Spouses: +87 + +Style: +King of England, Duke of Normandy, and of Aquitaine and Count of Anjou +Territories: +England +Normandy +Aquitaine +Anjou + +From: +06/07/1189 +To: +06/04/1199 + + + +ID: +25 + +Name: +John + +Born: +24/12/1166 +Died: +18-19/10/1216 + +Father: +22 +Mother: +85 + +Spouses: +88 +89 + +Style: +King of England, Lord of Ireland, Duke of Normandy and Duke of Aquitaine +Territories: +England +Ireland +Normandy +Aquitaine + +From: +06/04/1199 +To: +18-19/10/1216 + + + +ID: +26 + +Name: +Henry III + +Born: +01/10/1207 +Died: +16/11/1272 + +Father: +25 +Mother: +89 + +Spouses: +90 + +Style: +King of England, Lord of Ireland, Duke of Normandy and Duke of Aquitaine +Territories: +England +Ireland +Normandy +Aquitaine + +From: +18-19/10/1216 +To: +1259 + +Style: +King of England, Lord of Ireland, and Duke of Aquitaine +Territories: +England +Ireland +Aquitaine + +From: +1259 +To: +16/11/1272 + + + +ID: +27 + +Name: +Edward I + +Born: +17/06/1239 +Died: +07/07/1307 + +Father: +26 +Mother: +90 + +Spouses: +91 +92 + +Style: +King of England, Lord of Ireland, and Duke of Aquitaine +Territories: +England +Ireland +Aquitaine + +From: +16/11/1272 +To: +07/07/1307 + + + +ID: +28 + +Name: +Edward II + +Born: +25/04/1284 +Died: +21/09/1327 + +Father: +27 +Mother: +91 + +Spouses: +93 + +Style: +King of England, Lord of Ireland, and Duke of Aquitaine +Territories: +England +Ireland +Aquitaine + +From: +07/07/1307 +To: +25/01/1327 + + + +ID: +29 + +Name: +Edward III + +Born: +13/11/1312 +Died: +21/06/1377 + +Father: +28 +Mother: +93 + +Spouses: +94 + +Style: +King of England, Lord of Ireland, and Duke of Aquitaine +Territories: +England +Ireland +Aquitaine + +From: +25/01/1327 +To: +1340 + +Style: +King of England and of France and Lord of Ireland +Territories: +England +France +Ireland + +From: +1340 +To: +21/06/1377 + + + +ID: +30 + +Name: +Richard II + +Born: +06/01/1367 +Died: +14/02/1400 + +Father: +132 +Mother: +133 + +Spouses: +95 +96 + +Style: +King of England and of France and Lord of Ireland +Territories: +England +France +Ireland + +From: +21/06/1377 +To: +1397 + +Style: +King of England and of France, Lord of Ireland, and Prince of Chester +Territories: +England +France +Ireland +Chester + +From: +1397 +To: +14/02/1400 + + + +ID: +31 + +Name: +Henry IV + +Born: +15/04/1367 +Died: +20/03/1413 + +Father: +134 +Mother: +135 + +Spouses: +97 +98 + +Style: +King of England and of France and Lord of Ireland +Territories: +England +France +Ireland + +From: +14/02/1400 +To: +20/03/1413 + + + +ID: +32 + +Name: +Henry V + +Born: +16/09/1386 +Died: +31/08/1422 + +Father: +31 +Mother: +97 + +Spouses: +99 + +Style: +King of England and of France and Lord of Ireland +Territories: +England +France +Ireland + +From: +20/03/1413 +To: +1420 + +Style: +King of England, Heir and Regent of France and Lord of Ireland +Territories: +England +Ireland +Aquitaine + +From: +1420 +To: +31/08/1422 + + + +ID: +33 + +Name: +Henry VI + +Born: +06/11/1421 +Died: +21/05/1471 + +Father: +32 +Mother: +99 + +Spouses: +100 + +Style: +King of England, Heir and Regent of France and Lord of Ireland +Territories: +England +Ireland +Normandy +Aquitaine + +From: +31/08/1422 +To: +1422 + +Style: +King of England and of France and Lord of Ireland +Territories: +England +France +Ireland + +From: +1422 +To: +04/03/1461 + +Style: +King of England and of France and Lord of Ireland +Territories: +England +France +Ireland + +From: +30/08/1471 +To: +11/04/1471 + + + +ID: +34 + +Name: +Edward IV + +Born: +28/04/1442 +Died: +09/04/1483 + +Father: +136 +Mother: +137 + +Spouses: +101 + +Style: +King of England, Heir and Regent of France and Lord of Ireland +Territories: +England +Ireland +Normandy +Aquitaine + +From: +04/03/1461 +To: +03/10/1470 + +Style: +King of England and of France and Lord of Ireland +Territories: +England +France +Ireland + +From: +11/04/1471 +To: +09/04/1483 + + + +ID: +35 + +Name: +Edward V + +Born: +02/11/1470 +Died: +c1483 + +Father: +34 +Mother: +101 + +Style: +King of England and of France and Lord of Ireland +Territories: +England +France +Ireland + +From: +09/04/1483 +To: +26/06/1483 + + + +ID: +36 + +Name: +Richard III + +Born: +02/10/1452 +Died: +22/08/1485 + +Father: +136 +Mother: +137 + +Spouses: +102 + +Style: +King of England and of France and Lord of Ireland +Territories: +England +France +Ireland + +From: +26/06/1483 +To: +22/08/1485 + + + +ID: +37 + +Name: +Henry VII + +Born: +28/01/1457 +Died: +21/04/1509 + +Father: +142 +Mother: +143 + +Spouses: +103 + +Style: +King of England and of France and Lord of Ireland +Territories: +England +France +Ireland + +From: +22/08/1485 +To: +21/04/1509 + + + +ID: +38 + +Name: +Henry VIII + +Born: +28/06/1491 +Died: +28/01/1547 + +Father: +37 +Mother: +103 + +Spouses: +104 +105 +106 +107 +108 +109 + +Style: +King of England and of France and Lord of Ireland +Territories: +England +France +Ireland + +From: +21/04/1509 +To: +1521 + +Style: +By the Grace of God, King of England and France, Defender of the Faith and Lord of Ireland +Territories: +England +France +Ireland + +From: +1521 +To: +1535 + +Style: +By the Grace of God, King of england and France, Defender of the Faith, Lord of Ireland, and of the Church of England in Earth Supreme Head +Territories: +England +France +Ireland + +From: +1535 +To: +1536 + +Style: +By the Grace of God, King of England and France, Defender of the Faith, Lord of Ireland and of the Church of England and of Ireland in Earth Supreme Head +Territories: +England +France +Ireland + +From: +1536 +To: +1542 + +Style: +By the Grace of God, King of England, France and Ireland, Defender of the Faith, and of the Church of England and of Ireland in Earth Supreme Head +Territories: +England +France +Ireland + +From: +1542 +To: +28/01/1547 + + + +ID: +39 + +Name: +Edward VI + +Born: +21/10/1537 +Died: +06/07/1553 + +Father: +38 +Mother: +106 + +Style: +By the Grace of God, King of England, France and Ireland, Defender of the Faith, and of the Church of England and of Ireland in Earth Supreme Head +Territories: +England +France +Ireland + +From: +28/01/1547 +To: +06/07/1553 + + + +ID: +40 + +Name: +Jane Grey + +Born: +C1536-1537 +Died: +12/02/1554 + +Father: +146 +Mother: +147 + +Spouses: +110 + +Style: +By the Grace of God, King of England, France and Ireland, Defender of the Faith, and of the Church of England and of Ireland in Earth Supreme Head +Territories: +England +France +Ireland + +From: +10/07/1553 +To: +19/07/1553 + + + +ID: +41 + +Name: +Mary I + +Born: +18/02/1516 +Died: +17/11/1558 + +Father: +38 +Mother: +104 + +Spouses: +111 + +Style: +By the Grace of God, King of England, France and Ireland, Defender of the Faith, and of the Church of England and of Ireland in Earth Supreme Head +Territories: +England +France +Ireland + +From: +19/07/1553 +To: +1554 + +Style: +By the Grace of God, King and Queen of England and France, Naples, Jerusalem and Ireland, Defenders of the Faith, Princes of Spain and Sicily, Archdukes of Austria, Dukes of Milan, Burgundy, and Brabant, Count and Countess of Habsburg, Flanders, and Tyrol +Territories: +England +France +Naples +Jerusalem +Ireland +Spain +Sicily +Austria +Milan +Burgundy +Brabant +Habsburg +Flanders +Tyrol + +From: +1554 +To: +1556 + +Style: +By the Grade of God, King and Queen of england, Spain, France, Jerusalem, both the Sicilies and Ireland, Defenders of the Faith, Archduke and Archduchess of Austria, Duke and Duchess of Burgundy, Milan and Brabant, Count and Countess of Habsburg, Flanders and Tyrol +Territories: +England +Spain +France +Jerusalem +Sicilies +Ireland +Austria +Burgundy +Milan +Brabant +Habsburg +Flanders +Tyrol + +From: +1556 +To: +17/11/1558 + + + +ID: +42 + +Name: +Elizabeth I + +Born: +07/09/1533 +Died: +24/03/1603 + +Father: +38 +Mother: +105 + +Style: +By the Grace of God, Queen of England, France and Ireland, Defender of the Faith, etc +Territories: +England +France +Ireland + +From: +17/11/1558 +To: +24/03/1603 + + + +ID: +43 + +Name: +James VI & I + +Born: +19/06/1566 +Died: +27/03/1625 + +Father: +150 +Mother: +151 + +Spouses: +112 + +Style: +By the Grace of God, King of England, France, and Ireland, Defender of the Faith etc. +Territories: +England +France +Ireland + +From: +24/03/1603 +To: +27/03/1625 + +Style: +King of Scots +Territories: +Scotland + +From: +24/07/1567 +To: +27/03/1625 + + + +ID: +44 + +Name: +Charles I + +Born: +19/11/1600 +Died: +30/01/1649 + +Father: +43 +Mother: +112 + +Spouses: +113 + +Style: +By the Grace of God, King of England,Scotland, France, and Ireland, Defender of the Faith etc. +Territories: +England +Scotland +France +Ireland + +From: +27/03/1625 +To: +30/01/1649 + +Style: +King of Scots +Territories: +Scotland + +From: +27/03/1625 +To: +30/01/1649 + + + +ID: +45 + +Name: +Charles II + +Born: +7 +Died: +06/02/1685 + +Father: +44 +Mother: +113 + +Spouses: +114 + +Style: +By the Grace of God, King of England,Scotland, France, and Ireland, Defender of the Faith etc. +Territories: +England +Scotland +France +Ireland + +From: +29/05/1660 +To: +06/02/1685 + +Style: +King of Scots +Territories: +Scotland + +From: +30/01/1649 +To: +03/09/1651 + + + +ID: +46 + +Name: +James VII & II + +Born: +14/10/1633 +Died: +16/09/1701 + +Father: +44 +Mother: +113 + +Spouses: +115 +116 + +Style: +By the Grace of God, King of England,Scotland, France, and Ireland, Defender of the Faith etc. +Territories: +England +Scotland +France +Ireland + +From: +06/02/1685 +To: +11/11/1688 + + + +ID: +47 + +Name: +Mary II + +Born: +30/04/1662 +Died: +28/11/1694 + +Father: +46 +Mother: +115 + +Spouses: +48 + +Style: +By the Grace of God, King and Queen of England, Scotland, France and Ireland, Stadholther of the Republic of the Seven United Netherlands, Prince of Orange, Count of Nassau, Defenders of the Faith, etc. +Territories: +England +Scotland +France +Ireland +Netherlands +Orange +Nassau + +From: +13/02/1689 +To: +28/11/1694 + + + +ID: +48 + +Name: +William II & III + +Born: +04/11/1650 +Died: +08/03/1702 + +Father: +155 +Mother: +156 + +Spouses: +47 + +Style: +By the Grace of God, King and Queen of England, Scotland, France and Ireland, Stadholther of the Republic of the Seven United Netherlands, Prince of Orange, Count of Nassau, Defenders of the Faith, etc. +Territories: +England +Scotland +France +Ireland +Netherlands +Orange +Nassau + +From: +13/02/1689 +To: +28/11/1694 + +Style: +By the Grace of God, King of England, Scotland, France and Ireland, Stadholther of the Republic of the Seven United Netherlands, Prince of Orange, Count of Nassau, Defenders of the Faith, etc. +Territories: +England +Scotland +France +Ireland +Netherlands +Orange +Nassau + +From: +04/06/1900 +To: +08/03/1702 + + + +ID: +49 + +Name: +Anne + +Born: +06/02/1665 +Died: +01/08/1714 + +Father: +46 +Mother: +115 + +Spouses: +117 + +Style: +By the Grace of God, Queen of England, Scotland, France and Ireland, Defender of the Faith, etc. +Territories: +England +Scotland +France +Ireland + +From: +08/03/1702 +To: +1707 + +Style: +By the Grace of God, Queen of Great Britain, France and Ireland, Defender of the Faith, etc. +Territories: +GB +France +Ireland + +From: +1707 +To: +01/08/1714 + + + +ID: +50 + +Name: +George I + +Born: +28/05/1660 +Died: +11/06/1727 + +Father: +157 +Mother: +158 + +Spouses: +118 + +Style: +By the Grace of God, King of Great Britain, France and Ireland, Defender of the Faith, Archtreasurer and Prince-Elector of the Holy Roman Empire, Duke of Brunswick-Luneburg +Territories: +GB +France +Ireland +Elector of HRE +Brunswick-Luneburg + +From: +01/08/1714 +To: +11/06/1727 + +Style: +Hanover +Territories: +Hanover + +From: +23/01/1698 +To: +11/06/1727 + + + +ID: +51 + +Name: +George II + +Born: +10/11/1683 +Died: +25/10/1760 + +Father: +50 +Mother: +118 + +Spouses: +119 + +Style: +By the Grace of God, King of Great Britain, France and Ireland, Defender of the Faith, Archtreasurer and Prince-Elector of the Holy Roman Empire, Duke of Brunswick-Luneburg +Territories: +GB +France +Ireland +Elector of HRE +Brunswick-Luneburg + +From: +11/06/1727 +To: +25/10/1760 + + + +ID: +52 + +Name: +George III + +Born: +04/06/1738 +Died: +29/01/1820 + +Father: +160 +Mother: +161 + +Spouses: +120 + +Style: +By the Grace of God, King of Great Britain, France and Ireland, Defender of the Faith, Archtreasurer and Prince-Elector of the Holy Roman Empire, Duke of Brunswick-Luneburg +Territories: +GB +France +Ireland +Elector of HRE +Brunswick-Luneburg + +From: +25/10/1760 +To: +1801 + +Style: +By the Grace of God, of the United Kingdom of Great Britain and Ireland King, Defender of the Faith, Arch-treasurer and Prince-Elector of the Holy Roman Empire, Duke of Brunswick-Luneburg +Territories: +UK +Brunswick-Luneburg + +From: +1801 +To: +1814 + +Style: +By the Grace of God, of the United Kingdom of Great Britain and Ireland King, Defender of the Faith, King of Hanover, Duke of Brunswick +Territories: +UK +Ireland +Hanover +Brunswick + +From: +1814 +To: +29/01/1820 + + + +ID: +53 + +Name: +George IV + +Born: +12/08/1762 +Died: +26/06/1830 + +Father: +52 +Mother: +120 + +Spouses: +121 + +Style: +By the Grace of God, of the United Kingdom of Great Britain and Ireland King, Defender of the Faith, King of Hanover, Duke of Brunswick +Territories: +UK +Hanover +Brunswick + +From: +29/01/1820 +To: +26/06/1830 + + + +ID: +54 + +Name: +William IV + +Born: +21/08/1765 +Died: +20/06/1837 + +Father: +52 +Mother: +120 + +Spouses: +122 + +Style: +By the Grace of God, of the United Kingdom of Great Britain and Ireland King, Defender of the Faith, King of Hanover, Duke of Brunswick +Territories: +UK +Hanover +Brunswick + +From: +26/06/1830 +To: +20/06/1837 + + + +ID: +55 + +Name: +Victoria + +Born: +24/05/1819 +Died: +22/01/1901 + +Father: +162 +Mother: +163 + +Spouses: +123 + +Style: +By the Grace of God, of the United Kingdom of Great Britain and Ireland Queen, Defender of the Faith +Territories: +UK + +From: +20/06/1837 +To: +1876 + +Style: +By the Grace of God, of the United Kingdom of Great Britain and Ireland Queen, Defender of the Faith, Empress of India +Territories: +UK +India + +From: +1876 +To: +22/01/1901 + + + +ID: +56 + +Name: +Edward VII + +Born: +09/11/1841 +Died: +06/05/1910 + +Father: +123 +Mother: +55 + +Spouses: +124 + +Style: +By the Grace of God, of the United Kingdom of Great Britain and Ireland and of the British Dominions beyond the Seas King, Defender of the Faith, Emperor of India +Territories: +UK +British Dominions +India + +From: +22/01/1901 +To: +06/05/1910 + + + +ID: +57 + +Name: +George V + +Born: +03/06/1865 +Died: +20/01/1936 + +Father: +56 +Mother: +124 + +Spouses: +125 + +Style: +By the Grace of God, of the United Kingdom of Great Britain and Ireland and of the British Dominions beyond the Seas King, Defender of the Faith, Emperor of India +Territories: +UK +British Dominions +India + +From: +06/05/1910 +To: +1927 + +Style: +By the Grace of God, of Great Britain, Ireland and the British Dominions beyond the Seas King, Defender of the Faith, Emperor of India +Territories: +GB +Ireland +Dominions +India + +From: +1927 +To: +20/01/1936 + + + +ID: +58 + +Name: +Edward VIII + +Born: +23/06/1894 +Died: +28/05/1972 + +Father: +57 +Mother: +125 + +Spouses: +126 + +Style: +By the Grace of God, of Great Britain, Ireland and the British Dominions beyond the Seas King, Defender of the Faith, Emperor of India +Territories: +GB +Ireland +British Dominions +India + +From: +20/01/1936 +To: +11/11/1936 + + + +ID: +59 + +Name: +George VI + +Born: +14/11/1895 +Died: +06/02/1952 + +Father: +57 +Mother: +125 + +Spouses: +127 + +Style: +By the Grace of God, of Great Britain, Ireland and the British Dominions beyond the Seas King, Defender of the Faith, Emperor of India +Territories: +GB +Ireland +British Dominions +India + +From: +11/11/1936 +To: +1948 + +Style: +By the Grace of God, of Great Britain, Ireland and the British Dominions beyond the Seas King, Defender of the Faith +Territories: +GB +Ireland +Dominions + +From: +1948 +To: +06/02/1952 + + + +ID: +60 + +Name: +Elizabeth II + +Born: +21/04/1926 +Died: +present + +Father: +59 +Mother: +127 + +Spouses: +226 + +Style: +By the Grace of God, of the United Kingdom of Great Britain and Northern Ireland and of Her other Realms and Territories Queen, Head of the Commonwealth, Defender of the Faith +Territories: +UK +Realms and Territories +Commonwealth + +From: +06/02/1952 +To: +present + + + +ID: +61 + +Name: +Ealhswith + +Born: +? +Died: +05/11/902 + +Father: +Aethelred Mucel +Mother: +Eadburh + +Spouses: +1 + + + +ID: +62 + +Name: +Ecgwyn + +Born: +? +Died: +? + +Father: +? +Mother: +? + +Spouses: +2 + + + +ID: +63 + +Name: +Aelfflaed + +Born: +? +Died: +? + +Father: +? +Mother: +? + +Spouses: +2 + +Style: +Queen Consort of Wessex +Territories: +Wessex + +From: + + + +ID: +64 + +Name: +Eadgifu + +Born: +~903 +Died: +~966 + +Father: +166 +Mother: +? + +Spouses: +2 + +Style: +Queen Consort of the Anglo-Saxons +Territories: +Anglo-Saxons + +From: + + + +ID: +65 + +Name: +Aelfgifu of Shaftsbury + +Born: +? +Died: +~944 + +Father: +? +Mother: +164 + +Spouses: +4 + +Style: +Queen Consort of England +Territories: +England + +From: + + + +ID: +66 + +Name: +Aethelflaed of Damerham + +Born: +? +Died: +? + +Father: +165 +Mother: +? + +Spouses: +4 + +Style: +Queen Consort of England +Territories: +England + +From: +944 +To: +26/05/946 + + + +ID: +67 + +Name: +Aelfgifu + +Born: +? +Died: +? + +Father: +? +Mother: +166 + +Spouses: +6 + +Style: +Queen Consort of England +Territories: +England + +From: +23/11/955 +To: +01/10/959 + + + +ID: +68 + +Name: +Aethelflaed + +Born: +? +Died: +? + +Father: +? +Mother: +? + +Spouses: +7 + + + +ID: +69 + +Name: +Wulthryth + +Born: +? +Died: +? + +Father: +? +Mother: +? + +Spouses: +7 + + + +ID: +70 + +Name: +Aelfthryth + +Born: +c.945 +Died: +c1000 + +Father: +167 +Mother: +? + +Spouses: +168 +7 + +Style: +Queen Consort of England +Territories: +England + +From: +964/965 +To: +08/07/975 + + + +ID: +71 + +Name: +Aelfgifu of York + +Born: +c. 970 +Died: +1002 + +Father: +169 +Mother: +? + +Spouses: +9 + +Style: +Queen Consort of England +Territories: +England + +From: +?980 +To: +28/09/1902 + + + +ID: +72 + +Name: +Emma of Normandy + +Born: +c. 985 +Died: +06/03/1052 + +Father: +170 +Mother: +171 + +Spouses: +9 +12 + +Style: +Queen Consort of England +Territories: +England + +From: +1002 +To: +Summer 1013 + +Style: +Queen Consort of England +Territories: +England + +From: +03/02/1014 +To: +23/04/1016 + +Style: +Queen Consort of England +Territories: +England + +From: +07/1017 +To: +12/11/1035 + +Style: +Queen Consort of Denmark +Territories: +Denmark + +From: +1018 +To: +12/11/1035 + +Style: +Queen Consort of Norway +Territories: +Norway + +From: +1028 +To: +12/11/1035 + + + +ID: +73 + +Name: +Sigrid the Haughty + +Born: +? +Died: +? + +Father: +172 +Mother: +173 + +Spouses: +174 +10 + +Style: +Queen Consort of Sweden,Denmark,Norway,England +Territories: +Sweden +Denmark +Norway +England + +From: + + + +ID: +74 + +Name: +Ealdgyth + +Born: +c. 992 +Died: +Post 1016 + +Father: +? +Mother: +? + +Spouses: +Sigeferth +11 + +Style: +Queen Consort of England +Territories: +England + +From: +23/04/1016 +To: +30/11/1016 + + + +ID: +75 + +Name: +Aelfgifu of Northampton + +Born: +c. 990 +Died: +Post 1040 + +Father: +175 +Mother: +? + +Spouses: +12 + + + +ID: +76 + +Name: +Edith of Wessex + +Born: +C 1025 +Died: +18/12/1075 + +Father: +176 +Mother: +177 + +Spouses: +15 + +Style: +Queen Consort of England +Territories: +England + +From: +1045 +To: +05/01/1066 + + + +ID: +77 + +Name: +Edith the Fair + +Born: +C 1025 +Died: +1086 + +Father: +? +Mother: +? + +Spouses: +16 + + + +ID: +78 + +Name: +Edith of Mercia + +Born: +C 1057 +Died: +1066 + +Father: +177 +Mother: +178 + +Spouses: +179 +16 + +Style: +Queen Consort of England +Territories: +England + +From: +01/1066 +To: +14/10/1066 + + + +ID: +79 + +Name: +Matilda of Flanders + +Born: +C 1031 +Died: +02/11/1083 + +Father: +180 +Mother: +181 + +Spouses: +17 + +Style: +Queen Consort of England +Territories: +England + +From: +25/12/1066 +To: +02/11/1083 + + + +ID: +80 + +Name: +Matilda of Scotland + +Born: +C 1080 +Died: +01/05/1118 + +Father: +182 +Mother: +183 + +Spouses: +19 + +Style: +Queen Consort of England +Territories: +England + +From: +11/11/1100 +To: +01/05/1118 + + + +ID: +81 + +Name: +Adeliza of Louvain + +Born: +C 1103 +Died: +23/04/1151 + +Father: +184 +Mother: +185 + +Spouses: +19 +186 + +Style: +Queen Consort of England +Territories: +England + +From: +24/01/1121 +To: +01/12/1135 + + + +ID: +82 + +Name: +Matilda of Boulogne + +Born: +? 1105 +Died: +03/05/1152 + +Father: +187 +Mother: +188 + +Spouses: +20 + +Style: +Queen Consort of England +Territories: +England + +From: +22/11/1135 +To: +07/04/1141 + +Style: +Queen Consort of England +Territories: +England + +From: +01/11/1141 +To: +03/05/1152 + +Style: +Countess of Boulogne +Territories: +Boulogne + +From: +C 1125 +To: +03/05/1152 + + + +ID: +83 + +Name: +Henry V + +Born: +11/08/1086 +Died: +23/05/1125 + +Father: +189 +Mother: +190 + +Spouses: +21 + +Style: +Holy Roman Emperor +Territories: +HRE + +From: +1111 +To: +1125 + +Style: +King of Germany +Territories: +Germany + +From: +1099 +To: +1125 + +Style: +King of Italy +Territories: +Italy + +From: +1098 +To: +1125 + + + +ID: +84 + +Name: +Geoffrey V + +Born: +24/08/1113 +Died: +07/09/1151 + +Father: +190 +Mother: +191 + +Spouses: +21 + +Style: +Count of Anjou +Territories: +Anjou + +From: +1129 +To: +07/09/1151 + + + +ID: +85 + +Name: +Eleanor of Aquitaine + +Born: +1122-1124 +Died: +01/04/1204 + +Father: +192 +Mother: +193 + +Spouses: +194 +22 + +Style: +Queen Consort of England +Territories: +England + +From: +25/10/1154 +To: +06/07/1189 + +Style: +Queen Consort of France +Territories: +France + +From: +01/08/1137 +To: +21/03/1152 + +Style: +Duchess of Aquitaine +Territories: +Aquitaine + +From: +09/04/37 +To: +01/04/1204 + + + +ID: +86 + +Name: +Margaret of France + +Born: +?/11/1157 +Died: +08-09/1197 + +Father: +194 +Mother: +195 + +Spouses: +23 +196 + +Style: +Junior Queen Consort of England +Territories: +England + +From: +1170 +To: +11/06/1183 + +Style: +Queen Consort of Hungary +Territories: +Hungary + +From: +1186 +To: +1196 + + + +ID: +87 + +Name: +Berengaria of Navarre + +Born: +C 1165-1170 +Died: +23/11/1230 + +Father: +197 +Mother: +198 + +Spouses: +24 + +Style: +Queen Consort of England +Territories: +England + +From: +12/05/1191 +To: +06/04/1199 + + + +ID: +88 + +Name: +Isabella of Gloucester + +Born: +C 1173 +Died: +14/10/1217 + +Father: +199 +Mother: +200 + +Spouses: +25 +201 +202 + + + +ID: +89 + +Name: +Isabella of Angouleme + +Born: +C 1188 +Died: +04/06/1246 + +Father: +203 +Mother: +204 + +Spouses: +25 +205 + +Style: +Countess of Angouleme +Territories: +Angouleme + +From: +16/05/1202 +To: +04/06/1246 + +Style: +Queen Consort of England +Territories: +England + +From: +24/08/1200 +To: +19/10/1216 + + + +ID: +90 + +Name: +Eleanor of Provence + +Born: +C 1223 +Died: +24-25/05/1291 + +Father: +206 +Mother: +207 + +Spouses: +26 + +Style: +Queen Consort of England +Territories: +England + +From: +14/01/1236 +To: +16/11/1272 + + + +ID: +91 + +Name: +Eleanor of Castile + +Born: +1241 +Died: +28/11/1290 + +Father: +208 +Mother: +209 + +Spouses: +27 + +Style: +Queen Consort of England +Territories: +England + +From: +16-11-1272 +To: +28-11-1209 + +Style: +Countess of Ponthieu +Territories: +Ponthieu + +From: +1279 +To: +1290 + + + +ID: +92 + +Name: +Margaret of France + +Born: +C 1279 +Died: +14-02-1318 + +Father: +209 +Mother: +210 + +Spouses: +27 + +Style: +Queen Consort of England +Territories: +England + +From: +08/09/1299 +To: +07/07/1307 + + + +ID: +93 + +Name: +Isabella of France + +Born: +1295 +Died: +22/08/1358 + +Father: +212 +Mother: +213 + +Spouses: +28 + +Style: +Queen Consort of England +Territories: +England + +From: +25/01/1308 +To: +20/01/1327 + + + +ID: +94 + +Name: +Philippa of Hainault + +Born: +24/06/1314 +Died: +15/08/1369 + +Father: +213 +Mother: +213 + +Spouses: +29 + +Style: +Queen Consort of England +Territories: +England + +From: +24/01/1328 +To: +15/08/1369 + + + +ID: +95 + +Name: +Anne of Bohemia + +Born: +11/05/1366 +Died: +07/06/1394 + +Father: +215 +Mother: +216 + +Spouses: +30 + +Style: +Queen Consort of England +Territories: +England + +From: +20/01/1382 +To: +07/06/1394 + + + +ID: +96 + +Name: +Isabella of Valois + +Born: +09/11/1389 +Died: +13/09/1409 + +Father: +217 +Mother: +218 + +Spouses: +30 +219 + +Style: +Queen Consort of England +Territories: +England + +From: +01/11/1396 +To: +30/09/1399 + + + +ID: +97 + +Name: +Mary de Bohun + +Born: +C 1368 +Died: +04/06/1394 + +Father: +224 +Mother: +225 + +Spouses: +31 + + + +ID: +98 + +Name: +Joanna of Navarre + +Born: +c1370 +Died: +10/06/1437 + +Father: +220 +Mother: +221 + +Spouses: +222 +31 + +Style: +Dunchess Consort of Brittany +Territories: +Brittany + +From: +02/10/1386 +To: +01/11/1399 + +Style: +Queen Consort of England +Territories: +England + +From: +07/01/1403 +To: +20/03/1413 + + + +ID: +99 + +Name: +Catherine of Valois + +Born: +27/10/1401 +Died: +03/01/1437 + +Father: +217 +Mother: +218 + +Spouses: +32 +223 + +Style: +Queen Consort of England +Territories: +England + +From: +02/06/1420 +To: +31/08/1422 + + + +ID: +100 + +Name: +Margaret of Anjou + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +101 + +Name: +Elizabeth Woodville + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +102 + +Name: +Anne Neville + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +103 + +Name: +Elizabeth of York + +Born: +. +Died: +. + +Father: +34 +Mother: +101 + + + +ID: +104 + +Name: +Catherine of Aragon + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +105 + +Name: +Anne Boleyn + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +106 + +Name: +Jane Seymour + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +107 + +Name: +Anne of Cleves + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +108 + +Name: +Catherine Howard + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +109 + +Name: +Catherine Parr + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +110 + +Name: +Guildford Dudley + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +111 + +Name: +Philip II of Spain + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +112 + +Name: +Anne of Denmark + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +113 + +Name: +Henrietta Maria + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +114 + +Name: +Catherine of Braganza + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +115 + +Name: +Anne Hyde + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +116 + +Name: +Mary of Modena + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +117 + +Name: +George of Denmark + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +118 + +Name: +Sophia Dorothea + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +119 + +Name: +Caroline of Ansbach + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +120 + +Name: +Charlotte of Mecklenburg-Strelitz + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +121 + +Name: +Caroline of Brunswick + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +122 + +Name: +Adelaide of Saxe Meiningen + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +123 + +Name: +Albert + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +124 + +Name: +Alexandra + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +125 + +Name: +Mary of Teck + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +126 + +Name: +Wallis Simpson + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +127 + +Name: +Elizabeth Bowes-Lyon + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +128 + +Name: +Robert I Duke of Normandy + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +129 + +Name: +Herleva + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +130 + +Name: +Stehpen II + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +131 + +Name: +Adela + +Born: +. +Died: +. + +Father: +17 +Mother: +79 + + + +ID: +132 + +Name: +Edward the Black Prince + +Born: +. +Died: +. + +Father: +29 +Mother: +94 + + + +ID: +133 + +Name: +Joan + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +134 + +Name: +John of Gaunt + +Born: +. +Died: +. + +Father: +29 +Mother: +94 + + + +ID: +135 + +Name: +Blanche of Lancaster + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +136 + +Name: +Richard Plantagenet + +Born: +. +Died: +. + +Father: +138 +Mother: +139 + + + +ID: +137 + +Name: +Cecilly Neville + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +138 + +Name: +Richard of Conisburgh + +Born: +. +Died: +. + +Father: +140 +Mother: +141 + + + +ID: +139 + +Name: +Anne de Mortimer + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +140 + +Name: +Edmund of Langley + +Born: +. +Died: +. + +Father: +29 +Mother: +94 + + + +ID: +141 + +Name: +Isabella of Castile + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +142 + +Name: +Margaret Beufort + +Born: +. +Died: +. + +Father: +144 +Mother: +. + + + +ID: +143 + +Name: +John Beaufort + +Born: +. +Died: +. + +Father: +145 +Mother: +. + + + +ID: +144 + +Name: +John Beaufort + +Born: +. +Died: +. + +Father: +134 +Mother: +. + + + +ID: +145 + +Name: +Henry Grey + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +146 + +Name: +Frances Brandon + +Born: +. +Died: +. + +Father: +148 +Mother: +149 + + + +ID: +147 + +Name: +Charles Brandon + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +148 + +Name: +Mary Tudor + +Born: +. +Died: +. + +Father: +37 +Mother: +103 + + + +ID: +149 + +Name: +Henry Stuard + +Born: +. +Died: +. + +Father: +. +Mother: +152 + + + +ID: +150 + +Name: +Mary Queen of Scots + +Born: +. +Died: +. + +Father: +. +Mother: +150 + + + +ID: +151 + +Name: +Margaret Douglas + +Born: +. +Died: +. + +Father: +. +Mother: +154 + + + +ID: +152 + +Name: +James V + +Born: +. +Died: +. + +Father: +. +Mother: +154 + + + +ID: +153 + +Name: +Margaret Tudor + +Born: +. +Died: +. + +Father: +37 +Mother: +103 + + + +ID: +154 + +Name: +William II Prince of Orange + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +155 + +Name: +Mary, Princess Royal + +Born: +. +Died: +. + +Father: +44 +Mother: +113 + + + +ID: +156 + +Name: +Ernest Augustus + +Born: +. +Died: +. + +Father: +. +Mother: +. + +Spouses: + + + + +ID: +157 + +Name: +Sophia of Hanover + +Born: +. +Died: +. + +Father: +159 +Mother: +157 + + + +ID: +158 + +Name: +Elizabeth Stuart + +Born: +. +Died: +. + +Father: +43 +Mother: +112 + + + +ID: +159 + +Name: +Frederick + +Born: +. +Died: +. + +Father: +51 +Mother: +119 + + + +ID: +160 + +Name: +Augusta + +Born: +. +Died: +. + +Father: +. +Mother: +. + + + +ID: +161 + +Name: +Prince Edward + +Born: +. +Died: +. + +Father: +52 +Mother: +120 + + + +ID: +162 + +Name: +Princess Victoria + +Born: +. +Died: +. + +Father: +. +Mother: +. + +Spouses: + + + + +ID: +163 + +Name: + + diff --git a/familyTree/tree.db b/familyTree/tree.db new file mode 100644 index 0000000000000000000000000000000000000000..fcce1ffd9dd7a126e9954221eea07b68f43ba459 GIT binary patch literal 45056 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 literal 0 HcmV?d00001 diff --git a/listPeople.py b/listPeople.py new file mode 100755 index 0000000..5b96bd7 --- /dev/null +++ b/listPeople.py @@ -0,0 +1,25 @@ +#!/usr/bin/python + +import cgi +import cgitb +import sys +import re +sys.path.append('/home/naath/familyTree') +import askQuestion +import everyPage + +[conn,form]=everyPage.top() + +result = 1 +if result == None: + everyPage.bad() +else: + printMe = askQuestion.list_people('
') + if len(printMe)<10: + printMe = 'sorry, no data
' + + everyPage.good(printMe) + + +everyPage.bottom(conn) + diff --git a/listTerr.py b/listTerr.py new file mode 100755 index 0000000..087855d --- /dev/null +++ b/listTerr.py @@ -0,0 +1,25 @@ +#!/usr/bin/python + +import cgi +import cgitb +import sys +import re +sys.path.append('/home/naath/familyTree') +import askQuestion +import everyPage + +[conn,form]=everyPage.top() + +result = 1 +if result == None: + everyPage.bad() +else: + printMe = askQuestion.list_territories('
') + if len(printMe)<10: + printMe = 'sorry, no data
' + + everyPage.good(printMe) + + +everyPage.bottom(conn) + diff --git a/person.py b/person.py new file mode 100755 index 0000000..3b30c86 --- /dev/null +++ b/person.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- + +# enable debugging +import cgi +import cgitb +import sys +import re +sys.path.append('/home/naath/familyTree') +import askQuestion +import everyPage + +cgitb.enable() + +[conn,form]=everyPage.top() + +ID = form.getvalue('ID') +if ID == None: + ID = 1 + +result = re.match('^[0-9]{1,3}$', str(ID)) + +if result == None: + everyPage.bad() +else: + printMe = askQuestion.person_info(ID,'
') + if len(printMe)<10: + printMe = 'sorry, no data
' + else: + url = "Ancestors" + printMe = printMe + '
' + url + + everyPage.good(printMe) + + +everyPage.bottom(conn) diff --git a/territory.py b/territory.py new file mode 100755 index 0000000..03602c9 --- /dev/null +++ b/territory.py @@ -0,0 +1,29 @@ +#!/usr/bin/python + +import cgi +import cgitb +import sys +import re +sys.path.append('/home/naath/familyTree') +import askQuestion +import everyPage + +[conn,form]=everyPage.top() + +terr = form.getvalue('terr') +if terr == None: + terr = 'Wessex' +result = re.match('^[A-Za-z-]{1,20}$', str(terr)) + + +if result == None: + everyPage.bad() +else: + printMe = askQuestion.rulers_of(terr,'
') + if len(printMe)<10: + printMe = 'sorry, no data
' + + everyPage.good(printMe) + + +everyPage.bottom(conn) -- 2.30.2