summaryrefslogtreecommitdiff
path: root/chimere/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'chimere/models.py')
-rw-r--r--chimere/models.py46
1 files changed, 28 insertions, 18 deletions
diff --git a/chimere/models.py b/chimere/models.py
index f28fb28..b4ee64e 100644
--- a/chimere/models.py
+++ b/chimere/models.py
@@ -30,9 +30,12 @@ from django.contrib.gis.db import models
from django.contrib.gis.gdal import SpatialReference
from django.contrib import admin
from django.core.files import File
+from django import forms
from django.utils.translation import ugettext_lazy as _
-from chimere.widgets import PointField, RouteField, SelectMultipleField
+from chimere.widgets import PointField, RouteField, SelectMultipleField, \
+ TextareaWidget
+from chimere.managers import BaseGeoManager
class News(models.Model):
"""News of the site
@@ -178,7 +181,7 @@ class SubCategory(models.Model):
for sub_category in subcategories:
if sub_category.category not in sub_categories:
sub_categories[sub_category.category] = []
- if sub_category.id in settings.DEFAULT_CATEGORIES:
+ if sub_category.id in settings.CHIMERE_DEFAULT_CATEGORIES:
sub_category.selected = True
sub_category.category.selected = True
sub_categories[sub_category.category].append(sub_category)
@@ -191,7 +194,7 @@ class Marker(models.Model):
name = models.CharField(_(u"Name"), max_length=150)
categories = SelectMultipleField(SubCategory)
point = PointField(_(u"Localisation"),
- srid=settings.EPSG_DISPLAY_PROJECTION)
+ srid=settings.CHIMERE_EPSG_DISPLAY_PROJECTION)
picture = models.ImageField(_(u"Image"), upload_to='upload', blank=True,
null=True, height_field='height', width_field='width')
height = models.IntegerField(_(u"Height"), blank=True, null=True)
@@ -203,7 +206,7 @@ class Marker(models.Model):
for key, label in STATUS:
STATUS_DCT[key] = label
status = models.CharField(_(u"Status"), max_length=1, choices=STATUS)
- if settings.DAYS_BEFORE_EVENT:
+ if settings.CHIMERE_DAYS_BEFORE_EVENT:
start_date = models.DateField(_(u"Start date"), blank=True, null=True,
help_text=_(u"Not mandatory. Set it for dated item such as event. "\
u"Format YYYY-MM-DD"))
@@ -214,14 +217,14 @@ class Marker(models.Model):
available_date = models.DateTimeField(_(u"Available Date"), blank=True,
null=True)
route = models.ForeignKey(u"Route", blank=True, null=True)
- objects = models.GeoManager()
+ objects = BaseGeoManager()
def __unicode__(self):
return self.name
@property
def date(self):
- if settings.DAYS_BEFORE_EVENT:
+ if settings.CHIMERE_DAYS_BEFORE_EVENT:
return self.start_date
class Meta:
@@ -305,9 +308,15 @@ class Marker(models.Model):
u'"icon_height":%(icon_height)d}}' % items)
return ",".join(jsons)
+ @property
+ def default_category(self):
+ # Should we select only available ones ?
+ # Should we catch if not exists ?
+ return self.categories.all()[0]
+
def get_absolute_url(self):
parameters = 'current_feature=%d&checked_categories=%s' % (self.id,
- self.categories.all()[0].id)
+ self.default_category.pk)
return settings.BASE_URL + 'ty/' + TinyUrl.getUrnByParameters(parameters)
class RouteFile(models.Model):
@@ -370,7 +379,8 @@ class Route(models.Model):
'''
name = models.CharField(_(u"Name"), max_length=150)
categories = SelectMultipleField(SubCategory)
- route = RouteField(_(u"Route"), srid=settings.EPSG_DISPLAY_PROJECTION)
+ route = RouteField(_(u"Route"),
+ srid=settings.CHIMERE_EPSG_DISPLAY_PROJECTION)
associated_file = models.ForeignKey(RouteFile, blank=True, null=True,
verbose_name=_(u"Associated file"))
picture = models.ImageField(_(u"Image"), upload_to='upload', blank=True,
@@ -383,7 +393,7 @@ class Route(models.Model):
STATUS_DCT = {}
for key, label in STATUS:
STATUS_DCT[key] = label
- if settings.DAYS_BEFORE_EVENT:
+ if settings.CHIMERE_DAYS_BEFORE_EVENT:
start_date = models.DateField(_(u"Start date"), blank=True, null=True,
help_text=_(u"Not mandatory. Set it for dated item such as event. "\
u"Format YYYY-MM-DD"))
@@ -391,7 +401,7 @@ class Route(models.Model):
help_text=_(u"Not mandatory. Set it only if you have a multi-day "\
u"event. Format YYYY-MM-DD"))
status = models.CharField(_(u"Status"), max_length=1, choices=STATUS)
- objects = models.GeoManager()
+ objects = BaseGeoManager()
def __unicode__(self):
return self.name
@@ -443,10 +453,10 @@ def getDateCondition():
'''
Return an SQL condition for apparition of dates
'''
- if not settings.DAYS_BEFORE_EVENT:
+ if not settings.CHIMERE_DAYS_BEFORE_EVENT:
return ""
now = datetime.now().strftime('%Y-%m-%d')
- after = (datetime.now() + timedelta(settings.DAYS_BEFORE_EVENT)
+ after = (datetime.now() + timedelta(settings.CHIMERE_DAYS_BEFORE_EVENT)
).strftime('%Y-%m-%d')
date_condition = " and %(alias)s.start_date is null or "
date_condition += "(%(alias)s.start_date >= '" + now + "' and "
@@ -501,7 +511,7 @@ class SimpleArea:
self.lower_right_corner.x, self.lower_right_corner.y,
self.upper_left_corner.x, self.lower_right_corner.y,
self.upper_left_corner.x, self.upper_left_corner.y,
- settings.EPSG_DISPLAY_PROJECTION
+ settings.CHIMERE_EPSG_DISPLAY_PROJECTION
)
date_condition = getDateCondition()
sql_main = '''select subcat.id as id, subcat.category_id as category_id,
@@ -544,9 +554,9 @@ class Area(models.Model, SimpleArea):
order = models.IntegerField(_(u"Order"))
available = models.BooleanField(_(u"Available"))
upper_left_corner = models.PointField(_(u"Upper left corner"),
- default='POINT(0 0)', srid=settings.EPSG_DISPLAY_PROJECTION)
+ default='POINT(0 0)', srid=settings.CHIMERE_EPSG_DISPLAY_PROJECTION)
lower_right_corner = models.PointField(_(u"Lower right corner"),
- default='POINT(0 0)', srid=settings.EPSG_DISPLAY_PROJECTION)
+ default='POINT(0 0)', srid=settings.CHIMERE_EPSG_DISPLAY_PROJECTION)
objects = models.GeoManager()
def __unicode__(self):
@@ -586,9 +596,9 @@ class PropertyModel(models.Model):
TYPE = (('T', _('Text')),
('L', _('Long text')),
('P', _('Password')))
- TYPE_WIDGET = {'T':'forms.TextInput',
- 'L':'TextareaWidget',
- 'P':'forms.PasswordInput'}
+ TYPE_WIDGET = {'T':forms.TextInput,
+ 'L':TextareaWidget,
+ 'P':forms.PasswordInput}
type = models.CharField(_(u"Type"), max_length=1, choices=TYPE)
def __unicode__(self):
return self.name