summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/TESTS/test_imports.py2
-rw-r--r--core/admin.py3
-rw-r--r--core/models/caves.py4
-rw-r--r--core/models/logbooks.py23
-rw-r--r--core/views/caves.py10
-rw-r--r--core/views/uploads.py4
6 files changed, 14 insertions, 32 deletions
diff --git a/core/TESTS/test_imports.py b/core/TESTS/test_imports.py
index c8bb1b4..f5127c3 100644
--- a/core/TESTS/test_imports.py
+++ b/core/TESTS/test_imports.py
@@ -72,7 +72,7 @@ class SimpleTest(SimpleTestCase):
from django.utils.timezone import get_current_timezone, make_aware
from parsers.people import GetPersonExpeditionNameLookup
- from troggle.core.models.logbooks import CaveSlug, QM, LogbookEntry, PersonLogEntry
+ from troggle.core.models.logbooks import QM, LogbookEntry, PersonLogEntry
from troggle.core.models.troggle import DataIssue, Expedition
def test_import_core_views_caves(self):
diff --git a/core/admin.py b/core/admin.py
index 880d163..fa04b12 100644
--- a/core/admin.py
+++ b/core/admin.py
@@ -3,7 +3,7 @@ from django.core import serializers
from django.http import HttpResponse
from troggle.core.models.caves import Cave, CaveAndEntrance, Entrance
-from troggle.core.models.logbooks import QM, LogbookEntry, PersonLogEntry, CaveSlug
+from troggle.core.models.logbooks import QM, LogbookEntry, PersonLogEntry
from troggle.core.models.survex import (
DrawingFile,
SingleScan,
@@ -138,7 +138,6 @@ admin.site.register(Cave, CaveAdmin)
#admin.site.register(Area)
admin.site.register(CaveAndEntrance)
admin.site.register(Entrance, EntranceAdmin)
-admin.site.register(CaveSlug)
admin.site.register(SurvexBlock, SurvexBlockAdmin)
admin.site.register(DrawingFile, DrawingFileAdmin)
admin.site.register(Expedition)
diff --git a/core/models/caves.py b/core/models/caves.py
index 4cf0512..b63df2e 100644
--- a/core/models/caves.py
+++ b/core/models/caves.py
@@ -58,9 +58,7 @@ class CaveAndEntrance(models.Model):
def __str__(self):
return str(self.cave) + str(self.entranceletter)
-
-# class CaveSlug(models.Model):
-# moved to models/logbooks.py to avoid cyclic import problem. No I don't know why either.
+
def get_cave_leniently(caveid):
try:
diff --git a/core/models/logbooks.py b/core/models/logbooks.py
index 1ffe55d..d8b4d93 100644
--- a/core/models/logbooks.py
+++ b/core/models/logbooks.py
@@ -10,34 +10,19 @@ from django.template import loader
import settings
from troggle.core.models.troggle import Expedition, TroggleModel
+
"""The model declarations LogBookEntry, PersonLogEntry, QM
"""
todo = """
-- Can we rewrite things to eliminate the CaveSlug and objects? No
- Surely foreign keys work fine ?! No
Foreign keys do not allow for there being multiple ways to refer to a cave, eg 1623-1999-03 aka 1623-204
Having slugs allows for much more loose coupling to caves, which removes alot of the need to reset the database, which interupts work flow.
It also means we do not have to be creating temporary cave objects in the database, where we do not have the underlying file in cave_data.
-
- To Do move Cave Slug back to troggle.core.models
"""
-class CaveSlug(models.Model):
- """Moved here to avoid nasty cyclic import error
- CASCADE means that if the Cave is deleted, this is too
- """
-
- cave = models.ForeignKey("Cave", on_delete=models.CASCADE)
- slug = models.SlugField(max_length=50, unique=True)
- primary = models.BooleanField(default=False)
-
- def __str__(self):
- return f"{self.slug}: {self.cave}"
-
class LogbookEntry(TroggleModel):
"""Single parsed entry from Logbook
@@ -48,7 +33,7 @@ class LogbookEntry(TroggleModel):
)
expedition = models.ForeignKey(Expedition, blank=True, null=True, on_delete=models.CASCADE)
title = models.CharField(max_length=200)
- cave_slug = models.SlugField(max_length=50, blank=True, null=True)
+ cave = models.ForeignKey("Cave", blank=True, null=True, on_delete=models.SET_NULL)
place = models.CharField(
max_length=100, blank=True, null=True, help_text="Only use this if you haven't chosen a cave"
)
@@ -62,10 +47,6 @@ class LogbookEntry(TroggleModel):
# several PersonLogEntrys point in to this object
ordering = ("-date",)
- def cave(self): # Why didn't he just make this a foreign key to Cave ?
- c = CaveSlug.objects.get(slug=self.cave_slug, primary=True).cave
- return c
-
def isLogbookEntry(self): # Function used in templates
return True
diff --git a/core/views/caves.py b/core/views/caves.py
index d7699d0..795bb18 100644
--- a/core/views/caves.py
+++ b/core/views/caves.py
@@ -16,7 +16,7 @@ from django.urls import NoReverseMatch, reverse
import troggle.settings as settings
from troggle.core.forms import CaveAndEntranceFormSet, CaveForm, EntranceForm, EntranceLetterForm
from troggle.core.models.caves import Cave, CaveAndEntrance, Entrance, GetCaveLookup, get_cave_leniently
-from troggle.core.models.logbooks import CaveSlug, QM
+from troggle.core.models.logbooks import QM
from troggle.core.models.wallets import Wallet
from troggle.core.utils import write_and_commit
from troggle.core.utils import current_expo
@@ -51,9 +51,9 @@ todo = """
# """
# return redirect("/caves")
+
def get_cave_from_slug(caveslug):
- """This is the old way of doing it, usingt eh CaveSlug intermediate object which does
- the many:many relationship between slugs and caves - whcih we don't do (and never did in practice)
+ """Needs refactoring
"""
caves = []
@@ -74,10 +74,14 @@ def get_cave_from_slug(caveslug):
if len(caves) > 1:
print(f"get_cave_from_slug(): {caveslug} More than 1 \n{caves}")
+ return None
if len(caves) <1:
print(f"get_cave_from_slug(): {caveslug} Nowt found..")
+ return None
cave = caves[0]
print(f"get_cave_from_slug(): {caveslug} FOUND {cave}")
+ return cave
+
try:
cave_zero = Cave.objects.get(caveslug__slug=caveslug)
diff --git a/core/views/uploads.py b/core/views/uploads.py
index 3d4e987..403a30d 100644
--- a/core/views/uploads.py
+++ b/core/views/uploads.py
@@ -69,7 +69,7 @@ def store_edited_entry_into_database(date, place, title, text, others, author, t
year = slug[0:4]
expedition = Expedition.objects.get(year=year)
cave = GetCaveLookup().get(place.lower())
- # print(f"{place} {cave=}")
+ # print(f"store_edited_entry_into_database(): {place=} {cave=}")
if LogbookEntry.objects.filter(slug=slug).exists():
# oops.
@@ -82,7 +82,7 @@ def store_edited_entry_into_database(date, place, title, text, others, author, t
"text": text,
"expedition": expedition,
"time_underground": tu,
- "cave_slug": str(cave),
+ "cave": cave,
"title": f"{place} - {title}",
# "other_people": others
}