campaign version refinment, user locks, db repair
This commit is contained in:
@@ -131,8 +131,15 @@ QUEUEABLE_VALIDATION_STATUSES = {
|
||||
}
|
||||
|
||||
|
||||
def _version_user_lock_state(version: CampaignVersion) -> str | None:
|
||||
state = getattr(version, "user_lock_state", None)
|
||||
if state in {"temporary", "permanent"}:
|
||||
return state
|
||||
return "permanent" if version.published_at else None
|
||||
|
||||
|
||||
def _version_is_user_locked(version: CampaignVersion) -> bool:
|
||||
return bool(version.published_at)
|
||||
return _version_user_lock_state(version) is not None
|
||||
|
||||
|
||||
def _version_is_validated_and_locked(version: CampaignVersion) -> bool:
|
||||
@@ -141,8 +148,11 @@ def _version_is_validated_and_locked(version: CampaignVersion) -> bool:
|
||||
|
||||
|
||||
def _ensure_version_validated_and_locked(version: CampaignVersion) -> None:
|
||||
if _version_is_user_locked(version):
|
||||
raise QueueingError("User-locked audit-safe versions cannot be queued, dry-run or sent. Create an editable copy instead.")
|
||||
state = _version_user_lock_state(version)
|
||||
if state == "temporary":
|
||||
raise QueueingError("This version has a temporary user lock. Unlock it before queueing, dry-run or sending.")
|
||||
if state == "permanent":
|
||||
raise QueueingError("This version is permanently user-locked. Create an editable copy instead.")
|
||||
if not _version_is_validated_and_locked(version):
|
||||
raise QueueingError("Campaign version must be validated and locked before building, queueing, dry-run or sending.")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user