summaryrefslogtreecommitdiff
path: root/main/forms.py
diff options
context:
space:
mode:
authoretienne <etienne@9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864>2010-02-21 15:42:51 +0000
committeretienne <etienne@9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864>2010-02-21 15:42:51 +0000
commitf7fd3f884d4b1571efa122ddab2c7d4d0b925518 (patch)
tree232b18d00a5ad11eb3b323cb4d81afb574e92e2b /main/forms.py
parent9e253135138cf65e766959c094ad1182902bd363 (diff)
downloadChimère-f7fd3f884d4b1571efa122ddab2c7d4d0b925518.tar.bz2
Chimère-f7fd3f884d4b1571efa122ddab2c7d4d0b925518.zip
Reorganize the project folder #76
git-svn-id: http://www.peacefrogs.net/svn/chimere/trunk@59 9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864
Diffstat (limited to 'main/forms.py')
-rw-r--r--main/forms.py253
1 files changed, 0 insertions, 253 deletions
diff --git a/main/forms.py b/main/forms.py
deleted file mode 100644
index be18b2f..0000000
--- a/main/forms.py
+++ /dev/null
@@ -1,253 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-# Copyright (C) 2008 É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
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-# See the file COPYING for details.
-
-"""
-Forms
-"""
-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
-from django.core.mail import EmailMessage, BadHeaderError
-
-from chimere import settings
-
-from chimere.main.models import Marker, Route, PropertyModel, Property, Area,\
- News, Category
-from chimere.main.widgets import AreaField, PointField, TextareaWidget
-
-def notifyStaff(subject, body, sender=None):
- if settings.PROJECT_NAME:
- subject = u'[%s] %s' % (settings.PROJECT_NAME, subject)
- user_list = [u.email for u in
- User.objects.filter(is_staff=True).exclude(email="").order_by('id')]
- headers = {}
- if sender:
- headers['Reply-To'] = sender
- email = EmailMessage(subject, body, user_list[0], user_list,
- headers=headers)
- try:
- email.send()
- except BadHeaderError:
- return False
- return True
-
-def notifySubmission(geo_object):
- category = unicode(geo_object.subcategory)
- 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
- message += "\n\n" + _(u"To valid, precise or unvalid this item: ")
- message += settings.BASE_URL + 'admin'
- message += u"\n\n--\nChimère"
- return notifyStaff(subject, message)
-
-class ContactForm(forms.Form):
- """
- Main form for categories
- """
- email = forms.EmailField(label=_("Email (optional)"), required=False)
- content = forms.CharField(label=_("Object"), widget=forms.Textarea)
-
-class NewsAdminForm(forms.ModelForm):
- """
- Main form for news
- """
- content = forms.CharField(widget=TextareaWidget)
- class Meta:
- model = News
-
-class CategoryAdminForm(forms.ModelForm):
- """
- Main form for categories
- """
- description = forms.CharField(widget=TextareaWidget, required=False)
- class Meta:
- model = Category
-
-class MarkerAdminForm(forms.ModelForm):
- """
- Main form for marker
- """
- # declare properties
- for property in PropertyModel.objects.filter(available=True):
- exec('property_%d_%d = forms.CharField(label="%s", widget=%s, \
-required=False)' % (property.order, property.id, property.name,
- PropertyModel.TYPE_WIDGET[property.type]))
- class Meta:
- model = Marker
-
- def __init__(self, *args, **keys):
- """
- Custom initialization method in order to manage properties
- """
- if 'instance' in keys and keys['instance']:
- instance = keys['instance']
- property_dct = {}
- for pm in PropertyModel.objects.filter(available=True):
- property = instance.getProperty(pm)
- if property:
- property_dct[pm.getNamedId()] = property.value
- if 'initial' in keys:
- keys['initial'].update(property_dct)
- else:
- keys['initial'] = property_dct
- super(MarkerAdminForm, self).__init__(*args, **keys)
-
- def save(self, *args, **keys):
- """
- Custom save method in order to manage associeted properties
- """
- new_marker = super(MarkerAdminForm, self).save(*args, **keys)
- if 'status' not in self.cleaned_data:
- new_marker.status = 'S'
- new_marker.save()
- # save each property
- for propertymodel in PropertyModel.objects.filter(available=True):
- properties = Property.objects.filter(marker=new_marker,
- propertymodel=propertymodel)
- # new property
- if not properties:
- new_property = Property.objects.create(marker=new_marker,
- propertymodel=propertymodel,
- value=self.cleaned_data['property_%d_%d' % (
- propertymodel.order, propertymodel.id)])
- new_property.save()
- else:
- # in case of multiple edition as the same time delete arbitrary
- # the others
- if len(properties) > 1:
- for property in properties[1:]:
- property.delete()
- property = properties[0]
- property.value = self.cleaned_data['property_%d_%d' % (
- propertymodel.order, propertymodel.id)]
- property.save()
- return new_marker
-
-class MarkerForm(MarkerAdminForm):
- """
- Form for the edit page
- """
- class Meta:
- model = Marker
- exclude = ('status',)
-
-class RouteAdminForm(forms.ModelForm):
- """
- Main form for route
- """
- """
- # declare properties
- for property in PropertyModel.objects.filter(available=True):
- exec('property_%d_%d = forms.CharField(label="%s", widget=%s, \
-required=False)' % (property.order, property.id, property.name,
- PropertyModel.TYPE_WIDGET[property.type]))"""
- class Meta:
- model = Route
-
- def __init__(self, *args, **keys):
- """
- Custom initialization method in order to manage properties
- """
- if 'instance' in keys and keys['instance']:
- instance = keys['instance']
- property_dct = {}
- for pm in PropertyModel.objects.filter(available=True):
- property = instance.getProperty(pm)
- if property:
- property_dct[pm.getNamedId()] = property.value
- if 'initial' in keys:
- keys['initial'].update(property_dct)
- else:
- keys['initial'] = property_dct
- super(RouteAdminForm, self).__init__(*args, **keys)
-
- def save(self, *args, **keys):
- """
- Custom save method in order to manage associeted properties
- """
- new_marker = super(RouteAdminForm, self).save(*args, **keys)
- if 'status' not in self.cleaned_data:
- new_marker.status = 'S'
- new_marker.save()
- """
- # save each property
- for propertymodel in PropertyModel.objects.filter(available=True):
- properties = Property.objects.filter(marker=new_marker,
- propertymodel=propertymodel)
- # new property
- if not properties:
- new_property = Property.objects.create(marker=new_marker,
- propertymodel=propertymodel,
- value=self.cleaned_data['property_%d_%d' % (
- propertymodel.order, propertymodel.id)])
- new_property.save()
- else:
- # in case of multiple edition as the same time delete arbitrary
- # the others
- if len(properties) > 1:
- for property in properties[1:]:
- property.delete()
- property = properties[0]
- property.value = self.cleaned_data['property_%d_%d' % (
- propertymodel.order, propertymodel.id)]
- property.save()"""
- return new_marker
-
-class RouteForm(RouteAdminForm):
- """
- Form for the edit page
- """
- class Meta:
- model = Route
- exclude = ('status',)
-
-class AreaAdminForm(forms.ModelForm):
- """
- Admin page to create an area
- """
- area = AreaField(label=_("Area"), fields=(PointField(), PointField()))
- class Meta:
- model = Area
-
- def __init__(self, *args, **keys):
- """
- Custom initialization method in order to manage area
- """
- if 'instance' in keys and keys['instance']:
- instance = keys['instance']
- dct = {'area':(instance.upper_left_corner,
- instance.lower_right_corner)}
- if 'initial' in keys:
- keys['initial'].update(dct)
- else:
- keys['initial'] = dct
- super(AreaAdminForm, self).__init__(*args, **keys)
-
- def save(self, *args, **keys):
- """
- Custom save method in order to manage area
- """
- new_area = super(AreaAdminForm, 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])
- return new_area