fix(): project refactoring and minor fixes
This commit is contained in:
@@ -22,6 +22,7 @@ from apps.events.selectors import (
|
||||
pending_event_exists,
|
||||
pending_events_for_decision,
|
||||
)
|
||||
from config.errors import ConflictError
|
||||
|
||||
PENDING_TTL_DAYS = 7
|
||||
|
||||
@@ -124,23 +125,22 @@ def _process_exposure_event(
|
||||
) -> None:
|
||||
decision_id = event_data["decision_id"]
|
||||
subject_id = event_data["subject_id"]
|
||||
timestamp = parse_datetime(event_data["timestamp"]) or timezone.now()
|
||||
timestamp = parse_datetime(event_data["timestamp"])
|
||||
if timestamp is None:
|
||||
raise ValidationError(
|
||||
"Field 'timestamp' must be a valid ISO 8601 datetime."
|
||||
)
|
||||
|
||||
decision = decision_get(decision_id)
|
||||
experiment_id = None
|
||||
variant_id = None
|
||||
if decision:
|
||||
experiment_id = decision.experiment_id
|
||||
variant_id = decision.variant_id
|
||||
|
||||
with suppress(IntegrityError):
|
||||
Exposure.objects.create(
|
||||
decision_id=decision_id,
|
||||
experiment_id=experiment_id,
|
||||
variant_id=variant_id,
|
||||
subject_id=subject_id,
|
||||
timestamp=timestamp,
|
||||
)
|
||||
with suppress(ConflictError):
|
||||
Exposure.objects.create(
|
||||
decision_id=decision_id,
|
||||
experiment_id=decision.experiment_id,
|
||||
variant_id=decision.variant_id,
|
||||
subject_id=subject_id,
|
||||
timestamp=timestamp,
|
||||
)
|
||||
|
||||
Event.objects.create(
|
||||
event_id=event_data["event_id"],
|
||||
@@ -158,7 +158,7 @@ def _process_exposure_event(
|
||||
def _promote_pending_events(decision_id: str) -> None:
|
||||
pending = pending_events_for_decision(decision_id)
|
||||
for pe in pending:
|
||||
with suppress(IntegrityError):
|
||||
with suppress(ConflictError):
|
||||
Event.objects.create(
|
||||
event_id=pe.event_id,
|
||||
event_type=pe.event_type,
|
||||
@@ -178,7 +178,11 @@ def _process_conversion_event(
|
||||
) -> None:
|
||||
decision_id = event_data["decision_id"]
|
||||
subject_id = event_data["subject_id"]
|
||||
timestamp = parse_datetime(event_data["timestamp"]) or timezone.now()
|
||||
timestamp = parse_datetime(event_data["timestamp"])
|
||||
if timestamp is None:
|
||||
raise ValidationError(
|
||||
"Field 'timestamp' must be a valid ISO 8601 datetime."
|
||||
)
|
||||
properties = event_data.get("properties", {})
|
||||
|
||||
if not event_type_obj.requires_exposure or exposure_exists(decision_id):
|
||||
|
||||
Reference in New Issue
Block a user