def new_descriptor(request, project_id=None, descriptor_type=None): projects = Project.objects.filter(id=project_id).select_subclasses() project_overview = projects[0].get_overview_data() prj_token = project_overview['type'] page = prj_token + '/descriptor/descriptor_new.html' if request.method == 'GET': request_id = request.GET.get('id', '') json_template = projects[0].get_new_descriptor(descriptor_type, request_id) print 'new descriptor GET', json_template descriptor_string_yaml = Util.json2yaml(json_template) descriptor_string_json = json.dumps(json_template) return render(request, page, { 'project_id': project_id, 'descriptor_type': descriptor_type, 'descriptor_id': request_id, 'project_overview_data': project_overview, 'descriptor_strings': {'descriptor_string_yaml': descriptor_string_yaml, 'descriptor_string_json': descriptor_string_json} }) elif request.method == 'POST': csrf_token_value = get_token(request) data_type = request.POST.get('type') print "TYPE", data_type if data_type == "file": file_uploaded = request.FILES['file'] text = file_uploaded.read() data_type = file_uploaded.name.split(".")[-1] desc_name = file_uploaded.name.split(".")[0] result = projects[0].create_descriptor(desc_name, descriptor_type, text, data_type) else: text = request.POST.get('text') desc_name = request.POST.get('id') result = projects[0].create_descriptor(desc_name, descriptor_type, text, data_type) response_data = { 'project_id': project_id, 'descriptor_type': descriptor_type, 'project_overview_data': projects[0].get_overview_data(), 'descriptor_id': result, 'alert_message': { 'success': True if result != False else False, 'message': "Descriptor created" if result else 'Error in creation'} } status_code = 200 if result != False else 500 response = HttpResponse(json.dumps(response_data), content_type="application/json", status=status_code) response["Access-Control-Allow-Origin"] = "*" return response
def edit_descriptor(request, project_id=None, descriptor_id=None, descriptor_type=None): if request.method == 'POST': print "edit_descriptor" projects = Project.objects.filter(id=project_id).select_subclasses() result = projects[0].edit_descriptor(descriptor_type, descriptor_id, request.POST.get('text'), request.POST.get('type')) response_data = { 'project_id': project_id, 'descriptor_type': descriptor_type, 'project_overview_data': projects[0].get_overview_data(), 'alert_message': { 'success': result, 'message': "Descriptor modified." if result else 'Error during descriptor editing.'} } status_code = 200 if result else 500 response = HttpResponse(json.dumps(response_data), content_type="application/json", status=status_code) response["Access-Control-Allow-Origin"] = "*" return response elif request.method == 'GET': csrf_token_value = get_token(request) projects = Project.objects.filter(id=project_id).select_subclasses() project_overview = projects[0].get_overview_data() print project_overview prj_token = project_overview['type'] page = prj_token + '/descriptor/descriptor_view.html' descriptor = projects[0].get_descriptor(descriptor_id, descriptor_type) descriptor_string_json = json.dumps(descriptor) descriptor_string_yaml = Util.json2yaml(descriptor) #print "METODO GET DESCRIPTOR", descriptor_id return render(request, page, { 'project_id': project_id, 'descriptor_id': descriptor_id, 'project_overview_data': projects[0].get_overview_data(), 'descriptor_type': descriptor_type, 'descriptor_strings': {'descriptor_string_yaml': descriptor_string_yaml, 'descriptor_string_json': descriptor_string_json}})
def get_zip_archive(self): in_memory = StringIO() try: current_data = json.loads(self.data_project) zip = zipfile.ZipFile(in_memory, "w", zipfile.ZIP_DEFLATED) for desc_type in current_data: print "t", desc_type for current_desc in current_data[desc_type]: if desc_type == 'positions': zip.writestr( current_desc + '.json', json.dumps(current_data[desc_type][current_desc])) else: zip.writestr( current_desc + '.yaml', Util.json2yaml( current_data[desc_type][current_desc])) zip.close() except Exception as e: log.debug(e) in_memory.flush() return in_memory
def edit_descriptor(request, descriptor_id=None, descriptor_type=None): user = osmutils.get_user(request) project_id = user.project_id project_name = user.project_name if request.method == 'POST': new_data = request.POST.get('text'), data_type = request.POST.get('type') #print new_data try: client = Client() if descriptor_type == 'nsd': if data_type == 'yaml': new_data = yaml.load(request.POST.get('text')) elif data_type == 'json': new_data = json.loads(request.POST.get('text')) result = client.nsd_update(user.get_token(), descriptor_id, new_data) elif descriptor_type == 'vnfd': if data_type == 'yaml': new_data = yaml.load(request.POST.get('text')) elif data_type == 'json': new_data = json.loads(request.POST.get('text')) result = client.vnfd_update(user.get_token(), descriptor_id, new_data) else: log.debug('Update descriptor: Unknown data type') result = { 'error': True, 'data': 'Update descriptor: Unknown data type' } except Exception as e: log.exception(e) result = {'error': True, 'data': str(e)} if result['error'] == True: return __response_handler(request, result['data'], url=None, status=result['data']['status'] if 'status' in result['data'] else 500) else: return __response_handler(request, {}, url=None, status=200) elif request.method == 'GET': page = 'descriptor_view.html' try: client = Client() if descriptor_type == 'nsd': result = client.nsd_get(user.get_token(), descriptor_id) elif descriptor_type == 'vnfd': result = client.vnfd_get(user.get_token(), descriptor_id) except Exception as e: log.exception(e) result = {'error': True, 'data': str(e)} if isinstance(result, dict) and 'error' in result and result['error']: return render(request, 'error.html') descriptor_string_json = json.dumps(result, indent=2) descriptor_string_yaml = Util.json2yaml(result) # print descriptor return render( request, page, { 'project_id': project_id, 'project_name': project_name, 'descriptor_id': descriptor_id, 'descriptor_type': descriptor_type, 'descriptor_strings': { 'descriptor_string_yaml': descriptor_string_yaml, 'descriptor_string_json': descriptor_string_json } })