import click from tabulate import tabulate from pycs import app from pycs.database.Project import Project from pycs.util import FileOperations from flask.cli import AppGroup from flask.cli import with_appcontext def setup_commands(app): app.cli.add_command(project_cli) project_cli = AppGroup("project") @project_cli.command() @click.argument("project_id") def generate_thumbnails(project_id): if project_id == "all": projects = Project.query.all() app.logger.info(f"Generating thumbnails for all projects ({len(projects)})!") else: project = Project.query.get(project_id) if project is None: app.logger.error(f"Could not find project with ID {project_id}!") return app.logger.info(f"Generating thumbnails for project {project}!") projects = [project] for project in projects: FileOperations.generate_thumbnails(project) @project_cli.command("list") def list_projects(): projects = Project.query.all() print(f"Got {len(projects)} projects") rows = [(p.id, p.name, p.description) for p in projects] print(tabulate(rows, headers=["id", "name", "description"], tablefmt="fancy_grid" ))