def byCollection(req, gmId, dmuId, qualifier): gm = get_object_or_404(GeoMap, pk=gmId) dmu = get_object_or_404(DescriptionOfMapUnits, pk=dmuId) if dmu.owningmap != gm: return HttpResponseBadRequest("Invalid mapunit resource") if req.method == "GET": if qualifier == "age": response = dmu.geologicHistory() else: response = dmu.preferredAge() return HttpGeoJsonResponse(response, False) elif req.method == "POST": success, response = geoJsonToKwargs(GeologicEvents, req.raw_post_data, ["owningmap"]) if not success: return HttpResponseBadRequest(response) response["owningmap"] = gm return createGeologicEvent(response, qualifier, gm, dmu) else: return HttpResponseNotAllowed(["GET", "POST"])
def byResource(req, gmId, dmuId, qualifier, ageId): gm = get_object_or_404(GeoMap, pk=gmId) dmu = get_object_or_404(DescriptionOfMapUnits, pk=dmuId) if dmu.owningmap != gm: return HttpResponseBadRequest("Invalid age resource") if req.method == "GET": ge = get_object_or_404(GeologicEvents, pk=ageId) if dmu not in ge.mapunits(): return HttpResponseBadRequest("Invalid age resource") if (qualifier.lower() == "age" and ge.inGeologicHistory(dmu)) or (qualifier.lower() == "preferredage" and ge.isPreferredAge(dmu)): return HttpGeoJsonResponse([ge]) else: return HttpResponseBadRequest("Invalid age resource") elif req.method == "PUT": success, response = geoJsonToKwargs(GeologicEvents, req.raw_post_data, ["owningmap"]) if not success: return HttpResponseBadRequest(response) response["owningmap"] = gm response["id"] = ageId return createGeologicEvent(response, qualifier, gm, dmu) elif req.method == "DELETE": ge = get_object_or_404(GeologicEvents, pk=ageId) if dmu not in ge.mapunits(): return HttpResponseBadRequest("Invalid age resource") if qualifier.lower() == "age" and ge.inGeologicHistory(dmu): extAttrs = ExtendedAttributes.objects.filter(valuelinkid=ge.geologicevents_id, ownerid=dmu.descriptionofmapunits_id).exclude(property="preferredAge") elif qualifier.lower() == "preferredage" and ge.isPreferredAge(dmu): extAttrs = ExtendedAttributes.objects.filter(valuelinkid=ge.geologicevents_id, ownerid=dmu.descriptionofmapunits_id, property="preferredAge") else: return HttpResponseBadRequest("Invalid age resource") extAttrs.delete() if ExtendedAttributes.objects.filter(valuelinkid=ge.geologicevents_id).count() == 0: ge.delete() return HttpResponse(json.dumps({"success": True}), content_type="application/json") else: return HttpResponseNotAllowed(["GET", "PUT", "DELETE"])
def byCollection(req, gmId, dmuId): gm = get_object_or_404(GeoMap, pk=gmId) dmu = get_object_or_404(DescriptionOfMapUnits, pk=dmuId) if dmu.owningmap != gm: return HttpResponseBadRequest("Invalid mapunit resource") if req.method == "GET": return HttpGeoJsonResponse(StandardLithology.objects.filter(mapunit=dmu), False) elif req.method == "POST": success, response = geoJsonToKwargs(StandardLithology, req.raw_post_data, ["owningmap", "mapunit"]) if not success: return HttpResponseBadRequest(response) response["owningmap"] = gm response["mapunit"] = dmu try: newSl = StandardLithology(**response) newSl.save() return HttpGeoJsonResponse([newSl]) except Exception as ex: return HttpResponseBadRequest(str(ex)) else: return HttpResponseNotAllowed(["GET", "POST"])
def byResource(req, gmId, dmuId, lithId): gm = get_object_or_404(GeoMap, pk=gmId) dmu = get_object_or_404(DescriptionOfMapUnits, pk=dmuId) if dmu.owningmap != gm: return HttpResponseBadRequest("Invalid mapunit resource") if req.method == "GET": sl = get_object_or_404(StandardLithology, pk=lithId) if sl.mapunit != dmu: return HttpResponseBadRequest("Invalid lithology resource") return HttpGeoJsonResponse([sl]) elif req.method == "PUT": success, response = geoJsonToKwargs(StandardLithology, req.raw_post_data, ["owningmap", "mapunit"]) if not success: return HttpResponseBadRequest(response) response["owningmap"] = gm response["mapunit"] = dmu response["id"] = lithId try: newSl = StandardLithology(**response) newSl.save() return HttpGeoJsonResponse([newSl]) except Exception as ex: return HttpResponseBadRequest(str(ex)) elif req.method == "DELETE": sl = get_object_or_404(StandardLithology, pk=lithId) if sl.mapunit != dmu: return HttpResponseBadRequest("Invalid lithology resource") try: sl.delete() except Exception (ex): return HttpResponseBadRequest(str(ex)) else: return HttpResponse(json.dumps({ "success": True }), content_type="application/json") else: return HttpResponseNotAllowed(["GET", "PUT", "DELETE"])