mirror of
https://github.com/GSA/notifications-api.git
synced 2026-07-09 02:43:55 -04:00
Added an endpoint that returns all letter jobs, ordered by created_at desc.
This commit is contained in:
@@ -8,8 +8,10 @@ from app.dao import days_ago
|
||||
from app.models import (Job,
|
||||
Notification,
|
||||
NotificationHistory,
|
||||
Template,
|
||||
JOB_STATUS_SCHEDULED,
|
||||
JOB_STATUS_PENDING)
|
||||
JOB_STATUS_PENDING,
|
||||
LETTER_TYPE)
|
||||
from app.statsd_decorators import statsd
|
||||
|
||||
|
||||
@@ -126,3 +128,9 @@ def dao_get_jobs_older_than_limited_by(older_than=7, limit_days=2):
|
||||
cast(Job.created_at, sql_date) < days_ago(older_than),
|
||||
cast(Job.created_at, sql_date) >= days_ago(older_than + limit_days)
|
||||
).order_by(desc(Job.created_at)).all()
|
||||
|
||||
|
||||
def dao_get_all_letter_jobs():
|
||||
return db.session.query(Job).join(Job.template).filter(
|
||||
Template.template_type == LETTER_TYPE
|
||||
).order_by(desc(Job.created_at)).all()
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
from flask import Blueprint
|
||||
from flask import current_app
|
||||
from flask import Blueprint, jsonify
|
||||
from flask import request
|
||||
|
||||
from app import notify_celery
|
||||
from app.dao.jobs_dao import dao_get_all_letter_jobs
|
||||
from app.schemas import job_schema
|
||||
from app.v2.errors import register_errors
|
||||
from app.letters.letter_schemas import letter_job_ids
|
||||
from app.schema_validation import validate
|
||||
@@ -17,3 +18,11 @@ def send_letter_jobs():
|
||||
notify_celery.send_task(name="send-files-to-dvla", args=(job_ids['job_ids'],), queue="process-ftp")
|
||||
|
||||
return "Task created to send files to DVLA"
|
||||
|
||||
|
||||
@letter_job.route('/letter-jobs', methods=['GET'])
|
||||
def get_letter_jobs():
|
||||
letter_jobs = dao_get_all_letter_jobs()
|
||||
data = job_schema.dump(letter_jobs, many=True).data
|
||||
|
||||
return jsonify(data=data), 200
|
||||
|
||||
@@ -283,6 +283,8 @@ class JobSchema(BaseSchema):
|
||||
job_status = field_for(models.JobStatus, 'name', required=False)
|
||||
|
||||
scheduled_for = fields.DateTime()
|
||||
service_name = fields.Nested(ServiceSchema, attribute="service", dump_to="service_name", only=["name"],
|
||||
dump_only=True)
|
||||
|
||||
@validates('scheduled_for')
|
||||
def validate_scheduled_for(self, value):
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import uuid
|
||||
|
||||
from flask import current_app
|
||||
from flask import json
|
||||
|
||||
from app.schemas import job_schema
|
||||
from tests import create_authorization_header
|
||||
|
||||
|
||||
@@ -40,3 +40,15 @@ def test_send_letter_jobs_throws_validation_error(client, mocker):
|
||||
assert response.status_code == 400
|
||||
|
||||
assert not mock_celery.called
|
||||
|
||||
|
||||
def test_send_letter_jobs_throws_validation_error(client, sample_letter_job):
|
||||
auth_header = create_authorization_header()
|
||||
response = client.get(
|
||||
path='/letter-jobs',
|
||||
headers=[('Content-Type', 'application/json'), auth_header])
|
||||
|
||||
assert response.status_code == 200
|
||||
json_resp = json.loads(response.get_data(as_text=True))
|
||||
assert len(json_resp['data']) == 0
|
||||
assert job_schema.dumps(sample_letter_job) == json_resp['data'][0]
|
||||
|
||||
Reference in New Issue
Block a user