diff options
author | Philip Sargent <philip.sargent@gmail.com> | 2023-08-03 16:11:46 +0300 |
---|---|---|
committer | Philip Sargent <philip.sargent@gmail.com> | 2023-08-03 16:11:46 +0300 |
commit | e101f4ed2f3994d20f0f9daed9a6f2fd80bcfd4b (patch) | |
tree | ffd8ef9280beea9825c6885b1326a1806d859b7f /core/models/caves.py | |
parent | 0dfe9d94b2114d7709ae24c0f859127745ffa524 (diff) | |
download | troggle-e101f4ed2f3994d20f0f9daed9a6f2fd80bcfd4b.tar.gz troggle-e101f4ed2f3994d20f0f9daed9a6f2fd80bcfd4b.tar.bz2 troggle-e101f4ed2f3994d20f0f9daed9a6f2fd80bcfd4b.zip |
trying to isolate bug in letter setting on ents
Diffstat (limited to 'core/models/caves.py')
-rw-r--r-- | core/models/caves.py | 41 |
1 files changed, 32 insertions, 9 deletions
diff --git a/core/models/caves.py b/core/models/caves.py index 0cfdd8e..4d268e5 100644 --- a/core/models/caves.py +++ b/core/models/caves.py @@ -64,20 +64,21 @@ class CaveAndEntrance(models.Model): entrances in one form. CASCADE means that if the cave or the entrance is deleted, then this CaveAndEntrance is deleted too + NOT NEEDED anymore if we insist that cave:entrances have 1:n multiplicity. """ cave = models.ForeignKey("Cave", on_delete=models.CASCADE) entrance = models.ForeignKey("Entrance", on_delete=models.CASCADE) - entrance_letter = models.CharField(max_length=20, blank=True, null=True) + entranceletter = models.CharField(max_length=20, blank=True, null=True) class Meta: - unique_together = [["cave", "entrance"], ["cave", "entrance_letter"]] - ordering = ["entrance_letter"] + unique_together = [["cave", "entrance"], ["cave", "entranceletter"]] + ordering = ["entranceletter"] def __str__(self): - return str(self.cave) + str(self.entrance_letter) + return str(self.cave) + str(self.entranceletter) # class CaveSlug(models.Model): -# moved to models/logbooks.py to avoid cyclic import problem +# moved to models/logbooks.py to avoid cyclic import problem. No I don't know why either. class Cave(TroggleModel): # too much here perhaps, @@ -208,8 +209,8 @@ class Cave(TroggleModel): rs = [] res = "" for e in CaveAndEntrance.objects.filter(cave=self): - if e.entrance_letter: - rs.append(e.entrance_letter) + if e.entranceletter: + rs.append(e.entranceletter) rs.sort() prevR = "" n = 0 @@ -246,7 +247,9 @@ class Cave(TroggleModel): return def file_output(self): - filepath = Path(os.path.join(settings.CAVEDESCRIPTIONS, self.filename)) + """This produces the content which wll be re-saved as the cave_data html file. + """ + filepath = Path(settings.CAVEDESCRIPTIONS, self.filename) t = loader.get_template("dataformat/cave.xml") now = datetime.now(timezone.utc) @@ -306,7 +309,7 @@ class Entrance(TroggleModel): url = models.CharField(max_length=300, blank=True, null=True) class Meta: - ordering = ["caveandentrance__entrance_letter"] + ordering = ["caveandentrance__entranceletter"] def __str__(self): return str(self.slug) @@ -325,6 +328,26 @@ class Entrance(TroggleModel): else: return None + def singleletter(self): + """Used in template/dataformat/cave.xml to write out a replacement cave_data file + why is this not working? + """ + cavelist = self.cavelist + try: + first = cavelist[0] + ce = CaveAndEntrance.objects.get(entrance=self, cave=first) + except: + # will fail if no caves in cavelist or if the cave isnt in the db + return "Z" + print(f"singleletter() access for first cave in {cavelist=}") + if ce.entranceletter == "": + print(f"### BLANK LETTER") + return "Y" + else: + letter = ce.entranceletter + print(f"### LETTER {letter}") + return letter + def exact_location(self): return self.single(self.exact_station) |