mirror of
https://github.com/GSA/notifications-api.git
synced 2026-09-09 16:39:49 -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,
|
from app.models import (Job,
|
||||||
Notification,
|
Notification,
|
||||||
NotificationHistory,
|
NotificationHistory,
|
||||||
|
Template,
|
||||||
JOB_STATUS_SCHEDULED,
|
JOB_STATUS_SCHEDULED,
|
||||||
JOB_STATUS_PENDING)
|
JOB_STATUS_PENDING,
|
||||||
|
LETTER_TYPE)
|
||||||
from app.statsd_decorators import statsd
|
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),
|
||||||
cast(Job.created_at, sql_date) >= days_ago(older_than + limit_days)
|
cast(Job.created_at, sql_date) >= days_ago(older_than + limit_days)
|
||||||
).order_by(desc(Job.created_at)).all()
|
).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 Blueprint, jsonify
|
||||||
from flask import current_app
|
|
||||||
from flask import request
|
from flask import request
|
||||||
|
|
||||||
from app import notify_celery
|
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.v2.errors import register_errors
|
||||||
from app.letters.letter_schemas import letter_job_ids
|
from app.letters.letter_schemas import letter_job_ids
|
||||||
from app.schema_validation import validate
|
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")
|
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"
|
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)
|
job_status = field_for(models.JobStatus, 'name', required=False)
|
||||||
|
|
||||||
scheduled_for = fields.DateTime()
|
scheduled_for = fields.DateTime()
|
||||||
|
service_name = fields.Nested(ServiceSchema, attribute="service", dump_to="service_name", only=["name"],
|
||||||
|
dump_only=True)
|
||||||
|
|
||||||
@validates('scheduled_for')
|
@validates('scheduled_for')
|
||||||
def validate_scheduled_for(self, value):
|
def validate_scheduled_for(self, value):
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
from flask import current_app
|
|
||||||
from flask import json
|
from flask import json
|
||||||
|
|
||||||
|
from app.schemas import job_schema
|
||||||
from tests import create_authorization_header
|
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 response.status_code == 400
|
||||||
|
|
||||||
assert not mock_celery.called
|
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