diff options
| -rw-r--r-- | fietsboek/scripts/fietsctl.py | 16 | 
1 files changed, 15 insertions, 1 deletions
diff --git a/fietsboek/scripts/fietsctl.py b/fietsboek/scripts/fietsctl.py index 8be226a..7f7170c 100644 --- a/fietsboek/scripts/fietsctl.py +++ b/fietsboek/scripts/fietsctl.py @@ -9,6 +9,7 @@ from pyramid.scripting import AppEnvironment  from sqlalchemy import select  from .. import __VERSION__, hittekaart, models +from ..data import DataManager  from . import config_option  EXIT_OKAY = 0 @@ -229,6 +230,7 @@ def cmd_maintenance_mode(ctx: click.Context, config: str, disable: bool, reason:      multiple=True,      default=["heatmap"],  ) +@click.option("--delete", help="Delete the specified heatmap", is_flag=True)  @optgroup.group("User selection", cls=RequiredMutuallyExclusiveOptionGroup)  @optgroup.option("--id", "-i", "id_", help="database ID of the user", type=int)  @optgroup.option("--email", "-e", help="email of the user") @@ -237,6 +239,7 @@ def cmd_hittekaart(      ctx: click.Context,      config: str,      modes: list[str], +    delete: bool,      id_: Optional[int],      email: Optional[str],  ): @@ -252,12 +255,23 @@ def cmd_hittekaart(      exe_path = env["request"].config.hittekaart_bin      with env["request"].tm:          dbsession = env["request"].dbsession -        data_manager = env["request"].data_manager +        data_manager: DataManager = env["request"].data_manager          user = dbsession.execute(query).scalar_one_or_none()          if user is None:              click.echo("Error: No such user found.", err=True)              ctx.exit(EXIT_FAILURE) +        if delete: +            try: +                user_manager = data_manager.open_user(user.id) +            except FileNotFoundError: +                return +            if hittekaart.Mode.HEATMAP in modes: +                user_manager.heatmap_path().unlink(missing_ok=True) +            if hittekaart.Mode.TILEHUNTER in modes: +                user_manager.tilehunt_path().unlink(missing_ok=True) +            return +          click.echo(f"Generating overlay maps for {user.name}...")          for mode in modes:  | 
