mirror of
https://github.com/Tech-Workers-Coalition-Italia/mobilizon-reshare.git
synced 2025-02-18 04:30:53 +01:00
28 lines
805 B
Python
28 lines
805 B
Python
|
from enum import IntEnum
|
||
|
|
||
|
from mobilizon_reshare.models.publication import Publication, PublicationStatus
|
||
|
|
||
|
|
||
|
class _EventPublicationStatus(IntEnum):
|
||
|
WAITING = 1
|
||
|
FAILED = 2
|
||
|
COMPLETED = 3
|
||
|
PARTIAL = 4
|
||
|
|
||
|
|
||
|
def _compute_event_status(publications: list[Publication],) -> _EventPublicationStatus:
|
||
|
if not publications:
|
||
|
return _EventPublicationStatus.WAITING
|
||
|
|
||
|
unique_statuses: set[PublicationStatus] = set(pub.status for pub in publications)
|
||
|
|
||
|
if unique_statuses == {
|
||
|
PublicationStatus.COMPLETED,
|
||
|
PublicationStatus.FAILED,
|
||
|
}:
|
||
|
return _EventPublicationStatus.PARTIAL
|
||
|
elif len(unique_statuses) == 1:
|
||
|
return _EventPublicationStatus[unique_statuses.pop().name]
|
||
|
|
||
|
raise ValueError(f"Illegal combination of PublicationStatus: {unique_statuses}")
|