diff options
Diffstat (limited to 'models_survex.py')
-rw-r--r-- | models_survex.py | 239 |
1 files changed, 0 insertions, 239 deletions
diff --git a/models_survex.py b/models_survex.py deleted file mode 100644 index aed8003..0000000 --- a/models_survex.py +++ /dev/null @@ -1,239 +0,0 @@ -import os -from urllib.parse import urljoin -import re - -from django.db import models -from django.conf import settings -from django.core.urlresolvers import reverse - - -########################################################### -# These will allow browsing and editing of the survex data -########################################################### -# Needs to add: -# Equates -# reloading - -class SurvexDirectory(models.Model): - path = models.CharField(max_length=200) - cave = models.ForeignKey('Cave', blank=True, null=True) - primarysurvexfile = models.ForeignKey('SurvexFile', related_name='primarysurvexfile', blank=True, null=True) - # could also include files in directory but not referenced - - class Meta: - ordering = ('id',) - - -class SurvexFile(models.Model): - path = models.CharField(max_length=200) - survexdirectory = models.ForeignKey("SurvexDirectory", blank=True, null=True) - cave = models.ForeignKey('Cave', blank=True, null=True) - - class Meta: - ordering = ('id',) - - 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] - survexdirectorylist = SurvexDirectory.objects.filter(cave=self.cave, path=dirpath) - if survexdirectorylist: - self.survexdirectory = survexdirectorylist[0] - else: - survexdirectory = SurvexDirectory(path=dirpath, cave=self.cave, primarysurvexfile=self) - survexdirectory.save() - self.survexdirectory = survexdirectory - self.save() - - -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__iexact = stationname) - -class SurvexStation(models.Model): - name = models.CharField(max_length=100) - 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) - - def path(self): - r = self.name - b = self.block - while True: - if b.name: - r = b.name + "." + r - if b.parent: - b = b.parent - else: - return r - -# class SurvexLeg(models.Model): - # block = models.ForeignKey('SurvexBlock') - # #title = models.ForeignKey('SurvexTitle') - # stationfrom = models.ForeignKey('SurvexStation', related_name='stationfrom') - # stationto = models.ForeignKey('SurvexStation', related_name='stationto') - # tape = models.FloatField() - # compass = models.FloatField() - # clino = models.FloatField() -class SurvexLeg(): - tape = 0.0 - compass = 0.0 - clino = 0.0 - -# -# Single SurvexBlock -# -class SurvexBlockLookUpManager(models.Manager): - def lookup(self, name): - if name == "": - blocknames = [] - else: - blocknames = name.split(".") - block = SurvexBlock.objects.get(parent=None, survexfile__path=settings.SURVEX_TOPNAME) - for blockname in blocknames: - block = SurvexBlock.objects.get(parent=block, name__iexact=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() - cave = models.ForeignKey('Cave', blank=True, null=True) - - date = models.DateField(blank=True, null=True) - expeditionday = models.ForeignKey("ExpeditionDay", null=True) - expedition = models.ForeignKey('Expedition', blank=True, null=True) - - survexfile = models.ForeignKey("SurvexFile", blank=True, null=True) -# begin_char = models.IntegerField() # code for where in the survex data files this block sits - survexpath = models.CharField(max_length=200) # the path for the survex stations - - survexscansfolder = models.ForeignKey("SurvexScansFolder", null=True) - #refscandir = models.CharField(max_length=100) - - legsall = models.IntegerField(null=True) # summary data for this block - legssplay = models.IntegerField(null=True) # summary data for this block - legssurfc = models.IntegerField(null=True) # summary data for this block - totalleglength = models.FloatField(null=True) - - class Meta: - ordering = ('id',) - - def isSurvexBlock(self): # Function used in templates - return True - - def __str__(self): - return self.name and str(self.name) or 'no name' - - def GetPersonroles(self): - res = [ ] - for personrole in self.personrole_set.order_by('personexpedition'): - if res and res[-1]['person'] == personrole.personexpedition.person: - res[-1]['roles'] += ", " + str(personrole.role) - else: - res.append({'person':personrole.personexpedition.person, 'expeditionyear':personrole.personexpedition.expedition.year, 'roles':str(personrole.role)}) - return res - - def MakeSurvexStation(self, name): - ssl = self.survexstation_set.filter(name=name) - if ssl: - assert len(ssl) == 1 - return ssl[0] - #print name - ss = SurvexStation(name=name, block=self) - #ss.save() - return ss - - def DayIndex(self): - return list(self.expeditionday.survexblock_set.all()).index(self) - -class SurvexTitle(models.Model): - survexblock = models.ForeignKey('SurvexBlock') - title = models.CharField(max_length=200) - cave = models.ForeignKey('Cave', blank=True, null=True) - -# -# member of a SurvexBlock -# -ROLE_CHOICES = ( - ('insts','Instruments'), - ('dog','Other'), - ('notes','Notes'), - ('pics','Pictures'), - ('tape','Tape measure'), - ('useless','Useless'), - ('helper','Helper'), - ('disto','Disto'), - ('consultant','Consultant'), - ) - -class SurvexPersonRole(models.Model): - survexblock = models.ForeignKey('SurvexBlock') - nrole = models.CharField(choices=ROLE_CHOICES, max_length=200, blank=True, null=True) - # increasing levels of precision - personname = models.CharField(max_length=100) - person = models.ForeignKey('Person', blank=True, null=True) - personexpedition = models.ForeignKey('PersonExpedition', blank=True, null=True) - persontrip = models.ForeignKey('PersonTrip', blank=True, null=True) - expeditionday = models.ForeignKey("ExpeditionDay", null=True) - - def __str__(self): - return str(self.person) + " - " + str(self.survexblock) + " - " + str(self.nrole) - -class SurvexScansFolder(models.Model): - fpath = models.CharField(max_length=200) - walletname = models.CharField(max_length=200) - - class Meta: - ordering = ('walletname',) - - def get_absolute_url(self): - return urljoin(settings.URL_ROOT, reverse('surveyscansfolder', kwargs={"path":re.sub("#", "%23", self.walletname)})) - - def __str__(self): - return str(self.walletname) + " (Survey Scans Folder)" - -class SurvexScanSingle(models.Model): - ffile = models.CharField(max_length=200) - name = models.CharField(max_length=200) - survexscansfolder = models.ForeignKey("SurvexScansFolder", null=True) - - class Meta: - ordering = ('name',) - - def get_absolute_url(self): - return urljoin(settings.URL_ROOT, reverse('surveyscansingle', kwargs={"path":re.sub("#", "%23", self.survexscansfolder.walletname), "file":self.name})) - - def __str__(self): - return "Survey Scan Image: " + str(self.name) + " in " + str(self.survexscansfolder) - -class TunnelFile(models.Model): - tunnelpath = models.CharField(max_length=200) - tunnelname = models.CharField(max_length=200) - bfontcolours = models.BooleanField(default=False) - survexscansfolders = models.ManyToManyField("SurvexScansFolder") - survexscans = models.ManyToManyField("SurvexScanSingle") - survexblocks = models.ManyToManyField("SurvexBlock") - tunnelcontains = models.ManyToManyField("TunnelFile") # case when its a frame type - filesize = models.IntegerField(default=0) - npaths = models.IntegerField(default=0) - survextitles = models.ManyToManyField("SurvexTitle") - - - class Meta: - ordering = ('tunnelpath',)
\ No newline at end of file |