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