diff --git a/physionet-django/training/forms.py b/physionet-django/training/forms.py new file mode 100644 index 0000000000..181f7509c5 --- /dev/null +++ b/physionet-django/training/forms.py @@ -0,0 +1,29 @@ +from django import forms +from django.db.models import Max, F + +from training.models import Course +from user.models import TrainingType +from user.enums import RequiredField + + +class CourseForm(forms.ModelForm): + + class Meta: + model = Course + fields = ('training_type', ) + labels = {'training_type': 'Training Type'} + + def __init__(self, *args, **kwargs): + training_id = kwargs.pop('training_type', None) + super().__init__(*args, **kwargs) + self.fields['training_type'].queryset = self.fields['training_type'].queryset.annotate( + max_version=Max('courses__version')).filter( + courses__version=F('max_version')).filter( + required_field=RequiredField.PLATFORM) + + self.training_type = TrainingType.objects.filter(id=training_id).first() + + self.fields['training_type'].initial = self.training_type + + if self.training_type: + self.fields['training_type'].help_text = self.training_type.description diff --git a/physionet-django/user/forms.py b/physionet-django/user/forms.py index c0e4f2c67d..a1f786d1b4 100644 --- a/physionet-django/user/forms.py +++ b/physionet-django/user/forms.py @@ -760,6 +760,8 @@ def __init__(self, user, *args, **kwargs): training_type_id = kwargs.pop('training_type', None) super().__init__(*args, **kwargs) + self.fields['training_type'].queryset = self.fields['training_type'].queryset.exclude( + required_field=RequiredField.PLATFORM) self.training_type = TrainingType.objects.filter(id=training_type_id).first() diff --git a/physionet-django/user/templates/user/edit_training.html b/physionet-django/user/templates/user/edit_training.html index 8791e0199f..3a7cc2ce55 100644 --- a/physionet-django/user/templates/user/edit_training.html +++ b/physionet-django/user/templates/user/edit_training.html @@ -27,6 +27,37 @@
N/A
+ {% endif %} +