from typing import List from auth.auth_view import RegisteredAuthorizedView from flask_apispec import marshal_with, doc from media_plan.schemas import media_plan_review_response_schema, MediaPlanReviewResponseSchema from media_plan.services.media_plan_service import MediaPlanService from media_plan.validators import ProjectMediaPlanValidator @doc(tags=['MediaPlanReview']) class MediaPlanReview(RegisteredAuthorizedView): media_plan_service = MediaPlanService() validator = ProjectMediaPlanValidator() @doc(description='Retrieve media plan for review') @marshal_with(media_plan_review_response_schema(many=True), code=200, description='JSON with media plan.') @marshal_with(schema=None, code=401, description='User is not authenticated.') def get(self, project_id: int, media_plan_id: int) -> List[MediaPlanReviewResponseSchema]: self.permissions.can_access_project(project_id) self.validator.validate_project_media_plan(project_id, media_plan_id) return self.media_plan_service.get_campaigns_for_review(media_plan_id=media_plan_id)