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