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})
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})