def manage_oai_pmh_xslt(request, id=None): if request.method == 'POST': try: upload_form = UploadOaiPmhXSLTForm(request.POST, request.FILES) name = upload_form['oai_name'].value() name = name.strip(' \t\n\r') xml_file = upload_form['oai_pmh_xslt_file'].value() # put the cursor at the beginning of the file xml_file.seek(0) # read the content of the file xml_data = xml_file.read() # check XML data or not? try: etree.fromstring(xml_data) except XMLSyntaxError: return HttpResponseBadRequest('Uploaded File is not well formed XML.') #No exceptions, we can add it in DB req = upload_oai_pmh_xslt_model(name, xml_file.name, xml_data) #If the status is OK, sucess message if req.status_code == status.HTTP_201_CREATED: messages.add_message(request, messages.INFO, 'XSLT added with success.') return HttpResponse(json.dumps({}), content_type='application/javascript') #Else, we return a bad request response with the message provided by the API else: data = req.data return HttpResponseBadRequest(data[APIMessage.label]) except OAIAPIException as e: return HttpResponseBadRequest(e.message) except Exception: return HttpResponseBadRequest('An error occurred. Please contact your administrator.') else: return HttpResponseBadRequest('This method should not be called on GET.')
def upload_oai_pmh_xslt(request): """ POST http://localhost/oai_pmh/api/upload/xslt POST data query='{"name": ""value, "filename": "value", "content": "value"} """ try: serializer = OaiXSLTSerializer(data=request.DATA) if serializer.is_valid(): name = request.DATA['name'] filename = request.DATA['filename'] xmlStr = request.DATA['content'] return upload_oai_pmh_xslt_model(name, filename, xmlStr) else: raise OAIAPISerializeLabelledException(errors=serializer.errors, status=status.HTTP_400_BAD_REQUEST) except OAIAPIException as e: return e.response() except Exception as e: content = APIMessage.getMessageLabelled(e.message) return Response(content, status=status.HTTP_500_INTERNAL_SERVER_ERROR)