from utils.handlers import get_request_query_model from flask import g from auth.auth_view import AuthorizedView from performance.schemas import PerformanceMetricsParamsSchema from performance.validators import MetricsParametersValidator from performance.services.metrics_api.metrics_details_api_service import MetricsDetailsApiService from utils.test_helpers import sync from performance.services.utils_service import UtilsService class ProjectsPerformanceMetricsDetailsView(AuthorizedView): service = MetricsDetailsApiService() utils_service = UtilsService() validator = MetricsParametersValidator() @sync def get(self, entity_id: int): params = get_request_query_model(PerformanceMetricsParamsSchema) self.validator.validate(params) entity_id = self.utils_service.get_dsp_project_id(entity_id) return self.service.get_project_metrics_details(g.user_id, entity_id, params) class ArtistsPerformanceMetricsDetailsView(AuthorizedView): service = MetricsDetailsApiService() validator = MetricsParametersValidator() @sync def get(self, entity_id: str): params = get_request_query_model(PerformanceMetricsParamsSchema) self.validator.validate(params) return self.service.get_artist_metrics_details(g.user_id, entity_id, params) class CampaignsPerformanceMetricsDetailsView(AuthorizedView): service = MetricsDetailsApiService() validator = MetricsParametersValidator() @sync async def get(self, entity_id: str): params = get_request_query_model(PerformanceMetricsParamsSchema) self.validator.validate(params) return await self.service.get_campaign_metrics_details(g.user_id, entity_id, params) class UnassignedCampaignsPerformanceMetricsDetailsView(AuthorizedView): validator = MetricsParametersValidator() service = MetricsDetailsApiService() @sync async def get(self, entity_id: str): params = get_request_query_model(PerformanceMetricsParamsSchema) self.validator.validate(params) return await self.service.get_unassigned_campaigns_metrics_details(g.user_id, entity_id, params)