def add_file(self, submission_gus, file_name, content_type, file_size): store = self.getStore('add_file') try: submission_r = store.find(Submission, Submission.submission_gus==submission_gus).one() except NotOneError: store.close() raise SubmissionGusNotFound if not submission_r: store.close() raise SubmissionGusNotFound new_file = File() new_file.file_gus = ret_file_gus = unicode(idops.random_file_gus()) new_file.name = file_name new_file.content_type = content_type new_file.size = file_size submission_r.files.update({ new_file.file_gus : file_name }) log.debug("Added file %s in submission %s with name %s" % (ret_file_gus, submission_gus, file_name)) store.add(new_file) store.commit() store.close() return ret_file_gus