mirror of
https://github.com/Tech-Workers-Coalition-Italia/mobilizon-reshare.git
synced 2025-02-18 04:30:53 +01:00
* Drop dependency on python-telegram-bot, as it's not used. * Align default templates. This patch tries to bring some consistency to the default templates and fixes some small bug in the output of some formatters.
53 lines
1.7 KiB
Python
53 lines
1.7 KiB
Python
import logging
|
|
from typing import Optional, List
|
|
|
|
from arrow import now
|
|
|
|
from mobilizon_reshare.event.event import EventPublicationStatus, MobilizonEvent
|
|
from mobilizon_reshare.publishers import get_active_publishers
|
|
from mobilizon_reshare.publishers.abstract import RecapPublication
|
|
from mobilizon_reshare.publishers.coordinator import (
|
|
RecapCoordinator,
|
|
PublicationFailureNotifiersCoordinator,
|
|
BaseCoordinatorReport,
|
|
)
|
|
from mobilizon_reshare.publishers.platforms.platform_mapping import (
|
|
get_publisher_class,
|
|
get_formatter_class,
|
|
)
|
|
from mobilizon_reshare.storage.query.read import events_with_status
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
async def select_events_to_recap() -> List[MobilizonEvent]:
|
|
return list(
|
|
await events_with_status(
|
|
status=[EventPublicationStatus.COMPLETED], from_date=now()
|
|
)
|
|
)
|
|
|
|
|
|
async def recap() -> Optional[BaseCoordinatorReport]:
|
|
# I want to recap only the events that have been successfully published and that haven't happened yet
|
|
events_to_recap = await select_events_to_recap()
|
|
|
|
if events_to_recap:
|
|
logger.info(f"Found {len(events_to_recap)} events to recap.")
|
|
recap_publications = [
|
|
RecapPublication(
|
|
get_publisher_class(publisher)(),
|
|
get_formatter_class(publisher)(),
|
|
events_to_recap,
|
|
)
|
|
for publisher in get_active_publishers()
|
|
]
|
|
reports = RecapCoordinator(recap_publications).run()
|
|
|
|
for report in reports.reports:
|
|
if report.status == EventPublicationStatus.FAILED:
|
|
PublicationFailureNotifiersCoordinator(report).notify_failure()
|
|
return reports
|
|
else:
|
|
logger.info("Found no events")
|