summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorSam Wenham <sam@wenhams.co.uk>2019-07-19 01:04:18 +0100
committerSam Wenham <sam@wenhams.co.uk>2019-07-19 01:04:18 +0100
commitde22b071b0749fef13ea3c53faaed1adb3191356 (patch)
treefc66284dca70014ee395f6a14f4972ef8addc3e3 /core
parent08a41941f9e2b35b16548624d5070216dd933f79 (diff)
downloadtroggle-de22b071b0749fef13ea3c53faaed1adb3191356.tar.gz
troggle-de22b071b0749fef13ea3c53faaed1adb3191356.tar.bz2
troggle-de22b071b0749fef13ea3c53faaed1adb3191356.zip
Improve README
Make new style QMs from survexfiles work
Diffstat (limited to 'core')
-rw-r--r--core/admin.py6
-rw-r--r--core/models.py44
-rw-r--r--core/models_survex.py9
-rw-r--r--core/views_caves.py8
4 files changed, 41 insertions, 26 deletions
diff --git a/core/admin.py b/core/admin.py
index ca38cfb..392e346 100644
--- a/core/admin.py
+++ b/core/admin.py
@@ -95,11 +95,11 @@ class PersonAdmin(TroggleModelAdmin):
class QMAdmin(TroggleModelAdmin):
search_fields = ('found_by__cave__kataster_number','number','found_by__date')
- list_display = ('__unicode__','grade','found_by','ticked_off_by')
+ list_display = ('__unicode__','grade','found_by','ticked_off_by','nearest_station')
list_display_links = ('__unicode__',)
- list_editable = ('found_by','ticked_off_by','grade')
+ list_editable = ('found_by','ticked_off_by','grade','nearest_station')
list_per_page = 20
- raw_id_fields=('found_by','ticked_off_by')
+ raw_id_fields=('found_by','ticked_off_by','nearest_station')
class PersonExpeditionAdmin(TroggleModelAdmin):
diff --git a/core/models.py b/core/models.py
index 9529582..46a86da 100644
--- a/core/models.py
+++ b/core/models.py
@@ -10,14 +10,13 @@ from django.db.models import Min, Max
from django.conf import settings
from decimal import Decimal, getcontext
from django.core.urlresolvers import reverse
-from imagekit.models import ImageModel
+from imagekit.models import ProcessedImageField #ImageModel
from django.template import Context, loader
import settings
getcontext().prec=2 #use 2 significant figures for decimal calculations
from troggle.core.models_survex import *
-
def get_related_by_wikilinks(wiki_text):
found=re.findall(settings.QM_PATTERN,wiki_text)
res=[]
@@ -98,11 +97,11 @@ class Expedition(TroggleModel):
return res
def day_min(self):
- res = self.expeditionday_set.all()
+ res = self.Expeditionday_set.all()
return res and res[0] or None
def day_max(self):
- res = self.expeditionday_set.all()
+ res = self.Expeditionday_set.all()
return res and res[len(res) - 1] or None
@@ -114,9 +113,12 @@ class ExpeditionDay(TroggleModel):
ordering = ('date',)
def GetPersonTrip(self, personexpedition):
- personexpeditions = self.persontrip_set.filter(expeditionday=self)
+ personexpeditions = self.Persontrip_set.filter(expeditionday=self)
return personexpeditions and personexpeditions[0] or None
+ def __unicode__(self):
+ return str(self.expedition) + ' ' + str(self.date)
+
#
# single Person, can go on many years
#
@@ -462,7 +464,7 @@ class Cave(TroggleModel):
return unicode(self.slug())
def get_QMs(self):
- return QM.objects.filter(found_by__cave_slug=self.caveslug_set.all())
+ return QM.objects.filter(nearest_station__block__cave__caveslug=self.caveslug_set.all())
def new_QM_number(self, year=datetime.date.today().year):
"""Given a cave and the current year, returns the next QM number."""
@@ -739,20 +741,20 @@ class NewSubCave(TroggleModel):
return unicode(self.name)
class QM(TroggleModel):
- #based on qm.csv in trunk/expoweb/1623/204 which has the fields:
- #"Number","Grade","Area","Description","Page reference","Nearest station","Completion description","Comment"
+ # based on qm.csv in trunk/expoweb/1623/204 which has the fields:
+ # "Number","Grade","Area","Description","Page reference","Nearest station","Completion description","Comment"
found_by = models.ForeignKey(LogbookEntry, related_name='QMs_found',blank=True, null=True )
ticked_off_by = models.ForeignKey(LogbookEntry, related_name='QMs_ticked_off',null=True,blank=True)
- #cave = models.ForeignKey(Cave)
- #expedition = models.ForeignKey(Expedition)
+ # cave = models.ForeignKey(Cave)
+ # expedition = models.ForeignKey(Expedition)
number = models.IntegerField(help_text="this is the sequential number in the year", )
GRADE_CHOICES=(
- ('A', 'A: Large obvious lead'),
- ('B', 'B: Average lead'),
- ('C', 'C: Tight unpromising lead'),
- ('D', 'D: Dig'),
- ('X', 'X: Unclimbable aven')
+ ('A', 'A: Large obvious lead'),
+ ('B', 'B: Average lead'),
+ ('C', 'C: Tight unpromising lead'),
+ ('D', 'D: Dig'),
+ ('X', 'X: Unclimbable aven')
)
grade = models.CharField(max_length=1, choices=GRADE_CHOICES)
location_description = models.TextField(blank=True)
@@ -767,11 +769,19 @@ class QM(TroggleModel):
return u"%s %s" % (self.code(), self.grade)
def code(self):
- return u"%s-%s-%s" % (unicode(self.found_by.cave)[6:], self.found_by.date.year, self.number)
+ if self.found_by:
+ # Old style QMs where found_by is a logbook entry
+ return u"%s-%s-%s" % (unicode(self.found_by.cave)[6:], self.found_by.date.year, self.number)
+ elif self.nearest_station:
+ # New style QMs where QMs are stored in SVX files and nearest station is a forigin key
+ return u"%s-%s-%s" % (self.nearest_station.block.name, self.nearest_station.name, self.number)
+ else:
+ # Just give up!!
+ return u"%s" % (self.number)
def get_absolute_url(self):
#return settings.URL_ROOT + '/cave/' + self.found_by.cave.kataster_number + '/' + str(self.found_by.date.year) + '-' + '%02d' %self.number
- return urlparse.urljoin(settings.URL_ROOT, reverse('qm',kwargs={'cave_id':self.found_by.cave.kataster_number,'year':self.found_by.date.year,'qm_id':self.number,'grade':self.grade}))
+ return urlparse.urljoin(settings.URL_ROOT, reverse('qm',kwargs={'qm_id':self.id}))
def get_next_by_id(self):
return QM.objects.get(id=self.id+1)
diff --git a/core/models_survex.py b/core/models_survex.py
index e78cd48..3becffb 100644
--- a/core/models_survex.py
+++ b/core/models_survex.py
@@ -47,6 +47,8 @@ class SurvexFile(models.Model):
def SetDirectory(self):
dirpath = os.path.split(self.path)[0]
survexdirectorylist = SurvexDirectory.objects.filter(cave=self.cave, path=dirpath)
+ # if self.cave is '' or self.cave is None:
+ # print('No cave set for survex dir %s' % self.path)
if survexdirectorylist:
self.survexdirectory = survexdirectorylist[0]
else:
@@ -74,8 +76,11 @@ class SurvexStation(models.Model):
z = models.FloatField(blank=True, null=True)
def __unicode__(self):
- return self.block.cave.slug() + '/' + self.block.name + '/' + self.name or 'No station name'
-
+ if self.block.cave:
+ # If we haven't got a cave we can't have a slug, saves a nonetype return
+ return self.block.cave.slug() + '/' + self.block.name + '/' + self.name or 'No station name'
+ else:
+ return str(self.block.cave) + '/' + self.block.name + '/' + self.name or 'No station name'
def path(self):
r = self.name
b = self.block
diff --git a/core/views_caves.py b/core/views_caves.py
index 7b0555f..6dab34a 100644
--- a/core/views_caves.py
+++ b/core/views_caves.py
@@ -50,7 +50,7 @@ def caveCmp(x, y):
return numericalcmp(x.unofficial_number, y.unofficial_number)
def caveindex(request):
- caves = Cave.objects.all()
+ #caves = Cave.objects.all()
notablecavehrefs = settings.NOTABLECAVESHREFS
notablecaves = [Cave.objects.get(kataster_number=kataster_number) for kataster_number in notablecavehrefs ]
caves1623 = list(Cave.objects.filter(area__short_name = "1623"))
@@ -106,6 +106,7 @@ def caveQMs(request, slug):
return render(request,'nonpublic.html', {'instance': cave})
else:
return render(request,'cave_qms.html', {'cave': cave})
+
def caveLogbook(request, slug):
cave = Cave.objects.get(caveslug__slug = slug)
if cave.non_public and settings.PUBLIC_SITE and not request.user.is_authenticated():
@@ -210,10 +211,9 @@ def editEntrance(request, caveslug, slug=None):
'entletter': entletter
})
-def qm(request,cave_id,qm_id,year,grade=None):
- year=int(year)
+def qm(request,qm_id):
try:
- qm=getCave(cave_id).get_QMs().get(number=qm_id,found_by__date__year=year)
+ qm=QM.objects.get(id=qm_id)
return render(request,'qm.html',locals())
except QM.DoesNotExist: