6
0

project.py 1.3 KB

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