diff options
author | substantialnoninfringinguser <substantialnoninfringinguser@gmail.com> | 2009-07-03 05:31:49 +0100 |
---|---|---|
committer | substantialnoninfringinguser <substantialnoninfringinguser@gmail.com> | 2009-07-03 05:31:49 +0100 |
commit | 8446047ab246b186f0404a1f8acbf719a6355a78 (patch) | |
tree | b5b9a1b32c82383a1f6088bd4c4b97bacf933875 /core | |
parent | dc19150eba28de83e06c47d6235c07309f92b36d (diff) | |
download | troggle-8446047ab246b186f0404a1f8acbf719a6355a78.tar.gz troggle-8446047ab246b186f0404a1f8acbf719a6355a78.tar.bz2 troggle-8446047ab246b186f0404a1f8acbf719a6355a78.zip |
[svn] Brief code cleanup.
Diffstat (limited to 'core')
-rw-r--r-- | core/models.py | 74 | ||||
-rw-r--r-- | core/search.py | 39 | ||||
-rw-r--r-- | core/views_caves.py | 22 | ||||
-rw-r--r-- | core/views_logbooks.py | 22 | ||||
-rw-r--r-- | core/views_other.py | 16 |
5 files changed, 46 insertions, 127 deletions
diff --git a/core/models.py b/core/models.py index 8dda56e..0c7e00d 100644 --- a/core/models.py +++ b/core/models.py @@ -18,8 +18,8 @@ logging.basicConfig(level=logging.DEBUG, filename=settings.LOGFILE,
filemode='w')
-#This class is for adding fields and methods which all of our models will have.
class TroggleModel(models.Model):
+ """This class is for adding fields and methods which all of our models will have."""
new_since_parsing = models.BooleanField(default=False, editable=False)
non_public = models.BooleanField(default=False)
def object_name(self):
@@ -29,22 +29,10 @@ class TroggleModel(models.Model): return urlparse.urljoin(settings.URL_ROOT, "/admin/core/" + self.object_name().lower() + "/" + str(self.pk))
class Meta:
- abstract = True
-
-class TroggleImageModel(ImageModel):
- new_since_parsing = models.BooleanField(default=False, editable=False)
-
- def object_name(self):
- return self._meta.object_name
-
- def get_admin_url(self):
- return urlparse.urljoin(settings.URL_ROOT, "/admin/core/" + self.object_name().lower() + "/" + str(self.pk))
-
-
- class Meta:
- abstract = True
+ abstract = True
class Expedition(TroggleModel):
+ """Represents a caving expedition"""
year = models.CharField(max_length=20, unique=True)
name = models.CharField(max_length=100)
date_from = models.DateField(blank=True,null=True)
@@ -61,15 +49,16 @@ class Expedition(TroggleModel): #return settings.URL_ROOT + "/expedition/%s" % self.year
return urlparse.urljoin(settings.URL_ROOT, reverse('expedition',args=[self.year]))
-
# lose these two functions (inelegant, and we may create a file with the dates that we can load from)
def GuessDateFrom(self):
+ """Returns the date of the first logbook entry in the expedition"""
try:
return self.logbookentry_set.order_by('date')[0].date
except IndexError:
pass
- def GuessDateTo(self): # returns the date of the last logbook entry in the expedition
+ def GuessDateTo(self):
+ """Returns the date of the last logbook entry in the expedition"""
try:
return self.logbookentry_set.order_by('date')[-1].date
except IndexError:
@@ -90,42 +79,27 @@ class Expedition(TroggleModel): date+=datetime.timedelta(days=1)
return res
-
-
-
class Person(TroggleModel):
+ """Represents a person, also used as the profile model"""
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
is_vfho = models.BooleanField(help_text="VFHO is the Vereines für Höhlenkunde in Obersteier, a nearby Austrian caving club.")
- mug_shot = models.CharField(max_length=100, blank=True,null=True)
+ mug_shot = models.CharField(max_length=100, blank=True,null=True) #obsolete, remove soon
blurb = models.TextField(blank=True,null=True)
+ orderref = models.CharField(max_length=200) # for alphabetic
- #href = models.CharField(max_length=200)
- orderref = models.CharField(max_length=200) # for alphabetic
-
- #the below have been removed and made methods. I'm not sure what the b in bisnotable stands for. - AC 16 Feb
- #notability = models.FloatField() # for listing the top 20 people
- #bisnotable = models.BooleanField()
user = models.OneToOneField(User, null=True, blank=True)
def get_absolute_url(self):
return urlparse.urljoin(settings.URL_ROOT,reverse('person',kwargs={'first_name':self.first_name,'last_name':self.last_name}))
class Meta:
- verbose_name_plural = "People"
- class Meta:
+ verbose_name_plural = "People"
ordering = ('orderref',) # "Wookey" makes too complex for: ('last_name', 'first_name')
def __unicode__(self):
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 notability(self):
notability = Decimal(0)
@@ -136,18 +110,9 @@ class Person(TroggleModel): def bisnotable(self):
return self.notability() > Decimal(1)/Decimal(3)
-
- #def Sethref(self):
- #if self.last_name:
- #self.href = self.first_name.lower() + "_" + self.last_name.lower()
- #self.orderref = self.last_name + " " + self.first_name
- #else:
- # self.href = self.first_name.lower()
- #self.orderref = self.first_name
- #self.notability = 0.0 # set temporarily
-
class PersonExpedition(TroggleModel):
+ """"""
expedition = models.ForeignKey(Expedition)
person = models.ForeignKey(Person)
date_from = models.DateField(blank=True,null=True)
@@ -234,8 +199,9 @@ class PersonExpedition(TroggleModel): return urlparse.urljoin(settings.URL_ROOT, reverse('personexpedition',kwargs={'first_name':self.person.first_name,'last_name':self.person.last_name,'year':self.expedition.year}))
class LogbookEntry(TroggleModel):
+ """Represents trips of all kinds. This is the central model of Troggle."""
date = models.DateField()
- expedition = models.ForeignKey(Expedition,blank=True,null=True) # yes this is double-
+ expedition = models.ForeignKey(Expedition,blank=True,null=True)
author = models.ForeignKey(PersonExpedition,blank=True,null=True) # the person who writes it up doesn't have to have been on the trip.
# Re: the above- so this field should be "typist" or something, not "author". - AC 15 jun 09
title = models.CharField(max_length=200)
@@ -243,16 +209,9 @@ class LogbookEntry(TroggleModel): 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)
-
-
- #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:
+ verbose_name_plural = "Logbook Entries"
ordering = ('-date',)
def get_absolute_url(self):
@@ -302,7 +261,6 @@ class PersonTrip(TroggleModel): except:
return
-# def get_persons_previous_trip(self):
#
# move following classes into models_cave
#
@@ -574,7 +532,7 @@ class QM(TroggleModel): return res
photoFileStorage = FileSystemStorage(location=settings.PHOTOS_ROOT, base_url=settings.PHOTOS_URL)
-class Photo(TroggleImageModel):
+class Photo(ImageModel, TroggleModel):
caption = models.CharField(max_length=1000,blank=True,null=True)
contains_logbookentry = models.ForeignKey(LogbookEntry,blank=True,null=True)
contains_person = models.ManyToManyField(Person,blank=True,null=True)
@@ -606,7 +564,7 @@ def get_scan_path(instance, filename): number="%02d" % instance.survey.wallet_number + str(instance.survey.wallet_letter) #using %02d string formatting because convention was 2009#01
return os.path.join('./',year,year+r'#'+number,instance.contents+str(instance.number_in_wallet)+r'.jpg')
-class ScannedImage(TroggleImageModel):
+class ScannedImage(ImageModel, TroggleModel):
file = models.ImageField(storage=scansFileStorage, upload_to=get_scan_path)
scanned_by = models.ForeignKey(Person,blank=True, null=True)
scanned_on = models.DateField(null=True)
diff --git a/core/search.py b/core/search.py deleted file mode 100644 index 5ec2ce2..0000000 --- a/core/search.py +++ /dev/null @@ -1,39 +0,0 @@ -import re
-
-from django.db.models import Q
-
-# search script from http://www.julienphalip.com/blog/2008/08/16/adding-search-django-site-snap/
-
-def normalize_query(query_string,
- findterms=re.compile(r'"([^"]+)"|(\S+)').findall,
- normspace=re.compile(r'\s{2,}').sub):
- ''' Splits the query string in invidual keywords, getting rid of unecessary spaces
- and grouping quoted words together.
- Example:
-
- >>> normalize_query(' some random words "with quotes " and spaces')
- ['some', 'random', 'words', 'with quotes', 'and', 'spaces']
-
- '''
- return [normspace(' ', (t[0] or t[1]).strip()) for t in findterms(query_string)]
-
-def get_query(query_string, search_fields):
- ''' Returns a query, that is a combination of Q objects. That combination
- aims to search keywords within a model by testing the given search fields.
-
- '''
- query = None # Query to search for every search term
- terms = normalize_query(query_string)
- for term in terms:
- or_query = None # Query to search for a given term in each field
- for field_name in search_fields:
- q = Q(**{"%s__icontains" % field_name: term})
- if or_query is None:
- or_query = q
- else:
- or_query = or_query | q
- if query is None:
- query = or_query
- else:
- query = query & or_query
- return query
\ No newline at end of file diff --git a/core/views_caves.py b/core/views_caves.py index f4327f3..b51fb0b 100644 --- a/core/views_caves.py +++ b/core/views_caves.py @@ -4,7 +4,7 @@ import troggle.settings as settings from django.forms.models import formset_factory
import search
from django.core.urlresolvers import reverse
-from troggle.alwaysUseRequestContext import render_response # see views_logbooks for explanation on this.
+from utils import render_with_context # see views_logbooks for explanation on this.
from django.http import HttpResponseRedirect
from django.conf import settings
import re, urlparse
@@ -21,20 +21,20 @@ 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(kataster_number=kataster_number) for kataster_number in notablecavehrefs ]
- return render_response(request,'caveindex.html', {'caves': caves, 'notablecaves':notablecaves})
+ return render_with_context(request,'caveindex.html', {'caves': caves, 'notablecaves':notablecaves})
def cave(request, cave_id='', offical_name=''):
cave=getCave(cave_id)
if cave.non_public and not request.user.is_authenticated():
- return render_response(request,'nonpublic.html', {'instance': cave})
+ return render_with_context(request,'nonpublic.html', {'instance': cave})
else:
- return render_response(request,'cave.html', {'cave': cave})
+ return render_with_context(request,'cave.html', {'cave': cave})
def qm(request,cave_id,qm_id,year,grade=None):
year=int(year)
try:
qm=getCave(cave_id).get_QMs().get(number=qm_id,found_by__date__year=year)
- return render_response(request,'qm.html',locals())
+ return render_with_context(request,'qm.html',locals())
except QM.DoesNotExist:
url=urlparse.urljoin(settings.URL_ROOT, r'/admin/expo/qm/add/'+'?'+ r'number=' + qm_id)
@@ -46,7 +46,7 @@ def qm(request,cave_id,qm_id,year,grade=None): 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_response(request,'entrance.html', {'cave': cave,
+ return render_with_context(request,'entrance.html', {'cave': cave,
'entrance': cave_and_ent.entrance,
'letter': cave_and_ent.entrance_letter,})
@@ -54,7 +54,7 @@ def survexblock(request, survexpath): survexblock = models.SurvexBlock.objects.get(survexpath=survexpath)
#ftext = survexblock.filecontents()
ftext = survexblock.text
- return render_response(request,'survexblock.html', {'survexblock':survexblock, 'ftext':ftext, })
+ return render_with_context(request,'survexblock.html', {'survexblock':survexblock, 'ftext':ftext, })
def subcave(request, cave_id, subcave):
print subcave
@@ -67,7 +67,7 @@ def subcave(request, cave_id, subcave): if subcaveUrlSegment:
subcave=subcave.children.get(title=subcaveUrlSegment)
print subcave
- return render_response(request,'subcave.html', {'subcave': subcave,'cave':cave})
+ return render_with_context(request,'subcave.html', {'subcave': subcave,'cave':cave})
def caveSearch(request):
query_string = ''
@@ -77,13 +77,13 @@ def caveSearch(request): entry_query = search.get_query(query_string, ['underground_description','official_name',])
found_entries = Cave.objects.filter(entry_query)
- return render_response(request,'cavesearch.html',
+ return render_with_context(request,'cavesearch.html',
{ 'query_string': query_string, 'found_entries': found_entries,})
def surveyindex(request):
surveys=Survey.objects.all()
expeditions=Expedition.objects.order_by("-year")
- return render_response(request,'survey.html',locals())
+ return render_with_context(request,'survey.html',locals())
def survey(request,year,wallet_number):
surveys=Survey.objects.all()
@@ -96,4 +96,4 @@ def survey(request,year,wallet_number): planSketches=current_survey.scannedimage_set.filter(contents='plan')
elevationSketches=current_survey.scannedimage_set.filter(contents='elevation')
- return render_response(request,'survey.html', locals())
+ return render_with_context(request,'survey.html', locals())
diff --git a/core/views_logbooks.py b/core/views_logbooks.py index 5fa550c..351d648 100644 --- a/core/views_logbooks.py +++ b/core/views_logbooks.py @@ -5,11 +5,11 @@ from django.db import models from troggle.parsers.logbooks import LoadLogbookForExpedition
from troggle.parsers.people import GetPersonExpeditionNameLookup
from troggle.core.forms import PersonForm
-from django.core.urlresolvers import reverse
+from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
-# 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
+
+from utils import render_with_context
import search
import re
@@ -37,7 +37,7 @@ def personindex(request): if person.bisnotable():
notablepersons.append(person)
- return render_response(request,'personindex.html', {'persons': persons, 'personss':personss, 'notablepersons':notablepersons, })
+ return render_with_context(request,'personindex.html', {'persons': persons, 'personss':personss, 'notablepersons':notablepersons, })
def expedition(request, expeditionname):
year = int(expeditionname)
@@ -49,7 +49,7 @@ def expedition(request, expeditionname): message = LoadLogbookForExpedition(expedition)
#message = str(GetPersonExpeditionNameLookup(expedition).keys())
logbookentries = expedition.logbookentry_set.order_by('date')
- return render_response(request,'expedition.html', {'expedition': expedition, 'expedition_next':expedition_next, 'expedition_prev':expedition_prev, 'logbookentries':logbookentries, 'message':message, })
+ return render_with_context(request,'expedition.html', {'expedition': expedition, 'expedition_next':expedition_next, 'expedition_prev':expedition_prev, 'logbookentries':logbookentries, 'message':message, })
def get_absolute_url(self):
return ('expedition', (expedition.year))
@@ -64,7 +64,7 @@ def person(request, first_name='', last_name='', ): person.save()
return HttpResponseRedirect(reverse('profiles_select_profile'))
- return render_response(request,'person.html', {'person': person, })
+ return render_with_context(request,'person.html', {'person': person, })
def get_absolute_url(self):
return settings.URL_ROOT + self.first_name + '_' + self.last_name
@@ -77,7 +77,7 @@ 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_response(request,'personexpedition.html', {'personexpedition': personexpedition, })
+ return render_with_context(request,'personexpedition.html', {'personexpedition': personexpedition, })
def newQMlink(logbookentry):
biggestQMnumber=0
@@ -101,10 +101,10 @@ def logbookentry(request, date, slug): logbookentry = LogbookEntry.objects.filter(date=date, slug=slug)
if len(logbookentry)>1:
- return render_response(request, 'object_list.html',{'object_list':logbookentry})
+ return render_with_context(request, 'object_list.html',{'object_list':logbookentry})
else:
logbookentry=logbookentry[0]
- return render_response(request, 'logbookentry.html', {'logbookentry': logbookentry, 'newQMlink':newQMlink(logbookentry)})
+ return render_with_context(request, 'logbookentry.html', {'logbookentry': logbookentry, 'newQMlink':newQMlink(logbookentry)})
def logbookSearch(request, extra):
query_string = ''
@@ -114,11 +114,11 @@ def logbookSearch(request, extra): entry_query = search.get_query(query_string, ['text','title',])
found_entries = LogbookEntry.objects.filter(entry_query)
- return render_response(request,'logbooksearch.html',
+ return render_with_context(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_response(request,'personform.html', {'form':form,})
\ No newline at end of file + return render_with_context(request,'personform.html', {'form':form,})
\ No newline at end of file diff --git a/core/views_other.py b/core/views_other.py index b3da852..07a4a75 100644 --- a/core/views_other.py +++ b/core/views_other.py @@ -8,7 +8,7 @@ import re import randSent
from django.http import HttpResponse, HttpResponseRedirect
from django.core.urlresolvers import reverse
-from troggle.alwaysUseRequestContext import render_response # see views_logbooks for explanation on this.
+from utils import render_with_context
from core.models import *
def showrequest(request):
@@ -20,7 +20,7 @@ def stats(request): statsDict['caveCount'] = int(Cave.objects.count())
statsDict['personCount'] = int(Person.objects.count())
statsDict['logbookEntryCount'] = int(LogbookEntry.objects.count())
- return render_response(request,'statistics.html', statsDict)
+ return render_with_context(request,'statistics.html', statsDict)
def frontpage(request):
message = "no test message" #reverse('personn', kwargs={"name":"hkjhjh"})
@@ -37,7 +37,7 @@ def frontpage(request): cave = Cave
photo = Photo
from django.contrib.admin.templatetags import log
- return render_response(request,'frontpage.html', locals())
+ return render_with_context(request,'frontpage.html', locals())
def todo(request):
message = "no test message" #reverse('personn', kwargs={"name":"hkjhjh"})
@@ -51,7 +51,7 @@ def todo(request): #'randSent':randSent.randomLogbookSentence(),
expeditions = Expedition.objects.order_by("-year")
totallogbookentries = LogbookEntry.objects.count()
- return render_response(request,'index.html', {'expeditions':expeditions, 'all':'all', 'totallogbookentries':totallogbookentries, "message":message})
+ return render_with_context(request,'index.html', {'expeditions':expeditions, 'all':'all', 'totallogbookentries':totallogbookentries, "message":message})
def calendar(request,year):
week=['S','S','M','T','W','T','F']
@@ -59,7 +59,7 @@ def calendar(request,year): expedition=Expedition.objects.get(year=year)
PersonExpeditions=expedition.personexpedition_set.all()
- return render_response(request,'calendar.html', locals())
+ return render_with_context(request,'calendar.html', locals())
def controlPanel(request):
jobs_completed=[]
@@ -77,11 +77,11 @@ def controlPanel(request): jobs_completed.append(item)
else:
if request.user.is_authenticated(): #The user is logged in, but is not a superuser.
- return render_response(request,'controlPanel.html', {'caves':Cave.objects.all(),'error':'You must be a superuser to use that feature.'})
+ return render_with_context(request,'controlPanel.html', {'caves':Cave.objects.all(),'error':'You must be a superuser to use that feature.'})
else:
return HttpResponseRedirect(reverse('auth_login'))
- return render_response(request,'controlPanel.html', {'caves':Cave.objects.all(),'expeditions':Expedition.objects.all(),'jobs_completed':jobs_completed})
+ return render_with_context(request,'controlPanel.html', {'caves':Cave.objects.all(),'expeditions':Expedition.objects.all(),'jobs_completed':jobs_completed})
def downloadCavetab(request):
from export import tocavetab
@@ -152,4 +152,4 @@ def ajax_test(request): mimetype="application/json")
def eyecandy(request):
- return render_response(request,'eyecandy.html', {})
+ return render_with_context(request,'eyecandy.html', {})
|