summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsubstantialnoninfringinguser <substantialnoninfringinguser@gmail.com>2009-05-13 06:09:55 +0100
committersubstantialnoninfringinguser <substantialnoninfringinguser@gmail.com>2009-05-13 06:09:55 +0100
commit6137f8baaadccfa5019f36dfab1d43bbdb230629 (patch)
tree8ed279cefaa6a70f5f896a04f9008c51e28e98e8
parentd6244e1ef3786be26931b1a3d772c6788a354d34 (diff)
downloadtroggle-6137f8baaadccfa5019f36dfab1d43bbdb230629.tar.gz
troggle-6137f8baaadccfa5019f36dfab1d43bbdb230629.tar.bz2
troggle-6137f8baaadccfa5019f36dfab1d43bbdb230629.zip
[svn] Logbook entries are now at /YYYY-MM-DD/slug .
Try editing a logbook entry title in the admin now. The django built in auto slug field is fun and javascripty. Copied from http://cucc@cucc.survex.com/svn/trunk/expoweb/troggle/, rev. 8308 by aaron @ 3/16/2009 7:27 PM
-rw-r--r--expo/admin.py1
-rw-r--r--expo/models.py4
-rw-r--r--expo/views_logbooks.py4
-rw-r--r--parsers/logbooks.py7
-rw-r--r--templates/logbookentry.html2
-rw-r--r--urls.py2
6 files changed, 15 insertions, 5 deletions
diff --git a/expo/admin.py b/expo/admin.py
index a1d4fe0..9b8a399 100644
--- a/expo/admin.py
+++ b/expo/admin.py
@@ -24,6 +24,7 @@ class QMInline(admin.TabularInline):
#class LogbookEntryAdmin(VersionAdmin):
class LogbookEntryAdmin(admin.ModelAdmin):
+ prepopulated_fields = {'slug':("title",)}
search_fields = ('title','expedition__year')
#inlines = (QMInline,) #doesn't work because QM has two foreignkeys to Logbookentry- need workaround
diff --git a/expo/models.py b/expo/models.py
index 56fbf01..485468c 100644
--- a/expo/models.py
+++ b/expo/models.py
@@ -10,6 +10,7 @@ import os
from django.conf import settings
import datetime
from decimal import Decimal, getcontext
+from django.core.urlresolvers import reverse
getcontext().prec=2 #use 2 significant figures for decimal calculations
from models_survex import *
@@ -211,6 +212,7 @@ class LogbookEntry(TroggleModel):
cave = models.ForeignKey('Cave',blank=True,null=True)
place = models.CharField(max_length=100,blank=True,null=True)
text = models.TextField()
+ slug = models.SlugField(max_length=100)
#href = models.CharField(max_length=100)
@@ -224,7 +226,7 @@ class LogbookEntry(TroggleModel):
ordering = ('-date',)
def get_absolute_url(self):
- return settings.URL_ROOT + "/logbookentry/" + str(self.pk)
+ return settings.URL_ROOT + reverse('logbookentry',kwargs={'date':self.date,'slug':self.slug})
def __unicode__(self):
return "%s: (%s)" % (self.date, self.title)
diff --git a/expo/views_logbooks.py b/expo/views_logbooks.py
index 13468dc..894be2a 100644
--- a/expo/views_logbooks.py
+++ b/expo/views_logbooks.py
@@ -87,8 +87,8 @@ def newQMlink(logbookentry):
nextQMnumber=biggestQMnumber+1
return settings.URL_ROOT + r'/admin/expo/qm/add/?' + r'found_by=' + str(logbookentry.pk) +'&number=' + str(nextQMnumber)
-def logbookentry(request, logbookentry_pk):
- logbookentry = LogbookEntry.objects.get(pk = logbookentry_pk)
+def logbookentry(request, date, slug):
+ logbookentry = LogbookEntry.objects.get(date=date, slug=slug)
return render_response(request, 'logbookentry.html', {'logbookentry': logbookentry, 'newQMlink':newQMlink(logbookentry)})
diff --git a/parsers/logbooks.py b/parsers/logbooks.py
index 9566d2d..976d71a 100644
--- a/parsers/logbooks.py
+++ b/parsers/logbooks.py
@@ -6,6 +6,8 @@ import troggle.expo.models as models
from troggle.parsers.people import GetPersonExpeditionNameLookup
from troggle.parsers.cavetab import GetCaveLookup
+from django.template.defaultfilters import slugify
+
import csv
import re
import datetime
@@ -286,7 +288,7 @@ def SetDatesFromLogbookEntries(expedition):
# lprevlogbookentry = logbookentry
# This combined date / number key is a weird way of doing things. Use the primary key instead. If we are going to use the date for looking up entries, we should set it up to allow multiple results.
-# # order by date for setting the references
+ # order by date for setting the references
# lprevlogbookentry = None
# for logbookentry in expedition.logbookentry_set.order_by('date'):
# if lprevlogbookentry and lprevlogbookentry.date == logbookentry.date:
@@ -297,6 +299,9 @@ def SetDatesFromLogbookEntries(expedition):
# logbookentry.href = "%s" % logbookentry.date
# logbookentry.save()
# lprevlogbookentry = logbookentry
+ for logbookentry in expedition.logbookentry_set.all():
+ logbookentry.slug = slugify(logbookentry.title)
+ logbookentry.save()
def LoadLogbookForExpedition(expedition):
diff --git a/templates/logbookentry.html b/templates/logbookentry.html
index 812197a..89069e8 100644
--- a/templates/logbookentry.html
+++ b/templates/logbookentry.html
@@ -56,7 +56,9 @@
</tr>
{% endfor %}
</table>
+{% if newQMlink %}
<a href="{{newQMlink}}">Add QM found on this trip</a>
+{% endif %}
</div>
<div id="col1">
diff --git a/urls.py b/urls.py
index f63393e..409c864 100644
--- a/urls.py
+++ b/urls.py
@@ -23,7 +23,7 @@ urlpatterns = patterns('',
url(r'^expedition/(\d+)$', views_logbooks.expedition, name="expedition"),
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'^logbookentry/(?P<date>.*)/(?P<slug>.*)/?$', views_logbooks.logbookentry,name="logbookentry"),
url(r'^survexblock/(.+)$', views_caves.survexblock, name="survexblock"),
url(r'^cavehref/(.+)$', views_caves.cavehref, name="cave"),