diff options
author | substantialnoninfringinguser <substantialnoninfringinguser@gmail.com> | 2009-05-13 05:52:15 +0100 |
---|---|---|
committer | substantialnoninfringinguser <substantialnoninfringinguser@gmail.com> | 2009-05-13 05:52:15 +0100 |
commit | d25fd97864611c3be326412ae4aa84e8ad01cd66 (patch) | |
tree | 0062d37e453ad21f98411f9a208e3c6b344412c7 /expo/views_logbooks.py | |
parent | 3b35b6bb76f41f9c086e43d31f45aee25403a507 (diff) | |
download | troggle-d25fd97864611c3be326412ae4aa84e8ad01cd66.tar.gz troggle-d25fd97864611c3be326412ae4aa84e8ad01cd66.tar.bz2 troggle-d25fd97864611c3be326412ae4aa84e8ad01cd66.zip |
[svn] My crusade to make our project more Djangoic.
Got rid of the url tags in template, replaced them with get_absolute_url method calls where possible. Adding get_absolute_url in models enables direct link to the public model views in admin. The use of get_absolute_url, which is the correct Django way of doing things, eliminates any need for the redundant "href" fields we were using. Those fields now need to be deleted from the models and from the parsers.
Made the context processor to pass settings to all templates actually work, although this was a little uglier than expected. I had to put in a new render_response to replace render_to_response. This is because Django uses Context, not RequestContext by default. I wish they would change this, it's annoying. Anyway, I deleted all the manual settings passing in the views.
I also eliminated a couple of unnecessary methods and stuff like that.
Copied from http://cucc@cucc.survex.com/svn/trunk/expoweb/troggle/, rev. 8244 by aaron @ 2/16/2009 8:31 AM
Diffstat (limited to 'expo/views_logbooks.py')
-rw-r--r-- | expo/views_logbooks.py | 40 |
1 files changed, 25 insertions, 15 deletions
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 |