def image_builds(request, image_generator_id): username = request.user.username image_generator = get_image_generator(image_generator_id) if image_generator is None: # image generator does not exists, so return 404 return HttpResponseNotFound('Image generator %s not found' % image_generator_id, mimetype='application/javascript') if request.method == "GET": image_builds = get_all_image_builds(username, image_generator_id) response = [] for ib_id in image_builds: ib_dict = get_image_build(username, ib_id) ib_dict['uri'] = "/api/%s/imagegenerators/%s/builds/%s" % (API_VERSION, image_generator["id"], ib_dict.get('id')) response.append(ib_dict) h = HttpResponse(json.dumps(response), status=200, mimetype='application/javascript') return h elif request.method == "POST": try: content = json.loads(request.body) credentials = content.get("credentials", {}) except: return HttpResponseBadRequest() try: image_build = create_image_build(username, image_generator, additional_credentials=credentials) except PhantomWebException as p: return HttpResponseBadRequest(p.message) image_build["owner"] = username image_build["uri"] = "/api/%s/imagegenerators/%s/builds/%s" % (API_VERSION, image_generator["id"], image_build["id"]) h = HttpResponse(json.dumps(image_build), status=201, mimetype='application/javascript') return h
def image_build_resource(request, image_generator_id, build_id): username = request.user.username image_generator = get_image_generator(image_generator_id) if image_generator is None or image_generator.get('owner') != request.user.username: return HttpResponseNotFound('Image generator %s not found' % image_generator_id, mimetype='application/javascript') if request.method == "GET": image_build = get_image_build(username, build_id) if image_build is None: return HttpResponseNotFound('Image build %s not found' % build_id, mimetype='application/javascript') image_build['uri'] = "/api/%s/imagegenerators/%s/builds/%s" % (API_VERSION, image_generator["id"], image_build.get('id')) return HttpResponse(json.dumps(image_build), mimetype='application/javascript') elif request.method == "PUT": response = get_image_generator(image_generator_id) if response is None or response.get('owner') != username: return HttpResponseNotFound('Image generator %s not found' % image_generator_id, mimetype='application/javascript') try: content = json.loads(request.body) except: return HttpResponseBadRequest() try: response = modify_image_generator(image_generator_id, content) except PhantomWebException as p: return HttpResponseBadRequest(p.message) response['uri'] = "/api/%s/imagegenerators/%s" % (API_VERSION, response['id']) h = HttpResponse(json.dumps(response), status=200, mimetype='application/javascript') return h elif request.method == "DELETE": image_build = get_image_build(username, build_id) if image_build is None: h = HttpResponseNotFound('Image build %s not found' % build_id, mimetype='application/javascript') remove_image_build(username, build_id) return HttpResponse(status=204)