Skip to content
Snippets Groups Projects

Python3

Merged Tanner Prestegard requested to merge python3 into master
1 file
+ 12
0
Compare changes
  • Side-by-side
  • Inline
@@ -71,8 +71,9 @@ class SupereventSerializer(serializers.ModelSerializer):
class Meta:
model = Superevent
fields = ('superevent_id', 'gw_id', 'category', 'created', 'submitter',
'preferred_event', 'events', 't_start', 't_0', 't_end',
'gw_events', 'em_events', 'far', 'labels', 'links', 'user')
'preferred_event', 'events', 'em_type', 't_start', 't_0', 't_end',
'gw_events', 'em_events', 'far', 'coinc_far', 'labels', 'links',
'user')
def validate(self, data):
data = super(SupereventSerializer, self).validate(data)
@@ -171,7 +172,8 @@ class SupereventUpdateSerializer(SupereventSerializer):
Used for updates ONLY (PUT/PATCH). Overrides validation which is needed
for object creation.
"""
allowed_fields = ('t_start', 't_0', 't_end', 'preferred_event')
allowed_fields = ('t_start', 't_0', 't_end', 'preferred_event',
'em_type', 'coinc_far')
def __init__(self, *args, **kwargs):
super(SupereventUpdateSerializer, self).__init__(*args, **kwargs)
@@ -538,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',
@@ -575,6 +583,20 @@ class SupereventVOEventSerializer(serializers.ModelSerializer):
MassGap = serializers.FloatField(write_only=True, min_value=0,
max_value=1, required=False)
# Additional RAVEN fields
raven_coinc = serializers.BooleanField(default=False)
ext_gcn = serializers.CharField(required=False)
ext_pipeline = serializers.CharField(required=False)
ext_search = serializers.CharField(required=False)
time_coinc_far = serializers.FloatField(write_only=True, min_value=0,
max_value=1000, required=False)
space_coinc_far = serializers.FloatField(write_only=True, min_value=0,
max_value=1000, required=False)
combined_skymap_filename = serializers.CharField(required=False)
delta_t = serializers.FloatField(write_only=True, min_value=-1000,
max_value=1000, required=False)
ivorn = serializers.CharField(required=False)
class Meta:
model = VOEvent
fields = ('voevent_type', 'file_version', 'ivorn', 'created',
@@ -585,11 +607,18 @@ class SupereventVOEventSerializer(serializers.ModelSerializer):
'prob_has_remnant', 'prob_bns', 'prob_nsbh', 'prob_bbh',
'prob_terrestrial', 'prob_mass_gap', 'superevent', 'user')
raven_fields = ('raven_coinc','ext_gcn', 'ext_pipeline', 'ext_search',
'time_coinc_far', 'space_coinc_far', 'combined_skymap_filename',
'delta_t', 'ivorn')
# Combine the fields:
fields = fields + raven_fields
def __init__(self, *args, **kwargs):
super(SupereventVOEventSerializer, self).__init__(*args, **kwargs)
read_only_fields = ['file_version', 'filename', 'ivorn',
'coinc_comment', 'prob_has_ns', 'prob_has_remnant', 'prob_bns',
'prob_nsbh', 'prob_bbh', 'prob_terrestrial', 'prob_mass_gap']
'prob_nsbh', 'prob_bbh', 'prob_terrestrial', 'prob_mass_gap', ]
for f in read_only_fields:
self.fields.get(f).read_only = True
@@ -617,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
@@ -642,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):
@@ -653,7 +702,7 @@ class SupereventVOEventSerializer(serializers.ModelSerializer):
issuer = validated_data.pop('user')
# Call create function - creates VOEvent object and also runs
# buildVOEvent to create the related file.
# construct_voevent_file to create the related file.
voevent = create_voevent_for_superevent(superevent, issuer,
**validated_data)
@@ -783,7 +832,7 @@ class SupereventEMObservationSerializer(serializers.ModelSerializer):
list_length = len(ra_list)
all_lists = (ra_list, dec_list, ra_width_list, dec_width_list,
start_time_list, duration_list)
if not all(map(lambda l: len(l) == list_length, all_lists)):
if not all(list(map(lambda l: len(l) == list_length, all_lists))):
self.fail('list_lengths')
return data
Loading