from flask import g from auth.auth_view import AuthorizedView from artists_moments.services.project_artists_moments_service import ProjectArtistsMomentsService from artists_moments.schemas import CreateArtistMomentRequestSchema from artists_moments.permissions import ArtistsMomentsPermissions from services.permissions.permissions_service import PermissionsService from utils.handlers import get_request_model class ProjectArtistsMomentsView(AuthorizedView): service = ProjectArtistsMomentsService() def get(self, project_id): self.permissions.can_access_project(project_id) return self.service.get_artists_moments_for_project(project_id) def post(self, project_id): self.permissions.can_access_project(project_id) params = get_request_model(CreateArtistMomentRequestSchema) return self.service.create_artist_moment_for_project(project_id, params) class ArtistsMomentView(AuthorizedView): service = ProjectArtistsMomentsService() permissions = ArtistsMomentsPermissions() common_permissions = PermissionsService() def get(self, project_id, moment_id): self.common_permissions.can_access_project(project_id) return self.service.get_artists_moments_by_id(project_id, moment_id) def put(self, project_id, moment_id): self.permissions.can_access_moment(g.user_id, project_id, moment_id) params = get_request_model(CreateArtistMomentRequestSchema) return self.service.update_artist_moment(project_id, moment_id, params) def delete(self, project_id, moment_id): self.permissions.can_access_moment(g.user_id, project_id, moment_id) self.service.delete_artist_moment(moment_id) return self.no_content() class ArtistsMomentsTypesView(AuthorizedView): service = ProjectArtistsMomentsService() def get(self): return self.service.get_moments_types() class ArtistsMomentsCategoriesView(AuthorizedView): service = ProjectArtistsMomentsService() def get(self): return self.service.get_moments_categories()