Normalization of decimal GPS times is not applied to form-encoded requests to API endpoints
When making requests to API endpoints that expect decimal GPS times (for instance, when creating a superevent), normalization of GPS time inputs is done differently depending on whether the payload is JSON or form-encoded.
With form-encoded payloads, arguments with too many decimal points cause an error when they fail to validate against the format expected by Django:
$ curl -E /tmp/x509up_u$UID -d preferred_event=T63895 -d t_start=1000000000.1234568 -d t_0=1000000000.1234568 -d t_end=1000000000.1234568 -d category=T https://gracedb-test.ligo.org/api/superevents/
["Ensure that there are no more than 16 digits in total.","Ensure that there are no more than 16 digits in total.","Ensure that there are no more than 16 digits in total."]
If one makes the same request with a JSON payload, it succeeds because the GPS time fields get rounded and truncated to the appropriate number of digits:
$ curl -E /tmp/x509up_u$UID -H 'Content-Type: application/json' -d '{"preferred_event": "T63895", "t_start": 1000000000.1234568, "t_0": 1000000000.1234568, "t_end": 1000000000.1234568, "category": "T"}' https://gracedb-test.ligo.org/api/superevents/
This inconsistency is because the CustomDecimalField normalization is applied for JSON payloads but not form-encoded payloads. The normalization should be applied to all payloads, regardless of encoding.