コード例 #1
0
ファイル: views.py プロジェクト: geocam/geocamMapSet
def layerJson(request, layerId):
    layer = get_object_or_404(LibraryLayer, id=layerId)
    if request.method in ('PUT', 'POST'):
        layerObject = json.loads(request.raw_post_data)
        if 'id' in layerObject:
            assert layerObject['id'] == layerId
        else:
            layerObject['id'] = layerId
        form = LibraryLayerMetaForm(layerObject)
        if form.is_valid():
            updatedLayer = form.save(commit=False)
            keepFields = ('id', 'externalUrl', 'localCopy')
            for f in keepFields:
                setattr(updatedLayer, f, getattr(layer, f))
            updatedLayer.complete = True
            updatedLayer.save()
            return jsonResponse(updatedLayer.json, raw=True)
        else:
            return jsonFormErrorsResponse(form)
    elif request.method == 'GET':
        return jsonResponse(layer.json, raw=True)
    else:
        return HttpResponseNotAllowed(('PUT', 'POST', 'GET'))
コード例 #2
0
def layerJson(request, layerId):
    layer = get_object_or_404(LibraryLayer, id=layerId)
    if request.method in ('PUT', 'POST'):
        layerObject = json.loads(request.raw_post_data)
        if 'id' in layerObject:
            assert layerObject['id'] == layerId
        else:
            layerObject['id'] = layerId
        form = LibraryLayerMetaForm(layerObject)
        if form.is_valid():
            updatedLayer = form.save(commit=False)
            keepFields = ('id', 'externalUrl', 'localCopy')
            for f in keepFields:
                setattr(updatedLayer, f, getattr(layer, f))
            updatedLayer.complete = True
            updatedLayer.save()
            return jsonResponse(updatedLayer.json, raw=True)
        else:
            return jsonFormErrorsResponse(form)
    elif request.method == 'GET':
        return jsonResponse(layer.json, raw=True)
    else:
        return HttpResponseNotAllowed(('PUT', 'POST', 'GET'))
コード例 #3
0
    def create(self, request, *args, **kwargs):
        if not self.has_model():
            return rc.NOT_IMPLEMENTED

        attrs = self.flatten_dict(request.data)

        try:
            inst = self.queryset(request).get(**attrs)
            return rc.DUPLICATE_ENTRY
        except self.model.DoesNotExist:
            form = LibraryLayerMetaForm(request.data, request.FILES)
            if form.is_valid():
                form.save()
                inst = form.instance
                if request.FILES.get("localCopy"):
                    uploaded_file = request.FILES['localCopy']
                    inst.localCopy.save(uploaded_file.name, ContentFile(uploaded_file.read()) )
                inst.save()
                return inst
            else:
                return BadRequestResponse("Validation error: " + str(form.errors) )
        except self.model.MultipleObjectsReturned:
            return rc.DUPLICATE_ENTRY