diff options
| author | etienne <etienne@9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864> | 2010-02-21 15:42:51 +0000 |
|---|---|---|
| committer | etienne <etienne@9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864> | 2010-02-21 15:42:51 +0000 |
| commit | f7fd3f884d4b1571efa122ddab2c7d4d0b925518 (patch) | |
| tree | 232b18d00a5ad11eb3b323cb4d81afb574e92e2b /main/models.py | |
| parent | 9e253135138cf65e766959c094ad1182902bd363 (diff) | |
| download | Chimère-f7fd3f884d4b1571efa122ddab2c7d4d0b925518.tar.bz2 Chimère-f7fd3f884d4b1571efa122ddab2c7d4d0b925518.zip | |
Reorganize the project folder #76
git-svn-id: http://www.peacefrogs.net/svn/chimere/trunk@59 9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864
Diffstat (limited to 'main/models.py')
| -rw-r--r-- | main/models.py | 325 |
1 files changed, 0 insertions, 325 deletions
diff --git a/main/models.py b/main/models.py deleted file mode 100644 index 14f3481..0000000 --- a/main/models.py +++ /dev/null @@ -1,325 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -# Copyright (C) 2008 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -# See the file COPYING for details. - -""" -Models description -""" -from django.utils.translation import ugettext_lazy as _ - -from django.contrib.gis.db import models -from django.contrib import admin - -from chimere import settings -from chimere.main.widgets import PointField, RouteField - - -class News(models.Model): - """News of the site - """ - title = models.CharField(_("Name"), max_length=150) - available = models.BooleanField(_("Available")) - date = models.DateField(_("Date"), auto_now_add=True) - content = models.TextField() - def __unicode__(self): - ordering = ["-date"] - return self.title - class Meta: - verbose_name = _("News") - -class ColorTheme(models.Model): - """Color theme - """ - name = models.CharField(_("Name"), max_length=150) - def __unicode__(self): - return self.name - class Meta: - verbose_name = _("Color theme") - -class Color(models.Model): - """Color - """ - code = models.CharField(_("Code"), max_length=6) - order = models.IntegerField(_("Order")) - color_theme = models.ForeignKey(ColorTheme, verbose_name=_("Color theme")) - def __unicode__(self): - return self.code - class Meta: - ordering = ["order"] - verbose_name = _("Color") - -class Category(models.Model): - """Category of Point Of Interest (POI) - """ - name = models.CharField(_("Name"), max_length=150) - available = models.BooleanField(_("Available")) - order = models.IntegerField(_("Order")) - description = models.TextField(blank=True, null=True) - def __unicode__(self): - return self.name - class Meta: - ordering = ["order"] - verbose_name = _("Category") - -class Icon(models.Model): - '''Icon - ''' - name = models.CharField(_("Name"), max_length=150) - image = models.ImageField(_("Image"), upload_to='icons', - height_field='height', width_field='width') - def __unicode__(self): - return self.name - class Meta: - verbose_name = _("Icon") - -class SubCategory(models.Model): - '''Sub-category - ''' - category = models.ForeignKey(Category, verbose_name=_("Category")) - name = models.CharField(_("Name"), max_length=150) - available = models.BooleanField(_("Available")) - icon = models.ForeignKey(Icon, verbose_name=_("Icon")) - color_theme = models.ForeignKey(ColorTheme, verbose_name=_("Color theme"), - blank=True, null=True) - order = models.IntegerField(_("Order")) - TYPE = (('M', _('Marker')), - ('R', _('Route')), - ('B', _('Both')),) - item_type = models.CharField(_("Item type"), max_length=1, choices=TYPE) - def __unicode__(self): - return u"%s / %s" % (self.category.name, self.name) - class Meta: - ordering = ["category", "order"] - verbose_name = _("Subcategory") - - def getAvailable(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) - else: - subcategories = SubCategory.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 - ''' - name = models.CharField(_("Name"), max_length=150) - subcategory = models.ForeignKey(SubCategory, verbose_name=_("Subcategory")) - point = PointField(_("Localisation")) - picture = models.ImageField(_("Image"), upload_to='upload', blank=True, - height_field='height', width_field='width') - STATUS = (('S', _('Submited')), - ('A', _('Available')), - ('D', _('Disabled')),) - STATUS_DCT = {} - for key, label in STATUS: - STATUS_DCT[key] = label - status = models.CharField(_("Status"), max_length=1, choices=STATUS) - objects = models.GeoManager() - - def __unicode__(self): - return self.name - - class Meta: - ordering = ('subcategory__category', 'subcategory', 'status', 'name') - verbose_name = _("Point of interest") - - def getLatitude(self): - '''Return the latitude - ''' - return self.point.y - - def getLongitude(self): - '''Return the longitude - ''' - return self.point.x - - def getProperty(self, propertymodel, safe=None): - """Get the property of an associated property model. - If safe set to True, verify if the property is available - """ - if safe and not propertymodel.available: - return - try: - property = Property.objects.get(propertymodel=propertymodel, - marker=self) - except Property.DoesNotExist: - return - return property - - def getProperties(self): - """Get all the property availables - """ - properties = [] - for pm in PropertyModel.objects.filter(available=True): - property = self.getProperty(pm) - if property: - properties.append(property) - return properties - - def getGeoJSON(self): - '''Return a GeoJSON string - ''' - return """{"type":"Feature", "geometry":%(geometry)s, \ -"properties":{"pk": %(id)d, "name": "%(name)s", \ -"icon_path":"%(icon_path)s", "icon_width":%(icon_width)d, \ -"icon_height":%(icon_height)d}}""" % {'id':self.id, 'name':self.name, -'icon_path':self.subcategory.icon.image, 'geometry':self.point.geojson, -'icon_width':self.subcategory.icon.image.width, -'icon_height':self.subcategory.icon.image.height,} - -class Route(models.Model): - '''Route on the map - ''' - name = models.CharField(_("Name"), max_length=150) - subcategory = models.ForeignKey(SubCategory, verbose_name=_("Subcategory")) - route = RouteField(_("Route")) - picture = models.ImageField(_("Image"), upload_to='upload', blank=True, - height_field='height', width_field='width') - STATUS = (('S', _('Submited')), - ('A', _('Available')), - ('D', _('Disabled')),) - STATUS_DCT = {} - for key, label in STATUS: - STATUS_DCT[key] = label - status = models.CharField(_("Status"), max_length=1, choices=STATUS) - objects = models.GeoManager() - - def __unicode__(self): - return self.name - - class Meta: - ordering = ('subcategory__category', 'subcategory', 'status', 'name') - verbose_name = _("Route") - - def getLatitude(self): - '''Return the latitude - ''' - return self.point.y - - def getLongitude(self): - '''Return the longitude - ''' - return self.point.x - - def getProperty(self, propertymodel, safe=None): - """Get the property of an associated property model. - If safe set to True, verify if the property is available - """ - if safe and not propertymodel.available: - return - try: - property = Property.objects.get(propertymodel=propertymodel, - marker=self) - except Property.DoesNotExist: - return - return property - - def getProperties(self): - """Get all the property availables - """ - properties = [] - for pm in PropertyModel.objects.filter(available=True): - property = self.getProperty(pm) - if property: - properties.append(property) - return properties - - def getGeoJSON(self, color="#000"): - '''Return a GeoJSON string - ''' - if '#' not in color: - color = '#' + color - return """{"type":"Feature", "geometry":%(geometry)s, \ -"properties":{"pk": %(id)d, "name": "%(name)s", \ -"color":"%(color)s"}}""" % {'id':self.id, 'name':self.name, -'color':color, 'geometry':self.route.geojson,} - -class Area(models.Model): - """Rectangular area of the map - """ - name = models.CharField(_("Name"), max_length=150) - order = models.IntegerField(_("Order")) - available = models.BooleanField(_("Available")) - upper_left_corner = models.PointField(_("Upper left corner"), - default='POINT(0 0)') - lower_right_corner = models.PointField(_("Lower right corner"), - default='POINT(0 0)') - objects = models.GeoManager() - - def __unicode__(self): - return self.name - - class Meta: - ordering = ('order', 'name') - verbose_name = _("Area") - - def getAvailable(): - '''Get available areas - ''' - return Area.objects.filter(available=True) - getAvailable = staticmethod(getAvailable) - -class PropertyModel(models.Model): - '''Model for a property - ''' - name = models.CharField(_("Name"), max_length=150) - order = models.IntegerField(_("Order")) - available = models.BooleanField(_("Available")) - TYPE = (('T', _('Text')), - ('L', _('Long text')), - ('P', _('Password'))) - TYPE_WIDGET = {'T':'forms.TextInput', - 'L':'TextareaWidget', - 'P':'forms.PasswordInput'} - type = models.CharField(_("Type"), max_length=1, choices=TYPE) - def __unicode__(self): - return self.name - class Meta: - ordering = ('order',) - verbose_name = _("Property model") - - def getNamedId(self): - '''Get the name used as named id (easily sortable) - ''' - return 'property_%d_%d' % (self.order, self.id) - -class Property(models.Model): - '''Property for a POI - ''' - marker = models.ForeignKey(Marker, verbose_name=_("Point of interest")) - propertymodel = models.ForeignKey(PropertyModel, - verbose_name=_("Property model")) - value = models.CharField(_("Value"), max_length=1000) - def __unicode__(self): - return "%s : %s" % (str(self.propertymodel), self.value) - class Meta: - verbose_name = _("Property") - |
