Skip to content
Snippets Groups Projects
Commit 21efc41f authored by Alexander Pace's avatar Alexander Pace
Browse files

Added API traps for RAVEN Superevents.

The server will now return a 400 "bad request" error for RAVEN
createVOEvent calls if:
  1. em_type for the associated superevent is None
  2. em_type for the associated superevent is not a valid graceid
  3. the event associated with em_type cannot be found
  4. the combined_skymap_filename is set, but the file could not
     be found.
parent e7939e98
No related branches found
No related tags found
1 merge request!29Python3
Pipeline #89601 passed
......@@ -540,6 +540,12 @@ class SupereventVOEventSerializer(serializers.ModelSerializer):
'superevent.'),
'skymap_image_not_found': _('Skymap image file {filename} not found '
'for this superevent.'),
'em_type_none': _('em_type for superevent {s_event} not set (is None)'),
'invalid_em_type': _('em_type for superevent {s_event} is not a valid '
'graceid'),
'em_type_not_found': _('event for em_type={em_type} not found'),
'comb_skymap_not_found': _('Combined skymap file {filename} not found '
'for this superevent.'),
}
# Read only fields
issuer = serializers.SlugRelatedField(slug_field='username',
......@@ -640,6 +646,9 @@ class SupereventVOEventSerializer(serializers.ModelSerializer):
voevent_type = data.get('voevent_type')
skymap_filename = data.get('skymap_filename', None)
skymap_type = data.get('skymap_type', None)
raven_coinc = data.get('raven_coinc')
combined_smfn = data.get('combined_skymap_filename',None)
# Checks to do:
# Preferred event must have gpstime
......@@ -665,6 +674,23 @@ class SupereventVOEventSerializer(serializers.ModelSerializer):
if not os.path.exists(full_skymap_path):
self.fail('skymap_not_found', filename=skymap_filename)
if raven_coinc:
if superevent.em_type is None:
self.fail('em_type_none', s_event=superevent.graceid)
else:
try:
em_event = Event.getByGraceid(superevent.em_type)
except ValueError:
self.fail('invalid_em_type', s_event=superevent.graceid)
except Event.DoesNotExist:
self.fail('em_type_not_found',em_type=superevent.em_type)
if combined_smfn != None:
comb_skymap_path = os.path.join(superevent.datadir,
combined_smfn)
if not os.path.exists(comb_skymap_path):
self.fail('comb_skymap_not_found', filename=combined_smfn)
return data
def create(self, validated_data):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment