From 2f4e2bb8c1830af57635161324f8225eefe128e7 Mon Sep 17 00:00:00 2001 From: Branson Stephens <stephenb@uwm.edu> Date: Mon, 24 Jun 2013 08:43:15 -0500 Subject: [PATCH] now possible to attach file to log annotation through REST API --- gracedb/api.py | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/gracedb/api.py b/gracedb/api.py index efdce22f7..67058fe3b 100644 --- a/gracedb/api.py +++ b/gracedb/api.py @@ -782,10 +782,36 @@ class EventLogList(APIView): event = Event.getByGraceid(graceid) message = request.DATA.get('message') tagname = request.DATA.get('tagname') + + try: + uploadedFile = request.FILES['upload'] + except: + uploadedFile = None + + filename = None + if uploadedFile: + filename = uploadedFile.name + if filename.startswith("general/"): + # No writing to general/ + return HttpResponseForbidden("cannot write to general directory") + + filepath = os.path.join(event.datadir(), filename) + + try: + # Open / Write the file. + fdest = VersionedFile(filepath, 'w') + for chunk in uploadedFile.chunks(): + fdest.write(chunk) + fdest.close() + except Exception, e: + # XXX This needs some thought. + response = Response(str(e), status=status.HTTP_400_BAD_REQUEST) + logentry = EventLog( event=event, issuer=request.user, - comment=message) + comment=message, + filename=filename) logset = event.eventlog_set.order_by("created","N") try: logentry.save() @@ -806,9 +832,6 @@ class EventLogList(APIView): if retval.status_code != 201: response['tagWarning'] = 'Error creating tag.' - # XXX Alter to allow file upload. If there is an uploaded - uploadedFile = None - # Issue alert. description = "LOG: " if uploadedFile: -- GitLab