summaryrefslogtreecommitdiffstats
path: root/core/models_survex.py
diff options
context:
space:
mode:
authorWookey <wookey@wookware.org>2011-07-11 00:49:18 +0100
committerWookey <wookey@wookware.org>2011-07-11 00:49:18 +0100
commitcc8c47f21f8415ba5d37632385d7440e455bf61a (patch)
tree89449484042c1e7a0d39cc35bc22e64708e3027e /core/models_survex.py
parent1e1d63c768fb7791f278c164ded138e95fd787e5 (diff)
parent861daee66feb985ccfb9271c211dc1a27263fbf4 (diff)
downloadtroggle-cc8c47f21f8415ba5d37632385d7440e455bf61a.tar.gz
troggle-cc8c47f21f8415ba5d37632385d7440e455bf61a.tar.bz2
troggle-cc8c47f21f8415ba5d37632385d7440e455bf61a.zip
Merge from Martin's tip
Diffstat (limited to 'core/models_survex.py')
-rw-r--r--core/models_survex.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/core/models_survex.py b/core/models_survex.py
index ed21658..efd3022 100644
--- a/core/models_survex.py
+++ b/core/models_survex.py
@@ -52,10 +52,20 @@ class SurvexFile(models.Model):
class SurvexEquate(models.Model):
cave = models.ForeignKey('Cave', blank=True, null=True)
+class SurvexStationLookUpManager(models.Manager):
+ def lookup(self, name):
+ blocknames, sep, stationname = name.rpartition(".")
+ return self.get(block = SurvexBlock.objects.lookup(blocknames),
+ name = stationname)
+
class SurvexStation(models.Model):
name = models.CharField(max_length=20)
block = models.ForeignKey('SurvexBlock')
equate = models.ForeignKey('SurvexEquate', blank=True, null=True)
+ objects = SurvexStationLookUpManager()
+ x = models.FloatField(blank=True, null=True)
+ y = models.FloatField(blank=True, null=True)
+ z = models.FloatField(blank=True, null=True)
class SurvexLeg(models.Model):
block = models.ForeignKey('SurvexBlock')
@@ -70,7 +80,16 @@ class SurvexLeg(models.Model):
#
# Single SurvexBlock
#
+class SurvexBlockLookUpManager(models.Manager):
+ def lookup(self, name):
+ blocknames = name.split(".")
+ block = SurvexBlock.objects.get(parent=None, survexfile__path="all")
+ for blockname in blocknames:
+ block = SurvexBlock.objects.get(parent=block, name=blockname)
+ return block
+
class SurvexBlock(models.Model):
+ objects = SurvexBlockLookUpManager()
name = models.CharField(max_length=100)
parent = models.ForeignKey('SurvexBlock', blank=True, null=True)
text = models.TextField()