Exemple #1
0
    def put(self, submission_gus, *uriargs):
        """
        Parameter: submission_gus
        Request: wbSubmissionDesc
        Response: wbSubmissionDesc
        Errors: ContextGusNotFound, InvalidInputFormat, SubmissionFailFields, SubmissionGusNotFound

        PUT finalize and complete the Submission
        """

        try:
            request = validateMessage(self.request.body, requests.wbSubmissionDesc)
            submission = Submission()

            if request.has_key('fields'):
                log.debug("Updating fields with %s" % request['fields'])
                yield submission.update_fields(submission_gus, request['fields'])

            if request.has_key('receivers'):
                log.debug("processing receiver selected: %s" % request['receivers'])
                yield submission.select_receiver(submission_gus, request['receivers'])

            if request.has_key('receipt'):
                yield submission.receipt_proposal(submission_gus, request['receipt'])

            status = yield submission.complete_submission(submission_gus)

            self.set_status(202) # Updated
            # TODO - output processing
            self.write(status)

        except ContextGusNotFound, e:
            # XXX ITS wrong, if a submission start with a context, you can't change them.

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