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,
{% extends 'core/base.html' %}
{% block content %}
- {% for object in object_list %}
- <p>{{ object.name }}</p>
- {% if not forloop.last %}
- <hr/>
- {% endif %}
- {% empty %}
+ {% if object_list %}
+ <ul>
+ {% for area in object_list %}
+ <li>
+ {{ area.name }}
+
+ <ul>
+ {% for sa in area.sub_areas %}
+ <li>{{ sa.name }}</li>
+ {% endfor %}
+ </ul>
+
+ {% if not forloop.last %}
+ <hr/>
+ {% endif %}
+ </li>
+ {% endfor %}
+ </ul>
+ {% else %}
<em>No areas found.</em>
- {% endfor %}
+ {% endif %}
{% endblock %}