diff options
Diffstat (limited to 'chimere/models.py')
-rw-r--r-- | chimere/models.py | 46 |
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 |