"""Utils for ScheduledCampaigns."""
from datetime import time
from typing import Optional

from django import forms
from django.contrib.admin.widgets import AdminDateWidget, AdminSplitDateTime

FullHourValidationError = forms.ValidationError("You need to set full hour e.g. 12:00:00")

TIME_CHOICES = [("", "")] + [(time(i, 0, 0), f"{i}:00") for i in range(24)]

class TimeSelectorSplitDateTime(AdminSplitDateTime):
    """
    Datetime widget with date and time splitted.
    Time is select option with full hours as choice.
    """
    template_name = "date_split.html"

    def __init__(self, attrs: Optional[dict[str, any]]=None) -> None:
        """Override __init__ function to use Select widget for time."""
        time_widget = forms.Select(choices=TIME_CHOICES)
        forms.MultiWidget.__init__(self,  [AdminDateWidget, time_widget], attrs)
