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)
@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(