def create_submission(store, request, finalize, language=GLSetting.memory_copy.default_language): context = store.find(Context, Context.id == unicode(request['context_gus'])).one() if not context: log.err("Context requested: [%s] not found!" % request['context_gus']) raise errors.ContextGusNotFound submission = InternalTip() submission.escalation_threshold = context.escalation_threshold submission.access_limit = context.tip_max_access submission.download_limit = context.file_max_download submission.expiration_date = utc_future_date(seconds=context.tip_timetolive) submission.pertinence_counter = 0 submission.context_id = context.id submission.creation_date = datetime_now() if finalize: submission.mark = InternalTip._marker[1] # Finalized else: submission.mark = InternalTip._marker[0] # Submission try: store.add(submission) except Exception as excep: log.err("Storm/SQL Error: %s (create_submission)" % excep) raise errors.InternalServerError("Unable to commit on DB") files = request.get('files', []) try: import_files(store, submission, files, finalize) except Exception as excep: log.err("Submission create: files import fail: %s" % excep) store.remove(submission) store.commit() raise excep wb_fields = request.get('wb_fields', {}) try: fo = Fields(context.localized_fields, context.unique_fields) fo.validate_fields(wb_fields, strict_validation=finalize) submission.wb_fields = wb_fields except Exception as excep: log.err("Submission create: fields validation fail: %s" % excep) store.remove(submission) store.commit() raise excep receivers = request.get('receivers', []) try: import_receivers(store, submission, receivers, required=finalize) except Exception as excep: log.err("Submission reate: receivers import fail: %s" % excep) store.remove(submission) store.commit() raise excep submission_dict = wb_serialize_internaltip(submission) return submission_dict
def update_submission(store, submission_id, request, finalize, language=GLSetting.memory_copy.default_language): context = store.find(Context, Context.id == unicode(request["context_id"])).one() if not context: log.err("Context requested: [%s] not found!" % request["context_id"]) raise errors.ContextIdNotFound submission = store.find(InternalTip, InternalTip.id == unicode(submission_id)).one() if not submission: log.err("Invalid Submission requested %s in PUT" % submission_id) raise errors.SubmissionIdNotFound # this may happen if a submission try to update a context if submission.context_id != context.id: log.err("Can't be changed context in a submission update") raise errors.ContextIdNotFound("Context are immutable") if submission.mark != InternalTip._marker[0]: log.err("Submission %s do not permit update (status %s)" % (submission_id, submission.mark)) raise errors.SubmissionConcluded try: import_files(store, submission, request["files"], finalize) except Exception as excep: log.err("Submission update: files import fail: %s" % excep) log.exception(excep) raise excep try: wb_fields = request["wb_fields"] fo = Fields(context.localized_fields, context.unique_fields) fo.validate_fields(wb_fields, language, strict_validation=finalize) submission.wb_fields = wb_fields except Exception as excep: log.err("Submission update: fields validation fail: %s" % excep) log.exception(excep) raise excep try: import_receivers(store, submission, request["receivers"], required=finalize) except Exception as excep: log.err("Submission update: receiver import fail: %s" % excep) log.exception(excep) raise excep if finalize: submission.mark = InternalTip._marker[1] # Finalized submission_dict = wb_serialize_internaltip(submission) return submission_dict
def update_submission(store, submission_id, request, finalize, language=GLSetting.memory_copy.default_language): context = store.find(Context, Context.id == unicode(request['context_id'])).one() if not context: log.err("Context requested: [%s] not found!" % request['context_id']) raise errors.ContextIdNotFound submission = store.find(InternalTip, InternalTip.id == unicode(submission_id)).one() if not submission: log.err("Invalid Submission requested %s in PUT" % submission_id) raise errors.SubmissionIdNotFound # this may happen if a submission try to update a context if submission.context_id != context.id: log.err("Can't be changed context in a submission update") raise errors.ContextIdNotFound("Context are immutable") if submission.mark != InternalTip._marker[0]: log.err("Submission %s do not permit update (status %s)" % (submission_id, submission.mark)) raise errors.SubmissionConcluded try: import_files(store, submission, request['files'], finalize) except Exception as excep: log.err("Submission update: files import fail: %s" % excep) log.exception(excep) raise excep try: wb_fields = request['wb_fields'] fo = Fields(context.localized_fields, context.unique_fields) fo.validate_fields(wb_fields, language, strict_validation=finalize) submission.wb_fields = wb_fields except Exception as excep: log.err("Submission update: fields validation fail: %s" % excep) log.exception(excep) raise excep try: import_receivers(store, submission, request['receivers'], required=finalize) except Exception as excep: log.err("Submission update: receiver import fail: %s" % excep) log.exception(excep) raise excep if finalize: submission.mark = InternalTip._marker[1] # Finalized submission_dict = wb_serialize_internaltip(submission) return submission_dict
def create_submission(store, request, finalize, language=GLSetting.memory_copy.default_language): context = store.find(Context, Context.id == unicode(request['context_id'])).one() if not context: log.err("Context requested: [%s] not found!" % request['context_id']) raise errors.ContextIdNotFound submission = InternalTip() submission.escalation_threshold = context.escalation_threshold submission.access_limit = context.tip_max_access submission.download_limit = context.file_max_download submission.expiration_date = utc_future_date(seconds=context.tip_timetolive) submission.pertinence_counter = 0 submission.context_id = context.id submission.creation_date = datetime_now() if finalize: submission.mark = InternalTip._marker[1] # Finalized else: submission.mark = InternalTip._marker[0] # Submission try: store.add(submission) except Exception as excep: log.err("Storm/SQL Error: %s (create_submission)" % excep) raise errors.InternalServerError("Unable to commit on DB") try: import_files(store, submission, request['files'], finalize) except Exception as excep: log.err("Submission create: files import fail: %s" % excep) raise excep try: wb_fields = request['wb_fields'] fo = Fields(context.localized_fields, context.unique_fields) fo.validate_fields(wb_fields, language, strict_validation=finalize) submission.wb_fields = wb_fields except Exception as excep: log.err("Submission create: fields validation fail: %s" % excep) raise excep try: import_receivers(store, submission, request['receivers'], required=finalize) except Exception as excep: log.err("Submission create: receivers import fail: %s" % excep) raise excep submission_dict = wb_serialize_internaltip(submission) return submission_dict
def update_submission(store, id, request, finalize, language=GLSetting.memory_copy.default_language): context = store.find(Context, Context.id == unicode(request['context_gus'])).one() if not context: log.err("Context requested: [%s] not found!" % request['context_gus']) raise errors.ContextGusNotFound submission = store.find(InternalTip, InternalTip.id == unicode(id)).one() if not submission: log.debug("Creating a new submission in update!") submission = InternalTip() submission.escalation_threshold = context.escalation_threshold submission.access_limit = context.tip_max_access submission.download_limit = context.file_max_download submission.expiration_date = utc_future_date(seconds=context.tip_timetolive) submission.pertinence_counter = 0 submission.context_id = context.id submission.creation_date = datetime_now() submission.mark = InternalTip._marker[0] # Submission try: store.add(submission) except Exception as excep: log.err("Storm/SQL Error: %s (update_submission)" % excep) raise errors.InternalServerError("Unable to commit on DB") # this may happen if a submission try to update a context if submission.context_id != context.id: log.err("Can't be changed context in a submission update") raise errors.ContextGusNotFound("Context are immutable") if submission.mark != InternalTip._marker[0]: log.err("Submission %s do not permit update (status %s)" % (id, submission.mark)) raise errors.SubmissionConcluded files = request.get('files', []) try: import_files(store, submission, files, finalize) except Exception as excep: log.err("Submission update: files import fail: %s" % excep) log.exception(excep) raise excep wb_fields = request.get('wb_fields', []) try: fo = Fields(context.localized_fields, context.unique_fields) fo.validate_fields(wb_fields, strict_validation=finalize) submission.wb_fields = wb_fields except Exception as excep: log.err("Submission update: fields validation fail: %s" % excep) log.exception(excep) raise excep receivers = request.get('receivers', []) try: import_receivers(store, submission, receivers, required=finalize) except Exception as excep: log.err("Submission update: receiver import fail: %s" % excep) log.exception(excep) raise excep if finalize: submission.mark = InternalTip._marker[1] # Finalized submission_dict = wb_serialize_internaltip(submission) return submission_dict