diff options
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 |
commit | 792fed91a5c0c218ede19b01d5d818730193a6b2 (patch) | |
tree | 27e0699f444dc75cbebd7334ccbe87725d78e253 /chimere/views.py | |
parent | 1f3bcebdafa399d7c7c35f4d5a1904b5bfdf040a (diff) | |
download | Chimè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.py | 209 |
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=""): |