from flask_restful import Resource from flask_restful import fields, marshal_with, marshal_with_field, marshal from sqlalchemy.orm import load_only, contains_eager, joinedload from sqlalchemy import sql import datetime from feed_status.connectors import mysql from feed_status.models import outgoing_feed from feed_status import util import json outgoing_feed_status_history_fields = { 'data': fields.Nested({ 'feed_id': fields.String(attribute='feed_id'), 'feedName': fields.String(attribute='feed_name'), 'deliveryDate': fields.String(attribute='delivery_date'), 'status': fields.String(), 'timeSent': fields.DateTime(attribute='time_sent', dt_format='iso8601'), 'errorMessage': fields.String(attribute='error_message'), 'lastModifiedUtc': fields.DateTime(attribute='last_modified_utc', dt_format='iso8601')}) } class OutgoingFeedStatusDetails(Resource): @marshal_with(outgoing_feed_status_history_fields) def get(self, feed_name, date): return { 'data': outgoing_feed.get_feed_history_details(feed_name, date) } outgoing_feed_status_fields = { 'data': fields.List( fields.Nested( { 'feed_id': fields.String(attribute='feed_id'), 'feedName': fields.String(attribute='feed_name'), 'statusHistory': fields.Raw(attribute='status_history') })), 'dates': fields.List(fields.String) } class OutgoingFeedStatus(Resource): @marshal_with(outgoing_feed_status_fields) def get(self, feed_name): days_count = 30 delta = datetime.timedelta(days=days_count-1) from_date = datetime.datetime.now().date() - delta to_date = datetime.datetime.now().date() # - datetime.timedelta(days=1) outgoing_feeds = outgoing_feed.get_active_feeds() for feed in outgoing_feeds: feed.status_history = outgoing_feed.get_outgoing_feed_history( feed, from_date, to_date) dates = util.generate_default_date_dict(days_count, 0) dates = list(dates.keys()) return { 'data': outgoing_feeds, 'dates': dates }