import datetime import structlog from django.utils import timezone from factory.django import DjangoModelFactory from .models import DueDate logger = structlog.get_logger(__name__) def get_date(date_string): return datetime.datetime.strptime( date_string, "%b %d %Y", ).astimezone(timezone.get_current_timezone()) class DueDateFactory(DjangoModelFactory): class Meta: model = DueDate title = "Prüfung Versicherungsvermittler/-in" end = get_date("Jan 01 2021") def generate_events(start=timezone.now()): for i in range(20): DueDateFactory( title=f"{i}", start=start + datetime.timedelta(days=i), end=start + datetime.timedelta(days=i, hours=1), ) def hour_rounder(t): # Rounds to nearest hour by adding a timedelta hour if minute >= 30 return t.replace( second=0, microsecond=0, minute=0, hour=t.hour ) + datetime.timedelta(hours=t.minute // 30) def set_default_times_for_duedates(): now = hour_rounder(timezone.now()) for i, event in enumerate(DueDate.objects.filter(end__isnull=True)): event.start = now + datetime.timedelta(days=i) event.end = event.start + datetime.timedelta(hours=3) event.save()