diff --git a/gracedb/api.py b/gracedb/api.py index efdce22f7acf0695bccf61a424a6bad085565f96..67058fe3b77295af40fc8c2808e694e031403b00 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: