def createMap(request): folder_id = request.POST.get('node_id') folder = Folder.objects.get(pk=folder_id, created_by=request.user) if type(folder) != Folder: folder = folder.parent nodes = folder.get_ancestors(include_self=True).exclude(level=0) form = CreateMapForm() html = render_to_string("maps/maps_create.html", {'folder': folder, 'nodes': nodes, 'form': form}, context_instance=RequestContext(request)) response = json.dumps({'html': html}) if len(request.POST) > 1: form = CreateMapForm(request.POST) if form.is_valid(): instance = form.save(commit=False) instance.created_by = request.user instance.parent = folder instance.save() for idx, layer in enumerate(form.cleaned_data.get('layers')): layer_instance = LayerMapOptions(layer=layer, basqui_map=instance, position=idx) layer_instance.save() tileMapConfig(instance.pk) response = json.dumps({"map": {"pk": instance.pk, "name": instance.name}}, cls=DjangoJSONEncoder) return HttpResponse(response, content_type="application/json")
def setLayerLabel(request): layerMapOptions_id = request.POST.get('layer_id') layerMapOptions = LayerMapOptions.objects.get(pk=layerMapOptions_id) attributes = Attribute.objects.filter(shapefile=layerMapOptions.layer) labelForm = modelformset_factory(LayerLabel, form=LayerLabelForm, extra=1, can_delete=True) labelForm.form = staticmethod(curry(LayerLabelForm, attributes=attributes)) saveStatus = None if len(request.POST) > 1: pk_list = request.POST.get("layerLabelOrder").split(',') print pk_list formset = labelForm(request.POST) print formset.errors if formset.is_valid(): for form in formset: instance = form.save(commit=False) instance.layerMapOptions = layerMapOptions instance.position = pk_list.index(str(instance.pk)) if instance.pk: instance.save() formset.save() tileMapConfig(layerMapOptions.basqui_map.pk) saveStatus = 'success' else: html = render_to_string("maps/maps_layerLabel.html", {'layerLabelFormset': formset, 'layer': layerMapOptions}, context_instance=RequestContext(request)) response = json.dumps({'save': 'error', 'html': html}) return HttpResponse(response, content_type="application/json") layerLabels = LayerLabel.objects.filter(layerMapOptions=layerMapOptions) formset = labelForm(queryset=layerLabels) html = render_to_string("maps/maps_layerLabel.html", {'layerLabelFormset': formset, 'layer': layerMapOptions}, context_instance=RequestContext(request)) response = json.dumps({'save': saveStatus, 'html': html}) return HttpResponse(response, content_type="application/json")
def saveMapOptions(request): map_id = request.POST.get('map_id') map_selected = BasquiMap.objects.get(pk=map_id, created_by=request.user) layerForm = modelformset_factory(LayerMapOptions, form=LayerMapOptionsForm, extra=0) helper = LayerMapOptionsFormSetHelper() try: pk_list = [int(x) for x in request.POST.get("layersOrder").split(',')] except ValueError: pk_list = [] form = MapOptionsForm(request.POST, instance=map_selected) formset = layerForm(request.POST) if form.is_valid() and formset.is_valid(): form.save() for _form in formset: instance = _form.instance instance.position = pk_list.index(instance.pk) instance.save() formset.save() tileMapConfig(map_id) messages.success(request, "Change(s) saved successfully.") else: messages.error(request, "Form error(s)") layers_ordered = LayerMapOptions.objects.filter(basqui_map=map_selected).order_by('position') formset = layerForm(queryset=layers_ordered) return render_to_response("maps/maps_optionsForms.html", {'form': form, 'formset': formset, 'helper': helper, 'map': map_selected},context_instance=RequestContext(request))
def renameNode(request): try: post_dict = dict(request.POST.copy().iteritems()) node_id = post_dict['id'] new_name = post_dict['name'] node = Folder.objects.get(pk=node_id, created_by=request.user) node.name = new_name node.save() if type(node) == BasquiMap: tileMapConfig(node.pk) response = json.dumps({'status' : 'success'}) return HttpResponse(response, content_type="application/json") except BaseException, e: raise e
def renameNode(request): try: post_dict = dict(request.POST.copy().iteritems()) node_id = post_dict["id"] new_name = post_dict["name"] node = Folder.objects.get(pk=node_id, created_by=request.user) node.name = new_name node.save() if type(node) == BasquiMap: tileMapConfig(node.pk) response = json.dumps({"status": "success"}) return HttpResponse(response, content_type="application/json") except BaseException, e: raise e
def setLayerStyle(request): layerMapOptions_id = request.POST.get('layer_id') layerMapOptions = LayerMapOptions.objects.get(pk=layerMapOptions_id) saveStatus = None markers = Marker.objects.all() if layerMapOptions.layer.geom_type == 'Point': styleForm = modelformset_factory(LayerStyle, form=PointLayerStyleForm, extra=1, can_delete=True) elif layerMapOptions.layer.geom_type == 'LineString': styleForm = modelformset_factory(LayerStyle, form=PolylineLayerStyleForm, extra=1, can_delete=True) else: styleForm = modelformset_factory(LayerStyle, form=PolygonLayerStyleForm, extra=1, can_delete=True) if len(request.POST) > 1: pk_list = request.POST.get("layerStyleOrder").split(',') formset = styleForm(request.POST) print formset.errors if formset.is_valid(): for form in formset: instance = form.save(commit=False) instance.layerMapOptions = layerMapOptions instance.position = pk_list.index(str(instance.pk)) if instance.pk: instance.save() formset.save() tileMapConfig(layerMapOptions.basqui_map.pk) saveStatus = 'success' else: html = render_to_string("maps/maps_layerStyle.html", {'layerStyleFormset': formset, 'layer': layerMapOptions}, context_instance=RequestContext(request)) response = json.dumps({'save': 'error', 'html': html}) return HttpResponse(response, content_type="application/json") layerStyles = LayerStyle.objects.filter(layerMapOptions=layerMapOptions).order_by('position') formset = styleForm(queryset=layerStyles) html = render_to_string("maps/maps_layerStyle.html", {'markers': markers, 'layerStyleFormset': formset, 'layer': layerMapOptions}, context_instance=RequestContext(request)) response = json.dumps({'save': saveStatus, 'html': html}) return HttpResponse(response, content_type="application/json")
def saveLayerMapOptions(request, map_id): map_selected = BasquiMap.objects.get(pk=map_id, created_by=request.user) layerForm = modelformset_factory(LayerMapOptions, form=LayerMapOptionsForm, extra=0) helper = LayerMapOptionsFormSetHelper() try: pk_list = [int(x) for x in request.POST.get("layersOrder").split(',')] except ValueError: pk_list = [] formset = layerForm(request.POST) if formset.is_valid(): for form in formset: instance = form.instance instance.position = pk_list.index(instance.pk) instance.save() formset.save() tileMapConfig(map_id) layers_ordered = LayerMapOptions.objects.filter(basqui_map=map_selected).order_by('position') formset = layerForm(queryset=layers_ordered) return render_to_response("maps/maps_layerMapOptionsFormset.html", {'formset': formset, 'helper': helper},context_instance=RequestContext(request))
helper = LayerMapOptionsFormSetHelper() try: layers_selected = Shapefile.objects.filter(pk__in = layers_selected_ids) count = layerMapOptions.count() added_layers = [layer for layer in layers_selected if layer.pk not in layerMapOptions.values_list('layer', flat=True)] removed_layers = [layer for layer in layerMapOptions if layer.layer not in layers_selected] for idx,layer in enumerate(added_layers): LayerMapOptions.objects.create(basqui_map=map_selected, layer=layer, position=idx+count) for layer in removed_layers: layer.delete() messages.success(request, "Layers selection updated.") except Exception, e: #no layer selected layerMapOptions.delete() tileMapConfig(map_id) layers_ordered = LayerMapOptions.objects.filter(basqui_map=map_selected).order_by('position') layerForm = modelformset_factory(LayerMapOptions, form=LayerMapOptionsForm, extra=0) formset = layerForm(queryset=layers_ordered) html = render_to_string("maps/maps_layerMapOptionsFormset.html", {'formset': formset, 'helper': helper},context_instance=RequestContext(request)) response = json.dumps(html) return HttpResponse(response, content_type="application/json") @login_required(login_url='/accounts/login/') def initMapViewer(request): map_id = request.POST.get('node_id') map_selected = BasquiMap.objects.get(pk=map_id, created_by=request.user) nodes = map_selected.get_ancestors(include_self=True).exclude(level=0) layers_ordered = LayerMapOptions.objects.filter(basqui_map=map_selected).order_by('position')