summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--expo/admin.py2
-rw-r--r--expo/models.py24
-rw-r--r--parsers/logbooks.py15
3 files changed, 27 insertions, 14 deletions
diff --git a/expo/admin.py b/expo/admin.py
index dd1be90..d8adbe2 100644
--- a/expo/admin.py
+++ b/expo/admin.py
@@ -90,7 +90,7 @@ admin.site.register(PersonRole)
admin.site.register(PersonExpedition,PersonExpeditionAdmin)
admin.site.register(Role)
admin.site.register(LogbookEntry, LogbookEntryAdmin)
-admin.site.register(PersonTrip)
+#admin.site.register(PersonTrip)
admin.site.register(QM, QMAdmin)
admin.site.register(Survey, SurveyAdmin)
admin.site.register(ScannedImage)
diff --git a/expo/models.py b/expo/models.py
index abe1870..13d0b7b 100644
--- a/expo/models.py
+++ b/expo/models.py
@@ -238,7 +238,7 @@ class LogbookEntry(TroggleModel):
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)
+ place = models.CharField(max_length=100,blank=True,null=True,help_text="Only use this if you haven't chosen a cave")
text = models.TextField()
slug = models.SlugField(max_length=50)
#href = models.CharField(max_length=100)
@@ -270,28 +270,36 @@ class PersonTrip(TroggleModel):
# this will be a foreign key of the place(s) the trip went through
# possibly a trip has a plurality of triplets pointing into it
- place = models.CharField(max_length=100)
- # should add cave thing here (copied from logbook maybe)
- date = models.DateField()
- time_underground = models.FloatField()
+ #place = models.CharField(max_length=100)
+ #date = models.DateField()
+ time_underground = models.FloatField(help_text="In decimal hours")
logbook_entry = models.ForeignKey(LogbookEntry)
is_logbook_entry_author = models.BooleanField()
+ def date(self):
+ return self.logbook_entry.date
+
+ def place(self):
+ if self.logbook_entry.cave:
+ return self.logbook_entry.cave
+ else:
+ return self.logbook_entry.place
+
#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)
+ return "%s %s (%s)" % (self.person_expedition, self.place(), self.date())
def get_persons_next_trip(self):
try:
- return PersonTrip.objects.filter(person_expedition__person=self.person_expedition.person, date__gt=self.date)[0]
+ return PersonTrip.objects.filter(person_expedition__person=self.person_expedition.person, person_expedition__date__gt=self.date)[0]
except:
return
def get_persons_previous_trip(self):
try:
- return PersonTrip.objects.filter(person_expedition__person=self.person_expedition.person, date__lt=self.date)[0]
+ return PersonTrip.objects.filter(person_expedition__person=self.person_expedition.person, person_expedition__date__lt=self.date)[0]
except:
return
diff --git a/parsers/logbooks.py b/parsers/logbooks.py
index 6017f15..281a1b2 100644
--- a/parsers/logbooks.py
+++ b/parsers/logbooks.py
@@ -87,12 +87,13 @@ def EnterLogIntoDbase(date, place, title, text, trippeople, expedition, logtime_
lbo, created=save_carefully(models.LogbookEntry, lookupAttribs, nonLookupAttribs)
for tripperson, time_underground in trippersons:
- lookupAttribs={'person_expedition':tripperson, 'date':date}
- nonLookupAttribs={'place':place,'time_underground':time_underground,'logbook_entry':lbo,'is_logbook_entry_author':(tripperson == author)}
+ lookupAttribs={'person_expedition':tripperson, 'logbook_entry':lbo}
+ nonLookupAttribs={'time_underground':time_underground,'is_logbook_entry_author':(tripperson == author)}
save_carefully(models.PersonTrip, lookupAttribs, nonLookupAttribs)
def ParseDate(tripdate, year):
+ """ Interprets dates in the expo logbooks and returns a correct datetime.date object """
mdatestandard = re.match("(\d\d\d\d)-(\d\d)-(\d\d)", tripdate)
mdategoof = re.match("(\d\d?)/0?(\d)/(20|19)?(\d\d)", tripdate)
if mdatestandard:
@@ -256,10 +257,14 @@ yearlinks = [
]
def SetDatesFromLogbookEntries(expedition):
+ """
+ Sets the date_from and date_to field for an expedition based on persontrips.
+ Then sets the expedition date_from and date_to based on the personexpeditions.
+ """
for personexpedition in expedition.personexpedition_set.all():
- persontrips = personexpedition.persontrip_set.order_by('date')
- personexpedition.date_from = min([persontrip.date for persontrip in persontrips] or [None])
- personexpedition.date_to = max([persontrip.date for persontrip in persontrips] or [None])
+ persontrips = personexpedition.persontrip_set.order_by('logbook_entry__date')
+ personexpedition.date_from = min([persontrip.logbook_entry.date for persontrip in persontrips] or [None])
+ personexpedition.date_to = max([persontrip.logbook_entry.date for persontrip in persontrips] or [None])
personexpedition.save()
# The below is all unnecessary, just use the built in get_previous_by_date and get_next_by_date