summaryrefslogtreecommitdiffstats
path: root/core/models/survex.py
diff options
context:
space:
mode:
authorPhilip Sargent <philip.sargent@gmail.com>2023-01-30 19:04:36 +0000
committerPhilip Sargent <philip.sargent@gmail.com>2023-01-30 19:04:36 +0000
commit7808005498b06d11775e83a614657fd6cbb476b8 (patch)
tree3c7b0bcb4518ba39548804082c2505949121354f /core/models/survex.py
parentd06dd3d16678c3e222a261a12bcf2f147b3fe5f9 (diff)
downloadtroggle-7808005498b06d11775e83a614657fd6cbb476b8.tar.gz
troggle-7808005498b06d11775e83a614657fd6cbb476b8.tar.bz2
troggle-7808005498b06d11775e83a614657fd6cbb476b8.zip
ran 'black' to reformat all the core files
Diffstat (limited to 'core/models/survex.py')
-rw-r--r--core/models/survex.py168
1 files changed, 91 insertions, 77 deletions
diff --git a/core/models/survex.py b/core/models/survex.py
index 1903755..6507c71 100644
--- a/core/models/survex.py
+++ b/core/models/survex.py
@@ -12,42 +12,46 @@ from django.db import models
from django.urls import reverse
from troggle.core.models.wallets import Wallet
+
# from troggle.core.models.troggle import DataIssue # circular import. Hmm
+
class SurvexDirectory(models.Model):
path = models.CharField(max_length=200)
- cave = models.ForeignKey('Cave', blank=True, null=True,on_delete=models.SET_NULL)
- primarysurvexfile = models.ForeignKey('SurvexFile', related_name='primarysurvexfile', blank=True, null=True,on_delete=models.SET_NULL)
+ cave = models.ForeignKey("Cave", blank=True, null=True, on_delete=models.SET_NULL)
+ primarysurvexfile = models.ForeignKey(
+ "SurvexFile", related_name="primarysurvexfile", blank=True, null=True, on_delete=models.SET_NULL
+ )
# could also include files in directory but not referenced
-
+
class Meta:
- ordering = ('id',)
+ ordering = ("id",)
verbose_name_plural = "Survex directories"
def __str__(self):
- return "[SurvexDirectory:"+str(self.path) + " | Primary svx:" + str(self.primarysurvexfile.path) +".svx ]"
+ return "[SurvexDirectory:" + str(self.path) + " | Primary svx:" + str(self.primarysurvexfile.path) + ".svx ]"
class SurvexFile(models.Model):
path = models.CharField(max_length=200)
- survexdirectory = models.ForeignKey("SurvexDirectory", blank=True, null=True,on_delete=models.SET_NULL)
- cave = models.ForeignKey('Cave', blank=True, null=True,on_delete=models.SET_NULL)
-
+ survexdirectory = models.ForeignKey("SurvexDirectory", blank=True, null=True, on_delete=models.SET_NULL)
+ cave = models.ForeignKey("Cave", blank=True, null=True, on_delete=models.SET_NULL)
+
class Meta:
- ordering = ('id',)
+ ordering = ("id",)
# Don't change from the default as that breaks troggle webpages and internal referencing!
# def __str__(self):
- # return "[SurvexFile:"+str(self.path) + "-" + str(self.survexdirectory) + "-" + str(self.cave)+"]"
+ # return "[SurvexFile:"+str(self.path) + "-" + str(self.survexdirectory) + "-" + str(self.cave)+"]"
def exists(self):
fname = os.path.join(settings.SURVEX_DATA, self.path + ".svx")
return os.path.isfile(fname)
-
+
def OpenFile(self):
fname = os.path.join(settings.SURVEX_DATA, self.path + ".svx")
return open(fname)
-
+
def SetDirectory(self):
dirpath = os.path.split(self.path)[0]
# pointless search every time we import a survex file if we know there are no duplicates..
@@ -60,24 +64,25 @@ class SurvexFile(models.Model):
survexdirectory.save()
self.survexdirectory = survexdirectory
self.save()
-
+
def __str__(self):
return self.path
+
class SurvexStationLookUpManager(models.Manager):
def lookup(self, name):
blocknames, sep, stationname = name.rpartition(".")
- return self.get(block = SurvexBlock.objects.lookup(blocknames),
- name__iexact = stationname)
+ return self.get(block=SurvexBlock.objects.lookup(blocknames), name__iexact=stationname)
+
class SurvexStation(models.Model):
- name = models.CharField(max_length=100)
- block = models.ForeignKey('SurvexBlock', null=True,on_delete=models.SET_NULL)
+ name = models.CharField(max_length=100)
+ block = models.ForeignKey("SurvexBlock", null=True, on_delete=models.SET_NULL)
objects = SurvexStationLookUpManager()
x = models.FloatField(blank=True, null=True)
y = models.FloatField(blank=True, null=True)
z = models.FloatField(blank=True, null=True)
-
+
def path(self):
r = self.name
b = self.block
@@ -90,16 +95,19 @@ class SurvexStation(models.Model):
return r
class Meta:
- ordering = ('id',)
+ ordering = ("id",)
+
def __str__(self):
- return self.name and str(self.name) or 'no name'
+ return self.name and str(self.name) or "no name"
+
#
-# Single SurvexBlock
-#
+# Single SurvexBlock
+#
class SurvexBlockLookUpManager(models.Manager):
"""Don't know what this does, suspect it is part of the Django admin
system"""
+
def lookup(self, name):
if name == "":
blocknames = []
@@ -110,38 +118,39 @@ class SurvexBlockLookUpManager(models.Manager):
block = SurvexBlock.objects.get(parent=block, name__iexact=blockname)
return block
+
class SurvexBlock(models.Model):
- """One begin..end block within a survex file. The basic element of a survey trip.
- """
+ """One begin..end block within a survex file. The basic element of a survey trip."""
+
objects = SurvexBlockLookUpManager()
- name = models.CharField(max_length=100)
- title = models.CharField(max_length=200)
- parent = models.ForeignKey('SurvexBlock', blank=True, null=True,on_delete=models.SET_NULL)
- cave = models.ForeignKey('Cave', blank=True, null=True,on_delete=models.SET_NULL)
-
- date = models.DateField(blank=True, null=True)
- expedition = models.ForeignKey('Expedition', blank=True, null=True,on_delete=models.SET_NULL)
-
- survexfile = models.ForeignKey("SurvexFile", blank=True, null=True,on_delete=models.SET_NULL)
- survexpath = models.CharField(max_length=200) # the path for the survex stations
-
- scanswallet = models.ForeignKey("Wallet", null=True,on_delete=models.SET_NULL) # only ONE wallet per block. The most recent seen overwites.. ugh.
-
- legsall = models.IntegerField(null=True) # summary data for this block
+ name = models.CharField(max_length=100)
+ title = models.CharField(max_length=200)
+ parent = models.ForeignKey("SurvexBlock", blank=True, null=True, on_delete=models.SET_NULL)
+ cave = models.ForeignKey("Cave", blank=True, null=True, on_delete=models.SET_NULL)
+
+ date = models.DateField(blank=True, null=True)
+ expedition = models.ForeignKey("Expedition", blank=True, null=True, on_delete=models.SET_NULL)
+
+ survexfile = models.ForeignKey("SurvexFile", blank=True, null=True, on_delete=models.SET_NULL)
+ survexpath = models.CharField(max_length=200) # the path for the survex stations
+
+ scanswallet = models.ForeignKey(
+ "Wallet", null=True, on_delete=models.SET_NULL
+ ) # only ONE wallet per block. The most recent seen overwites.. ugh.
+
+ legsall = models.IntegerField(null=True) # summary data for this block
legslength = models.FloatField(null=True)
-
+
class Meta:
- ordering = ('id',)
+ ordering = ("id",)
def __str__(self):
- return "[SurvexBlock:"+ str(self.name) + "-path:" + \
- str(self.survexpath) + "-cave:" + \
- str(self.cave) + "]"
-
+ return "[SurvexBlock:" + str(self.name) + "-path:" + str(self.survexpath) + "-cave:" + str(self.cave) + "]"
+
def __str__(self):
- return self.name and str(self.name) or 'no name'
+ return self.name and str(self.name) or "no name"
- def isSurvexBlock(self): # Function used in templates
+ def isSurvexBlock(self): # Function used in templates
return True
def DayIndex(self):
@@ -152,51 +161,56 @@ class SurvexBlock(models.Model):
if index not in range(0, mx):
print(f"DayIndex: More than {mx-1} SurvexBlock items on one day '{index}' {self}")
index = 0
- #return list(self.survexblock_set.all()).index(self)
+ # return list(self.survexblock_set.all()).index(self)
return index
+
class SurvexPersonRole(models.Model):
- survexblock = models.ForeignKey('SurvexBlock',on_delete=models.CASCADE)
- # increasing levels of precision, Surely we only need survexblock and person now that we have no link to a logbook entry?
- personname = models.CharField(max_length=100)
- person = models.ForeignKey('Person', blank=True, null=True,on_delete=models.SET_NULL)
- personexpedition = models.ForeignKey('PersonExpedition', blank=True, null=True,on_delete=models.SET_NULL)
+ survexblock = models.ForeignKey("SurvexBlock", on_delete=models.CASCADE)
+ # increasing levels of precision, Surely we only need survexblock and person now that we have no link to a logbook entry?
+ personname = models.CharField(max_length=100)
+ person = models.ForeignKey("Person", blank=True, null=True, on_delete=models.SET_NULL)
+ personexpedition = models.ForeignKey("PersonExpedition", blank=True, null=True, on_delete=models.SET_NULL)
# expeditionday = models.ForeignKey("ExpeditionDay", null=True,on_delete=models.SET_NULL)
-
+
def __str__(self):
- return str(self.personname) + " - " + str(self.survexblock)
+ return str(self.personname) + " - " + str(self.survexblock)
+
class SingleScan(models.Model):
- """A single file holding an image. Could be raw notes, an elevation plot or whatever
- """
- ffile = models.CharField(max_length=200)
- name = models.CharField(max_length=200)
- wallet = models.ForeignKey("Wallet", null=True,on_delete=models.SET_NULL)
-
+ """A single file holding an image. Could be raw notes, an elevation plot or whatever"""
+
+ ffile = models.CharField(max_length=200)
+ name = models.CharField(max_length=200)
+ wallet = models.ForeignKey("Wallet", null=True, on_delete=models.SET_NULL)
+
class Meta:
- ordering = ('name',)
-
+ ordering = ("name",)
+
def get_absolute_url(self):
- return urljoin(settings.URL_ROOT, reverse('scansingle', kwargs={"path":re.sub("#", "%23", self.wallet.walletname), "file":self.name}))
-
+ return urljoin(
+ settings.URL_ROOT,
+ reverse("scansingle", kwargs={"path": re.sub("#", "%23", self.wallet.walletname), "file": self.name}),
+ )
+
def __str__(self):
return "Scan Image: " + str(self.name) + " in " + str(self.wallet)
+
class DrawingFile(models.Model):
- """A file holding a Therion (several types) or a Tunnel drawing
- """
- dwgpath = models.CharField(max_length=200)
- dwgname = models.CharField(max_length=200)
- dwgwallets = models.ManyToManyField("Wallet") # implicitly links via folders to scans to SVX files
- scans = models.ManyToManyField("SingleScan") # implicitly links via scans to SVX files
- dwgcontains = models.ManyToManyField("DrawingFile") # case when its a frame type
- filesize = models.IntegerField(default=0)
- npaths = models.IntegerField(default=0)
- survexfiles = models.ManyToManyField("SurvexFile") # direct link to SVX files - not populated yet
+ """A file holding a Therion (several types) or a Tunnel drawing"""
+
+ dwgpath = models.CharField(max_length=200)
+ dwgname = models.CharField(max_length=200)
+ dwgwallets = models.ManyToManyField("Wallet") # implicitly links via folders to scans to SVX files
+ scans = models.ManyToManyField("SingleScan") # implicitly links via scans to SVX files
+ dwgcontains = models.ManyToManyField("DrawingFile") # case when its a frame type
+ filesize = models.IntegerField(default=0)
+ npaths = models.IntegerField(default=0)
+ survexfiles = models.ManyToManyField("SurvexFile") # direct link to SVX files - not populated yet
class Meta:
- ordering = ('dwgpath',)
+ ordering = ("dwgpath",)
def __str__(self):
- return "Drawing File: " + str(self.dwgname) + " (" + str(self.filesize) + " bytes)"
- \ No newline at end of file
+ return "Drawing File: " + str(self.dwgname) + " (" + str(self.filesize) + " bytes)"