diff options
Diffstat (limited to 'expo')
-rw-r--r-- | expo/models.py | 41 | ||||
-rw-r--r-- | expo/randSent.py | 2 | ||||
-rw-r--r-- | expo/views_logbooks.py | 27 | ||||
-rw-r--r-- | expo/views_other.py | 13 |
4 files changed, 66 insertions, 17 deletions
diff --git a/expo/models.py b/expo/models.py index 26f6f91..3cc0492 100644 --- a/expo/models.py +++ b/expo/models.py @@ -12,8 +12,8 @@ from models_survex import * class Expedition(models.Model):
year = models.CharField(max_length=20, unique=True)
name = models.CharField(max_length=100)
- start_date = models.DateField(blank=True,null=True)
- end_date = models.DateField(blank=True,null=True)
+ date_from = models.DateField(blank=True,null=True)
+ date_to = models.DateField(blank=True,null=True)
def __unicode__(self):
return self.year
@@ -47,14 +47,24 @@ class Person(models.Model): blurb = models.TextField(blank=True,null=True)
class Meta:
verbose_name_plural = "People"
+
def __unicode__(self):
- return "%s %s" % (self.first_name, self.last_name)
+ if self.last_name:
+ return "%s %s" % (self.first_name, self.last_name)
+ return self.first_name
+
+ # this should be a member entry
+ def href(self):
+ if self.last_name:
+ return "%s_%s" % (self.first_name.lower(), self.last_name.lower())
+ return self.first_name.lower()
+
class PersonExpedition(models.Model):
expedition = models.ForeignKey(Expedition)
person = models.ForeignKey(Person)
- from_date = models.DateField(blank=True,null=True)
- to_date = models.DateField(blank=True,null=True)
+ date_from = models.DateField(blank=True,null=True)
+ date_to = models.DateField(blank=True,null=True)
is_guest = models.BooleanField(default=False)
nickname = models.CharField(max_length=100,blank=True,null=True)
@@ -86,8 +96,13 @@ class PersonExpedition(models.Model): def __unicode__(self):
return "%s: (%s)" % (self.person, self.expedition)
-
-
+
+ def name(self):
+ if self.nickname:
+ return "%s (%s) %s" % (self.person.first_name, self.nickname, self.person.last_name)
+ if self.person.last_name:
+ return "%s %s" % (self.person.first_name, self.person.last_name)
+ return self.person.first_name
#class LogbookSentanceRating(models.Model):
@@ -187,13 +202,18 @@ class Cave(models.Model): class LogbookEntry(models.Model):
date = models.DateField()
+ expedition = models.ForeignKey(Expedition,blank=True,null=True) # yes this is double-
author = models.ForeignKey(PersonExpedition,blank=True,null=True) # the person who writes it up doesn't have to have been on the trip
title = models.CharField(max_length=200)
cave = models.ForeignKey(Cave,blank=True,null=True)
place = models.CharField(max_length=100,blank=True,null=True)
text = models.TextField()
+
+ 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"
+ verbose_name_plural = "Logbook Entries"
# several PersonTrips point in to this object
def __unicode__(self):
@@ -206,9 +226,12 @@ class PersonTrip(models.Model): # possibly a trip has a plurality of triplets pointing into it
place = models.CharField(max_length=100)
date = models.DateField()
- time_underground = models.CharField(max_length=100)
+ time_underground = models.FloatField()
logbook_entry = models.ForeignKey(LogbookEntry)
is_logbook_entry_author = models.BooleanField()
+
+ persontrip_next = models.ForeignKey('PersonTrip', related_name='pnext', blank=True,null=True)
+ persontrip_prev = models.ForeignKey('PersonTrip', related_name='pprev', blank=True,null=True)
def __unicode__(self):
return "%s %s (%s)" % (self.person_expedition, self.place, self.date)
diff --git a/expo/randSent.py b/expo/randSent.py index 71be068..a99b974 100644 --- a/expo/randSent.py +++ b/expo/randSent.py @@ -15,6 +15,8 @@ def weighted_choice(lst): def randomLogbookSentence():
randSent={}
+ # needs to handle empty logbooks without crashing
+
#Choose a random logbook entry
randSent['entry']=LogbookEntry.objects.order_by('?')[0]
diff --git a/expo/views_logbooks.py b/expo/views_logbooks.py index ac1954a..1f3de23 100644 --- a/expo/views_logbooks.py +++ b/expo/views_logbooks.py @@ -1,6 +1,7 @@ from django.shortcuts import render_to_response
from troggle.expo.models import Expedition, Person, PersonExpedition, PersonTrip, LogbookEntry
import troggle.settings as settings
+from troggle.parsers.logbooks import LoadLogbookForExpedition
import search
import re
@@ -8,17 +9,33 @@ def personindex(request): persons = Person.objects.all()
return render_to_response('personindex.html', {'persons': persons, 'settings': settings})
-def person(request, person_id, first_name, last_name):
- if first_name == '' or last_name == '':
- person = Person.objects.filter(id = person_id)[0]
- else:
- person = Person.objects.filter(first_name = first_name, last_name = last_name)[0]
+def expedition(request, expeditionname):
+ year = int(expeditionname)
+ expedition = Expedition.objects.get(year=year)
+ expedition_next = Expedition.objects.filter(year=year+1) and Expedition.objects.get(year=year+1) or None
+ expedition_prev = Expedition.objects.filter(year=year-1) and Expedition.objects.get(year=year-1) or None
+ message = "No message"
+ if "reload" in request.GET:
+ message = LoadLogbookForExpedition(expedition)
+
+ 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})
+
+def person(request, name):
+ persons = Person.objects.all()
+ for person in persons:
+ if person.href() == name:
+ break
+ person = None
return render_to_response('person.html', {'person': person, 'settings': settings})
def logbookentry(request, logbookentry_id):
logbookentry = LogbookEntry.objects.filter(id = logbookentry_id)[0]
+
+
return render_to_response('logbookentry.html', {'logbookentry': logbookentry, 'settings': settings})
+
def logbookSearch(request, extra):
query_string = ''
found_entries = None
diff --git a/expo/views_other.py b/expo/views_other.py index 771816a..43cdbca 100644 --- a/expo/views_other.py +++ b/expo/views_other.py @@ -3,9 +3,12 @@ from troggle.expo.models import Cave, Expedition, Person, LogbookEntry, PersonEx import troggle.settings as settings
from django import forms
from django.db.models import Q
+from troggle.parsers.people import LoadPersonsExpos
import re
import randSent
+from django.core.urlresolvers import reverse
+
def stats(request):
statsDict={}
statsDict['expoCount'] = int(Expedition.objects.count())
@@ -15,8 +18,13 @@ def stats(request): return render_to_response('statistics.html', statsDict)
def frontPage(request):
-
- return render_to_response('index.html', {'randSent':randSent.randomLogbookSentence(),'settings':settings})
+ message = "no test message" #reverse('personn', kwargs={"name":"hkjhjh"})
+ if "reload" in request.GET:
+ message = LoadPersonsExpos()
+ message = "Reloaded personexpos"
+ #'randSent':randSent.randomLogbookSentence(),
+ expeditions = Expedition.objects.all()
+ return render_to_response('index.html', {'expeditions':expeditions, 'settings':settings, "message":message})
def calendar(request,year):
week=['S','S','M','T','W','T','F']
@@ -27,4 +35,3 @@ def calendar(request,year): dictToPass=locals()
dictToPass.update({'settings':settings})
return render_to_response('calendar.html', dictToPass)
-
\ No newline at end of file |