diff --git a/smash/web/forms.py b/smash/web/forms.py index bc046b76344ab40c3a258b611fc1ca59f6128b5d..dfddccbb5b87ccf3ea95901ad295c84d273e62b4 100644 --- a/smash/web/forms.py +++ b/smash/web/forms.py @@ -28,6 +28,23 @@ class SubjectAddForm(ModelForm): if len(subjects_from_db): self.add_error('screening_number', "Screening number already in use") + def get_new_screening_number(self): + result = 1; + numbers = Subject.objects.values_list('screening_number') + for number_row in numbers: + try: + id = int(number_row[0]) + result = max(result, id+1) + except: + pass + return result + + + def clean_screening_number(self): + if self.cleaned_data['screening_number']=="": + self.cleaned_data['screening_number'] = self.get_new_screening_number() + + return self.cleaned_data['screening_number']; class SubjectDetailForm(ModelForm): class Meta: diff --git a/smash/web/views.py b/smash/web/views.py index 4bcd4617198cdd297f21320a576daf74f2530f78..367fc0a28ea88f82b05000fa7eed2d5188912b19 100644 --- a/smash/web/views.py +++ b/smash/web/views.py @@ -120,11 +120,13 @@ def subjects(request): return wrap_response(request, 'subjects/index.html', context) - def subject_add(request): if request.method == 'POST': form = SubjectAddForm(request.POST, request.FILES) if form.is_valid(): + screening_number = form.cleaned_data['screening_number'] + if screening_number == '': + screening_number = get_new_screening_number() form.save() return redirect(subjects) else: