def parse(self, stream, media_type=None, parser_context=None): parsed = MultiPartParser.parse(self, stream, media_type, parser_context) if len(parsed.data) > 0: if len(parsed.files) > 0: raise ParseError('Either pass data or files') return parsed.data data = {} # Find any JSON content first for name, content in parsed.files.items(): if content.content_type != 'application/json': continue data.update(**json.load(content.file)) # Now get any other content for name, content in parsed.files.items(): if content.content_type == 'application/json': continue # name is the path into the object to assign glom.assign(data, name, content) return data
def put(self, request, code, suggested_format=None): """Used to work with "update" sequence of DMS code. to update a code you need to send a PUT request here. PUT must contain: @param code: the DMS "code" of file to be updated. e.g.: ADL-0001 @param suggested_format: format of file for code to be updated. To have ability to post files in certain format. """ context = {'request': request} conten_type = request.content_type uploaded_obj = None if 'multipart/form-data' in conten_type: # We have a file upload encoded with multipart/form-data file_content = StringIO(request.body) parser = MultiPartParser() dnf = parser.parse(file_content, media_type=conten_type, parser_context=context) extra = dnf.data if 'file' in dnf.files: uploaded_obj = dnf.files['file'] else: extra = request.QUERY_PARAMS # TODO: do we require SQL tagging logic in this API call? sql_tag_string = extra.get('tag_string', None) sql_remove_tag_string = extra.get('remove_tag_string', None) new_name = extra.get('new_name', None) new_type = extra.get('new_type', None) index_data = extra.get('indexing_data', None) if index_data: index_data = json.loads(index_data) processor = DocumentProcessor() options = { 'tag_string': sql_tag_string, 'remove_tag_string': sql_remove_tag_string, 'extension': suggested_format, 'new_name': new_name, 'new_type': new_type, 'new_indexes': index_data, 'update_file': uploaded_obj, 'user': request.user, } document = processor.update(code, options) if len(processor.errors) > 0: log.error('FileHandler.update manager errors %s' % processor.errors) if settings.DEBUG: print processor.errors raise Exception('FileHandler.update manager errors') else: return Response(status=status.HTTP_400_BAD_REQUEST) log.info( 'FileHandler.update request fulfilled for code: %s, extension: %s' % (code, suggested_format)) resp = DMSOBjectRevisionsData(document).data return Response(resp, status=status.HTTP_200_OK)
def put(self, request, code, suggested_format=None): """Used to work with "update" sequence of DMS code. to update a code you need to send a PUT request here. PUT must contain: @param code: the DMS "code" of file to be updated. e.g.: ADL-0001 @param suggested_format: format of file for code to be updated. To have ability to post files in certain format. """ context = {'request': request} conten_type = request.content_type uploaded_obj = None if 'multipart/form-data' in conten_type: # We have a file upload encoded with multipart/form-data file_content = StringIO(request.body) parser = MultiPartParser() dnf = parser.parse(file_content, media_type=conten_type, parser_context=context) extra = dnf.data if 'file' in dnf.files: uploaded_obj = dnf.files['file'] else: extra = request.QUERY_PARAMS # TODO: do we require SQL tagging logic in this API call? sql_tag_string = extra.get('tag_string', None) sql_remove_tag_string = extra.get('remove_tag_string', None) new_name = extra.get('new_name', None) new_type = extra.get('new_type', None) index_data = extra.get('indexing_data', None) if index_data: index_data = json.loads(index_data) processor = DocumentProcessor() options = { 'tag_string': sql_tag_string, 'remove_tag_string': sql_remove_tag_string, 'extension': suggested_format, 'new_name': new_name, 'new_type': new_type, 'new_indexes': index_data, 'update_file': uploaded_obj, 'user': request.user, } document = processor.update(code, options) if len(processor.errors) > 0: log.error('FileHandler.update manager errors %s' % processor.errors) if settings.DEBUG: print processor.errors raise Exception('FileHandler.update manager errors') else: return Response(status=status.HTTP_400_BAD_REQUEST) log.info('FileHandler.update request fulfilled for code: %s, extension: %s' % (code, suggested_format)) resp = DMSOBjectRevisionsData(document).data return Response(resp, status=status.HTTP_200_OK)
def update(request, pk): try: recipe = Recipe.objects.get(id=pk) except Recipe.DoesNotExist: return JsonResponse({'error': 'choose a valid Recipe'}) parser = MultiPartParser(request.META, request, request.upload_handlers) POST, FILES = parser.parse() data = {} data['header'] = POST.get('header') data['serves'] = POST.get('serves') data['url'] = POST.get('url') data['description'] = POST.get('description') data['ingredients'] = json.loads(POST.get('ingredients')) data['instructions'] = json.loads(POST.get('instructions')) if not FILES.get('image'): data['image'] = POST.get('image') else: data['image'] = FILES.get('image') recipe = Recipe.objects.updateRecipeData(recipe, data, data['image']) return redirect('/recipe/' + str(pk))
def meta(request): data = MultiPartParser.parse(request) print(data) res = write_from_meta() return Response(AudioSerializer(Audio.objects.all(), many=True).data)