diff options
Diffstat (limited to 'chimere/main/models.py')
-rw-r--r-- | chimere/main/models.py | 17 |
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') |