diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/admin.py | 4 | ||||
-rw-r--r-- | core/models/caves.py | 44 | ||||
-rw-r--r-- | core/views/caves.py | 8 | ||||
-rw-r--r-- | core/views/prospect.py | 12 | ||||
-rw-r--r-- | core/views/survex.py | 21 |
5 files changed, 29 insertions, 60 deletions
diff --git a/core/admin.py b/core/admin.py index 43aa744..880d163 100644 --- a/core/admin.py +++ b/core/admin.py @@ -2,7 +2,7 @@ from django.contrib import admin from django.core import serializers from django.http import HttpResponse -from troggle.core.models.caves import Area, Cave, CaveAndEntrance, Entrance +from troggle.core.models.caves import Cave, CaveAndEntrance, Entrance from troggle.core.models.logbooks import QM, LogbookEntry, PersonLogEntry, CaveSlug from troggle.core.models.survex import ( DrawingFile, @@ -135,7 +135,7 @@ class WalletAdmin(TroggleModelAdmin): admin.site.register(Cave, CaveAdmin) -admin.site.register(Area) +#admin.site.register(Area) admin.site.register(CaveAndEntrance) admin.site.register(Entrance, EntranceAdmin) admin.site.register(CaveSlug) diff --git a/core/models/caves.py b/core/models/caves.py index 3821387..0ede2b1 100644 --- a/core/models/caves.py +++ b/core/models/caves.py @@ -32,33 +32,15 @@ todo = """ - Can we rewrite things to eliminate the CaveSlug and objects? Surely foreign keys work fine ?! -- Why do we have CaveAndEntrance objects ? Surely entranceletter belong son the Entrance object? +- Why do we have CaveAndEntrance objects ? Surely entranceletter belongs on the Entrance object? - move the aliases list from the code and put into an editable file - Restore constraint: unique_together = (("area", "kataster_number"), ("area", "unofficial_number")) + or replace by a unique 'slug' field, better. """ -class Area(TroggleModel): - short_name = models.CharField(max_length=100) - name = models.CharField(max_length=200, blank=True, null=True) - description = models.TextField(blank=True, null=True) - super = models.ForeignKey("Area", blank=True, null=True, on_delete=models.SET_NULL) - - def __str__(self): - if self.super: - return str(self.super) + " - " + str(self.short_name) - else: - return str(self.short_name) - - def kat_area(self): - if self.short_name in ["1623", "1626", "1624", "1627"]: - return self.short_name - elif self.super: - return self.super.kat_area() - - class CaveAndEntrance(models.Model): """This class is ONLY used to create a FormSet for editing the cave and all its entrances in one form. @@ -82,7 +64,8 @@ class CaveAndEntrance(models.Model): class Cave(TroggleModel): # too much here perhaps, - area = models.ManyToManyField(Area, blank=False) + areacode = models.CharField(max_length=4, blank=True, null=True) # could use models.IntegerChoices + subarea = models.CharField(max_length=10, blank=True, null=True) # 9, 8c etc. depth = models.CharField(max_length=100, blank=True, null=True) description_file = models.CharField(max_length=200, blank=True, null=True) entrances = models.ManyToManyField("Entrance", through="CaveAndEntrance") @@ -97,7 +80,7 @@ class Cave(TroggleModel): notes = models.TextField(blank=True, null=True) official_name = models.CharField(max_length=160) references = models.TextField(blank=True, null=True) - survex_file = models.CharField(max_length=100, blank=True, null=True) # should be a foreign key + survex_file = models.CharField(max_length=100, blank=True, null=True) # should be a foreign key? survey = models.TextField(blank=True, null=True) underground_centre_line = models.TextField(blank=True, null=True) underground_description = models.TextField(blank=True, null=True) @@ -192,12 +175,7 @@ class Cave(TroggleModel): return qms # a QuerySet def kat_area(self): - try: - for a in self.area.all(): - if a.kat_area(): - return a.kat_area() - except: - return "" + return self.areacode def entrances(self): return CaveAndEntrance.objects.filter(cave=self) @@ -258,15 +236,7 @@ class Cave(TroggleModel): return (filepath, content, "utf8") def getArea(self): - areas = self.area.all() - lowestareas = list(areas) - for area in areas: - if area.super in areas: - try: - lowestareas.remove(area.super) - except: - pass - return lowestareas[0] + return self.areacode class Entrance(TroggleModel): MARKING_CHOICES = ( diff --git a/core/views/caves.py b/core/views/caves.py index a002a0e..250ae0e 100644 --- a/core/views/caves.py +++ b/core/views/caves.py @@ -124,10 +124,10 @@ def getnotablecaves(): def caveindex(request): - #Cave.objects.all() - caves1623 = list(Cave.objects.filter(area__short_name="1623")) - caves1626 = list(Cave.objects.filter(area__short_name="1626")) - caves1627 = list(Cave.objects.filter(area__short_name="1627")) + + caves1623 = list(Cave.objects.filter(areacode="1623")) + caves1626 = list(Cave.objects.filter(areacode="1626")) + caves1627 = list(Cave.objects.filter(areacode="1627")) caves1623.sort(key=caveKey) caves1626.sort(key=caveKey) caves1627.sort(key=caveKey) diff --git a/core/views/prospect.py b/core/views/prospect.py index a538ab6..1eb82cd 100644 --- a/core/views/prospect.py +++ b/core/views/prospect.py @@ -4,7 +4,7 @@ from django.http import HttpResponse from django.shortcuts import render import troggle.settings as settings -from troggle.core.models.caves import Area, Cave, Entrance +from troggle.core.models.caves import Cave, Entrance from troggle.core.views.caves import caveKey # from pathlib import Path @@ -68,11 +68,11 @@ def prospecting(request): return render(request, "errors/disabled.html", {"message": message}) areas = [] - for key, name in AREANAMES: - a = Area.objects.get(short_name=key) # assumes unique - caves = list(a.cave_set.all()) - caves.sort(key=caveKey) - areas.append((name, a, caves)) + caves = Cave.objects.all() + + for c in caves: + if c.subarea in AREANAMES: + areas.append((AREANAMES[c.subarea], subarea, c)) return render(request, "prospecting.html", {"areas": areas}) diff --git a/core/views/survex.py b/core/views/survex.py index a69c5d3..b00aed0 100644 --- a/core/views/survex.py +++ b/core/views/survex.py @@ -574,15 +574,15 @@ def survexcaveslist(request): subdircaves = [] fnumlist = [] - for area in ["1623", "1626", "1624", "1627"]: - cavesdir = get_survexareapath(area) - arealist = sorted([(area, -int(re.match(r"\d*", f).group(0) or "0"), f) for f in os.listdir(cavesdir)]) + for areacode in ["1623", "1626", "1624", "1627"]: + cavesdir = get_survexareapath(areacode) + arealist = sorted([(areacode, -int(re.match(r"\d*", f).group(0) or "0"), f) for f in os.listdir(cavesdir)]) fnumlist += arealist # print(fnumlist) # go through the list and identify the contents of each cave directory - for area, num, cavedir in fnumlist: + for areacode, num, cavedir in fnumlist: # these have sub dirs /cucc/ /arge/ /old/ but that is no reason to hide them in this webpage # so these are now treated the same as 142 and 113 which also have a /cucc/ sub dir @@ -593,18 +593,17 @@ def survexcaveslist(request): # which usually but not always true. e.g. caves-1623/78/allkaese.svx not caves-1623/78/78.svx # which is why we now also pass through the cavedir - # Still fails for loutitohoehle etc even though this is set correctly when the pending cave is created - cavesdir = get_survexareapath(area) + cavesdir = get_survexareapath(areacode) gcavedir = os.path.join(cavesdir, cavedir) if os.path.isdir(gcavedir) and cavedir[0] != ".": subdirs, subsvx = identifycavedircontents(gcavedir) check_cave_registered( - area, cavedir + areacode, cavedir ) # should do this only once per database load or it will be slow survdirobj = [] for lsubsvx in subsvx: - survdirobj.append(("caves-" + area + "/" + cavedir + "/" + lsubsvx, lsubsvx)) + survdirobj.append(("caves-" + areacode + "/" + cavedir + "/" + lsubsvx, lsubsvx)) # caves with subdirectories if subdirs: @@ -614,7 +613,7 @@ def survexcaveslist(request): # assert not dsubdirs # handle case of empty sub directory lsurvdirobj = [] for lsubsvx in dsubsvx: - lsurvdirobj.append(("caves-" + area + "/" + cavedir + "/" + subdir + "/" + lsubsvx, lsubsvx)) + lsurvdirobj.append(("caves-" + areacode + "/" + cavedir + "/" + subdir + "/" + lsubsvx, lsubsvx)) if len(dsubsvx) >= 1: subsurvdirs.append( (subdir, lsurvdirobj[0], lsurvdirobj[0:]) @@ -683,7 +682,7 @@ def survexcavesingle(request, cave_shortname): else: return render(request, "errors/svxcaves404.html", {"settings": settings, "cave": cave_shortname}) -def check_cave_registered(area, survex_cave): +def check_cave_registered(areacode, survex_cave): """Checks whether a cave has been properly registered when it is found in the Loser repo This should really be called by databaseReset not here in a view Currently Caves are only registered if they are listed in :expoweb: settings.CAVEDESCRIPTIONS @@ -699,7 +698,7 @@ def check_cave_registered(area, survex_cave): except MultipleObjectsReturned: caves = Cave.objects.filter(kataster_number=survex_cave) for c in caves: - if str(c) == area + "-" + survex_cave: + if str(c) == areacode + "-" + survex_cave: return str(c) # just get the first that matches return None # many returned but none in correct area |