from datetime import datetime as dt from django import forms from django.core.exceptions import ValidationError import pytz class TimestampField(forms.Field): def to_python(self, value): if value is None: return None try: value_int = int(value) except ValueError: raise ValidationError(message="Must be an integer") # 10000000000 is year 2286 (a sanity check) if value_int < 0 or value_int > 10000000000: raise ValidationError(message="Out of bounds") return dt.fromtimestamp(value_int, pytz.UTC) class FlipsFiltersForm(forms.Form): start = TimestampField(required=False) end = TimestampField(required=False) seconds = forms.IntegerField(required=False, min_value=0, max_value=31536000)