From 2c8063cf4ab6ded2fe0cb6e5d9b1d692d63822e5 Mon Sep 17 00:00:00 2001 From: Simone Robutti Date: Mon, 16 Aug 2021 10:49:52 +0200 Subject: [PATCH] rename everything (#50) * fixed visualization * simplified tests * split into files * refactored test expected publications * split update tests * expanded specifications and tests * added event_status window tests * fixed 'all' command * renamed everything * fixed uppercase --- README.md | 6 ++--- mobilizon_bots/publishers/__init__.py | 6 ----- .../__init__.py | 0 .../cli/__init__.py | 6 ++--- .../cli/cli.py | 16 +++++++------- .../cli/inspect_event.py | 8 +++---- .../cli/main.py | 12 +++++----- .../config/__init__.py | 0 .../config/config.py | 19 ++++++++-------- .../config/notifiers.py | 0 .../config/publishers.py | 0 .../config/strategies.py | 0 .../event/__init__.py | 0 .../event/event.py | 4 ++-- .../event/event_selection_strategies.py | 7 +++--- .../formatting/__init__.py | 0 .../formatting/description.py | 0 .../mobilizon/__init__.py | 0 .../mobilizon/events.py | 4 ++-- .../models/__init__.py | 0 .../models/event.py | 0 .../models/notification.py | 0 .../models/publication.py | 0 .../models/publisher.py | 0 mobilizon_reshare/publishers/__init__.py | 6 +++++ .../publishers/abstract.py | 4 ++-- .../publishers/coordinator.py | 17 +++++++------- .../publishers/exceptions.py | 0 .../publishers/telegram.py | 2 +- .../publishers/templates/__init__.py | 0 .../publishers/templates/telegram.tmpl.j2 | 0 .../settings.toml | 6 ++--- .../storage/__init__.py | 0 .../storage/db.py | 14 ++++++------ .../storage/query.py | 21 +++++++----------- pyproject.toml | 4 ++-- tests/config/test_config_singleton.py | 2 +- tests/config/test_validation.py | 2 +- tests/conftest.py | 22 +++++++++---------- tests/event/test_strategies.py | 4 ++-- tests/formatting/test_markdown.py | 2 +- tests/formatting/test_plaintest.py | 2 +- tests/mobilizon/conftest.py | 11 +++------- tests/mobilizon/test_events.py | 4 ++-- tests/models/test_event.py | 8 +++---- tests/models/test_notification.py | 2 +- tests/models/test_publication.py | 2 +- tests/models/test_publisher.py | 2 +- tests/publishers/test_abstract_predicates.py | 6 ++--- tests/storage/__init__.py | 4 ++-- tests/storage/conftest.py | 6 ++--- tests/storage/test_query.py | 10 ++++----- tests/storage/test_update.py | 10 ++++----- 53 files changed, 124 insertions(+), 137 deletions(-) delete mode 100644 mobilizon_bots/publishers/__init__.py rename {mobilizon_bots => mobilizon_reshare}/__init__.py (100%) rename {mobilizon_bots => mobilizon_reshare}/cli/__init__.py (82%) rename {mobilizon_bots => mobilizon_reshare}/cli/cli.py (87%) rename {mobilizon_bots => mobilizon_reshare}/cli/inspect_event.py (80%) rename {mobilizon_bots => mobilizon_reshare}/cli/main.py (78%) rename {mobilizon_bots => mobilizon_reshare}/config/__init__.py (100%) rename {mobilizon_bots => mobilizon_reshare}/config/config.py (88%) rename {mobilizon_bots => mobilizon_reshare}/config/notifiers.py (100%) rename {mobilizon_bots => mobilizon_reshare}/config/publishers.py (100%) rename {mobilizon_bots => mobilizon_reshare}/config/strategies.py (100%) rename {mobilizon_bots => mobilizon_reshare}/event/__init__.py (100%) rename {mobilizon_bots => mobilizon_reshare}/event/event.py (96%) rename {mobilizon_bots => mobilizon_reshare}/event/event_selection_strategies.py (93%) rename {mobilizon_bots => mobilizon_reshare}/formatting/__init__.py (100%) rename {mobilizon_bots => mobilizon_reshare}/formatting/description.py (100%) rename {mobilizon_bots => mobilizon_reshare}/mobilizon/__init__.py (100%) rename {mobilizon_bots => mobilizon_reshare}/mobilizon/events.py (96%) rename {mobilizon_bots => mobilizon_reshare}/models/__init__.py (100%) rename {mobilizon_bots => mobilizon_reshare}/models/event.py (100%) rename {mobilizon_bots => mobilizon_reshare}/models/notification.py (100%) rename {mobilizon_bots => mobilizon_reshare}/models/publication.py (100%) rename {mobilizon_bots => mobilizon_reshare}/models/publisher.py (100%) create mode 100644 mobilizon_reshare/publishers/__init__.py rename {mobilizon_bots => mobilizon_reshare}/publishers/abstract.py (97%) rename {mobilizon_bots => mobilizon_reshare}/publishers/coordinator.py (80%) rename {mobilizon_bots => mobilizon_reshare}/publishers/exceptions.py (100%) rename {mobilizon_bots => mobilizon_reshare}/publishers/telegram.py (97%) rename {mobilizon_bots => mobilizon_reshare}/publishers/templates/__init__.py (100%) rename {mobilizon_bots => mobilizon_reshare}/publishers/templates/telegram.tmpl.j2 (100%) rename {mobilizon_bots => mobilizon_reshare}/settings.toml (90%) rename {mobilizon_bots => mobilizon_reshare}/storage/__init__.py (100%) rename {mobilizon_bots => mobilizon_reshare}/storage/db.py (75%) rename {mobilizon_bots => mobilizon_reshare}/storage/query.py (91%) diff --git a/README.md b/README.md index 9334079..b346e74 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -The goal of mobilizon_bots is to provide a suite to reshare Mobilizon events on a broad selection of platforms. This +The goal of mobilizon_reshare is to provide a suite to reshare Mobilizon events on a broad selection of platforms. This tool enables an organization to automate their social media strategy in regards to events and their promotion. @@ -9,7 +9,7 @@ to events and their promotion. ## Scheduling and temporal logic The tool is designed to work in combination with a scheduler that executes it at -regular intervals. Mobilizon_bots allows fine-grained control over the logic to decide when +regular intervals. mobilizon_reshare allows fine-grained control over the logic to decide when to publish an event, with the minimization of human effort as its first priority. ## Configuration @@ -17,7 +17,7 @@ to publish an event, with the minimization of human effort as its first priority The configuration is implemented through Dynaconf. It allows a variety of ways to specify configuration keys. Refer to their [documentation](https://www.dynaconf.com/) to discover how configuration files and environment variables can be specified. -We provide a sample configuration in the [settings.toml](https://github.com/Tech-Workers-Coalition-Italia/mobilizon-bots/blob/master/mobilizon_bots/settings.toml) file. +We provide a sample configuration in the [settings.toml](https://github.com/Tech-Workers-Coalition-Italia/mobilizon-reshare/blob/master/mobilizon_reshare/settings.toml) file. ### Event selection diff --git a/mobilizon_bots/publishers/__init__.py b/mobilizon_bots/publishers/__init__.py deleted file mode 100644 index 27e2b64..0000000 --- a/mobilizon_bots/publishers/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -from mobilizon_bots.config.config import get_settings -import mobilizon_bots.config.publishers - - -def get_active_publishers(): - return mobilizon_bots.config.publishers.get_active_publishers(get_settings()) diff --git a/mobilizon_bots/__init__.py b/mobilizon_reshare/__init__.py similarity index 100% rename from mobilizon_bots/__init__.py rename to mobilizon_reshare/__init__.py diff --git a/mobilizon_bots/cli/__init__.py b/mobilizon_reshare/cli/__init__.py similarity index 82% rename from mobilizon_bots/cli/__init__.py rename to mobilizon_reshare/cli/__init__.py index 2587bbb..9fdff70 100644 --- a/mobilizon_bots/cli/__init__.py +++ b/mobilizon_reshare/cli/__init__.py @@ -4,8 +4,8 @@ import traceback from logging.config import dictConfig from pathlib import Path -from mobilizon_bots.config.config import update_settings_files -from mobilizon_bots.storage.db import tear_down, MobilizonBotsDB +from mobilizon_reshare.config.config import update_settings_files +from mobilizon_reshare.storage.db import tear_down, MoReDB logger = logging.getLogger(__name__) @@ -19,7 +19,7 @@ async def init(settings_file): settings = update_settings_files(settings_file) dictConfig(settings["logging"]) db_path = Path(settings.db_path) - db = MobilizonBotsDB(db_path) + db = MoReDB(db_path) await db.setup() diff --git a/mobilizon_bots/cli/cli.py b/mobilizon_reshare/cli/cli.py similarity index 87% rename from mobilizon_bots/cli/cli.py rename to mobilizon_reshare/cli/cli.py index 099284b..1aa4c2c 100644 --- a/mobilizon_bots/cli/cli.py +++ b/mobilizon_reshare/cli/cli.py @@ -4,10 +4,10 @@ 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 +from mobilizon_reshare.cli import safe_execution +from mobilizon_reshare.cli.inspect_event import inspect_events +from mobilizon_reshare.cli.main import main +from mobilizon_reshare.event.event import EventPublicationStatus settings_file_option = click.option("--settings-file", type=click.Path(exists=True)) from_date_option = click.option( @@ -25,17 +25,17 @@ to_date_option = click.option( @click.group() -def mobilizon_bots(): +def mobilizon_reshare(): pass -@mobilizon_bots.command() +@mobilizon_reshare.command() @settings_file_option def start(settings_file): safe_execution(main, settings_file=settings_file) -@mobilizon_bots.group() +@mobilizon_reshare.group() @from_date_option @to_date_option @pass_context @@ -117,4 +117,4 @@ def completed(obj, settings_file): if __name__ == "__main__": - mobilizon_bots() + mobilizon_reshare() diff --git a/mobilizon_bots/cli/inspect_event.py b/mobilizon_reshare/cli/inspect_event.py similarity index 80% rename from mobilizon_bots/cli/inspect_event.py rename to mobilizon_reshare/cli/inspect_event.py index f733b16..d994310 100644 --- a/mobilizon_bots/cli/inspect_event.py +++ b/mobilizon_reshare/cli/inspect_event.py @@ -3,10 +3,10 @@ from typing import Iterable import click from arrow import Arrow -from mobilizon_bots.event.event import EventPublicationStatus -from mobilizon_bots.event.event import MobilizonEvent -from mobilizon_bots.storage.query import get_all_events -from mobilizon_bots.storage.query import events_with_status +from mobilizon_reshare.event.event import EventPublicationStatus +from mobilizon_reshare.event.event import MobilizonEvent +from mobilizon_reshare.storage.query import get_all_events +from mobilizon_reshare.storage.query import events_with_status status_to_color = { diff --git a/mobilizon_bots/cli/main.py b/mobilizon_reshare/cli/main.py similarity index 78% rename from mobilizon_bots/cli/main.py rename to mobilizon_reshare/cli/main.py index 19bf4af..069bdc7 100644 --- a/mobilizon_bots/cli/main.py +++ b/mobilizon_reshare/cli/main.py @@ -1,12 +1,12 @@ import logging.config -from mobilizon_bots.event.event_selection_strategies import select_event_to_publish -from mobilizon_bots.mobilizon.events import get_unpublished_events -from mobilizon_bots.models.publication import PublicationStatus -from mobilizon_bots.publishers import get_active_publishers -from mobilizon_bots.publishers.coordinator import PublisherCoordinator -from mobilizon_bots.storage.query import ( +from mobilizon_reshare.event.event_selection_strategies import select_event_to_publish +from mobilizon_reshare.mobilizon.events import get_unpublished_events +from mobilizon_reshare.models.publication import PublicationStatus +from mobilizon_reshare.publishers import get_active_publishers +from mobilizon_reshare.publishers.coordinator import PublisherCoordinator +from mobilizon_reshare.storage.query import ( get_published_events, get_unpublished_events as get_db_unpublished_events, create_unpublished_events, diff --git a/mobilizon_bots/config/__init__.py b/mobilizon_reshare/config/__init__.py similarity index 100% rename from mobilizon_bots/config/__init__.py rename to mobilizon_reshare/config/__init__.py diff --git a/mobilizon_bots/config/config.py b/mobilizon_reshare/config/config.py similarity index 88% rename from mobilizon_bots/config/config.py rename to mobilizon_reshare/config/config.py index 7cca645..233e408 100644 --- a/mobilizon_bots/config/config.py +++ b/mobilizon_reshare/config/config.py @@ -3,9 +3,10 @@ from typing import List from dynaconf import Dynaconf, Validator -from mobilizon_bots.config import strategies, publishers, notifiers -from mobilizon_bots.config.notifiers import notifier_names -from mobilizon_bots.config.publishers import publisher_names +from mobilizon_reshare.config import strategies, publishers, notifiers +from mobilizon_reshare.config.notifiers import notifier_names + +from mobilizon_reshare.config.publishers import publisher_names def build_settings( @@ -13,15 +14,15 @@ def build_settings( ): SETTINGS_FILE = ( settings_files - or os.environ.get("MOBILIZON_BOTS_SETTINGS_FILE") + or os.environ.get("MOBILIZION_RESHARE_SETTINGS_FILE") or [ - "mobilizon_bots/settings.toml", - "mobilizon_bots/.secrets.toml", - "/etc/mobilizon_bots.toml", - "/etc/mobilizon_bots_secrets.toml", + "mobilizon_reshare/settings.toml", + "mobilizon_reshare/.secrets.toml", + "/etc/mobilizon_reshare.toml", + "/etc/mobilizon_reshare_secrets.toml", ] ) - ENVVAR_PREFIX = "MOBILIZON_BOTS" + ENVVAR_PREFIX = "MOBILIZON_RESHARE" return Dynaconf( environments=True, diff --git a/mobilizon_bots/config/notifiers.py b/mobilizon_reshare/config/notifiers.py similarity index 100% rename from mobilizon_bots/config/notifiers.py rename to mobilizon_reshare/config/notifiers.py diff --git a/mobilizon_bots/config/publishers.py b/mobilizon_reshare/config/publishers.py similarity index 100% rename from mobilizon_bots/config/publishers.py rename to mobilizon_reshare/config/publishers.py diff --git a/mobilizon_bots/config/strategies.py b/mobilizon_reshare/config/strategies.py similarity index 100% rename from mobilizon_bots/config/strategies.py rename to mobilizon_reshare/config/strategies.py diff --git a/mobilizon_bots/event/__init__.py b/mobilizon_reshare/event/__init__.py similarity index 100% rename from mobilizon_bots/event/__init__.py rename to mobilizon_reshare/event/__init__.py diff --git a/mobilizon_bots/event/event.py b/mobilizon_reshare/event/event.py similarity index 96% rename from mobilizon_bots/event/event.py rename to mobilizon_reshare/event/event.py index 3e2644b..fa99ab3 100644 --- a/mobilizon_bots/event/event.py +++ b/mobilizon_reshare/event/event.py @@ -6,8 +6,8 @@ import arrow import tortoise.timezone from jinja2 import Template -from mobilizon_bots.models.event import Event -from mobilizon_bots.models.publication import PublicationStatus, Publication +from mobilizon_reshare.models.event import Event +from mobilizon_reshare.models.publication import PublicationStatus, Publication class EventPublicationStatus(IntEnum): diff --git a/mobilizon_bots/event/event_selection_strategies.py b/mobilizon_reshare/event/event_selection_strategies.py similarity index 93% rename from mobilizon_bots/event/event_selection_strategies.py rename to mobilizon_reshare/event/event_selection_strategies.py index 21b6817..3ec5bad 100644 --- a/mobilizon_bots/event/event_selection_strategies.py +++ b/mobilizon_reshare/event/event_selection_strategies.py @@ -4,8 +4,8 @@ from typing import List, Optional import arrow -from mobilizon_bots.config.config import get_settings -from mobilizon_bots.event.event import MobilizonEvent +from mobilizon_reshare.config.config import get_settings +from mobilizon_reshare.event.event import MobilizonEvent logger = logging.getLogger(__name__) @@ -93,8 +93,7 @@ STRATEGY_NAME_TO_STRATEGY_CLASS = {"next_event": SelectNextEventStrategy} def select_event_to_publish( - published_events: List[MobilizonEvent], - unpublished_events: List[MobilizonEvent], + published_events: List[MobilizonEvent], unpublished_events: List[MobilizonEvent], ): strategy = STRATEGY_NAME_TO_STRATEGY_CLASS[ diff --git a/mobilizon_bots/formatting/__init__.py b/mobilizon_reshare/formatting/__init__.py similarity index 100% rename from mobilizon_bots/formatting/__init__.py rename to mobilizon_reshare/formatting/__init__.py diff --git a/mobilizon_bots/formatting/description.py b/mobilizon_reshare/formatting/description.py similarity index 100% rename from mobilizon_bots/formatting/description.py rename to mobilizon_reshare/formatting/description.py diff --git a/mobilizon_bots/mobilizon/__init__.py b/mobilizon_reshare/mobilizon/__init__.py similarity index 100% rename from mobilizon_bots/mobilizon/__init__.py rename to mobilizon_reshare/mobilizon/__init__.py diff --git a/mobilizon_bots/mobilizon/events.py b/mobilizon_reshare/mobilizon/events.py similarity index 96% rename from mobilizon_bots/mobilizon/events.py rename to mobilizon_reshare/mobilizon/events.py index 3d7b8ee..77d96af 100644 --- a/mobilizon_bots/mobilizon/events.py +++ b/mobilizon_reshare/mobilizon/events.py @@ -6,8 +6,8 @@ from typing import List, Optional import arrow import requests -from mobilizon_bots.config.config import get_settings -from mobilizon_bots.event.event import MobilizonEvent, EventPublicationStatus +from mobilizon_reshare.config.config import get_settings +from mobilizon_reshare.event.event import MobilizonEvent, EventPublicationStatus logger = logging.getLogger(__name__) diff --git a/mobilizon_bots/models/__init__.py b/mobilizon_reshare/models/__init__.py similarity index 100% rename from mobilizon_bots/models/__init__.py rename to mobilizon_reshare/models/__init__.py diff --git a/mobilizon_bots/models/event.py b/mobilizon_reshare/models/event.py similarity index 100% rename from mobilizon_bots/models/event.py rename to mobilizon_reshare/models/event.py diff --git a/mobilizon_bots/models/notification.py b/mobilizon_reshare/models/notification.py similarity index 100% rename from mobilizon_bots/models/notification.py rename to mobilizon_reshare/models/notification.py diff --git a/mobilizon_bots/models/publication.py b/mobilizon_reshare/models/publication.py similarity index 100% rename from mobilizon_bots/models/publication.py rename to mobilizon_reshare/models/publication.py diff --git a/mobilizon_bots/models/publisher.py b/mobilizon_reshare/models/publisher.py similarity index 100% rename from mobilizon_bots/models/publisher.py rename to mobilizon_reshare/models/publisher.py diff --git a/mobilizon_reshare/publishers/__init__.py b/mobilizon_reshare/publishers/__init__.py new file mode 100644 index 0000000..6f6e077 --- /dev/null +++ b/mobilizon_reshare/publishers/__init__.py @@ -0,0 +1,6 @@ +from mobilizon_reshare.config.config import get_settings +import mobilizon_reshare.config.publishers + + +def get_active_publishers(): + return mobilizon_reshare.config.publishers.get_active_publishers(get_settings()) diff --git a/mobilizon_bots/publishers/abstract.py b/mobilizon_reshare/publishers/abstract.py similarity index 97% rename from mobilizon_bots/publishers/abstract.py rename to mobilizon_reshare/publishers/abstract.py index 83c6ff2..d6d29d1 100644 --- a/mobilizon_bots/publishers/abstract.py +++ b/mobilizon_reshare/publishers/abstract.py @@ -5,8 +5,8 @@ from abc import ABC, abstractmethod from dynaconf.utils.boxing import DynaBox from jinja2 import Environment, FileSystemLoader, Template -from mobilizon_bots.config.config import get_settings -from mobilizon_bots.event.event import MobilizonEvent +from mobilizon_reshare.config.config import get_settings +from mobilizon_reshare.event.event import MobilizonEvent from .exceptions import PublisherError, InvalidAttribute JINJA_ENV = Environment(loader=FileSystemLoader("/")) diff --git a/mobilizon_bots/publishers/coordinator.py b/mobilizon_reshare/publishers/coordinator.py similarity index 80% rename from mobilizon_bots/publishers/coordinator.py rename to mobilizon_reshare/publishers/coordinator.py index 114bb92..5dc377b 100644 --- a/mobilizon_bots/publishers/coordinator.py +++ b/mobilizon_reshare/publishers/coordinator.py @@ -1,10 +1,10 @@ from dataclasses import dataclass, field from uuid import UUID -from mobilizon_bots.event.event import MobilizonEvent -from mobilizon_bots.models.publication import PublicationStatus -from mobilizon_bots.publishers.exceptions import PublisherError -from mobilizon_bots.publishers.telegram import TelegramPublisher +from mobilizon_reshare.event.event import MobilizonEvent +from mobilizon_reshare.models.publication import PublicationStatus +from mobilizon_reshare.publishers.exceptions import PublisherError +from mobilizon_reshare.publishers.telegram import TelegramPublisher KEY2CLS = {"telegram": TelegramPublisher} @@ -32,7 +32,8 @@ class PublisherCoordinatorReport: class PublisherCoordinator: def __init__(self, event: MobilizonEvent, publications: list[tuple[UUID, str]]): self.publications = tuple( - (publication_id, KEY2CLS[publisher_name](event)) for publication_id, publisher_name in publications + (publication_id, KEY2CLS[publisher_name](event)) + for publication_id, publisher_name in publications ) def run(self) -> PublisherCoordinatorReport: @@ -45,8 +46,7 @@ class PublisherCoordinator: def _make_successful_report(self): return { publication_id: PublicationReport( - status=PublicationStatus.COMPLETED, - reason="", + status=PublicationStatus.COMPLETED, reason="", ) for publication_id, _ in self.publications } @@ -58,8 +58,7 @@ class PublisherCoordinator: p.post() except PublisherError as e: failed_publishers_reports[publication_id] = PublicationReport( - status=PublicationStatus.FAILED, - reason=repr(e), + status=PublicationStatus.FAILED, reason=repr(e), ) reports = failed_publishers_reports or self._make_successful_report() return PublisherCoordinatorReport(reports) diff --git a/mobilizon_bots/publishers/exceptions.py b/mobilizon_reshare/publishers/exceptions.py similarity index 100% rename from mobilizon_bots/publishers/exceptions.py rename to mobilizon_reshare/publishers/exceptions.py diff --git a/mobilizon_bots/publishers/telegram.py b/mobilizon_reshare/publishers/telegram.py similarity index 97% rename from mobilizon_bots/publishers/telegram.py rename to mobilizon_reshare/publishers/telegram.py index dcdb5e1..edede42 100644 --- a/mobilizon_bots/publishers/telegram.py +++ b/mobilizon_reshare/publishers/telegram.py @@ -18,7 +18,7 @@ class TelegramPublisher(AbstractPublisher): _conf = ("publisher", "telegram") default_template_path = pkg_resources.resource_filename( - "mobilizon_bots.publishers.templates", "telegram.tmpl.j2" + "mobilizon_reshare.publishers.templates", "telegram.tmpl.j2" ) def post(self) -> None: diff --git a/mobilizon_bots/publishers/templates/__init__.py b/mobilizon_reshare/publishers/templates/__init__.py similarity index 100% rename from mobilizon_bots/publishers/templates/__init__.py rename to mobilizon_reshare/publishers/templates/__init__.py diff --git a/mobilizon_bots/publishers/templates/telegram.tmpl.j2 b/mobilizon_reshare/publishers/templates/telegram.tmpl.j2 similarity index 100% rename from mobilizon_bots/publishers/templates/telegram.tmpl.j2 rename to mobilizon_reshare/publishers/templates/telegram.tmpl.j2 diff --git a/mobilizon_bots/settings.toml b/mobilizon_reshare/settings.toml similarity index 90% rename from mobilizon_bots/settings.toml rename to mobilizon_reshare/settings.toml index 79d7e8f..301e5d5 100644 --- a/mobilizon_bots/settings.toml +++ b/mobilizon_reshare/settings.toml @@ -1,8 +1,8 @@ [default] debug = true default = true -local_state_dir = "/var/mobilizon_bots" -log_dir = "/var/log/mobilizon_bots" +local_state_dir = "/var/mobilizon_reshare" +log_dir = "/var/log/mobilizon_reshare" db_name = "events.db" db_path = "@format {this.local_state_dir}/{this.db_name}" @@ -66,7 +66,7 @@ stream = "ext://sys.stderr" level = "DEBUG" class = "logging.handlers.RotatingFileHandler" formatter = "standard" -filename = "@format {this.log_dir}/mobilizon_bots.log" +filename = "@format {this.log_dir}/mobilizon_reshare.log" maxBytes = 52428800 backupCount = 500 encoding = "utf8" diff --git a/mobilizon_bots/storage/__init__.py b/mobilizon_reshare/storage/__init__.py similarity index 100% rename from mobilizon_bots/storage/__init__.py rename to mobilizon_reshare/storage/__init__.py diff --git a/mobilizon_bots/storage/db.py b/mobilizon_reshare/storage/db.py similarity index 75% rename from mobilizon_bots/storage/db.py rename to mobilizon_reshare/storage/db.py index 0e5954b..2348779 100644 --- a/mobilizon_bots/storage/db.py +++ b/mobilizon_reshare/storage/db.py @@ -5,13 +5,13 @@ from pathlib import Path from tortoise import Tortoise -from mobilizon_bots.config.publishers import publisher_names -from mobilizon_bots.storage.query import update_publishers +from mobilizon_reshare.config.publishers import publisher_names +from mobilizon_reshare.storage.query import update_publishers logger = logging.getLogger(__name__) -class MobilizonBotsDB: +class MoReDB: def __init__(self, path: Path): self.path = path # TODO: Check if DB is openable/"queriable" @@ -24,10 +24,10 @@ class MobilizonBotsDB: db_url=f"sqlite:///{self.path}", modules={ "models": [ - "mobilizon_bots.models.event", - "mobilizon_bots.models.notification", - "mobilizon_bots.models.publication", - "mobilizon_bots.models.publisher", + "mobilizon_reshare.models.event", + "mobilizon_reshare.models.notification", + "mobilizon_reshare.models.publication", + "mobilizon_reshare.models.publisher", ] }, # always store UTC time in database diff --git a/mobilizon_bots/storage/query.py b/mobilizon_reshare/storage/query.py similarity index 91% rename from mobilizon_bots/storage/query.py rename to mobilizon_reshare/storage/query.py index 2ab40a6..605f5bb 100644 --- a/mobilizon_bots/storage/query.py +++ b/mobilizon_reshare/storage/query.py @@ -8,11 +8,11 @@ from arrow import Arrow from tortoise.queryset import QuerySet from tortoise.transactions import atomic -from mobilizon_bots.event.event import MobilizonEvent, EventPublicationStatus -from mobilizon_bots.models.event import Event -from mobilizon_bots.models.publication import Publication, PublicationStatus -from mobilizon_bots.models.publisher import Publisher -from mobilizon_bots.publishers.coordinator import PublisherCoordinatorReport +from mobilizon_reshare.event.event import MobilizonEvent, EventPublicationStatus +from mobilizon_reshare.models.event import Event +from mobilizon_reshare.models.publication import Publication, PublicationStatus +from mobilizon_reshare.models.publisher import Publisher +from mobilizon_reshare.publishers.coordinator import PublisherCoordinatorReport logger = logging.getLogger(__name__) @@ -90,8 +90,7 @@ async def events_with_status( async def get_all_events( - from_date: Optional[Arrow] = None, - to_date: Optional[Arrow] = None, + from_date: Optional[Arrow] = None, to_date: Optional[Arrow] = None, ) -> Iterable[MobilizonEvent]: return map( @@ -140,9 +139,7 @@ async def create_publisher(name: str, account_ref: Optional[str] = None) -> None @atomic(CONNECTION_NAME) -async def update_publishers( - names: Iterable[str], -) -> None: +async def update_publishers(names: Iterable[str],) -> None: names = set(names) known_publisher_names = set(p.name for p in await get_publishers()) for name in names.difference(known_publisher_names): @@ -157,9 +154,7 @@ async def save_publication( publisher = await get_publishers(publisher_name) await Publication.create( - status=status, - event_id=event_model.id, - publisher_id=publisher.id, + status=status, event_id=event_model.id, publisher_id=publisher.id, ) diff --git a/pyproject.toml b/pyproject.toml index 7b14382..e4bfd19 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [tool.poetry] -name = "mobilizon-bots" +name = "mobilizon-reshare" version = "0.1.0" description = "" authors = ["Simone Robutti "] @@ -27,4 +27,4 @@ requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" [tool.poetry.scripts] -mobilizon-bots="mobilizon_bots.cli.cli:mobilizon_bots" +mobilizon-reshare="mobilizon_reshare.cli.cli:mobilizon_reshare" diff --git a/tests/config/test_config_singleton.py b/tests/config/test_config_singleton.py index e0b71c4..51ee209 100644 --- a/tests/config/test_config_singleton.py +++ b/tests/config/test_config_singleton.py @@ -1,4 +1,4 @@ -from mobilizon_bots.config.config import get_settings, update_settings_files +from mobilizon_reshare.config.config import get_settings, update_settings_files def test_singleton(): diff --git a/tests/config/test_validation.py b/tests/config/test_validation.py index 8c8d04b..ab2b360 100644 --- a/tests/config/test_validation.py +++ b/tests/config/test_validation.py @@ -2,7 +2,7 @@ import dynaconf import pkg_resources import pytest -from mobilizon_bots.config.config import update_settings_files +from mobilizon_reshare.config.config import update_settings_files @pytest.fixture diff --git a/tests/conftest.py b/tests/conftest.py index 80880bf..de50e22 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -5,11 +5,11 @@ import arrow import pytest from tortoise.contrib.test import finalizer, initializer -from mobilizon_bots.event.event import MobilizonEvent, EventPublicationStatus -from mobilizon_bots.models.event import Event -from mobilizon_bots.models.notification import Notification, NotificationStatus -from mobilizon_bots.models.publication import Publication, PublicationStatus -from mobilizon_bots.models.publisher import Publisher +from mobilizon_reshare.event.event import MobilizonEvent, EventPublicationStatus +from mobilizon_reshare.models.event import Event +from mobilizon_reshare.models.notification import Notification, NotificationStatus +from mobilizon_reshare.models.publication import Publication, PublicationStatus +from mobilizon_reshare.models.publisher import Publisher def generate_publication_status(published): @@ -83,10 +83,10 @@ def initialize_db_tests(request) -> None: db_url = os.environ.get("TORTOISE_TEST_DB", "sqlite://:memory:") initializer( [ - "mobilizon_bots.models.event", - "mobilizon_bots.models.notification", - "mobilizon_bots.models.publication", - "mobilizon_bots.models.publisher", + "mobilizon_reshare.models.event", + "mobilizon_reshare.models.notification", + "mobilizon_reshare.models.publication", + "mobilizon_reshare.models.publisher", ], db_url=db_url, app_label="models", @@ -123,9 +123,7 @@ def event_model_generator(): @pytest.fixture() def publisher_model_generator(): - def _publisher_model_generator( - idx=1, - ): + def _publisher_model_generator(idx=1,): return Publisher(name=f"publisher_{idx}", account_ref=f"account_ref_{idx}") return _publisher_model_generator diff --git a/tests/event/test_strategies.py b/tests/event/test_strategies.py index 8ce2289..30200fe 100644 --- a/tests/event/test_strategies.py +++ b/tests/event/test_strategies.py @@ -3,8 +3,8 @@ import pytest from unittest.mock import patch -from mobilizon_bots.config.config import get_settings -from mobilizon_bots.event.event_selection_strategies import ( +from mobilizon_reshare.config.config import get_settings +from mobilizon_reshare.event.event_selection_strategies import ( SelectNextEventStrategy, select_event_to_publish, ) diff --git a/tests/formatting/test_markdown.py b/tests/formatting/test_markdown.py index 32df091..e253546 100644 --- a/tests/formatting/test_markdown.py +++ b/tests/formatting/test_markdown.py @@ -1,6 +1,6 @@ import pytest -from mobilizon_bots.formatting.description import html_to_markdown +from mobilizon_reshare.formatting.description import html_to_markdown @pytest.mark.parametrize( diff --git a/tests/formatting/test_plaintest.py b/tests/formatting/test_plaintest.py index cd9f849..81c8c84 100644 --- a/tests/formatting/test_plaintest.py +++ b/tests/formatting/test_plaintest.py @@ -1,6 +1,6 @@ import pytest -from mobilizon_bots.formatting.description import html_to_plaintext +from mobilizon_reshare.formatting.description import html_to_plaintext @pytest.mark.parametrize( diff --git a/tests/mobilizon/conftest.py b/tests/mobilizon/conftest.py index 54a9047..050d9d3 100644 --- a/tests/mobilizon/conftest.py +++ b/tests/mobilizon/conftest.py @@ -1,7 +1,7 @@ import pytest import responses -from mobilizon_bots.config.config import get_settings +from mobilizon_reshare.config.config import get_settings @pytest.fixture @@ -15,10 +15,7 @@ def mock_mobilizon_success_answer(mobilizon_answer, mobilizon_url): with responses.RequestsMock() as rsps: rsps.add( - responses.POST, - mobilizon_url, - json=mobilizon_answer, - status=200, + responses.POST, mobilizon_url, json=mobilizon_answer, status=200, ) yield @@ -29,8 +26,6 @@ def mock_mobilizon_failure_answer(mobilizon_url): with responses.RequestsMock() as rsps: rsps.add( - responses.POST, - mobilizon_url, - status=500, + responses.POST, mobilizon_url, status=500, ) yield diff --git a/tests/mobilizon/test_events.py b/tests/mobilizon/test_events.py index 97bcfed..6141abf 100644 --- a/tests/mobilizon/test_events.py +++ b/tests/mobilizon/test_events.py @@ -1,8 +1,8 @@ import arrow import pytest -from mobilizon_bots.event.event import MobilizonEvent -from mobilizon_bots.mobilizon.events import ( +from mobilizon_reshare.event.event import MobilizonEvent +from mobilizon_reshare.mobilizon.events import ( get_mobilizon_future_events, MobilizonRequestFailed, get_unpublished_events, diff --git a/tests/models/test_event.py b/tests/models/test_event.py index 1f7c8fd..593b522 100644 --- a/tests/models/test_event.py +++ b/tests/models/test_event.py @@ -4,10 +4,10 @@ import arrow import pytest import tortoise.timezone -from mobilizon_bots.event.event import MobilizonEvent -from mobilizon_bots.models.event import Event -from mobilizon_bots.models.publication import PublicationStatus -from mobilizon_bots.event.event import EventPublicationStatus +from mobilizon_reshare.event.event import MobilizonEvent +from mobilizon_reshare.models.event import Event +from mobilizon_reshare.models.publication import PublicationStatus +from mobilizon_reshare.event.event import EventPublicationStatus @pytest.mark.asyncio diff --git a/tests/models/test_notification.py b/tests/models/test_notification.py index fbf10ba..b1f3afa 100644 --- a/tests/models/test_notification.py +++ b/tests/models/test_notification.py @@ -1,6 +1,6 @@ import pytest -from mobilizon_bots.models.notification import Notification, NotificationStatus +from mobilizon_reshare.models.notification import Notification, NotificationStatus @pytest.mark.asyncio diff --git a/tests/models/test_publication.py b/tests/models/test_publication.py index 0c82d37..da1ab3a 100644 --- a/tests/models/test_publication.py +++ b/tests/models/test_publication.py @@ -3,7 +3,7 @@ import pytest from datetime import datetime from tortoise import timezone -from mobilizon_bots.models.publication import Publication, PublicationStatus +from mobilizon_reshare.models.publication import Publication, PublicationStatus @pytest.mark.asyncio diff --git a/tests/models/test_publisher.py b/tests/models/test_publisher.py index d5c4648..a15ec5e 100644 --- a/tests/models/test_publisher.py +++ b/tests/models/test_publisher.py @@ -1,6 +1,6 @@ import pytest -from mobilizon_bots.models.publisher import Publisher +from mobilizon_reshare.models.publisher import Publisher @pytest.mark.asyncio diff --git a/tests/publishers/test_abstract_predicates.py b/tests/publishers/test_abstract_predicates.py index 3ff6b9d..451a20c 100644 --- a/tests/publishers/test_abstract_predicates.py +++ b/tests/publishers/test_abstract_predicates.py @@ -2,9 +2,9 @@ import pytest from datetime import datetime, timedelta -from mobilizon_bots.event.event import MobilizonEvent -from mobilizon_bots.publishers.abstract import AbstractPublisher -from mobilizon_bots.publishers.exceptions import PublisherError +from mobilizon_reshare.event.event import MobilizonEvent +from mobilizon_reshare.publishers.abstract import AbstractPublisher +from mobilizon_reshare.publishers.exceptions import PublisherError @pytest.fixture diff --git a/tests/storage/__init__.py b/tests/storage/__init__.py index 9ba340d..3119ffb 100644 --- a/tests/storage/__init__.py +++ b/tests/storage/__init__.py @@ -2,8 +2,8 @@ from datetime import datetime, timezone, timedelta from uuid import UUID -from mobilizon_bots.models.publication import PublicationStatus -from mobilizon_bots.models.publication import Publication +from mobilizon_reshare.models.publication import PublicationStatus +from mobilizon_reshare.models.publication import Publication today = datetime( year=2021, month=6, day=6, hour=5, minute=0, tzinfo=timezone(timedelta(hours=2)), diff --git a/tests/storage/conftest.py b/tests/storage/conftest.py index 111161a..6f32dd9 100644 --- a/tests/storage/conftest.py +++ b/tests/storage/conftest.py @@ -4,9 +4,9 @@ from uuid import UUID import pytest -from mobilizon_bots.models.event import Event -from mobilizon_bots.models.publication import PublicationStatus, Publication -from mobilizon_bots.models.publisher import Publisher +from mobilizon_reshare.models.event import Event +from mobilizon_reshare.models.publication import PublicationStatus, Publication +from mobilizon_reshare.models.publisher import Publisher from tests.storage import today diff --git a/tests/storage/test_query.py b/tests/storage/test_query.py index c5204b2..dccf8ff 100644 --- a/tests/storage/test_query.py +++ b/tests/storage/test_query.py @@ -3,11 +3,11 @@ from datetime import timedelta import arrow import pytest -from mobilizon_bots.event.event import MobilizonEvent, EventPublicationStatus -from mobilizon_bots.models.event import Event -from mobilizon_bots.models.publication import PublicationStatus -from mobilizon_bots.storage.query import events_with_status -from mobilizon_bots.storage.query import ( +from mobilizon_reshare.event.event import MobilizonEvent, EventPublicationStatus +from mobilizon_reshare.models.event import Event +from mobilizon_reshare.models.publication import PublicationStatus +from mobilizon_reshare.storage.query import events_with_status +from mobilizon_reshare.storage.query import ( get_published_events, get_unpublished_events, create_unpublished_events, diff --git a/tests/storage/test_update.py b/tests/storage/test_update.py index 440232f..f9edef9 100644 --- a/tests/storage/test_update.py +++ b/tests/storage/test_update.py @@ -4,14 +4,14 @@ from tests.storage import complete_specification import arrow import pytest -from mobilizon_bots.event.event import MobilizonEvent, EventPublicationStatus -from mobilizon_bots.models.publication import PublicationStatus, Publication -from mobilizon_bots.models.publisher import Publisher -from mobilizon_bots.publishers.coordinator import ( +from mobilizon_reshare.event.event import MobilizonEvent, EventPublicationStatus +from mobilizon_reshare.models.publication import PublicationStatus, Publication +from mobilizon_reshare.models.publisher import Publisher +from mobilizon_reshare.publishers.coordinator import ( PublisherCoordinatorReport, PublicationReport, ) -from mobilizon_bots.storage.query import ( +from mobilizon_reshare.storage.query import ( get_publishers, update_publishers, save_publication_report,