Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions app/dao/magazines_dao.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ def dao_get_magazines():
return Magazine.query.order_by(Magazine.created_at.desc()).all()


def dao_get_latest_magazine():
return Magazine.query.order_by(Magazine.created_at.desc()).first()


def dao_get_magazine_by_id(id):
return Magazine.query.filter_by(id=id).one()

Expand Down
12 changes: 11 additions & 1 deletion app/routes/magazines/rest.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@
from app.na_celery import upload_tasks
from app.dao import dao_create_record, dao_update_record
from app.dao.emails_dao import dao_create_email
from app.dao.magazines_dao import dao_get_magazine_by_id, dao_get_magazine_by_old_id, dao_get_magazines
from app.dao.magazines_dao import (
dao_get_magazine_by_id, dao_get_magazine_by_old_id, dao_get_magazines, dao_get_latest_magazine
)
from app.dao.users_dao import dao_get_users
from app.errors import register_errors, InvalidRequest
from app.models import Email, Magazine, MAGAZINE, READY
Expand Down Expand Up @@ -94,6 +96,14 @@ def update_magazine(id):
raise InvalidRequest('Invalid filename for magazine: {}'.format(data['filename']), 400)


@magazines_blueprint.route('/magazine/latest', methods=['GET'])
@jwt_required
def get_latest_magazine():
magazine = dao_get_latest_magazine()

return jsonify(magazine.serialize())


@magazines_blueprint.route('/magazines', methods=['GET'])
@jwt_required
def get_magazines():
Expand Down
14 changes: 14 additions & 0 deletions tests/app/routes/magazines/test_rest.py
Original file line number Diff line number Diff line change
Expand Up @@ -175,3 +175,17 @@ def it_gets_magazine_by_old_id(self, client, db_session):
)
assert response.status_code == 200
assert response.json['id'] == str(magazine.id)


class WhenGettingLatestMagazine:

def it_gets_the_latest_magazine(self, client, db_session):
create_magazine(old_id='1', title='title', filename='new filename')
magazine = create_magazine(old_id='2', title='title 2', filename='new filename 2')

response = client.get(
url_for('magazines.get_latest_magazine', old_id=magazine.old_id),
headers=[('Content-Type', 'application/json'), create_authorization_header()]
)
assert response.status_code == 200
assert response.json['id'] == str(magazine.id)