from flask import g, Response from datetime import datetime from auth.auth_view import AuthorizedView from projects.services.projects_exporter import ProjectsExporter from utils.handlers import get_request_query_model from projects.schemas import ProjectListQueryParams from dateutil.tz import gettz class ArtistProjectsExportView(AuthorizedView): def get(self, artist_external_id: str): params = get_request_query_model(ProjectListQueryParams) service = ProjectsExporter() csv_content = service.export_projects_csv(g.user_id, params, artist_external_id) response = Response(csv_content, mimetype="text/csv") response.headers["Content-Disposition"] = "attachment; filename={} {}_Projects.csv".format( datetime.now(gettz(params.timeZone)).strftime("%Y-%m-%d %H-%M-%S"), artist_external_id ) return response