class JobFactory(factory.Factory): class Meta: model = jobModels.Job job_id = None filename = fuzzy.FuzzyText() job_status_id = fuzzy.FuzzyChoice(JOB_STATUS_DICT.values()) job_type_id = fuzzy.FuzzyChoice(JOB_TYPE_DICT.values()) submission = factory.SubFactory(SubmissionFactory) file_type_id = fuzzy.FuzzyChoice(FILE_TYPE_DICT.values()) original_filename = fuzzy.FuzzyText() file_size = fuzzy.FuzzyInteger(9999) number_of_rows = fuzzy.FuzzyInteger(9999) number_of_rows_valid = fuzzy.FuzzyInteger(9999) number_of_errors = fuzzy.FuzzyInteger(9999) number_of_warnings = fuzzy.FuzzyInteger(9999) error_message = fuzzy.FuzzyText() start_date = fuzzy.FuzzyDate(date(2010, 1, 1)) end_date = fuzzy.FuzzyDate(date(2010, 1, 1))
def get_submission_status(submission, jobs): """ Return the status of a submission. Args: submission: submission to retrieve status from jobs: jobs within the submission to retrieve status from Returns: string containing the status of the submission """ status_names = JOB_STATUS_DICT.keys() statuses = {name: 0 for name in status_names} for job in jobs: job_status = job.job_status.name statuses[job_status] += 1 status = "unknown" if statuses["failed"] != 0: status = "failed" elif statuses["invalid"] != 0: status = "file_errors" elif statuses["running"] != 0: status = "running" elif statuses["waiting"] != 0: status = "waiting" elif statuses["ready"] != 0: status = "ready" elif statuses["finished"] == jobs.count(): status = "validation_successful" if submission.number_of_warnings is not None and submission.number_of_warnings > 0: status = "validation_successful_warnings" if submission.publish_status_id == PUBLISH_STATUS_DICT['published']: status = "certified" # Check if submission has errors if submission.number_of_errors is not None and submission.number_of_errors > 0: status = "validation_errors" return status
def get_submission_status(submission): """Return the status of a submission.""" sess = GlobalDB.db().session jobs = sess.query(Job).filter_by(submission_id=submission.submission_id) status_names = JOB_STATUS_DICT.keys() statuses = {name: 0 for name in status_names} skip_count = 0 for job in jobs: if job.job_type.name not in ["external_validation", None]: job_status = job.job_status.name statuses[job_status] += 1 else: skip_count += 1 status = "unknown" if statuses["failed"] != 0: status = "failed" elif statuses["invalid"] != 0: status = "file_errors" elif statuses["running"] != 0: status = "running" elif statuses["waiting"] != 0: status = "waiting" elif statuses["ready"] != 0: status = "ready" elif statuses["finished"] == jobs.count() - skip_count: # need to account for the jobs that were skipped above status = "validation_successful" if submission.number_of_warnings is not None and submission.number_of_warnings > 0: status = "validation_successful_warnings" if submission.publishable: status = "submitted" # Check if submission has errors if submission.number_of_errors is not None and submission.number_of_errors > 0: status = "validation_errors" return status
def get_submission_status(submission): """Return the status of a submission.""" sess = GlobalDB.db().session jobs = sess.query(Job).filter_by(submission_id=submission.submission_id) status_names = JOB_STATUS_DICT.keys() statuses = {name: 0 for name in status_names} skip_count = 0 for job in jobs: if job.job_type.name not in ["external_validation", None]: job_status = job.job_status.name statuses[job_status] += 1 else: skip_count += 1 status = "unknown" if statuses["failed"] != 0: status = "failed" elif statuses["invalid"] != 0: status = "file_errors" elif statuses["running"] != 0: status = "running" elif statuses["waiting"] != 0: status = "waiting" elif statuses["ready"] != 0: status = "ready" elif statuses["finished"] == jobs.count() - skip_count: # need to account for the jobs that were skipped above status = "validation_successful" if submission.number_of_warnings is not None and submission.number_of_warnings > 0: status = "validation_successful_warnings" if submission.publish_status_id == PUBLISH_STATUS_DICT['published']: status = "certified" # Check if submission has errors if submission.number_of_errors is not None and submission.number_of_errors > 0: status = "validation_errors" return status