forked from expo/troggle
Not quite so broken QMs from survex files
This commit is contained in:
@@ -498,15 +498,16 @@ class QM(TroggleModel):
|
||||
area = models.CharField(max_length=100,blank=True, null=True)
|
||||
completion_description = models.TextField(blank=True,null=True)
|
||||
comment=models.TextField(blank=True,null=True)
|
||||
blockname=models.TextField(blank=True,null=True)
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.code()}'
|
||||
|
||||
def code(self):
|
||||
if self.found_by:
|
||||
return f'{str(self.found_by.cave_slug)[5:]}-{self.found_by.date.year}-{self.number}'
|
||||
return f'{str(self.found_by.cave_slug)[5:]}-{self.found_by.date.year}-{self.blockname}{self.number}{self.grade}'
|
||||
else:
|
||||
return f'{self.cave.slug()[5:]}-xxxx-{self.number}'
|
||||
return f'{self.cave.slug()[5:]}-xxxx-{self.blockname}{self.number}{self.grade}'
|
||||
|
||||
def get_absolute_url(self):
|
||||
if self.found_by:
|
||||
@@ -514,7 +515,7 @@ class QM(TroggleModel):
|
||||
else:
|
||||
qmyear = "1986" # HACK to check if other bits work
|
||||
#return settings.URL_ROOT + '/cave/' + self.found_by.cave.kataster_number + '/' + str(self.found_by.date.year) + '-' + '%02d' %self.number
|
||||
return urljoin(settings.URL_ROOT, reverse('qm',kwargs={'cave_id':self.cave.slug(),'year':qmyear,'qm_id':self.number,'grade':self.grade}))
|
||||
return urljoin(settings.URL_ROOT, reverse('qm',kwargs={'cave_id':self.cave.slug(),'year':qmyear, 'blockname':self.blockname,'qm_id':self.number,'grade':self.grade}))
|
||||
|
||||
|
||||
def get_next_by_id(self):
|
||||
|
||||
@@ -481,31 +481,31 @@ def caveQMs(request, slug):
|
||||
else:
|
||||
return render(request,'cave_qms.html', {'cave': cave})
|
||||
|
||||
def qm(request,cave_id,qm_id,year,grade=None):
|
||||
def qm(request,cave_id,qm_id,year,grade=None, blockname=""):
|
||||
'''Reports on one specific QM
|
||||
Fixed and working July 2022, for both CSV imported QMs and for survex-imported QMs,
|
||||
need refactoring though.
|
||||
needs refactoring though.
|
||||
'''
|
||||
year=int(year)
|
||||
|
||||
try:
|
||||
qm=getCave(cave_id).get_QMs().get(number=qm_id,found_by__date__year=year)
|
||||
return render(request,'qm.html',locals())
|
||||
except Cave.MultipleObjectsReturned: # entirely the wrong action, REPLACE with the right display
|
||||
caves = Cave.objects.filter(kataster_number=cave_id)
|
||||
return render(request, 'svxcaveseveral.html', {'settings': settings, "caves":caves })
|
||||
|
||||
c=getCave(cave_id)
|
||||
manyqms=c.get_QMs()
|
||||
qm=manyqms.get(number=qm_id,found_by__date__year=year, found_by__cave_slug=c.slug())
|
||||
return render(request,'qm.html', {'qm': qm})
|
||||
except QM.DoesNotExist:
|
||||
return render(request,'errors/badslug.html', {'badslug': f'{cave_id=} {year=} {qm_id=}'})
|
||||
|
||||
# Ouch, this does not look like what we want to do. We need to replace this with something better.
|
||||
url=urllib.parse.urljoin(settings.URL_ROOT, r'/admin/core/qm/add/'+'?'+ r'number=' + qm_id)
|
||||
if grade:
|
||||
url += r'&grade=' + grade
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
return render(request,'errors/badslug.html', {'badslug': f'{cave_id=} {year=} {qm_id=} {blockname=}'})
|
||||
except MultipleObjectsReturned:
|
||||
qm = manyqms.filter(blockname = blockname) # we could still get multiple objects..
|
||||
if qm:
|
||||
return render(request,'qm.html', {'qm': qm})
|
||||
else:
|
||||
return render(request,'errors/badslug.html', {'badslug': f'{cave_id=} {year=} {qm_id=} {blockname=}'})
|
||||
|
||||
def get_qms(request, caveslug):
|
||||
'''Does not crash, but just returns a text list of the entrances for a cave.
|
||||
Used internally by the JSON export code? Archeology required..
|
||||
cf get_entrances() above
|
||||
'''
|
||||
try:
|
||||
cave = Cave.objects.get(caveslug__slug = caveslug)
|
||||
|
||||
Reference in New Issue
Block a user