from auth.auth_view import RegisteredAuthorizedView from flask_apispec import marshal_with, doc from media_plan.schemas import media_plan_metrics_response_schema from media_plan.services.media_plan_service import MediaPlanService from media_plan.validators import ProjectMediaPlanValidator @doc(tags=["MediaPlanMetrics"]) class MediaPlanMetricsView(RegisteredAuthorizedView): media_plan_service = MediaPlanService() validator = ProjectMediaPlanValidator() @doc(description='Retrieve media plan metrics by project id') @marshal_with(media_plan_metrics_response_schema, code=200, description='Media plan metrics') @marshal_with(schema=None, code=403, description='Forbidden because of permissions.') @marshal_with(schema=None, code=401, description='User is not authenticated.') def get(self, project_id: int, media_plan_id: int): self.permissions.can_access_project(project_id) self.validator.validate_project_media_plan(project_id, media_plan_id) return self.media_plan_service.get_media_plan_metrics(media_plan_id)