6
0

management.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import click
  2. from tabulate import tabulate
  3. from pycs import app
  4. from pycs.database.Project import Project
  5. from pycs.util import FileOperations
  6. from flask.cli import AppGroup
  7. from flask.cli import with_appcontext
  8. def setup_commands(app):
  9. app.cli.add_command(project_cli)
  10. project_cli = AppGroup("project")
  11. @project_cli.command()
  12. @click.argument("project_id")
  13. def generate_thumbnails(project_id):
  14. if project_id == "all":
  15. projects = Project.query.all()
  16. app.logger.info(f"Generating thumbnails for all projects ({len(projects)})!")
  17. else:
  18. project = Project.query.get(project_id)
  19. if project is None:
  20. app.logger.error(f"Could not find project with ID {project_id}!")
  21. return
  22. app.logger.info(f"Generating thumbnails for project {project}!")
  23. projects = [project]
  24. for project in projects:
  25. FileOperations.generate_thumbnails(project)
  26. @project_cli.command("list")
  27. def list_projects():
  28. projects = Project.query.all()
  29. print(f"Got {len(projects)} projects")
  30. rows = [(p.id, p.name, p.description) for p in projects]
  31. print(tabulate(rows,
  32. headers=["id", "name", "description"],
  33. tablefmt="fancy_grid"
  34. ))