From d468f7a76724652dab912b13ee9242d9b220d961 Mon Sep 17 00:00:00 2001 From: David Kerkeslager Date: Fri, 4 Mar 2022 10:02:17 -0500 Subject: [PATCH] Display sub-areas in the areas list --- src/climbing/models.py | 43 +++++++++++++++++++ .../templates/climbing/area_list.html | 27 +++++++++--- 2 files changed, 63 insertions(+), 7 deletions(-) diff --git a/src/climbing/models.py b/src/climbing/models.py index 62507ad..8be6ee9 100644 --- a/src/climbing/models.py +++ b/src/climbing/models.py @@ -8,6 +8,49 @@ class Area(models.Model): def __str__(self): return self.name + @property + def sub_areas(self): + crags = iter(self.crags.order_by('name')) + clusters = iter(self.clusters.order_by('name')) + + try: + crag = next(crags) + except StopIteration: + crag = None + + try: + cluster = next(clusters) + except StopIteration: + cluster = None + + while crag and cluster: + if crag.name < cluster.name: + yield crag + try: + crag = next(crags) + except: + crag = None + else: + yield cluster + try: + cluster = next(clusters) + except: + cluster = None + + while crag: + yield crag + try: + crag = next(crags) + except: + crag = None + + while cluster: + yield cluster + try: + cluster = next(clusters) + except: + cluster = None + class Crag(models.Model): area = models.ForeignKey( Area, diff --git a/src/climbing/templates/climbing/area_list.html b/src/climbing/templates/climbing/area_list.html index 02298ff..3946d24 100644 --- a/src/climbing/templates/climbing/area_list.html +++ b/src/climbing/templates/climbing/area_list.html @@ -1,12 +1,25 @@ {% extends 'core/base.html' %} {% block content %} - {% for object in object_list %} -

{{ object.name }}

- {% if not forloop.last %} -
- {% endif %} - {% empty %} + {% if object_list %} + + {% else %} No areas found. - {% endfor %} + {% endif %} {% endblock %} -- 2.20.1