split failed_publications
This commit is contained in:
parent
f8aef7309c
commit
a136c3d362
|
@ -12,7 +12,7 @@ from mobilizon_reshare.dataclasses.event_publication_status import (
|
|||
_compute_event_status,
|
||||
)
|
||||
from mobilizon_reshare.models.event import Event
|
||||
from mobilizon_reshare.storage.query.read import get_all_events
|
||||
from mobilizon_reshare.storage.query.read import get_all_events, get_event
|
||||
|
||||
|
||||
@dataclass
|
||||
|
@ -96,6 +96,10 @@ class _MobilizonEvent:
|
|||
kwargs.update({"id": db_id})
|
||||
return Event(**kwargs)
|
||||
|
||||
@classmethod
|
||||
async def retrieve(cls, mobilizon_id):
|
||||
return cls.from_model(await get_event(mobilizon_id))
|
||||
|
||||
|
||||
async def get_all_mobilizon_events(
|
||||
from_date: Optional[Arrow] = None, to_date: Optional[Arrow] = None,
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
from dataclasses import dataclass
|
||||
from functools import partial
|
||||
from typing import List, Iterator
|
||||
from uuid import UUID
|
||||
|
||||
|
@ -10,6 +11,7 @@ from mobilizon_reshare.publishers.abstract import (
|
|||
AbstractPlatform,
|
||||
AbstractEventFormatter,
|
||||
)
|
||||
from mobilizon_reshare.storage.query.read import get_event
|
||||
|
||||
|
||||
@dataclass
|
||||
|
@ -47,3 +49,13 @@ async def build_publications_for_event(
|
|||
) -> list[_EventPublication]:
|
||||
publication_models = await event.to_model().build_publications(publishers)
|
||||
return [_EventPublication.from_orm(m, event) for m in publication_models]
|
||||
|
||||
|
||||
async def get_failed_publications_for_event(
|
||||
event: _MobilizonEvent,
|
||||
) -> List[_EventPublication]:
|
||||
event_model = await get_event(event.mobilizon_id)
|
||||
failed_publications = await event_model.get_failed_publications()
|
||||
return list(
|
||||
map(partial(_EventPublication.from_orm, event=event), failed_publications)
|
||||
)
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
from functools import partial
|
||||
from typing import Optional
|
||||
from uuid import UUID
|
||||
|
||||
|
@ -8,7 +7,7 @@ from tortoise.transactions import atomic
|
|||
|
||||
from mobilizon_reshare.dataclasses import MobilizonEvent, EventPublication
|
||||
from mobilizon_reshare.models.event import Event
|
||||
from mobilizon_reshare.models.publication import Publication, PublicationStatus
|
||||
from mobilizon_reshare.models.publication import Publication
|
||||
from mobilizon_reshare.models.publisher import Publisher
|
||||
from mobilizon_reshare.storage.query.exceptions import EventNotFound
|
||||
from mobilizon_reshare.storage.query.read import (
|
||||
|
@ -52,25 +51,3 @@ async def is_known(event: MobilizonEvent) -> bool:
|
|||
return True
|
||||
except EventNotFound:
|
||||
return False
|
||||
|
||||
|
||||
@atomic()
|
||||
async def get_failed_publications_for_event(
|
||||
event_mobilizon_id: UUID,
|
||||
) -> list[EventPublication]:
|
||||
event = await get_event(event_mobilizon_id)
|
||||
failed_publications = list(
|
||||
filter(
|
||||
lambda publications: publications.status == PublicationStatus.FAILED,
|
||||
event.publications,
|
||||
)
|
||||
)
|
||||
for p in failed_publications:
|
||||
await p.fetch_related("publisher")
|
||||
mobilizon_event = MobilizonEvent.from_model(event)
|
||||
return list(
|
||||
map(
|
||||
partial(EventPublication.from_orm, event=mobilizon_event),
|
||||
failed_publications,
|
||||
)
|
||||
)
|
||||
|
|
|
@ -2,10 +2,9 @@ import logging
|
|||
from typing import Optional
|
||||
from uuid import UUID
|
||||
|
||||
from mobilizon_reshare.dataclasses.to_split import (
|
||||
get_publication,
|
||||
get_failed_publications_for_event,
|
||||
)
|
||||
from mobilizon_reshare.dataclasses import MobilizonEvent
|
||||
from mobilizon_reshare.dataclasses.publication import get_failed_publications_for_event
|
||||
from mobilizon_reshare.dataclasses.to_split import get_publication
|
||||
from mobilizon_reshare.main.publish import publish_publications
|
||||
from mobilizon_reshare.publishers.coordinators.event_publishing.publish import (
|
||||
PublisherCoordinatorReport,
|
||||
|
@ -16,8 +15,8 @@ logger = logging.getLogger(__name__)
|
|||
|
||||
|
||||
async def retry_event_publications(event_id) -> Optional[PublisherCoordinatorReport]:
|
||||
|
||||
failed_publications = await get_failed_publications_for_event(event_id)
|
||||
event = await MobilizonEvent.retrieve(event_id)
|
||||
failed_publications = await get_failed_publications_for_event(event)
|
||||
if not failed_publications:
|
||||
logger.info("No failed publications found.")
|
||||
return
|
||||
|
|
|
@ -2,6 +2,7 @@ from typing import Iterator
|
|||
|
||||
from tortoise import fields
|
||||
from tortoise.models import Model
|
||||
from tortoise.transactions import atomic
|
||||
|
||||
from mobilizon_reshare.models import WithPydantic
|
||||
from mobilizon_reshare.models.publication import PublicationStatus, Publication
|
||||
|
@ -49,3 +50,12 @@ class Event(Model, WithPydantic):
|
|||
return [
|
||||
await self.build_publication_by_publisher_name(name) for name in publishers
|
||||
]
|
||||
|
||||
@atomic()
|
||||
async def get_failed_publications(self,) -> list[Publication]:
|
||||
return list(
|
||||
filter(
|
||||
lambda publications: publications.status == PublicationStatus.FAILED,
|
||||
self.publications,
|
||||
)
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue