diff --git a/apps/datasetmanager/dataset_data.py b/apps/datasetmanager/dataset_data.py index 0c7603c..680b9e4 100644 --- a/apps/datasetmanager/dataset_data.py +++ b/apps/datasetmanager/dataset_data.py @@ -47,7 +47,7 @@ def from_json(data): obj = json.loads(data, object_pairs_hook=OrderedDict) return DatasetData(data=obj) - def validate(self, time_start, time_end): + def validate(self, time_start, time_end, class_id): if not isinstance(self.data, dict): raise ValidationError("Data field needs to be a dictionary.") @@ -69,6 +69,10 @@ def validate(self, time_start, time_end): raise ValidationError("Element %d of data.table has not 'row' field." % index) if 'individual' not in value: raise ValidationError("Element %d of data.table has not 'individual' field." % index) + if class_id != 7: + if not isinstance(value['individual'], int): + raise ValidationError("Individual of Element %d of data.table is not an integer. " + "Please use class 'custom' to provide strings." % index) if 'values' not in value: raise ValidationError("Element %d of data.table has not 'values' field." % index) if not isinstance(value['values'], dict): diff --git a/apps/datasetmanager/fields.py b/apps/datasetmanager/fields.py index 6090ac2..d4dcebf 100644 --- a/apps/datasetmanager/fields.py +++ b/apps/datasetmanager/fields.py @@ -18,12 +18,12 @@ def field_from_native(self, data, files, field_name, into): if 'data' not in data: raise ValidationError("Field 'data' is required.") - dataset = DatasetData(data=data[field_name]) - dataset.validate(into['time_start'], into['time_end']) - if 'class_id' not in data: raise ValidationError('Field class_id is missing.') + dataset = DatasetData(data=data[field_name]) + dataset.validate(into['time_start'], into['time_end'], data['class_id']) + if data['class_id'] == 7: dataset.create_individuals()