From ea04bf9de68759d90dad4c5166d95e4fa305e499 Mon Sep 17 00:00:00 2001 From: etienne Date: Sun, 21 Feb 2010 20:25:28 +0000 Subject: Management of links between categories and areas in administration - #79 git-svn-id: http://www.peacefrogs.net/svn/chimere/trunk@64 9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864 --- chimere/main/forms.py | 4 ++-- chimere/main/models.py | 9 +++++++-- chimere/main/widgets.py | 5 +++++ 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/chimere/main/forms.py b/chimere/main/forms.py index be18b2f..74577d1 100644 --- a/chimere/main/forms.py +++ b/chimere/main/forms.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 @@ -29,7 +29,7 @@ from django.core.mail import EmailMessage, BadHeaderError from chimere import settings from chimere.main.models import Marker, Route, PropertyModel, Property, Area,\ - News, Category + News, Category, SubCategory from chimere.main.widgets import AreaField, PointField, TextareaWidget def notifyStaff(subject, body, sender=None): diff --git a/chimere/main/models.py b/chimere/main/models.py index 2576395..60a5837 100644 --- a/chimere/main/models.py +++ b/chimere/main/models.py @@ -26,7 +26,8 @@ from django.contrib.gis.db import models from django.contrib import admin from chimere import settings -from chimere.main.widgets import PointField, RouteField +from chimere.main.widgets import PointField, RouteField, \ + ManyToManyField_NoSyncdb class News(models.Model): @@ -93,6 +94,8 @@ class SubCategory(models.Model): category = models.ForeignKey(Category, verbose_name=_("Category")) name = models.CharField(_("Name"), max_length=150) available = models.BooleanField(_("Available")) + areas = models.ManyToManyField('Area', related_name='areas', + blank=True, null=True, db_table=u'subcategory_areas') icon = models.ForeignKey(Icon, verbose_name=_("Icon")) color_theme = models.ForeignKey(ColorTheme, verbose_name=_("Color theme"), blank=True, null=True) @@ -267,9 +270,11 @@ class Area(models.Model): """ name = models.CharField(_("Name"), max_length=150) url = models.CharField(_("Url"), max_length=100, blank=True) + subcategories = ManyToManyField_NoSyncdb(SubCategory, + related_name='subcategories', blank=True, null=True, + db_table=u'subcategory_areas') order = models.IntegerField(_("Order")) available = models.BooleanField(_("Available")) - subcategories = models.ManyToManyField(SubCategory, related_name='areas') upper_left_corner = models.PointField(_("Upper left corner"), default='POINT(0 0)') lower_right_corner = models.PointField(_("Lower right corner"), diff --git a/chimere/main/widgets.py b/chimere/main/widgets.py index 6b5e544..44e8ac8 100644 --- a/chimere/main/widgets.py +++ b/chimere/main/widgets.py @@ -33,6 +33,11 @@ URL_OSM_CSS = ["http://www.openlayers.org/api/theme/default/style.css"] URL_OSM_JS = ["http://www.openlayers.org/api/OpenLayers.js", "http://www.openstreetmap.org/openlayers/OpenStreetMap.js"] +class ManyToManyField_NoSyncdb(models.ManyToManyField): + def __init__(self, *args, **kwargs): + super(ManyToManyField_NoSyncdb, self).__init__(*args, **kwargs) + self.creates_table = False + def getMapJS(): '''Variable initialization for drawing the map ''' -- cgit v1.2.3