|
@@ -0,0 +1,45 @@
|
|
|
+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"
|
|
|
+ ))
|
|
|
+
|
|
|
+
|