demo seed change 2

This commit is contained in:
Urtzi Alfaro
2025-12-14 11:58:14 +01:00
parent ff830a3415
commit a030bd14c8
44 changed files with 3093 additions and 977 deletions

View File

@@ -36,18 +36,19 @@ def get_base_reference_date(session_created_at: Optional[datetime] = None) -> da
def adjust_date_for_demo(
original_date: Optional[datetime],
session_created_at: datetime,
base_reference_date: datetime = BASE_REFERENCE_DATE
session_created_at: datetime
) -> Optional[datetime]:
"""
Adjust a date from seed data to be relative to demo session creation time.
This function calculates the offset between the original date and BASE_REFERENCE_DATE,
then applies that offset to the session creation time.
Example:
# Seed data created on 2025-12-13 06:00
# Stock expiration: 2025-12-28 06:00 (15 days from seed date)
# Original seed date: 2025-01-20 06:00 (BASE_REFERENCE + 5 days)
# Demo session created: 2025-12-16 10:00
# Base reference: 2025-12-16 06:00
# Result: 2025-12-31 10:00 (15 days from session date)
# Offset: 5 days
# Result: 2025-12-21 10:00 (session + 5 days)
"""
if original_date is None:
return None
@@ -57,11 +58,9 @@ def adjust_date_for_demo(
original_date = original_date.replace(tzinfo=timezone.utc)
if session_created_at.tzinfo is None:
session_created_at = session_created_at.replace(tzinfo=timezone.utc)
if base_reference_date.tzinfo is None:
base_reference_date = base_reference_date.replace(tzinfo=timezone.utc)
# Calculate offset from base reference
offset = original_date - base_reference_date
offset = original_date - BASE_REFERENCE_DATE
# Apply offset to session creation date
return session_created_at + offset
@@ -182,29 +181,29 @@ def resolve_time_marker(
if operator not in ['+', '-']:
raise ValueError(f"Invalid operator in time marker: {time_marker}")
# Parse time components
days = 0
hours = 0
minutes = 0
# Parse time components (supports decimals like 0.5d, 1.25h)
days = 0.0
hours = 0.0
minutes = 0.0
if 'd' in value_part:
# Handle days
# Handle days (supports decimals like 0.5d = 12 hours)
day_part, rest = value_part.split('d', 1)
days = int(day_part)
days = float(day_part)
value_part = rest
if 'h' in value_part:
# Handle hours
# Handle hours (supports decimals like 1.5h = 1h30m)
hour_part, rest = value_part.split('h', 1)
hours = int(hour_part)
hours = float(hour_part)
value_part = rest
if 'm' in value_part:
# Handle minutes
# Handle minutes (supports decimals like 30.5m)
minute_part = value_part.split('m', 1)[0]
minutes = int(minute_part)
# Calculate offset
minutes = float(minute_part)
# Calculate offset using float values
offset = timedelta(days=days, hours=hours, minutes=minutes)
if operator == '+':