summaryrefslogtreecommitdiff
path: root/main/models.py
diff options
context:
space:
mode:
authoretienne <etienne@9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864>2010-02-21 15:42:51 +0000
committeretienne <etienne@9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864>2010-02-21 15:42:51 +0000
commitf7fd3f884d4b1571efa122ddab2c7d4d0b925518 (patch)
tree232b18d00a5ad11eb3b323cb4d81afb574e92e2b /main/models.py
parent9e253135138cf65e766959c094ad1182902bd363 (diff)
downloadChimè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.py325
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")
-