summaryrefslogtreecommitdiff
path: root/chimere/views.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2016-09-21 12:31:09 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2016-09-21 12:31:09 +0200
commit792fed91a5c0c218ede19b01d5d818730193a6b2 (patch)
tree27e0699f444dc75cbebd7334ccbe87725d78e253 /chimere/views.py
parent1f3bcebdafa399d7c7c35f4d5a1904b5bfdf040a (diff)
downloadChimère-792fed91a5c0c218ede19b01d5d818730193a6b2.tar.bz2
Chimère-792fed91a5c0c218ede19b01d5d818730193a6b2.zip
JS: edit route - refactoring for form and template edition
Diffstat (limited to 'chimere/views.py')
-rw-r--r--chimere/views.py209
1 files changed, 60 insertions, 149 deletions
diff --git a/chimere/views.py b/chimere/views.py
index 12ae9bd..8de3b1d 100644
--- a/chimere/views.py
+++ b/chimere/views.py
@@ -350,59 +350,6 @@ def action_do_redirect(action_name, available_actions):
redir = subaction.url
return redir
-get_edit_marker = get_edit_page('chimere:editmarker', Marker, MarkerForm)
-
-
-def editMarker(request, area_name="", item_id=None, submited=False):
- """
- Edition page
- """
- response, values, sub_categories = get_edit_marker(request, area_name,
- item_id, ['M', 'B'])
- if response:
- return response
- item_id, init_item, response_dct, form, formset_multi, formset_picture = \
- values
-
- # verify action is available
- current_actions = actions(response_dct['area_name'])
- redir = action_do_redirect('edit-marker', current_actions)
- if redir:
- return redirect(redir)
-
- # get the "manualy" declared_fields. Ie: properties
- querys = PropertyModel.getAvailable(area_name=area_name)
- declared_fields, filtered_properties = [], []
- for query in querys:
- declared_fields += query.all()
- filtered_properties += query.filter(
- subcategories__id__isnull=False).all()
- point_value = init_item.point if init_item else None
- if request.POST and request.POST.get('point'):
- point_value = request.POST.get('point')
- response_dct.update({
- 'actions': current_actions,
- 'action_selected': ('contribute', 'edit-marker'),
- 'map_layer': settings.CHIMERE_DEFAULT_MAP_LAYER,
- 'form': form,
- 'formset_multi': formset_multi,
- 'formset_picture': formset_picture,
- 'dated': settings.CHIMERE_DAYS_BEFORE_EVENT,
- 'extra_head': form.media,
- 'marker_id': item_id,
- 'sub_categories': sub_categories,
- 'point_widget': PointChooserWidget().render(
- 'point', point_value, area_name=response_dct['area_name']),
- 'properties': declared_fields,
- 'filtered_properties': filtered_properties,
- 'submited': submited
- })
- # manualy populate the custom widget
- if 'subcategory' in form.data and form.data['subcategory']:
- response_dct['current_category'] = int(form.data['subcategory'])
- return render_to_response('chimere/edit.html', response_dct,
- context_instance=RequestContext(request))
-
def uploadFile(request, category_id='', area_name=''):
response_dct, redir = get_base_response(request, area_name)
@@ -472,108 +419,72 @@ def processRouteFile(request, area_name='', file_id=None):
else:
return HttpResponse(status=400)
+get_edit_marker = get_edit_page('chimere:editmarker', Marker, MarkerForm)
get_edit_route = get_edit_page('chimere:editroute', Route, RouteForm)
+get_edit_polygon = get_edit_page('chimere:editpolygon', Polygon, PolygonForm)
-def editRoute(request, area_name="", item_id=None, submited=False):
- """
- Route edition page
- """
- response, values, sub_categories = get_edit_route(request, area_name,
- item_id, ['R', 'B'])
- if response:
- return response
- item_id, init_item, response_dct, form, formset_multi, formset_picture = \
- values
-
- # verify action is available
- current_actions = actions(response_dct['area_name'])
- redir = action_do_redirect('edit-route', current_actions)
- if redir:
- return redirect(redir)
-
- # get the "manualy" declared_fields. Ie: properties
- declared_fields = form.declared_fields.keys()
- if 'description' in declared_fields:
- declared_fields.pop(declared_fields.index('description'))
- route_value = init_item.route if init_item else None
- if request.POST and request.POST.get('route'):
- route_value = request.POST.get('route')
- response_dct.update({
- 'actions': current_actions,
- 'action_selected': ('contribute', 'edit-route'),
- 'error_message': '',
- 'map_layer': settings.CHIMERE_DEFAULT_MAP_LAYER,
- 'form': form,
- 'formset_multi': formset_multi,
- 'formset_picture': formset_picture,
- 'dated': settings.CHIMERE_DAYS_BEFORE_EVENT,
- 'extra_head': form.media,
- 'sub_categories': sub_categories,
- 'route_widget': RouteChooserWidget().render(
- 'route', route_value, area_name=response_dct['area_name'],
- routefile_id='',),
- 'properties': declared_fields,
- 'submited': submited
- })
- # manualy populate the custom widget
- if 'subcategory' in form.data and form.data['subcategory']:
- response_dct['current_category'] = int(form.data['subcategory'])
- return render_to_response('chimere/edit_route.html', response_dct,
- context_instance=RequestContext(request))
+def edit_page(get_edit, types, geom_name, widget):
+ def edit(request, area_name="", item_id=None, submited=False):
+ response, values, sub_categories = get_edit(request, area_name,
+ item_id, types)
+ if response:
+ return response
+ item_id, init_item, response_dct, form, formset_multi, formset_picture = \
+ values
-get_edit_polygon = get_edit_page('chimere:editpolygon', Polygon, PolygonForm)
+ # verify action is available
+ current_actions = actions(response_dct['area_name'])
+ redir = action_do_redirect('edit-' + geom_name, current_actions)
+ if redir:
+ return redirect(redir)
+
+ # get the "manualy" declared_fields. Ie: properties
+ querys = PropertyModel.getAvailable(area_name=area_name)
+ declared_fields, filtered_properties = [], []
+ for query in querys:
+ declared_fields += query.all()
+ filtered_properties += query.filter(
+ subcategories__id__isnull=False).all()
+ geom_attr = geom_name
+ if geom_attr == 'marker':
+ geom_attr = 'point'
+ value = getattr(init_item, geom_attr) if init_item else None
+ if request.POST and request.POST.get(geom_attr):
+ value = request.POST.get(geom_attr)
+ response_dct.update({
+ 'actions': current_actions,
+ 'action_selected': ('contribute', 'edit-' + geom_name),
+ 'map_layer': settings.CHIMERE_DEFAULT_MAP_LAYER,
+ 'error_message': '',
+ 'form': form,
+ 'formset_multi': formset_multi,
+ 'formset_picture': formset_picture,
+ 'dated': settings.CHIMERE_DAYS_BEFORE_EVENT,
+ 'extra_head': form.media,
+ 'marker_id': item_id,
+ 'sub_categories': sub_categories,
+ geom_attr + '_widget': widget().render(
+ geom_attr, value, area_name=response_dct['area_name']),
+ 'properties': declared_fields,
+ 'filtered_properties': filtered_properties,
+ 'submited': submited
+ })
+ # manualy populate the custom widget
+ if 'subcategory' in form.data and form.data['subcategory']:
+ response_dct['current_category'] = int(form.data['subcategory'])
+ return render_to_response('chimere/edit_{}.html'.format(geom_name),
+ response_dct,
+ context_instance=RequestContext(request))
+ return edit
-def editPolygon(request, area_name="", item_id=None, submited=False):
- """
- Polygon edition page
- """
- response, values, sub_categories = get_edit_polygon(request, area_name,
- item_id, ['P'])
- if response:
- return response
- item_id, init_item, response_dct, form, formset_multi, formset_picture = \
- values
-
- # verify action is available
- current_actions = actions(response_dct['area_name'])
- redir = action_do_redirect('edit-polygon', current_actions)
- if redir:
- return redirect(redir)
-
- # get the "manualy" declared_fields. Ie: properties
- querys = PropertyModel.getAvailable(area_name=area_name)
- declared_fields, filtered_properties = [], []
- for query in querys:
- declared_fields += query.all()
- filtered_properties += query.filter(
- subcategories__id__isnull=False).all()
- polygon_value = init_item.polygon if init_item else None
- if request.POST and request.POST.get('polygon'):
- polygon_value = request.POST.get('polygon')
- response_dct.update({
- 'actions': current_actions,
- 'action_selected': ('contribute', 'edit-polygon'),
- 'error_message': '',
- 'map_layer': settings.CHIMERE_DEFAULT_MAP_LAYER,
- 'form': form,
- 'formset_multi': formset_multi,
- 'formset_picture': formset_picture,
- 'dated': settings.CHIMERE_DAYS_BEFORE_EVENT,
- 'extra_head': form.media,
- 'sub_categories': sub_categories,
- 'polygon_widget': PolygonChooserWidget().render(
- 'polygon', polygon_value, area_name=response_dct['area_name'],),
- 'properties': declared_fields,
- 'filtered_properties': filtered_properties,
- 'submited': submited
- })
- # manualy populate the custom widget
- if 'subcategory' in form.data and form.data['subcategory']:
- response_dct['current_category'] = int(form.data['subcategory'])
- return render_to_response('chimere/edit_polygon.html', response_dct,
- context_instance=RequestContext(request))
+editMarker = edit_page(get_edit_marker, ['M', 'B'], 'marker',
+ PointChooserWidget)
+editRoute = edit_page(get_edit_route, ['R', 'B'], 'route',
+ RouteChooserWidget)
+editPolygon = edit_page(get_edit_polygon, ['P'], 'polygon',
+ PolygonChooserWidget)
def submited(request, area_name="", action=""):