diff --git a/src/sensordatainterface/static/sensordatainterface/js/common_forms.js b/src/sensordatainterface/static/sensordatainterface/js/common_forms.js
index fa3011b..072b7e6 100644
--- a/src/sensordatainterface/static/sensordatainterface/js/common_forms.js
+++ b/src/sensordatainterface/static/sensordatainterface/js/common_forms.js
@@ -222,7 +222,7 @@ function handleActionTypeChange(formType, currentForm) {
addResultButton.insertAfter(currentForm);
addResultForm(addResultButton, true);
}
- if ($('form').find('[name="action"]').val() !== 'update' && $(currentForm).find('tbody.results-set').length === 0) {
+ if ($('form').find('[name="action"]').val() !== 'update' && $('form').find('tbody.results-set').length === 0) {
var addResultButton = $("
| + Add Result |
");
addResultButton.insertAfter(currentForm);
addResultForm(addResultButton, true);
diff --git a/src/sensordatainterface/views/edit_views.py b/src/sensordatainterface/views/edit_views.py
index 0dbad19..1ede43a 100644
--- a/src/sensordatainterface/views/edit_views.py
+++ b/src/sensordatainterface/views/edit_views.py
@@ -598,6 +598,12 @@ def get_forms_from_request(request, action_id=False):
actions_returned = len(request.POST.getlist('actiontypecv'))
outputvariables = request.POST.getlist('instrumentoutputvariable')
annotations = request.POST.getlist('annotationid')
+ outputvariables_clean = [[]]
+ for i in outputvariables[1:]:
+ if i is u'':
+ outputvariables_clean.append([])
+ else:
+ outputvariables_clean[-1].append(i)
action_form = []
annotation_forms = []
@@ -634,20 +640,16 @@ def get_forms_from_request(request, action_id=False):
calibration_reference_equipment_count = request.POST.getlist('calibrationreferenceequipmentnumber')[i - 1]
if action_type == 'Instrument deployment':
- output_variable = outputvariables[i + results_counter] # get instrument output variable corresponding to the result
- while output_variable != u'':
+ output_variables = outputvariables_clean[i-1] # get instrument output variable corresponding to the result
+ for j in output_variables:
result = {
- 'instrument_output_variable': output_variable,
- 'unit': request.POST.getlist('unitsid')[results_counter],
- 'processing_level': request.POST.getlist('processing_level_id')[results_counter],
- 'sampled_medium': request.POST.getlist('sampledmediumcv')[results_counter],
+ 'instrumentoutputvariable': j,
+ 'unitsid': request.POST.getlist('unitsid')[results_counter],
+ 'processing_level_id': request.POST.getlist('processing_level_id')[results_counter],
+ 'sampledmediumcv': request.POST.getlist('sampledmediumcv')[results_counter],
}
- results.append(result)
+ results.append(ResultsForm(result))
results_counter += 1
- try:
- output_variable = outputvariables[i + results_counter]
- except IndexError:
- output_variable = u''
form_data = {
'actionid': request.POST.getlist('thisactionid')[i - 1],
@@ -664,7 +666,7 @@ def get_forms_from_request(request, action_id=False):
'calibrationstandardnumber': calibration_standard_count,
'maintenancecode': request.POST.getlist('maintenancecode')[i - 1],
'maintenancereason': request.POST.getlist('maintenancereason')[i - 1],
- 'instrumentoutputvariable': request.POST.getlist('instrumentoutputvariable')[i - 1],
+ 'instrumentoutputvariable': output_variables[0],
'calibrationcheckvalue': request.POST.getlist('calibrationcheckvalue')[i - 1],
'calibrationequation': request.POST.getlist('calibrationequation')[i - 1],
'deploymentaction': request.POST.getlist('deploymentaction')[i - 1],
@@ -707,7 +709,6 @@ def get_forms_from_request(request, action_id=False):
action_form[-1].fields['equipmentused'].required = True
elif action_type == 'Instrument deployment':
action_form[-1].fields['instrumentoutputvariable'].required = True
- action_form[-1].fields['units'].required = True
elif action_type == 'Instrument calibration':
action_form[-1].fields['instrumentoutputvariable'].required = True
@@ -738,6 +739,7 @@ def validate_action_form(request, crew_form, site_visit_form, sampling_feature_f
for form_elem in action_form:
all_forms_valid = all_forms_valid and form_elem.is_valid()
+ print(form_elem.errors)
for annotation in annotation_forms:
annotationid = annotation.data['annotationid']
@@ -828,15 +830,17 @@ def set_up_site_visit(crew_form, site_visit_form, sampling_feature_form, action_
result.delete()
for result in action_form[i].results:
- output_variable = InstrumentOutputVariable.objects.get(pk=result['instrument_output_variable'])
- units = Units.objects.get(pk=result['unit'])
- processing_level = ProcessingLevel.objects.get(pk=result['processing_level'])
- medium = CvMedium.objects.get(name=result['sampled_medium'])
-
- Result.objects.create(resultid=None, featureactionid=feature_action, resulttypecv=result_type,
- variableid=output_variable.variableid, unitsid=units, processinglevelid=processing_level,
- resultdatetime=current_action.begindatetime, resultdatetimeutcoffset=current_action.begindatetimeutcoffset,
- statuscv=status, sampledmediumcv=medium, valuecount=0)
+ if result.is_valid():
+ data = result.cleaned_data
+ output_variable = InstrumentOutputVariable.objects.get(pk=data['instrumentoutputvariable'].pk)
+ units = Units.objects.get(pk=data['unitsid'].pk)
+ processing_level = ProcessingLevel.objects.get(pk=data['processing_level_id'].pk)
+ medium = CvMedium.objects.get(name=data['sampledmediumcv'].pk)
+
+ Result.objects.create(resultid=None, featureactionid=feature_action, resulttypecv=result_type,
+ variableid=output_variable.variableid, unitsid=units, processinglevelid=processing_level,
+ resultdatetime=current_action.begindatetime, resultdatetimeutcoffset=current_action.begindatetimeutcoffset,
+ statuscv=status, sampledmediumcv=medium, valuecount=0)
elif action_type.term == 'instrumentCalibration':
if updating: