summaryrefslogtreecommitdiff
path: root/chimere/forms.py
diff options
context:
space:
mode:
Diffstat (limited to 'chimere/forms.py')
-rw-r--r--chimere/forms.py46
1 files changed, 30 insertions, 16 deletions
diff --git a/chimere/forms.py b/chimere/forms.py
index a57fe87..8c512ae 100644
--- a/chimere/forms.py
+++ b/chimere/forms.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
-# Copyright (C) 2008-2012 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2008-2015 É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
@@ -20,6 +20,7 @@
"""
Forms
"""
+
from django import forms
from django.conf import settings
from django.contrib.gis.db import models
@@ -31,7 +32,9 @@ 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.models import Marker, Route, PropertyModel, Property, Area,\
+if hasattr(settings, 'CHIMERE_SEARCH_ENGINE') and settings.CHIMERE_SEARCH_ENGINE:
+ from haystack.forms import SearchForm as HaystackSearchForm
+from chimere.models import Marker, Route, PropertyModel, Property, Map,\
News, Category, SubCategory, RouteFile, MultimediaFile, MultimediaType, \
PictureFile, Importer, PropertyModelChoice, IFRAME_LINKS, \
MultimediaExtension, Page, IMPORTER_CHOICES
@@ -257,10 +260,13 @@ class MarkerAdminFormBase(forms.ModelForm):
"""
Custom save method in order to manage associated properties
"""
+ can_write = False
+ if 'can_write' in keys:
+ can_write = keys.pop('can_write')
new_marker = super(MarkerAdminFormBase, self).save(*args, **keys)
if 'status' not in self.cleaned_data and not new_marker.status:
- new_marker.status = 'S'
- if new_marker.status == 'A':
+ new_marker.status = 'A' if can_write else 'S'
+ if not new_marker.available_date and new_marker.status == 'A':
tz = UTC()
new_marker.available_date = datetime.replace(datetime.utcnow(),
tzinfo=tz)
@@ -346,9 +352,12 @@ class RouteAdminForm(forms.ModelForm):
"""
Custom save method in order to manage associated properties
"""
+ can_write = False
+ if 'can_write' in keys:
+ can_write = keys.pop('can_write')
new_route = super(RouteAdminForm, self).save(*args, **keys)
if 'status' not in self.cleaned_data and not new_route.status:
- new_route.status = 'S'
+ new_route.status = 'A' if can_write else 'S'
new_route.save()
return new_route
@@ -515,15 +524,15 @@ class FullFileForm(FileForm):
super(FullFileForm, self).__init__(*args, **kwargs)
self.fields.keyOrder = ['name', 'raw_file']
-class AreaAdminForm(forms.ModelForm):
+class MapAdminForm(forms.ModelForm):
"""
- Admin page to create an area
+ Admin page to create an map
"""
area = AreaField(label=_("Area"), fields=(PointField(), PointField()))
welcome_message = forms.CharField(widget=TextareaAdminWidget,
required=False)
class Meta:
- model = Area
+ model = Map
def __init__(self, *args, **keys):
"""
@@ -548,7 +557,7 @@ class AreaAdminForm(forms.ModelForm):
keys['initial'].update(dct)
else:
keys['initial'] = dct
- super(AreaAdminForm, self).__init__(*args, **keys)
+ super(MapAdminForm, self).__init__(*args, **keys)
def clean(self):
'''
@@ -562,7 +571,7 @@ class AreaAdminForm(forms.ModelForm):
msg = _(u"No area selected.")
raise forms.ValidationError(msg)
if self.cleaned_data.get('order'):
- q = Area.objects.filter(order=self.cleaned_data.get('order'))
+ q = Map.objects.filter(order=self.cleaned_data.get('order'))
if self.instance:
q = q.exclude(pk=self.instance.pk)
if q.count():
@@ -575,15 +584,15 @@ class AreaAdminForm(forms.ModelForm):
"""
Custom save method in order to manage area
"""
- new_area = super(AreaAdminForm, self).save(*args, **keys)
+ new_area = super(MapAdminForm, self).save(*args, **keys)
area = self.cleaned_data['area']
new_area.upper_left_corner = 'POINT(%s %s)' % (area[0][0], area[0][1])
new_area.lower_right_corner = 'POINT(%s %s)' % (area[1][0],
area[1][1])
content_type = ContentType.objects.get(app_label="chimere",
- model="area")
+ model="map")
if new_area.urn:
- mnemo = 'change_area_' + new_area.urn
+ mnemo = 'change_map_' + new_area.urn
perm = Permission.objects.filter(codename=mnemo)
if not perm:
perm = Permission(name='Can change ' + new_area.name,
@@ -591,18 +600,18 @@ class AreaAdminForm(forms.ModelForm):
perm.save()
else:
if 'urn' in self.initial:
- mnemo = 'change_area_' + self.initial['urn']
+ mnemo = 'change_map_' + self.initial['urn']
perm = Permission.objects.filter(codename=mnemo)
if perm:
perm[0].delete()
return new_area
-class AreaForm(AreaAdminForm):
+class MapForm(MapAdminForm):
"""
Form for the edit page
"""
class Meta:
- model = Area
+ model = Map
CHIMERE_ROUTING_TRANSPORT = []
ROUTING_INIT = None
@@ -631,3 +640,8 @@ class RoutingForm(forms.Form):
for speed, lbl in settings.CHIMERE_ROUTING_SPEEDS[transport]:
self.fields['speed'].widget.choices.append(
("%s_%d" % (transport, speed), _(lbl)))
+
+SearchForm = None
+if hasattr(settings, 'CHIMERE_SEARCH_ENGINE') and settings.CHIMERE_SEARCH_ENGINE:
+ class SearchForm(HaystackSearchForm):
+ pass