2
0
mirror of https://expo.survex.com/repositories/troggle/.git synced 2024-11-22 07:11:52 +00:00

Made a prospecting guide and fixed survex station description. Removed parsing of underground descriptions to wikis.

This commit is contained in:
Martin Green 2012-08-10 19:02:13 +02:00
parent dd66ad835a
commit 79b7d32664
9 changed files with 85 additions and 70 deletions

View File

@ -385,6 +385,20 @@ class Cave(TroggleModel):
#href = models.CharField(max_length=100) #href = models.CharField(max_length=100)
def hassurvey(self):
if not self.underground_centre_line:
return "No"
if (self.underground_centre_line.find("<img") > -1 or self.underground_centre_line.find("<a") > -1):
return "Yes"
return "Missing"
def hassurveydata(self):
if not self.underground_centre_line:
return "No"
if self.survex_file:
return "Yes"
return "Missing"
def slug(self): def slug(self):
primarySlugs = self.caveslug_set.filter(primary = True) primarySlugs = self.caveslug_set.filter(primary = True)
if primarySlugs: if primarySlugs:
@ -394,6 +408,9 @@ class Cave(TroggleModel):
if slugs: if slugs:
return slugs[0].slug return slugs[0].slug
def ours(self):
return bool(re.search(r'CUCC', self.explorers))
def reference(self): def reference(self):
if self.kataster_number: if self.kataster_number:
return "%s-%s" % (self.kat_area(), self.kataster_number) return "%s-%s" % (self.kat_area(), self.kataster_number)
@ -431,6 +448,9 @@ class Cave(TroggleModel):
def entrances(self): def entrances(self):
return CaveAndEntrance.objects.filter(cave=self) return CaveAndEntrance.objects.filter(cave=self)
def singleentrance(self):
return len(CaveAndEntrance.objects.filter(cave=self)) == 1
def entrancelist(self): def entrancelist(self):
rs = [] rs = []
@ -534,6 +554,29 @@ class Entrance(TroggleModel):
def __unicode__(self): def __unicode__(self):
return unicode(self.slug()) return unicode(self.slug())
def find_location(self):
if self.tag_station:
s = SurvexStation.objects.lookup(self.tag_station)
return "%sE %sN %sAlt" % (s.x, s.y, s.z)
if self.exact_station:
s = SurvexStation.objects.lookup(self.exact_station)
return "%sE %sN %sAlt" % (s.x, s.y, s.z)
if self.other_station:
s = SurvexStation.objects.lookup(self.other_station)
return "%sE %sN %sAlt %s" % (s.x, s.y, s.z, self.other_description)
if self.bearings:
return self.bearings
def has_photo(self):
if self.photo:
if (self.photo.find("<img") > -1 or self.photo.find("<a") > -1):
return "Yes"
else:
return "Missing"
else:
return "No"
def marking_val(self): def marking_val(self):
for m in self.MARKING_CHOICES: for m in self.MARKING_CHOICES:
if m[0] == self.marking: if m[0] == self.marking:

View File

@ -93,7 +93,10 @@ class SurvexLeg(models.Model):
# #
class SurvexBlockLookUpManager(models.Manager): class SurvexBlockLookUpManager(models.Manager):
def lookup(self, name): def lookup(self, name):
blocknames = name.split(".") if name == "":
blocknames = []
else:
blocknames = name.split(".")
block = SurvexBlock.objects.get(parent=None, survexfile__path="all") block = SurvexBlock.objects.get(parent=None, survexfile__path="all")
for blockname in blocknames: for blockname in blocknames:
block = SurvexBlock.objects.get(parent=block, name__iexact=blockname) block = SurvexBlock.objects.get(parent=block, name__iexact=blockname)

View File

@ -1,4 +1,4 @@
from troggle.core.models import Cave, CaveAndEntrance, Survey, Expedition, QM, CaveDescription, Entrance from troggle.core.models import Cave, CaveAndEntrance, Survey, Expedition, QM, CaveDescription, Entrance, Area
from troggle.core.forms import CaveForm, CaveAndEntranceFormSet, VersionControlCommentForm, EntranceForm from troggle.core.forms import CaveForm, CaveAndEntranceFormSet, VersionControlCommentForm, EntranceForm
import troggle.core.models as models import troggle.core.models as models
import troggle.settings as settings import troggle.settings as settings
@ -204,3 +204,35 @@ def get_entrances(request, caveslug):
def get_qms(request, caveslug): def get_qms(request, caveslug):
cave = Cave.objects.get(caveslug__slug = caveslug) cave = Cave.objects.get(caveslug__slug = caveslug)
return render_with_context(request,'options.html', {"items": [(e.entrance.slug(), e.entrance.slug()) for e in cave.entrances()]}) return render_with_context(request,'options.html', {"items": [(e.entrance.slug(), e.entrance.slug()) for e in cave.entrances()]})
areanames = [
#('', 'Location unclear'),
('1a', '1a &ndash; Plateau: around Top Camp'),
('1b', '1b &ndash; Western plateau near 182'),
('1c', '1c &ndash; Eastern plateau near 204 walk-in path'),
('1d', '1d &ndash; Further plateau around 76'),
('2a', '2a &ndash; Southern Schwarzmooskogel near 201 path and the Nipple'),
('2b', '2b &ndash; Eish&ouml;hle area'),
('2c', '2c &ndash; Kaninchenh&ouml;hle area'),
('2d', '2d &ndash; Steinbr&uuml;ckenh&ouml;hle area'),
('3', '3 &ndash; Br&auml;uning Alm'),
('4', '4 &ndash; Kratzer valley'),
('5', '5 &ndash; Schwarzmoos-Wildensee'),
('6', '6 &ndash; Far plateau'),
('7', '7 &ndash; Egglgrube'),
('8a', '8a &ndash; Loser south face'),
('8b', '8b &ndash; Loser below Dimmelwand'),
('8c', '8c &ndash; Augst See'),
('8d', '8d &ndash; Loser-Hochganger ridge'),
('9', '9 &ndash; Gschwandt Alm'),
('10', '10 &ndash; Altaussee'),
('11', '11 &ndash; Augstbach')
]
def prospecting(request):
for key, name in areanames:
print key, Area.objects.get(short_name = key)
areas = [ (name, Area.objects.get(short_name = key)) for key, name in areanames ]
return render_with_context(request,'prospecting.html', {"areas": areas})

View File

@ -73,16 +73,6 @@ def import_surveyscans():
import parsers.surveys import parsers.surveys
parsers.surveys.LoadListScans() parsers.surveys.LoadListScans()
def import_descriptions():
import parsers.descriptions
parsers.descriptions.getDescriptions()
def parse_descriptions():
import parsers.descriptions
parsers.descriptions.parseDescriptions()
parsers.descriptions.parseDescriptionsOnCaveObjects()
def import_tunnelfiles(): def import_tunnelfiles():
import parsers.surveys import parsers.surveys
parsers.surveys.LoadTunnelFiles() parsers.surveys.LoadTunnelFiles()
@ -106,17 +96,7 @@ def reset():
print "Tunnel files parser broken." print "Tunnel files parser broken."
import_surveys() import_surveys()
import_descriptions()
parse_descriptions()
def resetdesc():
""" Wipe the troggle database and import descriptions
"""
import core.models
for desc in core.models.CaveDescription.objects.all():
desc.delete()
import_descriptions()
parse_descriptions()
def import_auto_logbooks(): def import_auto_logbooks():
import parsers.logbooks import parsers.logbooks

View File

@ -73,6 +73,7 @@ def readentrance(filename):
e.save() e.save()
primary = True primary = True
for slug in slugs: for slug in slugs:
print slug, filename
cs = models.EntranceSlug(entrance = e, cs = models.EntranceSlug(entrance = e,
slug = slug, slug = slug,
primary = primary) primary = primary)

View File

@ -1,45 +0,0 @@
from django.conf import settings
import core.models as models
import os
from utils import html_to_wiki, get_html_body, get_html_title
pages = [(["smkridge", "204", "ariston-rigging.html"], "ariston-rigging"),
(["smkridge", "204", "ariston.html"], "ariston"),
(["smkridge", "204", "bivvy.html"], "bivvy"),
(["smkridge", "204", "bridge.html"], "bridge"),
(["smkridge", "204", "entrance-rigging.html"], "entrance-rigging"),
(["smkridge", "204", "entrance.html"], "entrance"),
(["smkridge", "204", "midlevel.html"], "midlevel"),
(["smkridge", "204", "millennium.html"], "millennium"),
(["smkridge", "204", "nopain.html"], "nopain"),
(["smkridge", "204", "razordance.html"], "razordance"),
(["smkridge", "204", "rhino.html"], "rhino"),
(["smkridge", "204", "sbview.html"], "sbview"),
(["smkridge", "204", "subway.html"], "subway"),
(["smkridge", "204", "swings.html"], "swings"),
(["smkridge", "204", "treeumphant.html"], "treeumphant"),
(["smkridge", "204", "uworld.html"], "uworld"), ]
def getDescriptions():
"""Creates objects in the database for each item in the list 'pages' . """
for filelocation, name in pages:
f = open(os.path.join(settings.EXPOWEB, *filelocation), "r")
html = f.read()
cd = models.CaveDescription(short_name = name,
long_name = unicode(get_html_title(html), "latin1"),
description = unicode(get_html_body(html), "latin1"))
cd.save()
def parseDescriptions():
"""Turns the HTML in each cave description into wikicode"""
for cd in models.CaveDescription.objects.all():
cd.description = html_to_wiki(cd.description)
cd.save()
def parseDescriptionsOnCaveObjects():
for cave in models.Cave.objects.all():
cave.underground_description=html_to_wiki(unicode(cave.underground_description))
cave.save()

View File

@ -256,7 +256,7 @@ def LoadPos():
try: try:
ss = models.SurvexStation.objects.lookup(name) ss = models.SurvexStation.objects.lookup(name)
except: except:
print name print "%s not parsed in survex" % name
ss.x = float(x) ss.x = float(x)
ss.y = float(y) ss.y = float(y)
ss.z = float(z) ss.z = float(z)

View File

@ -1,4 +1,4 @@
<p>{% if cave.explorers %} <p>{% if cave.explorers %}
<h2>Explorers</h2> <h2>Explorers</h2>
{{ cave.explorers|safe }} {{ cave.explorers|safe }}
{% endif %} {% endif %}

View File

@ -64,7 +64,8 @@ actualurlpatterns = patterns('',
url(r'^cave/(?P<cave_id>[^/]+)/(?P<year>\d\d\d\d)-(?P<qm_id>\d*)(?P<grade>[ABCDX]?)?$', views_caves.qm, name="qm"), url(r'^cave/(?P<cave_id>[^/]+)/(?P<year>\d\d\d\d)-(?P<qm_id>\d*)(?P<grade>[ABCDX]?)?$', views_caves.qm, name="qm"),
url(r'^prospectinguide/$', views_caves.prospecting),
url(r'^logbooksearch/(.*)/?$', views_logbooks.logbookSearch), url(r'^logbooksearch/(.*)/?$', views_logbooks.logbookSearch),