Mobilizon-Reshare-condividi.../mobilizon_bots/cli/cli.py

121 lines
2.6 KiB
Python
Raw Normal View History

import functools
import click
from arrow import Arrow
from click import pass_context, pass_obj
from mobilizon_bots.cli import safe_execution
from mobilizon_bots.cli.inspect_event import inspect_events
from mobilizon_bots.cli.main import main
from mobilizon_bots.event.event import EventPublicationStatus
settings_file_option = click.option("--settings-file", type=click.Path(exists=True))
from_date_option = click.option(
"--begin",
type=click.DateTime(),
expose_value=True,
help="Include only events that begin after this datetime",
)
to_date_option = click.option(
"--end",
type=click.DateTime(),
expose_value=True,
help="Include only events that begin before this datetime",
)
@click.group()
def mobilizon_bots():
pass
@mobilizon_bots.command()
@settings_file_option
def start(settings_file):
safe_execution(main, settings_file=settings_file)
@mobilizon_bots.group()
@from_date_option
@to_date_option
@pass_context
def inspect(ctx, begin, end):
ctx.ensure_object(dict)
ctx.obj["begin"] = Arrow.fromdatetime(begin) if begin else None
ctx.obj["end"] = Arrow.fromdatetime(end) if end else None
pass
@inspect.command()
@settings_file_option
@pass_obj
def all(obj, settings_file):
safe_execution(
functools.partial(inspect_events, frm=obj["begin"], to=obj["end"],),
settings_file,
)
@inspect.command()
@pass_obj
@settings_file_option
def waiting(obj, settings_file):
safe_execution(
functools.partial(
inspect_events,
EventPublicationStatus.WAITING,
frm=obj["begin"],
to=obj["end"],
),
settings_file,
)
@inspect.command()
@pass_obj
@settings_file_option
def failed(obj, settings_file):
safe_execution(
functools.partial(
inspect_events,
EventPublicationStatus.FAILED,
frm=obj["begin"],
to=obj["end"],
),
settings_file,
)
@inspect.command()
@pass_obj
@settings_file_option
def partial(obj, settings_file):
safe_execution(
functools.partial(
inspect_events,
EventPublicationStatus.PARTIAL,
frm=obj["begin"],
to=obj["end"],
),
settings_file,
)
@inspect.command()
@settings_file_option
@pass_obj
def completed(obj, settings_file):
safe_execution(
functools.partial(
inspect_events,
EventPublicationStatus.COMPLETED,
frm=obj["begin"],
to=obj["end"],
),
settings_file,
)
if __name__ == "__main__":
mobilizon_bots()