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,