From 60735a9b3acae9d883589c51aa953ced40cc7488 Mon Sep 17 00:00:00 2001
From: substantialnoninfringinguser
Date: Wed, 13 May 2009 05:43:20 +0100
Subject: [PATCH] [svn] merge the trip table to have surveys by date Copied
from http://cucc@cucc.survex.com/svn/trunk/expoweb/troggle/, rev. 8221 by
julian @ 1/24/2009 2:01 PM
---
expo/models.py | 28 +++++++++++++++
expo/models_survex.py | 12 +++++++
media/css/main2.css | 11 ++++++
parsers/cavetab.py | 18 ++++++++++
parsers/logbooks.py | 16 +++++----
templates/index.html | 21 ++++++++---
templates/personexpedition.html | 64 +++++++++++++++++++++------------
templates/survexblock.html | 8 ++---
8 files changed, 139 insertions(+), 39 deletions(-)
diff --git a/expo/models.py b/expo/models.py
index ee3179b..b8885ea 100644
--- a/expo/models.py
+++ b/expo/models.py
@@ -86,6 +86,34 @@ class PersonExpedition(models.Model):
is_guest = models.BooleanField(default=False)
nickname = models.CharField(max_length=100,blank=True,null=True)
+ def GetPersonroles(self):
+ res = [ ]
+ for personrole in self.personrole_set.order_by('survex_block'):
+ if res and res[-1]['survexpath'] == personrole.survex_block.survexpath:
+ res[-1]['roles'] += ", " + str(personrole.role)
+ else:
+ res.append({'date':personrole.survex_block.date, 'survexpath':personrole.survex_block.survexpath, 'roles':str(personrole.role)})
+ print res
+ return res
+
+ def GetPersonChronology(self):
+ res = { }
+ for persontrip in self.persontrip_set.all():
+ a = res.setdefault(persontrip.date, { })
+ a.setdefault("persontrips", [ ]).append(persontrip)
+ for personrole in self.personrole_set.all():
+ a = res.setdefault(personrole.survex_block.date, { })
+ b = a.setdefault("personroles", { })
+ survexpath = personrole.survex_block.survexpath
+
+ if b.get(survexpath):
+ b[survexpath] += ", " + str(personrole.role)
+ else:
+ b[survexpath] = str(personrole.role)
+# needs converting dict into list
+ return sorted(res.items())
+
+
# deprecated
def GetPossibleNameForms(self):
res = [ ]
diff --git a/expo/models_survex.py b/expo/models_survex.py
index 4b65357..1a7251f 100644
--- a/expo/models_survex.py
+++ b/expo/models_survex.py
@@ -27,6 +27,9 @@ class SurvexBlock(models.Model):
end_file = models.CharField(max_length=200, blank=True, null=True)
end_char = models.IntegerField(blank=True, null=True)
+ class Meta:
+ ordering = ('date', 'survexpath')
+
def __unicode__(self):
return unicode(self.name)
@@ -37,6 +40,15 @@ class SurvexBlock(models.Model):
fin.close()
return res
+ def GetPersonroles(self):
+ res = [ ]
+ for personrole in self.personrole_set.order_by('personexpedition'):
+ if res and res[-1]['person'] == personrole.personexpedition.person:
+ res[-1]['roles'] += ", " + str(personrole.role)
+ else:
+ res.append({'person':personrole.personexpedition.person, 'expeditionyear':personrole.personexpedition.expedition.year, 'roles':str(personrole.role)})
+ print res
+ return res
class PersonRole(models.Model):
diff --git a/media/css/main2.css b/media/css/main2.css
index fa9d3c2..b07c65c 100644
--- a/media/css/main2.css
+++ b/media/css/main2.css
@@ -142,6 +142,17 @@ p.indent
margin-left:10px;
}
+table.survexcontibutions td.date
+{ width:90px; }
+table.survexcontibutions td.roles
+{ width:100px; background-color:#feeeed; }
+table.survexcontibutions td.survexblock
+{ width:260px; background-color:#feeeed; }
+table.survexcontibutions td.trip
+{ width:190px; }
+table.survexcontibutions td.place
+{ width:140px; }
+
#expoHeader {
width:100%;
position:relative;
diff --git a/parsers/cavetab.py b/parsers/cavetab.py
index 25a9d81..7f3146a 100644
--- a/parsers/cavetab.py
+++ b/parsers/cavetab.py
@@ -262,3 +262,21 @@ for line in caveReader :
newCaveAndEntrance = models.CaveAndEntrance(cave = newCave, entrance = newEntrance, entrance_letter = entrance_letter)
newCaveAndEntrance.save()
+
+
+# lookup function modelled on GetPersonExpeditionNameLookup
+Gcavelookup = None
+def GetCaveLookup():
+ global Gcavelookup
+ if Gcavelookup:
+ return Gcavelookup
+ Gcavelookup = {"NONEPLACEHOLDER":None}
+ for cave in models.Cave.objects.all():
+ Gcavelookup[cave.official_name.lower()] = cave
+ if cave.kataster_number:
+ Gcavelookup[cave.kataster_number] = cave
+ if cave.unofficial_number:
+ Gcavelookup[cave.unofficial_number] = cave
+ return Gcavelookup
+
+
\ No newline at end of file
diff --git a/parsers/logbooks.py b/parsers/logbooks.py
index 3de28d7..9ad1962 100644
--- a/parsers/logbooks.py
+++ b/parsers/logbooks.py
@@ -4,6 +4,7 @@ import troggle.settings as settings
import troggle.expo.models as models
from troggle.parsers.people import GetPersonExpeditionNameLookup
+from troggle.parsers.cavetab import GetCaveLookup
import csv
import re
@@ -64,13 +65,14 @@ def GetTripCave(place): #need to be fuzzier about matching h
def EnterLogIntoDbase(date, place, title, text, trippeople, expedition, logtime_underground):
trippersons, author = GetTripPersons(trippeople, expedition, logtime_underground)
- tripCave = GetTripCave(place)
+# tripCave = GetTripCave(place)
lbo = models.LogbookEntry(date=date, place=place, title=title[:50], text=text, author=author, expedition=expedition)
- if tripCave:
- lbo.cave=tripCave
+ lbo.cave=GetCaveLookup().get(place)
+ print "pppp", place, lbo.cave
+
lbo.save()
- print "ttt", date, place
+ #print "ttt", date, place
for tripperson, time_underground in trippersons:
pto = models.PersonTrip(person_expedition = tripperson, place=place, date=date, time_underground=time_underground,
logbook_entry=lbo, is_logbook_entry_author=(tripperson == author))
@@ -156,7 +158,7 @@ def Parseloghtml01(year, expedition, txt):
tripid = mtripid and mtripid.group(1) or ""
tripheader = re.sub("?(?:[ab]|span)[^>]*>", "", tripheader)
- #print [tripheader]
+ print [tripheader]
#continue
tripdate, triptitle, trippeople = tripheader.split("|")
@@ -234,7 +236,7 @@ yearlinks = [
("1999", "1999/log.htm", Parseloghtml01),
("1998", "1998/log.htm", Parseloghtml01),
("1997", "1997/log.htm", Parseloghtml01),
- #("1996", "1996/log.htm", Parseloghtml01),
+ ("1996", "1996/log.htm", Parseloghtml01),
]
def SetDatesFromLogbookEntries(expedition):
@@ -303,7 +305,7 @@ def LoadLogbooks():
models.LogbookEntry.objects.all().delete()
expowebbase = os.path.join(settings.EXPOWEB, "years")
#yearlinks = [ ("2001", "2001/log.htm", Parseloghtml01), ] #overwrite
- #yearlinks = [ ("1997", "1997/log.htm", Parseloghtml01),] # overwrite
+ #yearlinks = [ ("1996", "1996/log.htm", Parseloghtml01),] # overwrite
for year, lloc, parsefunc in yearlinks:
expedition = models.Expedition.objects.filter(year = year)[0]
diff --git a/templates/index.html b/templates/index.html
index 0122bdd..bbc4312 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -7,11 +7,22 @@
The unfinished front page
Work down through an expedition page link
-Remaining work: continue to build up the network; tables of trips per year per person; parse 1996 logbook;
-continue to correct the name matching and spelling; detect T/U on log entries; match caves to log entries; see the cave list;
-simplify the survex parsing code (if necessary); vast front-page layout table of folks and caving trips and years;
-links between logbooks and survex blocks to cave things; where are the subcaves; mini-tree of survexblocks; connect sketches
-to caves to survey blocks and render thumbnailwise; all images to start appearing in pages; and so on
+Remaining work:
+
+
continue to build up the network;
+tables of trips per year per person;
+parse 1995-1976 logbooks;
+continue to correct the name matching and spelling;
+detect T/U on log entries;
+match caves to log entries;
+see the cave list;
+simplify the survex parsing code (if necessary);
+vast front-page layout table of folks and caving trips and years;
+links between logbooks and survex blocks to cave things;
+where are the subcaves;
+mini-tree of survexblocks;
+connect sketches to caves to survey blocks and render thumbnailwise;
+all images to start appearing in pages; and so on
{{message}}
diff --git a/templates/personexpedition.html b/templates/personexpedition.html
index bbbc067..07dcb54 100644
--- a/templates/personexpedition.html
+++ b/templates/personexpedition.html
@@ -9,32 +9,50 @@
{{message}}
-Needs links fore and back through expeditions attended by this person (or as a complete barchart type list with one date in bold)
-Needs lists below to be sorted by date, and the duplicates removed from survey role list
-Finally, a correspondence between these two columns
+Main page for expedition: {{personexpedition.expedition}}
-
-
-Date | Place | Role |
-{% for personrole in personexpedition.personrole_set.all %}
-
- {{personrole.survex_block.date}} |
- {{personrole.survex_block.survexpath}} |
- {{personrole.role}} |
-
+List of other expos by this person
+
+{% for otherpersonexpedition in personexpedition.person.personexpedition_set.all %}
+{% ifequal otherpersonexpedition personexpedition %}
+ | {{otherpersonexpedition.expedition.year}}
+{% else %}
+ | {{otherpersonexpedition.expedition.year}}
+{% endifequal %}
{% endfor %}
-
-
+
-
-
-Date | Title | Place |
-{% for persontrip in personexpedition.persontrip_set.all %}
-
- {{persontrip.date}} |
- {{persontrip.logbook_entry.title|safe}} |
- {{persontrip.place}} |
-
+Table of all trips and surveys aligned by date
+
+
+Date | Trips | Surveys |
+{% for persondate in personexpedition.GetPersonChronology %}
+
+ {{persondate.0}} |
+
+
+
+ |
+
+
+
+ {% for personsurvexroles in persondate.1.personroles.items %}
+
+ {{personsurvexroles.0}} |
+ {{personsurvexroles.1}} |
+
+ {% endfor %}
+
+ |
+
+
{% endfor %}
diff --git a/templates/survexblock.html b/templates/survexblock.html
index ef392df..dedf09f 100644
--- a/templates/survexblock.html
+++ b/templates/survexblock.html
@@ -29,10 +29,10 @@
Date: {{survexblock.date}}
@@ -40,7 +40,7 @@
-
+
{{ftext|survex_to_html}}