From ad04991edd7b474184e68a5c3d550689191a38d7 Mon Sep 17 00:00:00 2001 From: etienne Date: Sun, 21 Feb 2010 18:05:23 +0000 Subject: Evolution in database for dynamic management of categories and dynamic urls by areas git-svn-id: http://www.peacefrogs.net/svn/chimere/trunk@62 9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864 --- chimere/main/models.py | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/chimere/main/models.py b/chimere/main/models.py index b35ddb9..f6148cd 100644 --- a/chimere/main/models.py +++ b/chimere/main/models.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (C) 2008 Étienne Loks +# Copyright (C) 2008-2010 Étienne Loks # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as @@ -107,25 +107,25 @@ class SubCategory(models.Model): ordering = ["category", "order"] verbose_name = _("Subcategory") - def getAvailable(item_types=None): + @classmethod + def getAvailable(cls, item_types=None): '''Get list of tuples with first the category and second the associated subcategories ''' sub_categories = {} subcategories = None if not item_types: - subcategories = SubCategory.objects.filter(category__available=True, - available=True) + subcategories = cls.objects.filter(category__available=True, + available=True) else: - subcategories = SubCategory.objects.filter(category__available=True, - item_type__in=item_types) + subcategories = cls.objects.filter(category__available=True, + item_type__in=item_types) for sub_category in subcategories: if sub_category.category not in sub_categories: sub_categories[sub_category.category] = [] sub_categories[sub_category.category].append(sub_category) return [(category, sub_cats) for category, sub_cats \ in sub_categories.items()] - getAvailable = staticmethod(getAvailable) class Marker(models.Model): '''Marker for a POI @@ -266,8 +266,10 @@ class Area(models.Model): """Rectangular area of the map """ name = models.CharField(_("Name"), max_length=150) + url = models.CharField(_("Url"), max_length=100, blank=True) order = models.IntegerField(_("Order")) available = models.BooleanField(_("Available")) + subcategories = models.ManyToManyFields(SubCategory, related_name='areas') upper_left_corner = models.PointField(_("Upper left corner"), default='POINT(0 0)') lower_right_corner = models.PointField(_("Lower right corner"), @@ -281,11 +283,11 @@ class Area(models.Model): ordering = ('order', 'name') verbose_name = _("Area") - def getAvailable(): + @classmethod + def getAvailable(cls): '''Get available areas ''' - return Area.objects.filter(available=True) - getAvailable = staticmethod(getAvailable) + return cls.objects.filter(available=True) class PropertyModel(models.Model): '''Model for a property -- cgit v1.2.3