diff options
Diffstat (limited to 'chimere/forms.py')
| -rw-r--r-- | chimere/forms.py | 39 | 
1 files changed, 22 insertions, 17 deletions
| diff --git a/chimere/forms.py b/chimere/forms.py index c8d7d45..d923963 100644 --- a/chimere/forms.py +++ b/chimere/forms.py @@ -1,6 +1,6 @@  #!/usr/bin/env python  # -*- coding: utf-8 -*- -# Copyright (C) 2008-2014  É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 @@ -34,8 +34,7 @@ from django.core.mail import EmailMessage, BadHeaderError  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, Area,\ +from chimere.models import Marker, Route, PropertyModel, Property, Map,\     News, Category, SubCategory, RouteFile, MultimediaFile, MultimediaType, \     PictureFile, Importer, PropertyModelChoice, IFRAME_LINKS, \     MultimediaExtension, Page, IMPORTER_CHOICES @@ -261,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) @@ -351,9 +353,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 @@ -520,15 +525,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):          """ @@ -553,7 +558,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):          ''' @@ -567,7 +572,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(): @@ -580,15 +585,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, @@ -596,18 +601,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 | 
