summaryrefslogtreecommitdiff
path: root/chimere/main/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'chimere/main/models.py')
-rw-r--r--chimere/main/models.py17
1 files changed, 11 insertions, 6 deletions
diff --git a/chimere/main/models.py b/chimere/main/models.py
index 283ae1d..710623c 100644
--- a/chimere/main/models.py
+++ b/chimere/main/models.py
@@ -110,18 +110,22 @@ class SubCategory(models.Model):
verbose_name = _("Subcategory")
@classmethod
- def getAvailable(cls, item_types=None):
+ def getAvailable(cls, item_types=None, area_name=None):
'''Get list of tuples with first the category and second the associated
subcategories
'''
sub_categories = {}
subcategories = None
+ subcategories = cls.objects.filter(category__available=True)
if not item_types:
- subcategories = cls.objects.filter(category__available=True,
- available=True)
+ subcategories = subcategories.filter(available=True)
else:
- subcategories = cls.objects.filter(category__available=True,
- item_type__in=item_types)
+ subcategories = subcategories.filter(item_type__in=item_types)
+ if area_name:
+ area = Area.objects.get(urn=area_name)
+ if area.subcategories.count():
+ sub_ids = [sub.id for sub in area.subcategories.all()]
+ subcategories = subcategories.filter(id__in=sub_ids)
for sub_category in subcategories:
if sub_category.category not in sub_categories:
sub_categories[sub_category.category] = []
@@ -336,7 +340,8 @@ class Area(models.Model, SimpleArea):
"""Rectangular area of the map
"""
name = models.CharField(_("Name"), max_length=150)
- urn = models.CharField(_("Area urn"), max_length=100, blank=True)
+ urn = models.SlugField(_("Area urn"), max_length=50, blank=True,
+ unique=True)
subcategories = ManyToManyField_NoSyncdb(SubCategory,
related_name='subcategories', blank=True, null=True,
db_table=u'subcategory_areas')