diff options
Diffstat (limited to 'core/models')
-rw-r--r-- | core/models/caves.py | 46 |
1 files changed, 41 insertions, 5 deletions
diff --git a/core/models/caves.py b/core/models/caves.py index f5ae320..9336f5b 100644 --- a/core/models/caves.py +++ b/core/models/caves.py @@ -70,6 +70,10 @@ class CaveAndEntrance(models.Model): 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) + class Meta: + unique_together = [['cave', 'entrance'], ['cave', 'entrance_letter']] + ordering = ['entrance_letter'] + def __str__(self): return str(self.cave) + str(self.entrance_letter) @@ -121,7 +125,7 @@ class Cave(TroggleModel): def hassurveydata(self): if not self.underground_centre_line: return "No" - if self.survex_file: + if self.survex_filcavee: return "Yes" return "Missing" @@ -153,6 +157,9 @@ class Cave(TroggleModel): #return settings.URL_ROOT + '/cave/' + href + '/' #return urljoin(settings.URL_ROOT, reverse('cave',kwargs={'cave_id':href,})) # WRONG. This produces /cave/161 and should be /1623/161 return Path(settings.URL_ROOT) / self.url # not good Django style.. NEEDS actual URL + + def url_parent(self): + return self.url.rsplit("/", 1)[0] def __str__(self, sep = ": "): return str(self.slug()) @@ -172,7 +179,7 @@ class Cave(TroggleModel): # undated.append(q) # sortedqms = sorted(dated, key=operator.attrgetter('block.date')) # sort by date of survexblock the QM was defined in # orderedqms = sorted(undated, key=operator.attrgetter('expoyear')) # sort by date of expoyear - # return orderedqms + sortedqms # a list, NOT a QuerySet + # return orderedqmcaves + sortedqms # a list, NOT a QuerySet # def new_QM_number(self, year=datetime.date.today().year): @@ -181,7 +188,7 @@ class Cave(TroggleModel): # res=QM.objects.filter(found_by__date__year=year, found_by__cave_slug=self.slug).order_by('-number')[0] # except IndexError: # return 1 - # return res.number+1 + # return res.number+1CaveAndEntrance def kat_area(self): for a in self.area.all(): @@ -233,7 +240,15 @@ class Cave(TroggleModel): u = t.render(c) writetrogglefile(filepath, u) return + + def file_output(self): + filepath = Path(os.path.join(settings.CAVEDESCRIPTIONS, self.filename)) + t = loader.get_template('dataformat/cave.xml') + #c = Context({'cave': self}) + c = dict({'cave': self}) + content = t.render(c) + return (filepath, content, "utf8") def getArea(self): areas = self.area.all() @@ -292,6 +307,9 @@ class Entrance(TroggleModel): url = models.CharField(max_length=200,blank=True, null=True) filename = models.CharField(max_length=200) cached_primary_slug = models.CharField(max_length=200,blank=True, null=True) + + class Meta: + ordering = ['caveandentrance__entrance_letter'] def __str__(self): return str(self.slug()) @@ -370,7 +388,7 @@ class Entrance(TroggleModel): # if ancestor_titles: # res = '/'.join((self.get_root().cave.get_absolute_url(), ancestor_titles, self.title)) # else: - # res = '/'.join((self.get_root().cave.get_absolute_url(), self.title)) + # res = '/'.jocavein((self.get_root().cave.get_absolute_url(), self.title)) # return res res = '/'.join((self.get_root().cave.get_absolute_url(), self.title)) return res @@ -399,6 +417,14 @@ class Entrance(TroggleModel): def get_file_path(self): return Path(settings.ENTRANCEDESCRIPTIONS, self.filename) + + def file_output(self): + filepath = Path(os.path.join(settings.ENTRANCEDESCRIPTIONS, self.filename)) + + t = loader.get_template('dataformat/entrance.xml') + c = dict({'entrance': self}) + content = t.render(c) + return (filepath, content, "utf8") def writeDataFile(self): filepath = os.path.join(settings.ENTRANCEDESCRIPTIONS, self.filename) @@ -408,7 +434,17 @@ class Entrance(TroggleModel): u = t.render(c) writetrogglefile(filepath, u) return - + + def url_parent(self): + if self.url: + return self.url.rsplit("/", 1)[0] + else: + cavelist = self.cavelist() + if len(self.cavelist()) == 1: + return cavelist[0].url_parent() + else: + return "" + class LogbookEntry(TroggleModel): """Single parsed entry from Logbook |