diff options
author | Sam Wenham <sam@wenhams.co.uk> | 2019-07-19 01:04:18 +0100 |
---|---|---|
committer | Sam Wenham <sam@wenhams.co.uk> | 2019-07-19 01:04:18 +0100 |
commit | de22b071b0749fef13ea3c53faaed1adb3191356 (patch) | |
tree | fc66284dca70014ee395f6a14f4972ef8addc3e3 /core | |
parent | 08a41941f9e2b35b16548624d5070216dd933f79 (diff) | |
download | troggle-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.py | 6 | ||||
-rw-r--r-- | core/models.py | 44 | ||||
-rw-r--r-- | core/models_survex.py | 9 | ||||
-rw-r--r-- | core/views_caves.py | 8 |
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: |