Exemple #1
0
    def post(self, submission_gus):
        """
        Parameter: submission_gus
        Request: Unknown
        Response: Unknown
        Errors: SubmissionGusNotFound

        POST in fileHandlers need to be refactored-engineered
        """

        # XXX "I see dead people"
        method_hack = self.get_arguments('_method')
        if method_hack and method_hack == 'DELETE':
            self.delete()

        try:

            results = []

            # XXX will this ever be bigger than 1?
            file_array, files = self.request.files.popitem()
            for file in files:
                start_time = time.time()

                submission_iface = Submission()
                file_gus = yield submission_iface.add_file(submission_gus, file['filename'], file['content_type'], len(file['body']) )

                log.debug("Created file with file_gus %s" % file_gus)

                result = self.process_file(file, submission_gus, file_gus)
                result['elapsed_time'] = time.time() - start_time
                results.append(result)

                # TODO yield on File.something()

            response = json.dumps(results, separators=(',',':'))

            if 'application/json' in self.request.headers.get('Accept'):
                self.set_header('Content-Type', 'application/json')

            self.set_status(200)
            self.write(response)

        except SubmissionGusNotFound, e:

            self.set_status(e.http_status)
            self.write({'error_message': e.error_message, 'error_code' : e.error_message})