diff options
-rw-r--r-- | core/forms.py | 4 | ||||
-rw-r--r-- | core/models/caves.py | 13 | ||||
-rw-r--r-- | core/models/logbooks.py | 2 | ||||
-rw-r--r-- | core/views/caves.py | 27 | ||||
-rw-r--r-- | parsers/caves.py | 39 |
5 files changed, 10 insertions, 75 deletions
diff --git a/core/forms.py b/core/forms.py index b0b84c6..8d3ea61 100644 --- a/core/forms.py +++ b/core/forms.py @@ -157,13 +157,13 @@ class EntranceForm(ModelForm): return self.cleaned_data -# This next line is called from the templates/edit_cave2.html template. +# This next line is called from the templates/edit_cave.html template. # This is sufficient to create an entire entry for for the cave fields automatically # http://localhost:8000/cave/new/ # using django built-in Deep Magic. https://docs.djangoproject.com/en/dev/topics/forms/modelforms/ # for forms which map directly onto a Django Model CaveAndEntranceFormSet = modelformset_factory(CaveAndEntrance, exclude=("cave",)) - +# This is used only in edit_entrance() in views/caves.py class EntranceLetterForm(ModelForm): """Form to link entrances to caves, along with an entrance number. diff --git a/core/models/caves.py b/core/models/caves.py index 8d94086..95cbeec 100644 --- a/core/models/caves.py +++ b/core/models/caves.py @@ -25,11 +25,11 @@ Gcave_count = None """ todo = """ -- Find out why we have separate objects CaveSlug and EntranceSlug and why +- Find out why we have separate objects CaveSlug and why these are not just a single field on the Model. Do we ever need more than one slug per cave or entrance? Surely that would break everything?? -- Can we rewrite things to eliminate the CaveSlug and EntranceSlug Classes and objects? Surely +- 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? @@ -259,15 +259,6 @@ class Cave(TroggleModel): pass return lowestareas[0] - -# class EntranceSlug(models.Model): - # """If the Entrance is deleted, then this EntranceSlug is deleted too - # """ - # entrance = models.ForeignKey("Entrance", on_delete=models.CASCADE) - # slug = models.SlugField(max_length=50, unique=True) - # # primary = models.BooleanField(default=False) - - class Entrance(TroggleModel): MARKING_CHOICES = ( ("P", "Paint"), diff --git a/core/models/logbooks.py b/core/models/logbooks.py index 361fb96..9a13b59 100644 --- a/core/models/logbooks.py +++ b/core/models/logbooks.py @@ -11,7 +11,7 @@ from troggle.core.models.troggle import Expedition, TroggleModel """ todo = """ -- Can we rewrite things to eliminate the CaveSlug and EntranceSlug Classes and objects? Surely +- Can we rewrite things to eliminate the CaveSlug and objects? Surely foreign keys work fine ?! """ diff --git a/core/views/caves.py b/core/views/caves.py index 475671c..41c14ef 100644 --- a/core/views/caves.py +++ b/core/views/caves.py @@ -10,7 +10,7 @@ from django.urls import NoReverseMatch import troggle.settings as settings from troggle.core.forms import CaveAndEntranceFormSet, CaveForm, EntranceForm, EntranceLetterForm -from troggle.core.models.caves import Cave, CaveAndEntrance, Entrance, GetCaveLookup # EntranceSlug, +from troggle.core.models.caves import Cave, CaveAndEntrance, Entrance, GetCaveLookup from troggle.core.models.logbooks import CaveSlug, QM from troggle.core.utils import write_and_commit from troggle.core.views import expo @@ -407,8 +407,10 @@ def edit_cave(request, path="", slug=None): def edit_entrance(request, path="", caveslug=None, slug=None): """This is the form that edits the entrance data for a single entrance and writes out an XML file in the :expoweb: repo folder + The format for the file being saved is in templates/dataformat/entrance.xml - Warning. This uses Django deep magic. + + Warning. This uses Django deep magic for multiple forms and the CaveAndEntrance class. It does save the data into into the database directly, not by parsing the file. """ @@ -419,7 +421,6 @@ def edit_entrance(request, path="", caveslug=None, slug=None): return render(request, "errors/badslug.html", {"badslug": f"{slug} {caveslug} - from edit_entrance()"}) if slug: - # entrance = Entrance.objects.get(entranceslug__slug=slug) caveAndEntrance = CaveAndEntrance.objects.get(entrance=entrance, cave=cave) entlettereditable = False else: @@ -441,9 +442,6 @@ def edit_entrance(request, path="", caveslug=None, slug=None): entrance.cached_primary_slug = slugname entrance.filename = slugname + ".html" entrance.save() - # if slug is None: - # es = EntranceSlug(entrance=entrance, slug=slugname, primary=True) - # es.save() entrance_file = entrance.file_output() cave_file = cave.file_output() write_and_commit([entrance_file, cave_file], f"Online edit of {cave}{entletter}") @@ -485,29 +483,12 @@ def ent(request, cave_id, ent_letter): def cave_debug(request): ents = Entrance.objects.all().order_by('id') - #slugs = self.entranceslug_set.filter() return render( request, "cave_debug.html", {"ents": ents}, ) -# def entranceSlug(request, slug): -# '''This seems to be a fossil, but I am not sure... -# ''' -# entrance = Entrance.objects.get(entranceslug__slug = slug) -# if entrance.non_public and not request.user.is_authenticated: -# return render(request,'nonpublic.html', {'instance': entrance}) -# else: -# return render(request,'entranceslug.html', {'entrance': entrance}) - -# def surveyindex(request): -# '''The template does not exist, there is no URL which calls this, so it is a fossil -# ''' -# surveys=Survey.objects.all() -# expeditions=Expedition.objects.order_by("-year") -# return render(request,'survey.html',locals()) - def get_entrances(request, caveslug): try: diff --git a/parsers/caves.py b/parsers/caves.py index f6681b8..de7c8e8 100644 --- a/parsers/caves.py +++ b/parsers/caves.py @@ -5,7 +5,7 @@ from pathlib import Path from django.conf import settings from django.db import transaction -from troggle.core.models.caves import Area, Cave, CaveAndEntrance, Entrance, GetCaveLookup #EntranceSlug, +from troggle.core.models.caves import Area, Cave, CaveAndEntrance, Entrance, GetCaveLookup from troggle.core.models.logbooks import CaveSlug from troggle.core.models.troggle import DataIssue from troggle.settings import CAVEDESCRIPTIONS, ENTRANCEDESCRIPTIONS, EXPOWEB, SURVEX_DATA @@ -46,16 +46,6 @@ def dummy_entrance(k, slug, msg="DUMMY"): marking="?", ) if ent: - # try: # Now create a entranceslug object - # EntranceSlug(entrance=ent, slug=slug) - # except: - # message = f" ! {k:11s} {msg} cave SLUG '{slug}' create failure" - # DataIssue.objects.create(parser="entrances", message=message, url=f"{slug}") - # print(message) - - # # ent.cached_slug = slug - # # ent.filename = slug + ".html" - # # ent.save() return ent else: message = f" ! {k:11s} {msg}-{slug} {k} entrance create failure" @@ -81,14 +71,6 @@ def set_dummy_entrance(id, slug, cave, msg="DUMMY"): message = f' ! Entrance Dummy setting failure, slug:"{slug}" cave id :"{id}" ' DataIssue.objects.create(parser="entrances", message=message, url=f"{cave.url}") print(message) - - # try: - # EntranceSlug.objects.update_or_create(entrance=entrance, slug=slug) - # except: - # # raise - # message = f' ! EntranceSlug setting failure for Dummy cave, slug:"{slug}" cave id :"{id}" ' - # DataIssue.objects.create(parser="entrances", message=message, url=f"{cave.url}") - # print(message) def make_areas(): print(" - Creating Areas 1623, 1624, 1627 and 1626") @@ -372,25 +354,6 @@ def readentrance(filename): message = f" ! - More than one slug for an entrance: {entrance}, slugs: {slugs}. Aborting." DataIssue.objects.create(parser="entrances", message=message, url=f"/cave/{slug}/edit/") print(message) - # for slug in slugs: - # # print("entrance slug:{} filename:{}".format(slug, filename)) - # try: - # EntranceSlug.objects.update_or_create(entrance=e, slug=slug) - # except: - # # need to cope with duplicates - # message = f" ! FAILED to get precisely one ENTRANCE when updating using: cave_entrance/{filename}" - # DataIssue.objects.create(parser="entrances", message=message, url=f"/cave/{slug}/edit/") - # # kents = EntranceSlug.objects.all().filter(entrance=e, slug=slug, primary=primary) - # kents = EntranceSlug.objects.all().filter(entrance=e, slug=slug) - # for k in kents: - # message = " ! - DUPLICATE in db. entrance:" + str(k.entrance) + ", slug:" + str(k.slug()) - # DataIssue.objects.create(parser="entrances", message=message, url=f"/cave/{slug}/edit/") - # print(message) - # for k in kents: - # if k.slug() is not None: - # print(" ! - OVERWRITING this one: slug:" + str(k.slug())) - # k.notes = "DUPLICATE entrance found on import. Please fix\n" + k.notes - def readcave(filename): """Reads an enrance description from the .html file |