def create_job(service_id): dao_fetch_service_by_id(service_id) data = request.get_json() data.update({ "service": service_id }) template = dao_get_template_by_id(data['template']) errors = unarchived_template_schema.validate({'archived': template.archived}) if errors: raise InvalidRequest(errors, status_code=400) data.update({"template_version": template.version}) job = job_schema.load(data).data if job.scheduled_for: job.job_status = JOB_STATUS_SCHEDULED dao_create_job(job) if job.job_status == JOB_STATUS_PENDING: process_job.apply_async([str(job.id)], queue="process-job") job_json = job_schema.dump(job).data job_json['statistics'] = [] return jsonify(data=job_json), 201
def sample_email_job(notify_db, notify_db_session, service=None, template=None): if service is None: service = sample_service(notify_db, notify_db_session) if template is None: template = sample_email_template( notify_db, notify_db_session, service=service) job_id = uuid.uuid4() data = { 'id': job_id, 'service_id': service.id, 'service': service, 'template_id': template.id, 'template_version': template.version, 'original_file_name': 'some.csv', 'notification_count': 1, 'created_by': service.created_by } job = Job(**data) dao_create_job(job) return job
def sample_job(notify_db, notify_db_session, service=None, template=None, notification_count=1, created_at=None, job_status='pending', scheduled_for=None, processing_started=None, original_file_name='some.csv'): if service is None: service = sample_service(notify_db, notify_db_session) if template is None: template = sample_template(notify_db, notify_db_session, service=service) data = { 'id': uuid.uuid4(), 'service_id': service.id, 'service': service, 'template_id': template.id, 'template_version': template.version, 'original_file_name': original_file_name, 'notification_count': notification_count, 'created_at': created_at or datetime.utcnow(), 'created_by': service.created_by, 'job_status': job_status, 'scheduled_for': scheduled_for, 'processing_started': processing_started } job = Job(**data) dao_create_job(job) return job
def sample_job(notify_db_session): service = create_service(check_if_service_exists=True) template = create_template(service=service) data = { 'id': uuid.uuid4(), 'service_id': service.id, 'service': service, 'template_id': template.id, 'template_version': template.version, 'original_file_name': 'some.csv', 'notification_count': 1, 'created_at': datetime.utcnow(), 'created_by': service.created_by, 'job_status': 'pending', 'scheduled_for': None, 'processing_started': None, 'archived': False } job = Job(**data) dao_create_job(job) return job
def test_create_sample_job(sample_template): assert Job.query.count() == 0 job_id = uuid.uuid4() data = { 'id': job_id, 'service_id': sample_template.service.id, 'template_id': sample_template.id, 'template_version': sample_template.version, 'original_file_name': 'some.csv', 'notification_count': 1, 'created_by': sample_template.created_by } job = Job(**data) dao_create_job(job) assert Job.query.count() == 1 job_from_db = Job.query.get(job_id) assert job == job_from_db assert job_from_db.notifications_delivered == 0 assert job_from_db.notifications_failed == 0
def test_create_job(sample_template): assert Job.query.count() == 0 job_id = uuid.uuid4() data = { 'id': job_id, 'service_id': sample_template.service.id, 'template_id': sample_template.id, 'template_version': sample_template.version, 'original_file_name': 'some.csv', 'notification_count': 1, 'created_by': sample_template.created_by } job = Job(**data) dao_create_job(job) assert Job.query.count() == 1 job_from_db = Job.query.get(job_id) assert job == job_from_db assert job_from_db.notifications_delivered == 0 assert job_from_db.notifications_failed == 0
def create_job(service_id): service = dao_fetch_service_by_id(service_id) if not service.active: raise InvalidRequest("Create job is not allowed: service is inactive ", 403) data = request.get_json() data.update({"service": service_id}) template = dao_get_template_by_id(data['template']) if template.template_type == LETTER_TYPE and service.restricted: raise InvalidRequest( "Create letter job is not allowed for service in trial mode ", 403) errors = unarchived_template_schema.validate( {'archived': template.archived}) if errors: raise InvalidRequest(errors, status_code=400) data.update({"template_version": template.version}) job = job_schema.load(data).data if job.scheduled_for: job.job_status = JOB_STATUS_SCHEDULED dao_create_job(job) if job.job_status == JOB_STATUS_PENDING: process_job.apply_async([str(job.id)], queue=QueueNames.JOBS) job_json = job_schema.dump(job).data job_json['statistics'] = [] return jsonify(data=job_json), 201
def sample_email_job(notify_db, notify_db_session, service=None, template=None): if service is None: service = create_service(check_if_service_exists=True) if template is None: template = sample_email_template(notify_db, notify_db_session, service=service) job_id = uuid.uuid4() data = { 'id': job_id, 'service_id': service.id, 'service': service, 'template_id': template.id, 'template_version': template.version, 'original_file_name': 'some.csv', 'notification_count': 1, 'created_by': service.created_by } job = Job(**data) dao_create_job(job) return job
def create_job(template, notification_count=1, created_at=None, job_status='pending', scheduled_for=None, processing_started=None, original_file_name='some.csv'): data = { 'id': uuid.uuid4(), 'service_id': template.service_id, 'service': template.service, 'template_id': template.id, 'template_version': template.version, 'original_file_name': original_file_name, 'notification_count': notification_count, 'created_at': created_at or datetime.utcnow(), 'created_by': template.created_by, 'job_status': job_status, 'scheduled_for': scheduled_for, 'processing_started': processing_started } job = Job(**data) dao_create_job(job) return job