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

        This creates an empty submission for the requested context,
        and returns submissionStatus with empty fields and a Submission Unique String,
        This is the unique token used during the submission procedure.
        sessionGUS is used as authentication secret for the next interaction.
        expire after the time set by Admin (Context dependent setting)
        """

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

            submission = Submission()
            context_iface = Context()

            context_info = context_iface.public_get_single(request['context_gus'])
            # use requested context, for defaults and so on

            status = yield submission.new(request['context_gus'])
            submission_gus = status['submission_gus']

            # submission.receivers = context_iface.

            if request.has_key('fields'):
                log.debug("Fields present in creation: %s" % request['fields'])
                yield submission.update_fields(submission_gus, request['fields'])

            # TODO check if context supports receiver_selection
            if request.has_key('receivers'):
                yield submission.select_receiver(submission_gus, request['receivers'])

            self.set_status(201) # Created
            # TODO - output processing
            self.write(status)

        except ContextGusNotFound, e:

            self.set_status(e.http_status)
            self.write({'error_message': e.error_message, 'error_code' : e.error_code})
Exemple #2
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})