diff options
| author | etienne <etienne@9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864> | 2010-03-07 21:30:42 +0000 |
|---|---|---|
| committer | etienne <etienne@9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864> | 2010-03-07 21:30:42 +0000 |
| commit | 63a9537e7deeb473145512fe8a080c62ea62c2c7 (patch) | |
| tree | 0b09c3ec21efb1cfa5b0f63349da200031191714 /chimere/main | |
| parent | 9d42020c24fd85296baa3423c8b70351f54c7179 (diff) | |
| download | Chimère-63a9537e7deeb473145512fe8a080c62ea62c2c7.tar.bz2 Chimère-63a9537e7deeb473145512fe8a080c62ea62c2c7.zip | |
Filter categories for submission by areas - #86
git-svn-id: http://www.peacefrogs.net/svn/chimere/trunk@71 9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864
Diffstat (limited to 'chimere/main')
| -rw-r--r-- | chimere/main/models.py | 17 | ||||
| -rw-r--r-- | chimere/main/views.py | 10 |
2 files changed, 17 insertions, 10 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') diff --git a/chimere/main/views.py b/chimere/main/views.py index fc5e4c4..e6e37c2 100644 --- a/chimere/main/views.py +++ b/chimere/main/views.py @@ -52,7 +52,7 @@ def get_base_response(area_name=""): base_url = '/' + area_name + base_url base_response_dct['extra_url'] = base_url base_response_dct['area_name'] = area_name - if settings.CSS_AREAS: + if settings.CSS_AREAS and area_name: base_response_dct['css_area'] = area_name + ".css" base_response_dct['area_name'] = area_name return base_response_dct @@ -131,10 +131,11 @@ def edit(request, area_name=""): 'map_layer':settings.MAP_LAYER, 'form':form, 'extra_head':form.media, - 'sub_categories':SubCategory.getAvailable(['M', 'B']), + 'sub_categories':SubCategory.getAvailable(['M', 'B'], + area_name), 'point_widget':PointChooserWidget().render('point', None, area_name=area_name), - 'properties':declared_fields + 'properties':declared_fields, }) # manualy populate the custom widget if 'subcategory' in form.data and form.data['subcategory']: @@ -170,7 +171,8 @@ def editRoute(request, area_name=""): 'map_layer':settings.MAP_LAYER, 'form':form, 'extra_head':form.media, - 'sub_categories':SubCategory.getAvailable(['R', 'B']), + 'sub_categories':SubCategory.getAvailable(['R', 'B'], + area_name), 'route_widget':RouteChooserWidget().render('route', None, area_name=area_name), 'properties':declared_fields |
