diff options
-rw-r--r-- | context.py | 7 | ||||
-rw-r--r-- | expo/admin.py | 6 | ||||
-rw-r--r-- | expo/context.py | 4 | ||||
-rw-r--r-- | expo/models.py | 60 | ||||
-rw-r--r-- | expo/views.py | 1 | ||||
-rw-r--r-- | expo/views_caves.py | 41 | ||||
-rw-r--r-- | expo/views_logbooks.py | 40 | ||||
-rw-r--r-- | expo/views_other.py | 10 | ||||
-rw-r--r-- | parsers/people.py | 2 | ||||
-rw-r--r-- | parsers/surveys.py | 35 | ||||
-rw-r--r-- | settings.py | 2 | ||||
-rw-r--r-- | templates/calendar.html | 15 | ||||
-rw-r--r-- | templates/cave.html | 2 | ||||
-rw-r--r-- | templates/caveindex.html | 4 | ||||
-rw-r--r-- | templates/expedition.html | 104 | ||||
-rw-r--r-- | templates/logbookentry.html | 15 | ||||
-rw-r--r-- | templates/person.html | 2 | ||||
-rw-r--r-- | templates/personexpedition.html | 10 | ||||
-rw-r--r-- | templates/personindex.html | 12 | ||||
-rw-r--r-- | templates/survey.html | 14 | ||||
-rw-r--r-- | urls.py | 10 |
21 files changed, 220 insertions, 176 deletions
diff --git a/context.py b/context.py deleted file mode 100644 index 9afc33e..0000000 --- a/context.py +++ /dev/null @@ -1,7 +0,0 @@ -import troggle.settings as settings - -def settingsContext(request): - return { 'settings.MEDIA_URL':settings.MEDIA_URL, - 'settings.URL_ROOT':settings.URL_ROOT, - 'settings.ADMIN_MEDIA_PREFIX':settings.ADMIN_MEDIA_PREFIX, - 'settings.SVX_URL':settings.SVX_URL }
\ No newline at end of file diff --git a/expo/admin.py b/expo/admin.py index d5a7ddd..afad1ff 100644 --- a/expo/admin.py +++ b/expo/admin.py @@ -29,8 +29,12 @@ class PersonAdmin(admin.ModelAdmin): class PersonExpeditionAdmin(admin.ModelAdmin):
search_fields = ('person__first_name','expedition__year')
+class CaveAdmin(admin.ModelAdmin):
+ search_fields = ('official_name','kataster_number','unofficial_number')
+ extra = 4
+
admin.site.register(Photo)
-admin.site.register(Cave)
+admin.site.register(Cave, CaveAdmin)
admin.site.register(Area)
admin.site.register(OtherCaveName)
admin.site.register(CaveAndEntrance)
diff --git a/expo/context.py b/expo/context.py new file mode 100644 index 0000000..06215ce --- /dev/null +++ b/expo/context.py @@ -0,0 +1,4 @@ +from django.conf import settings + +def settings_context(request): + return { 'settings':settings }
\ No newline at end of file diff --git a/expo/models.py b/expo/models.py index aa84110..bbe052c 100644 --- a/expo/models.py +++ b/expo/models.py @@ -22,6 +22,10 @@ class Expedition(models.Model): class Meta:
ordering = ('year',)
+ get_latest_by = 'date_from'
+
+ def get_absolute_url(self):
+ return settings.URL_ROOT + "/expedition/%s" % self.year
# lose these two functions (inelegant, and we may create a file with the dates that we can load from)
def GuessDateFrom(self):
@@ -62,11 +66,13 @@ class Person(models.Model): blurb = models.TextField(blank=True,null=True)
href = models.CharField(max_length=200)
- orderref = models.CharField(max_length=200) # for alphabetic
+ orderref = models.CharField(max_length=200) # for alphabetic
notability = models.FloatField() # for listing the top 20 people
bisnotable = models.BooleanField()
user = models.ForeignKey(User, unique=True, null=True, blank=True)
-
+ def get_absolute_url(self):
+ return settings.URL_ROOT + "/person/%s_%s/" % (self.first_name, self.last_name)
+
class Meta:
verbose_name_plural = "People"
class Meta:
@@ -76,12 +82,13 @@ class Person(models.Model): if self.last_name:
return "%s %s" % (self.first_name, self.last_name)
return self.first_name
-
+
+# Below are no longer needed. Use {{ person.personexpedition_set.all.0.expedition }} for Firstexpedition, and {{ person.personexpedition_set.latest.expedition }} for Lastexpedition
# these ought to be possible by piping through |min in the template, or getting the first of an ordered list
- def Firstexpedition(self):
- return self.personexpedition_set.order_by('expedition')[0]
- def Lastexpedition(self):
- return self.personexpedition_set.order_by('-expedition')[0]
+# def Firstexpedition(self):
+# return self.personexpedition_set.order_by('expedition')[0]
+# def Lastexpedition(self):
+# return self.personexpedition_set.order_by('-expedition')[0]
def Sethref(self):
if self.last_name:
@@ -99,6 +106,14 @@ class PersonExpedition(models.Model): date_from = models.DateField(blank=True,null=True)
date_to = models.DateField(blank=True,null=True)
is_guest = models.BooleanField(default=False)
+ COMMITTEE_CHOICES = (
+ ('leader','Expo leader'),
+ ('medical','Expo medical officer'),
+ ('treasurer','Expo treasurer'),
+ ('sponsorship','Expo sponsorship coordinator'),
+ ('research','Expo research coordinator'),
+ )
+ expo_committee_position = models.CharField(blank=True,null=True,choices=COMMITTEE_CHOICES,max_length=200)
nickname = models.CharField(max_length=100,blank=True,null=True)
def GetPersonroles(self):
@@ -112,6 +127,7 @@ class PersonExpedition(models.Model): class Meta:
ordering = ('expedition',)
+ get_latest_by = 'date_from'
def GetPersonChronology(self):
res = { }
@@ -130,8 +146,8 @@ class PersonExpedition(models.Model): # needs converting dict into list
return sorted(res.items())
- # don't use tabs.
- # possibly not useful functions anyway
+ # possibly not useful functions anyway -JT
+ # if you can find a better way to make the expo calendar table, be my guest. It isn't possible to do this logic in a django template without writing custom tags.
def ListDays(self):
if self.date_from and self.date_to:
res=[]
@@ -151,6 +167,7 @@ class PersonExpedition(models.Model): def __unicode__(self):
return "%s: (%s)" % (self.person, self.expedition)
+ #why is the below a function in personexpedition, rather than in person? - AC 14 Feb 09
def name(self):
if self.nickname:
return "%s (%s) %s" % (self.person.first_name, self.nickname, self.person.last_name)
@@ -158,6 +175,8 @@ class PersonExpedition(models.Model): return "%s %s" % (self.person.first_name, self.person.last_name)
return self.person.first_name
+ def get_absolute_url(self):
+ return settings.URL_ROOT + '/personexpedition/' + str(self.person.first_name) + '_' + str(self.person.last_name) + '/' +self.expedition.year
class LogbookEntry(models.Model):
date = models.DateField()
@@ -167,22 +186,26 @@ class LogbookEntry(models.Model): cave = models.ForeignKey('Cave',blank=True,null=True)
place = models.CharField(max_length=100,blank=True,null=True)
text = models.TextField()
- href = models.CharField(max_length=100)
+ #href = models.CharField(max_length=100)
- # turn these into functions
- logbookentry_next = models.ForeignKey('LogbookEntry', related_name='pnext', blank=True,null=True)
- logbookentry_prev = models.ForeignKey('LogbookEntry', related_name='pprev', blank=True,null=True)
+ #logbookentry_next = models.ForeignKey('LogbookEntry', related_name='pnext', blank=True,null=True)
+ #logbookentry_prev = models.ForeignKey('LogbookEntry', related_name='pprev', blank=True,null=True)
+
class Meta:
verbose_name_plural = "Logbook Entries"
# several PersonTrips point in to this object
class Meta:
ordering = ('-date',)
-
+
+ def get_absolute_url(self):
+ return settings.URL_ROOT + "/logbookentry/" + str(self.pk)
+
def __unicode__(self):
return "%s: (%s)" % (self.date, self.title)
+
class PersonTrip(models.Model):
person_expedition = models.ForeignKey(PersonExpedition)
@@ -252,13 +275,14 @@ class Cave(models.Model): href = models.CharField(max_length=100)
- def Sethref(self):
+ def get_absolute_url(self):
if self.kataster_number:
- self.href = self.kataster_number
+ href = self.kataster_number
elif self.unofficial_number:
- self.href = self.unofficial_number
+ href = self.unofficial_number
else:
- self.href = official_name.lower()
+ href = official_name.lower()
+ return settings.URL_ROOT + '/cave/' + self.href + '/'
def __unicode__(self):
diff --git a/expo/views.py b/expo/views.py index 4183f68..337989a 100644 --- a/expo/views.py +++ b/expo/views.py @@ -1,4 +1,5 @@ # primary namespace
+
import view_surveys
import views_caves
import views_survex
diff --git a/expo/views_caves.py b/expo/views_caves.py index 684f4b4..f2ddad8 100644 --- a/expo/views_caves.py +++ b/expo/views_caves.py @@ -1,57 +1,57 @@ -from django.shortcuts import render_to_response
from troggle.expo.models import Cave, CaveAndEntrance, Survey, Expedition
import troggle.expo.models as models
import troggle.settings as settings
from troggle.expo.forms import CaveForm
import search
+from troggle.alwaysUseRequestContext import render_response # see views_logbooks for explanation on this.
def caveindex(request):
caves = Cave.objects.all()
notablecavehrefs = [ "161", "204", "258", "76" ] # could detect notability by trips and notability of people who have been down them
notablecaves = [ Cave.objects.get(href=href) for href in notablecavehrefs ]
- return render_to_response('caveindex.html', {'caves': caves, 'notablecaves':notablecaves, 'settings': settings})
+ return render_response(request,'caveindex.html', {'caves': caves, 'notablecaves':notablecaves})
-def cavehref(request, href):
- cave = Cave.objects.get(href=href)
- return render_to_response('cave.html', {'cave': cave, 'settings': settings})
+def cavehref(request, cave_id='', offical_name=''):
+ try:
+ cave = Cave.objects.get(kataster_number=cave_id)
+ except DoesNotExist:
+ cave = Cave.objects.get(unofficial_number=cave_id)
+ return render_response(request,'cave.html', {'cave': cave,})
def ent(request, cave_id, ent_letter):
cave = Cave.objects.filter(kataster_number = cave_id)[0]
cave_and_ent = CaveAndEntrance.objects.filter(cave = cave).filter(entrance_letter = ent_letter)[0]
- return render_to_response('entrance.html', {'cave': cave,
+ return render_response(request,'entrance.html', {'cave': cave,
'entrance': cave_and_ent.entrance,
- 'letter': cave_and_ent.entrance_letter,
- 'settings': settings})
+ 'letter': cave_and_ent.entrance_letter,})
+
def survexblock(request, survexpath):
survexblock = models.SurvexBlock.objects.get(survexpath=survexpath)
#ftext = survexblock.filecontents()
ftext = survexblock.text
- return render_to_response('survexblock.html', {'survexblock':survexblock, 'ftext':ftext, 'settings':settings })
+ return render_response(request,'survexblock.html', {'survexblock':survexblock, 'ftext':ftext, })
def caveArea(request, name):
cavearea = models.CaveArea.objects.get(name = name)
cave = cavearea.cave
- return render_to_response('cavearea.html', {'cavearea': cavearea, 'cave': cave, 'settings':settings })
+ return render_response(request,'cavearea.html', {'cavearea': cavearea, 'cave': cave,})
def caveSearch(request):
query_string = ''
found_entries = None
if ('q' in request.GET) and request.GET['q'].strip():
query_string = request.GET['q']
- entry_query = search.get_query(query_string, ['underground_description','official_name',])
- found_entries = Cave.objects.filter(entry_query)
+ entry_query = search.get_query(query_string, ['underground_description','official_name',])
+ found_entries = Cave.objects.filter(entry_query)
- return render_to_response('cavesearch.html',
- { 'query_string': query_string, 'found_entries': found_entries, 'settings': settings})
- #context_instance=RequestContext(request))
+ return render_response(request,'cavesearch.html',
+ { 'query_string': query_string, 'found_entries': found_entries,})
def surveyindex(request):
surveys=Survey.objects.all()
expeditions=Expedition.objects.all()
- dictToPass=locals()
- dictToPass.update({'settings':settings})
- return render_to_response('survey.html',dictToPass)
+ return render_response(request,'survey.html',locals())
def survey(request,year,wallet_number):
surveys=Survey.objects.all()
@@ -63,9 +63,6 @@ def survey(request,year,wallet_number): notes=current_survey.scannedimage_set.filter(contents='notes')
planSketches=current_survey.scannedimage_set.filter(contents='plan')
elevationSketches=current_survey.scannedimage_set.filter(contents='elevation')
-
- dictToPass=locals()
- dictToPass.update({'settings':settings})
- return render_to_response('survey.html',dictToPass)
+ return render_response(request,'survey.html', locals())
diff --git a/expo/views_logbooks.py b/expo/views_logbooks.py index a179c50..edf2f30 100644 --- a/expo/views_logbooks.py +++ b/expo/views_logbooks.py @@ -6,11 +6,15 @@ from troggle.parsers.logbooks import LoadLogbookForExpedition from troggle.parsers.people import GetPersonExpeditionNameLookup
from troggle.expo.forms import PersonForm
+# Django uses Context, not RequestContext when you call render_to_response. We always want to use RequestContext, so that django adds the context from settings.TEMPLATE_CONTEXT_PROCESSORS. This way we automatically get necessary settings variables passed to each template. So we use a custom method, render_response instead of render_to_response. Hopefully future Django releases will make this unnecessary.
+from troggle.alwaysUseRequestContext import render_response
+
import search
import re
def personindex(request):
persons = Person.objects.all()
+ # From what I can tell, "persons" seems to be the table rows, while "personss" is the table columns. - AC 16 Feb 09
personss = [ ]
ncols = 5
nc = (len(persons) + ncols - 1) / ncols
@@ -18,7 +22,7 @@ def personindex(request): personss.append(persons[i * nc: (i + 1) * nc])
notablepersons = Person.objects.filter(bisnotable=True)
- return render_to_response('personindex.html', {'persons': persons, 'personss':personss, 'notablepersons':notablepersons, 'settings': settings})
+ return render_response(request,'personindex.html', {'persons': persons, 'personss':personss, 'notablepersons':notablepersons, })
def expedition(request, expeditionname):
year = int(expeditionname)
@@ -30,22 +34,28 @@ def expedition(request, expeditionname): message = LoadLogbookForExpedition(expedition)
#message = str(GetPersonExpeditionNameLookup(expedition).keys())
logbookentries = expedition.logbookentry_set.order_by('date')
- return render_to_response('expedition.html', {'expedition': expedition, 'expedition_next':expedition_next, 'expedition_prev':expedition_prev, 'logbookentries':logbookentries, 'message':message, 'settings': settings})
+ return render_response(request,'expedition.html', {'expedition': expedition, 'expedition_next':expedition_next, 'expedition_prev':expedition_prev, 'logbookentries':logbookentries, 'message':message, })
+
+def person(request, first_name='', last_name=''):
+ person = Person.objects.get(first_name = first_name, last_name = last_name)
+ return render_response(request,'person.html', {'person': person, })
+
+ def get_absolute_url(self):
+ return settings.URL_ROOT + self.first_name + '_' + self.last_name
-def person(request, name):
- person = Person.objects.get(href=name)
- return render_to_response('person.html', {'person': person, 'settings': settings})
+#def person(request, name):
+# person = Person.objects.get(href=name)
+#
-def personexpedition(request, name, expeditionname):
- person = Person.objects.get(href=name)
- year = int(expeditionname)
+def personexpedition(request, first_name='', last_name='', year=''):
+ person = Person.objects.get(first_name = first_name, last_name = last_name)
expedition = Expedition.objects.get(year=year)
personexpedition = person.personexpedition_set.get(expedition=expedition)
- return render_to_response('personexpedition.html', {'personexpedition': personexpedition, 'settings': settings})
+ return render_response(request,'personexpedition.html', {'personexpedition': personexpedition, })
-def logbookentry(request, logbookentry_id):
- logbookentry = LogbookEntry.objects.filter(href = logbookentry_id)[0]
- return render_to_response('logbookentry.html', {'logbookentry': logbookentry, 'settings': settings})
+def logbookentry(request, logbookentry_pk):
+ logbookentry = LogbookEntry.objects.get(pk = logbookentry_pk)
+ return render_response(request, 'logbookentry.html', {'logbookentry': logbookentry, })
def logbookSearch(request, extra):
query_string = ''
@@ -55,11 +65,11 @@ def logbookSearch(request, extra): entry_query = search.get_query(query_string, ['text','title',])
found_entries = LogbookEntry.objects.filter(entry_query)
- return render_to_response('logbooksearch.html',
- { 'query_string': query_string, 'found_entries': found_entries, 'settings': settings})
+ return render_response(request,'logbooksearch.html',
+ { 'query_string': query_string, 'found_entries': found_entries, })
#context_instance=RequestContext(request))
def personForm(request,pk):
person=Person.objects.get(pk=pk)
form=PersonForm(instance=person)
- return render_to_response('personform.html', {'form':form,'settings':settings})
\ No newline at end of file + return render_response(request,'personform.html', {'form':form,})
\ No newline at end of file diff --git a/expo/views_other.py b/expo/views_other.py index e413297..d890a6e 100644 --- a/expo/views_other.py +++ b/expo/views_other.py @@ -1,4 +1,3 @@ -from django.shortcuts import render_to_response
from troggle.expo.models import Cave, Expedition, Person, LogbookEntry, PersonExpedition
import troggle.settings as settings
from django import forms
@@ -9,6 +8,7 @@ from troggle.parsers.survex import LoadAllSurvexBlocks import randSent
from django.core.urlresolvers import reverse
+from troggle.alwaysUseRequestContext import render_response # see views_logbooks for explanation on this.
def stats(request):
statsDict={}
@@ -16,7 +16,7 @@ def stats(request): statsDict['caveCount'] = int(Cave.objects.count())
statsDict['personCount'] = int(Person.objects.count())
statsDict['logbookEntryCount'] = int(LogbookEntry.objects.count())
- return render_to_response('statistics.html', statsDict)
+ return render_response(request,'statistics.html', statsDict)
def frontpage(request):
message = "no test message" #reverse('personn', kwargs={"name":"hkjhjh"})
@@ -29,7 +29,7 @@ def frontpage(request): #'randSent':randSent.randomLogbookSentence(),
expeditions = Expedition.objects.order_by("-year")
- return render_to_response('index.html', {'expeditions':expeditions, 'settings':settings, 'all':'all', "message":message})
+ return render_response(request,'index.html', {'expeditions':expeditions, 'all':'all', "message":message})
def calendar(request,year):
week=['S','S','M','T','W','T','F']
@@ -37,6 +37,4 @@ def calendar(request,year): expedition=Expedition.objects.get(year=year)
PersonExpeditions=expedition.personexpedition_set.all()
- dictToPass=locals()
- dictToPass.update({'settings':settings})
- return render_to_response('calendar.html', dictToPass)
+ return render_response(request,'calendar.html', locals())
diff --git a/parsers/people.py b/parsers/people.py index 2fda46e..9c7940c 100644 --- a/parsers/people.py +++ b/parsers/people.py @@ -58,7 +58,7 @@ def LoadPersonsExpos(): years = headers[5:] years.append("2008") for year in years: - expedition = models.Expedition(year = year, name = "CUCC expo%s" % year) + expedition = models.Expedition(year = year, name = "CUCC expo %s" % year) expedition.save() diff --git a/parsers/surveys.py b/parsers/surveys.py index 687bbb0..cd9781b 100644 --- a/parsers/surveys.py +++ b/parsers/surveys.py @@ -1,28 +1,24 @@ import sys
import os
-import urllib
import types
-#sys.path.append('C:\\Expo\\expoweb')
+sys.path.append('C:\\Expo\\expoweb')
from troggle import *
-#os.environ['DJANGO_SETTINGS_MODULE']='troggle.settings'
+os.environ['DJANGO_SETTINGS_MODULE']='troggle.settings'
import troggle.settings as settings
import troggle.expo.models as models
-import troggle.expo.fileAbstraction as fileAbstraction
#import settings
#import expo.models as models
import csv
import re
import datetime
-import cStringIO
-surveytab = fileAbstraction.readFile("Surveys.csv")
-dialect=csv.Sniffer().sniff(surveytab)
-surveyreader = csv.reader(cStringIO.StringIO(surveytab),dialect=dialect)
-print surveyreader
+surveytab = open(os.path.join(settings.SURVEYS, "Surveys.csv"))
+dialect=csv.Sniffer().sniff(surveytab.read())
+surveytab.seek(0,0)
+surveyreader = csv.reader(surveytab,dialect=dialect)
headers = surveyreader.next()
header = dict(zip(headers, range(len(headers)))) #set up a dictionary where the indexes are header names and the values are column numbers
-print header
# test if the expeditions have been added yet
if len(models.Expedition.objects.all())==0:
@@ -31,10 +27,9 @@ if len(models.Expedition.objects.all())==0: models.ScannedImage.objects.all().delete()
models.Survey.objects.all().delete()
for survey in surveyreader:
- print type(survey), survey
walletNumberLetter = re.match(r'(?P<number>\d*)(?P<letter>[a-zA-Z]*)',survey[header['Survey Number']]) #I hate this, but some surveys have a letter eg 2000#34a. This line deals with that.
# print walletNumberLetter.groups()
-
+
surveyobj = models.Survey(
expedition = models.Expedition.objects.filter(year=survey[header['Year']])[0],
wallet_number = walletNumberLetter.group('number'),
@@ -48,16 +43,15 @@ for survey in surveyreader: pass
surveyobj.save()
print "added survey " + survey[header['Year']] + "#" + surveyobj.wallet_number
-
+
# add survey scans
def parseSurveyScans(year):
- yearDirList = fileAbstraction.dirsAsList(year.year)
- for surveyFolder in yearDirList:
- print surveyFolder
+ yearPath=os.path.join(settings.SURVEYS, year.year)
+ yearFileList=os.listdir(yearPath)
+ for surveyFolder in yearFileList:
try:
surveyNumber=re.match(r'\d\d\d\d#0*(\d+)',surveyFolder).groups()
- scanList=fileAbstraction.filesAsList(year.year, surveyFolder)
- print "BAR: ", year.year, surveyFolder, scanList
+ scanList=os.listdir(os.path.join(yearPath,surveyFolder))
except AttributeError:
print surveyFolder + " ignored"
continue
@@ -65,7 +59,6 @@ def parseSurveyScans(year): for scan in scanList:
try:
scanChopped=re.match(r'(?i).*(notes|elev|plan|elevation|extend)(\d*)\.(png|jpg|jpeg)',scan).groups()
- print "BAR: ", scanChopped
scanType,scanNumber,scanFormat=scanChopped
except AttributeError:
print "Adding scans: " + scan + " ignored"
@@ -82,14 +75,14 @@ def parseSurveyScans(year): survey=models.Survey.objects.get_or_create(wallet_number=surveyNumber, expedition=year)[0]
except models.Survey.MultipleObjectsReturned:
survey=models.Survey.objects.filter(wallet_number=surveyNumber, expedition=year)[0]
-
+
scanObj = models.ScannedImage(
file=os.path.join(year.year, surveyFolder, scan),
contents=scanType,
number_in_wallet=scanNumber,
survey=survey
)
- print "Added scanned image at " + str(scanObj)
+ #print "Added scanned image at " + str(scanObj)
scanObj.save()
for year in models.Expedition.objects.filter(year__gte=2000): #expos since 2000, because paths and filenames were nonstandard before then
diff --git a/settings.py b/settings.py index 9ad299d..f22bd36 100644 --- a/settings.py +++ b/settings.py @@ -46,7 +46,7 @@ TEMPLATE_LOADERS = ( # 'django.template.loaders.eggs.load_template_source', ) -TEMPLATE_CONTEXT_PROCESSORS = ( "django.core.context_processors.auth", "troggle.context.settingsContext") +TEMPLATE_CONTEXT_PROCESSORS = ( "django.core.context_processors.auth", "expo.context.settings_context", ) LOGIN_REDIRECT_URL = '/' diff --git a/templates/calendar.html b/templates/calendar.html index b4ad49d..5ff2778 100644 --- a/templates/calendar.html +++ b/templates/calendar.html @@ -21,6 +21,18 @@ {% endblock %}
+{% block contentheader %}
+ <h2>Expedition members present calendar for {{ expedition.year }}</h2>
+ <table style="margin:0 auto">
+ <tr>
+ <td class='yes' width="10"></td><td>Expedition member present in Austria</td>
+ </tr>
+ <tr>
+ <td class='no' width="10"></td><td>Expedition member absent in Austria</td>
+ </tr></table>
+ <br />
+{% endblock%}
+
{% block content %}
{% if expedition %}
<table>
@@ -47,7 +59,8 @@ {% for personexpedition in expedition.personexpedition_set.all %}
<tr>
<td class="name">
- {{ personexpedition.person }}
+ <a href="">{{ personexpedition.person }}</a>
+
</td>
{% if personexpedition.ListDaysTF %}
{% for dateTF in personexpedition.ListDaysTF %}
diff --git a/templates/cave.html b/templates/cave.html index 495e2f7..c97b9cd 100644 --- a/templates/cave.html +++ b/templates/cave.html @@ -10,7 +10,7 @@ {% if logbookentry.title %}
<tr>
<td>{{logbookentry.date}}</td>
- <td><a href="{% url logbookentry logbookentry.href %}">{{logbookentry.title|safe}}</a></td>
+ <td><a href="{{ logbookentry.get_absolute_url }}">{{logbookentry.title|safe}}</a></td>
</tr>
{% endif %}
{% endfor %}
diff --git a/templates/caveindex.html b/templates/caveindex.html index b38e69f..d9e4748 100644 --- a/templates/caveindex.html +++ b/templates/caveindex.html @@ -8,14 +8,14 @@ <h3>Notable caves</h3>
<ul>
{% for cave in notablecaves %}
- <li> <a href="{% url cave cave.href %}">{{cave.official_name|wiki_to_html_short}} ({{cave.href}})</a> </li>
+ <li> <a href="{{ cave.get_absolute_url }}">{{cave.official_name|wiki_to_html_short}} ({{cave.href}})</a> </li>
{% endfor %}
</ul>
<h3>All caves</h3>
<ul>
{% for cave in caves %}
- <li> <a href="{% url cave cave.href %}">{{cave.official_name|wiki_to_html_short}} ({{cave.href}})</a> </li>
+ <li> <a href="{{ cave.get_absolute_url }}">{{cave.official_name|wiki_to_html_short}} ({{cave.href}})</a> </li>
{% endfor %}
</ul>
diff --git a/templates/expedition.html b/templates/expedition.html index e4f12f0..b6be4ac 100644 --- a/templates/expedition.html +++ b/templates/expedition.html @@ -1,52 +1,52 @@ -{% extends "base.html" %} -{% load wiki_markup %} - -{% block title %}Expedition {{expedition.name}}{% endblock %} - -{% block content %} -<h2>{{expedition.name}}: {{expedition.date_from}} - {{expedition.date_to}}</h2> - -<div id="col2"> -<table class="prevnextexpeditions"> -<tr> - <td>{% if expedition_prev %}< < <a href="{% url expedition expedition_prev.year %}">{{expedition_prev.year}}</a>{% endif %}</td> - <td>{% if expedition_next %}> > <a href="{% url expedition expedition_next.year %}">{{expedition_next.year}}</a>{% endif %}</td> -</tr> -</ul> - -<table class="expeditionpersonlist"> -<tr><th>Caver</th><th>From</th><th>To</th></tr> -{% for personexpedition in expedition.personexpedition_set.all %} - <tr> - <td><a href="{% url personexpedition personexpedition.person.href personexpedition.expedition.year %}">{{personexpedition.person}}</a></td> - <td>{{personexpedition.date_from}}</td> - <td>{{personexpedition.date_to}}</td> - </tr> -{% endfor %} -</table> -</div> - -<div id="col1"> -<h3>Logbook entries</h3> -<form action="" method="GET"><input type="submit" name="reload" value="Reload"></form> -<p>debug message: {{message}}</p> - -<table class="expeditionlogbooks"> -<tr><th>Date</th><th>Title</th><th>Author</th><th>Place</th></tr> -{% for logbookentry in logbookentries %} - <tr> - <td>{{logbookentry.date}}</td> - <td><a href="{% url logbookentry logbookentry.href %}">{{logbookentry.title|safe}}</td> - <td><a href="{% url personexpedition logbookentry.author.person.href logbookentry.author.expedition.year %}">{{logbookentry.author.name}}</a></td> - - {% if logbookentry.cave %} - <td><a href="{% url cave logbookentry.cave.href %}">{{logbookentry.place}}</a></td> - {% else %} - <td>{{logbookentry.place}}</td> - {% endif %} - </tr> -{% endfor %} -</table> -</div> - -{% endblock %} +{% extends "base.html" %}
+{% load wiki_markup %}
+
+{% block title %}Expedition {{expedition.name}}{% endblock %}
+
+{% block content %}
+<h2>{{expedition.name}}: {{expedition.date_from}} - {{expedition.date_to}}</h2>
+
+<div id="col2">
+<table class="prevnextexpeditions">
+<tr>
+ <td>{% if expedition_prev %}< < <a href="{{ expedition_prev.get_absolute_url }}">{{expedition_prev.year}}</a>{% endif %}</td>
+ <td>{% if expedition_next %}> > <a href="{{ expedition_next.get_absolute_url }}">{{expedition_next.year}}</a>{% endif %}</td>
+</tr>
+</ul>
+
+<table class="expeditionpersonlist">
+<tr><th>Caver</th><th>From</th><th>To</th></tr>
+{% for personexpedition in expedition.personexpedition_set.all %}
+ <tr>
+ <td><a href="{{ personexpedition.get_absolute_url }}">{{personexpedition.person}}</a></td>
+ <td>{{personexpedition.date_from}}</td>
+ <td>{{personexpedition.date_to}}</td>
+ </tr>
+{% endfor %}
+</table>
+</div>
+
+<div id="col1">
+<h3>Logbook entries</h3>
+<form action="" method="GET"><input type="submit" name="reload" value="Reload"></form>
+<p>debug message: {{message}}</p>
+
+<table class="expeditionlogbooks">
+<tr><th>Date</th><th>Title</th><th>Author</th><th>Place</th></tr>
+{% for logbookentry in logbookentries %}
+ <tr>
+ <td>{{logbookentry.date}}</td>
+ <td><a href="{{ logbookentry.get_absolute_url }}">{{logbookentry.title|safe}}</td>
+ <td><a href="{{ logbookentry.author.get_absolute_url }}">{{logbookentry.author.name}}</a></td>
+
+ {% if logbookentry.cave %}
+ <td><a href="{{ logbookentry.cave.get_absolute_url }}">{{logbookentry.place}}</a></td>
+ {% else %}
+ <td>{{logbookentry.place}}</td>
+ {% endif %}
+ </tr>
+{% endfor %}
+</table>
+</div>
+
+{% endblock %}
diff --git a/templates/logbookentry.html b/templates/logbookentry.html index 613f2bf..2bfb564 100644 --- a/templates/logbookentry.html +++ b/templates/logbookentry.html @@ -4,23 +4,24 @@ {% block title %}Logbook {{logbookentry.id}}{% endblock %}
{% block content %}
+
<h2>{{logbookentry.title|safe}}</h2>
<div id="col2">
-<p><a href="{% url expedition logbookentry.expedition.year %}">{{logbookentry.expedition.name}}</a></p>
+<p><a href="{{ logbookentry.expedition.get_absolute_url }}">{{logbookentry.expedition.name}}</a></p>
{% if logbookentry.cave %}
- <p>place: <a href="{% url cave logbookentry.cave.href %}">{{logbookentry.place}}</p>
+ <p>place: <a href="{{ logbookentry.cave.get_absolute_url }}">{{logbookentry.place}}</p>
{% else %}
<p>{{logbookentry.place}}</p>
{% endif %}
<p>
{% if logbookentry.get_previous_by_date %}
- <a href="{% url logbookentry logbookentry.get_previous_by_date.href %}">{{logbookentry.get_previous_by_date.date}}</a>
+ <a href="{{ logbookentry.get_previous_by_date.get_absolute_url }}">{{logbookentry.get_previous_by_date.date}}</a>
{% endif %}
{% if logbookentry.get_next_by_date %}
- <a href="{% url logbookentry logbookentry.get_next_by_date.href %}">{{logbookentry.get_next_by_date.date}}</a>
+ <a href="{{ logbookentry.get_next_by_date.get_absolute_url }}">{{logbookentry.get_next_by_date.date}}</a>
{% endif %}
</p>
@@ -33,7 +34,7 @@ {% else %}
<td>
{% endifequal %}
- <a href="{% url personexpedition persontrip.person_expedition.person.href persontrip.person_expedition.expedition.year %}">{{persontrip.person_expedition.person}}</a>
+ <a href="{{ persontrip.person_expedition.get_absolute_url }}">{{persontrip.person_expedition.person}}</a>
</td>
<td>
@@ -44,12 +45,12 @@ <td>
{% if persontrip.get_previous_by_date %}
- <a href="{% url logbookentry persontrip.get_previous_by_date.logbook_entry.href %}">{{persontrip.get_previous_by_date.date}}</a>
+ <a href="{{ persontrip.get_previous_by_date.logbook_entry.get_absolute_url }}">{{persontrip.get_previous_by_date.date}}</a>
{% endif %}
</td>
<td>
{% if persontrip.get_next_by_date %}
- <a href="{% url logbookentry persontrip.get_next_by_date.logbook_entry.href %}">{{persontrip.get_next_by_date.date}}</a>
+ <a href="{{ persontrip.get_next_by_date.logbook_entry.get_absolute_url }}">{{persontrip.get_next_by_date.date}}</a>
{% endif %}
</td>
</tr>
diff --git a/templates/person.html b/templates/person.html index 140aa8d..8f8c820 100644 --- a/templates/person.html +++ b/templates/person.html @@ -8,7 +8,7 @@ <p>{{person|wiki_to_html_short}} has been on expo in the following years:</p>
<p>
{% for personexpedition in person.personexpedition_set.all %}
- | <a href="{% url personexpedition personexpedition.person.href personexpedition.expedition.year %}">{{personexpedition.expedition.year}}</a>
+ | <a href="{{ personexpedition.get_absolute_url }}">{{personexpedition.expedition.year}}</a>
{% endfor %}
</p>
diff --git a/templates/personexpedition.html b/templates/personexpedition.html index e1e481b..ca1080c 100644 --- a/templates/personexpedition.html +++ b/templates/personexpedition.html @@ -9,8 +9,8 @@ <h3>{{message}}</h3>
-<p><b><a href="{% url expedition personexpedition.expedition.year %}">Main page for expedition: {{personexpedition.expedition}}</a></b></p>
-<p><b><a href="{% url person personexpedition.person.href %}">Main page for person: {{personexpedition.person}}</a></b></p>
+<p><b><a href="{{ personexpedition.expedition.get_absolute_url }}">Main page for expedition: {{personexpedition.expedition}}</a></b></p>
+<p><b><a href="{{ personexpedition.person.get_absolute_url }}">Main page for person: {{personexpedition.person}}</a></b></p>
<p>List of other expos by this person</p>
<p>
@@ -18,7 +18,7 @@ {% ifequal otherpersonexpedition personexpedition %}
| <b>{{otherpersonexpedition.expedition.year}}</b>
{% else %}
- | <a href="{% url personexpedition personexpedition.person.href otherpersonexpedition.expedition.year %}">{{otherpersonexpedition.expedition.year}}</a>
+ | <a href="{{ personexpedition.get_absolute_url }}">{{otherpersonexpedition.expedition.year}}</a>
{% endifequal %}
{% endfor %}
</p>
@@ -35,10 +35,10 @@ <table>
{% for persontrip in persondate.1.persontrips %}
<tr>
- <td class="trip"><a href="{% url logbookentry persontrip.logbook_entry.href %}">{{persontrip.logbook_entry.title|safe}}</a></td>
+ <td class="trip"><a href="{{ persontrip.logbook_entry.get_absolute_url }}">{{persontrip.logbook_entry.title|safe}}</a></td>
{% if persontrip.logbook_entry.cave %}
- <td><a href="{% url cave persontrip.logbook_entry.cave.href %}">{{persontrip.place}}</a></td>
+ <td><a href="{{ persontrip.logbook_entry.cave.get_absolute_url }}">{{persontrip.place}}</a></td>
{% else %}
<td>{{persontrip.place}}</td>
{% endif %}
diff --git a/templates/personindex.html b/templates/personindex.html index 5ffbe4d..e684ad8 100644 --- a/templates/personindex.html +++ b/templates/personindex.html @@ -10,9 +10,9 @@ <tr><th>Person</th><th>First</th><th>Last</th><th>Notability</th></tr>
{% for person in notablepersons %}
<tr>
- <td><a href="{% url person person.href%}">{{person|wiki_to_html_short}}</a></td>
- <td><a href="{% url personexpedition person.href person.Firstexpedition.expedition.year %}">{{person.Firstexpedition.expedition.year}}</a></td>
- <td><a href="{% url personexpedition person.href person.Lastexpedition.expedition.year %}">{{person.Lastexpedition.expedition.year}}</a></td>
+ <td><a href="{{ person.get_absolute_url }}">{{person|wiki_to_html_short}}</a></td>
+ <td><a href="{{ person.personexpedition_set.all.0.get_absolute_url }}">{{ person.personexpedition_set.all.0.expedition.year }}</a></td>
+ <td><a href="{{ person.personexpedition_set.latest.get_absolute_url }}">{{ person.personexpedition_set.latest.expedition.year }}</a></td>
<td>{{person.notability}}</td>
</tr>
{% endfor %}
@@ -28,9 +28,9 @@ <tr><th>Person</th><th>First</th><th>Last</th></tr>
{% for person in persons %}
<tr>
- <td><a href="{% url person person.href%}">{{person|wiki_to_html_short}}</a></td>
- <td><a href="{% url personexpedition person.href person.Firstexpedition.expedition.year %}">{{person.Firstexpedition.expedition.year}}</a></td>
- <td><a href="{% url personexpedition person.href person.Lastexpedition.expedition.year %}">{{person.Lastexpedition.expedition.year}}</a></td>
+ <td><a href="{{ person.get_absolute_url }}">{{person|wiki_to_html_short}}</a></td>
+ <td><a href="{{ person.personexpedition_set.all.0.get_absolute_url }}">{{person.personexpedition_set.all.0.expedition.year}}</a></td>
+ <td><a href="{{ person.personexpedition_set.latest.get_absolute_url }}">{{person.personexpedition_set.latest.expedition.year}}</a></td>
</tr>
{% endfor %}
</table>
diff --git a/templates/survey.html b/templates/survey.html index 8f9e190..e2e8c80 100644 --- a/templates/survey.html +++ b/templates/survey.html @@ -85,7 +85,7 @@ select { margin:0.5em } <center>
<select id="expeditionChooser" class="centre" onChange="redirectYear()">
- {% for expedition in expeditions.reverse %}
+ {% for expedition in expeditions %}
<option label="{{ expedition }}" value="{{ expedition }}" {% ifequal expedition current_expedition %}selected{% endifequal %}>
@@ -103,9 +103,9 @@ select { margin:0.5em } survey progress table </div>
</div>
- <h3>Choose a wallet number</h3>
- <center>
- <select id="surveyChooser" class="centre" onChange="redirectSurvey()">
+ <h3>Choose a wallet number </h3>
+ <center>
+ <select id="surveyChooser" class="centre" onChange="redirectSurvey()">
<option label="show all" value="">
{% for survey in current_expedition.survey_set.all %}
</option>
@@ -113,6 +113,7 @@ select { margin:0.5em } {% ifequal survey current_survey %}
selected
{% endifequal %}>
+ {{ survey }}
</option>
{% endfor %}
@@ -195,8 +196,9 @@ select { margin:0.5em } </p>
</div>
{% endfor %}
- <div class="figure"> <a href="{{ settings.URL_ROOT }}admin/expo/scannedimage/add/"> <img src="{{ settings.URL_ROOT }}{{ settings.ADMIN_MEDIA_PREFIX }}img/admin/icon_addlink.gif" /> Add a new scanned notes page. </a> (to be improved) </div>
+ <div class="figure"> <a href="{{ settings.URL_ROOT }}admin/expo/scannedimage/add/"> <img src="{{ settings.URL_ROOT }}{{ settings.ADMIN_MEDIA_PREFIX }}img/admin/icon_addlink.gif" /> Add a new scanned notes page. </a> </div>
</div>
+ <br class="clearfloat" />
<div id="survexFileContent" class="behind"> survex file editor, keeping file in original structure <br />
who entered by </div>
<div id="printedCentrelineContent" class="behind"> centreline </div>
@@ -212,7 +214,7 @@ select { margin:0.5em } </p>
</div>
{% endfor %}
- <div class="figure"> <a href="{{ settings.URL_ROOT }}admin/expo/scannedimage/add/"> <img src="{{ settings.URL_ROOT }}{{ settings.ADMIN_MEDIA_PREFIX }}img/admin/icon_addlink.gif" /> Add a new scanned notes page. </a> (to be improved) </div>
+ <div class="figure"> <a href="{{ settings.URL_ROOT }}admin/expo/scannedimage/add/"> <img src="{{ settings.URL_ROOT }}{{ settings.ADMIN_MEDIA_PREFIX }}img/admin/icon_addlink.gif" /> Add a new scanned sketch. </a> </div>
</div>
<div id="tunnelXMLfileContent" class="behind"> link to tunnel xml file. potentially instance of tunnel applet... </div>
<div id="mainSketchIntegrationContent" class="behind"> link to main sketch file </div>
@@ -15,9 +15,13 @@ urlpatterns = patterns('', url(r'^caveindex$', views_caves.caveindex, name="caveindex"),
url(r'^personindex$', views_logbooks.personindex, name="personindex"),
- url(r'^person/(.+)$', views_logbooks.person, name="person"),
+
+ #(r'^person/(?P<person_id>\d*)/?$', views_logbooks.person),
+ url(r'^person/(?P<first_name>[A-Z]*[a-z]*)[^a-zA-Z]*(?P<last_name>[A-Z]*[a-z]*)/?', views_logbooks.person, name="person"),
+ #url(r'^person/(\w+_\w+)$', views_logbooks.person, name="person"),
+
url(r'^expedition/(\d+)$', views_logbooks.expedition, name="expedition"),
- url(r'^personexpedition/(.+?)/(\d+)$', views_logbooks.personexpedition, name="personexpedition"),
+ url(r'^personexpedition/(?P<first_name>[A-Z]*[a-z]*)[^a-zA-Z]*(?P<last_name>[A-Z]*[a-z]*)/(?P<year>\d+)/?$', views_logbooks.personexpedition, name="personexpedition"),
url(r'^logbookentry/(.+)$', views_logbooks.logbookentry,name="logbookentry"),
url(r'^survexblock/(.+)$', views_caves.survexblock, name="survexblock"),
@@ -48,7 +52,7 @@ urlpatterns = patterns('', url(r'^statistics/?$', views_other.stats, name="stats"),
- url(r'^calendar/(?P<year>\d\d\d\d)?$', views_other.calendar, name="calendar"),
+ url(r'^calendar/(?P<year>\d\d\d\d)/?$', views_other.calendar, name="calendar"),
url(r'^survey/?$', surveyindex, name="survey"),
(r'^survey/(?P<year>\d\d\d\d)\#(?P<wallet_number>\d*)$', survey),
|