tidy up exam start and end dates a little
This commit is contained in:
+42
-2
@@ -61,6 +61,46 @@ from longs.models import Long
|
||||
from sbas.models import UserAnswer as SbasUserAnswer
|
||||
from sbas.models import Exam as SbasExam
|
||||
from sbas.models import Question as SbasQuestion
|
||||
from django.core.exceptions import ValidationError
|
||||
import datetime
|
||||
from django.forms.utils import from_current_timezone, to_current_timezone
|
||||
|
||||
class SplitDateTimeFieldDefaultTime(SplitDateTimeField):
|
||||
def compress(self, data_list):
|
||||
if data_list:
|
||||
# Raise a validation error if time or date is empty
|
||||
# (possible if SplitDateTimeField has required=False).
|
||||
if data_list[0] in self.empty_values:
|
||||
raise ValidationError(
|
||||
self.error_messages["invalid_date"], code="invalid_date"
|
||||
)
|
||||
if data_list[1] in self.empty_values:
|
||||
data_list[1] = datetime.time(0, 0)
|
||||
#raise ValidationError(
|
||||
# self.error_messages["invalid_time"], code="invalid_time"
|
||||
#)
|
||||
result = datetime.datetime.combine(*data_list)
|
||||
return from_current_timezone(result)
|
||||
return None
|
||||
|
||||
|
||||
class SplitDateTimeFieldDefaultTimeEnd(SplitDateTimeField):
|
||||
def compress(self, data_list):
|
||||
if data_list:
|
||||
# Raise a validation error if time or date is empty
|
||||
# (possible if SplitDateTimeField has required=False).
|
||||
if data_list[0] in self.empty_values:
|
||||
raise ValidationError(
|
||||
self.error_messages["invalid_date"], code="invalid_date"
|
||||
)
|
||||
if data_list[1] in self.empty_values:
|
||||
data_list[1] = datetime.time(23, 59)
|
||||
#raise ValidationError(
|
||||
# self.error_messages["invalid_time"], code="invalid_time"
|
||||
#)
|
||||
result = datetime.datetime.combine(*data_list)
|
||||
return from_current_timezone(result)
|
||||
return None
|
||||
|
||||
|
||||
class ExamFormMixin:
|
||||
@@ -82,7 +122,7 @@ class ExamFormMixin:
|
||||
required=False,
|
||||
queryset=user_user_group_queryset,
|
||||
)
|
||||
self.fields["start_date"] = SplitDateTimeField(
|
||||
self.fields["start_date"] = SplitDateTimeFieldDefaultTime(
|
||||
widget=SplitDateTimeWidget(
|
||||
date_attrs={"type": "date", "class": "datepicker"},
|
||||
time_attrs={"type": "time", "class": "timepicker"},
|
||||
@@ -91,7 +131,7 @@ class ExamFormMixin:
|
||||
),
|
||||
required=False,
|
||||
)
|
||||
self.fields["end_date"] = SplitDateTimeField(
|
||||
self.fields["end_date"] = SplitDateTimeFieldDefaultTimeEnd(
|
||||
widget=SplitDateTimeWidget(
|
||||
date_attrs={"type": "date", "class": "datepicker"},
|
||||
time_attrs={"type": "time", "class": "timepicker"},
|
||||
|
||||
Reference in New Issue
Block a user