vbv/server/vbv_lernwelt/duedate/factories.py

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()