diff options
Diffstat (limited to 'chimere/main/forms.py')
| -rw-r--r-- | chimere/main/forms.py | 50 |
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 + |
