52 lines
1.3 KiB
Python
52 lines
1.3 KiB
Python
import datetime
|
|
|
|
import structlog
|
|
from django.utils import timezone
|
|
from factory import SubFactory
|
|
from factory.django import DjangoModelFactory
|
|
|
|
from .models import DueDate
|
|
from ..course_session.factories import CourseSessionFactory
|
|
|
|
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()
|