summaryrefslogtreecommitdiff
path: root/chimere/main/forms.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@peacefrogs.net>2010-11-20 02:52:28 +0100
committerÉtienne Loks <etienne.loks@peacefrogs.net>2010-11-20 02:52:28 +0100
commit63afe4e84cd3be5284a7126264c06ce87d191bc0 (patch)
tree1ba8afc27b5aee7cdfb1d4abcde142b260c635b0 /chimere/main/forms.py
parentf65df4be0383b60b6a500f76f6405a6c5621df23 (diff)
parent00697996e885044314cc297b72aaa86d69d2a219 (diff)
downloadChimère-63afe4e84cd3be5284a7126264c06ce87d191bc0.tar.bz2
Chimère-63afe4e84cd3be5284a7126264c06ce87d191bc0.zip
Merge branch 'master' into carte-ouverte
Conflicts: .gitignore chimere/main/actions.py chimere/urls.py
Diffstat (limited to 'chimere/main/forms.py')
-rw-r--r--chimere/main/forms.py50
1 files changed, 49 insertions, 1 deletions
diff --git a/chimere/main/forms.py b/chimere/main/forms.py
index f2490da..11b1d99 100644
--- a/chimere/main/forms.py
+++ b/chimere/main/forms.py
@@ -24,6 +24,7 @@ from django import forms
from django.contrib.gis.db import models
from django.utils.translation import ugettext as _
from django.contrib.auth.models import User, Permission, ContentType
+from django.contrib.admin.widgets import AdminDateWidget
from django.core.mail import EmailMessage, BadHeaderError
from chimere import settings
@@ -32,6 +33,22 @@ from chimere.main.models import Marker, Route, PropertyModel, Property, Area,\
News, Category, SubCategory
from chimere.main.widgets import AreaField, PointField, TextareaWidget
+from datetime import timedelta, datetime, tzinfo
+
+ZERO = timedelta(0)
+
+class UTC(tzinfo):
+ """UTC time zone"""
+
+ def utcoffset(self, dt):
+ return ZERO
+
+ def tzname(self, dt):
+ return settings.TIME_ZONE
+
+ def dst(self, dt):
+ return ZERO
+
def notifyStaff(subject, body, sender=None):
if not settings.EMAIL_HOST:
return
@@ -51,7 +68,7 @@ def notifyStaff(subject, body, sender=None):
return True
def notifySubmission(geo_object):
- category = unicode(geo_object.subcategory)
+ category = u" - ".join([unicode(cat) for cat in geo_object.categories.all()])
subject = u'%s %s' % (_(u"New submission for"), category)
message = _(u'The new item "%s" has been submited in the category: ') % \
geo_object.name + category
@@ -111,6 +128,22 @@ required=False)' % (property.order, property.id, property.name,
else:
keys['initial'] = property_dct
super(MarkerAdminForm, self).__init__(*args, **keys)
+ if settings.DAYS_BEFORE_EVENT:
+ self.fields['start_date'].widget = AdminDateWidget()
+ self.fields['end_date'].widget = AdminDateWidget()
+
+ def clean(self):
+ '''
+ Verify that a start date is provided when an end date is set
+ '''
+ if not settings.DAYS_BEFORE_EVENT:
+ return self.cleaned_data
+ if self.cleaned_data['end_date'] and \
+ not self.cleaned_data['start_date']:
+ msg = _(u"End date has been set with no start date")
+ self._errors["end_date"] = self.error_class([msg])
+ del self.cleaned_data['end_date']
+ return self.cleaned_data
def save(self, *args, **keys):
"""
@@ -119,6 +152,10 @@ required=False)' % (property.order, property.id, property.name,
new_marker = super(MarkerAdminForm, self).save(*args, **keys)
if 'status' not in self.cleaned_data:
new_marker.status = 'S'
+ if new_marker.status == 'A':
+ tz = UTC()
+ new_marker.available_date = datetime.replace(datetime.utcnow(),
+ tzinfo=tz)
new_marker.save()
# save each property
for propertymodel in PropertyModel.objects.filter(available=True):
@@ -180,6 +217,9 @@ required=False)' % (property.order, property.id, property.name,
else:
keys['initial'] = property_dct
super(RouteAdminForm, self).__init__(*args, **keys)
+ if settings.DAYS_BEFORE_EVENT:
+ self.fields['start_date'].widget = AdminDateWidget()
+ self.fields['end_date'].widget = AdminDateWidget()
def save(self, *args, **keys):
"""
@@ -268,3 +308,11 @@ class AreaAdminForm(forms.ModelForm):
if perm:
perm[0].delete()
return new_area
+
+class AreaForm(AreaAdminForm):
+ """
+ Form for the edit page
+ """
+ class Meta:
+ model = Area
+