X-Git-Url: https://code.kerkeslager.com/?p=climbing.kerkeslager.com;a=blobdiff_plain;f=src%2Fclimbing%2Fmodels.py;fp=src%2Fclimbing%2Fmodels.py;h=83d437f1e6b1c10f2dff565829c21028c50341ec;hp=60aa71718ff7cf46a193e1c21b78f45a4895fda1;hb=93c0a73c774d32afb5258ed584343aa49359741e;hpb=cf5da88d1a9a825414440e536333eb700565dba9 diff --git a/src/climbing/models.py b/src/climbing/models.py index 60aa717..83d437f 100644 --- a/src/climbing/models.py +++ b/src/climbing/models.py @@ -1,6 +1,8 @@ from django.contrib.auth.models import User from django.db import models +from core import utils + class Area(models.Model): name = models.CharField(max_length=64) notes = models.TextField(blank=True, null=True) @@ -10,46 +12,11 @@ class Area(models.Model): @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 + return utils.merge( + self.crags.order_by('name'), + self.clusters.order_by('name'), + 'name', + ) class Crag(models.Model): area = models.ForeignKey(