Skip to content

Commit

Permalink
Add Training to user settings
Browse files Browse the repository at this point in the history
  • Loading branch information
amitupreti committed Mar 29, 2023
1 parent aaceec4 commit 3eab05d
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 0 deletions.
29 changes: 29 additions & 0 deletions physionet-django/training/forms.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
from django import forms
from django.db.models import Max, F

from training.models import OnPlatformTraining
from user.models import TrainingType
from user.enums import RequiredField


class OnPlatformTrainingForm(forms.ModelForm):

class Meta:
model = OnPlatformTraining
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('op_trainings__version')).filter(
op_trainings__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
2 changes: 2 additions & 0 deletions physionet-django/user/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -757,6 +757,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()

Expand Down
34 changes: 34 additions & 0 deletions physionet-django/user/templates/user/edit_training.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,37 @@ <h4>{{ status|capfirst }}</h4>
{% endif %}
{% endfor %}

<hr>
<h4>Complete training course on Platform</h4>
{% if platform_training_form %}
<form action="{% url 'start_training' %}" method="POST" id="on_platform_training">
{% include "descriptive_inline_form_snippet.html" with form=platform_training_form %}
<button type="button" class="btn btn-primary btn-rsp" data-toggle="modal" data-target="#start-training">Start Training</button>

<div class="modal fade" id="start-training" tabindex="-1" role="dialog" aria-labelledby="start-training-modal" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Start Training</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<p>Are you sure you want to start this training?</p>
</div>
<div class="modal-footer">
<button class="btn btn-primary" type="submit">Start Training</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
</form>
{% else %}
<p>N/A</p>
{% endif %}

<hr>
<h4>Submit evidence of a completed course</h4>

Expand Down Expand Up @@ -88,5 +119,8 @@ <h5 class="modal-title">Submit Training</h5>
$(document).on('change', '#id_training_type', function() {
$("#training").load(`{% url 'edit_training' %}?trainingType=${this.value} #training>`);
});
$(document).on('change', '#op_training_type', function() {
$("#on_platform_training").load(`{% url 'edit_training' %}?trainingType=${this.value} #on_platform_training>`);
});
</script>
{% endblock %}
6 changes: 6 additions & 0 deletions physionet-django/user/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@
)
from user.userfiles import UserFiles
from physionet.models import StaticPage
from training.forms import OnPlatformTrainingForm


logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -732,6 +733,8 @@ def edit_training(request):
training_form = forms.TrainingForm(
user=request.user, data=request.POST, files=request.FILES, training_type=request.POST.get('training_type')
)
platform_training_form = OnPlatformTrainingForm(
data=request.POST, training_type=request.POST.get('training_type'), auto_id="op_%s")
if training_form.is_valid():
training_form.save()
messages.success(request, 'The training has been submitted successfully.')
Expand All @@ -744,8 +747,10 @@ def edit_training(request):
training_type = request.GET.get('trainingType')
if training_type:
training_form = forms.TrainingForm(user=request.user, training_type=training_type)
platform_training_form = OnPlatformTrainingForm(training_type=training_type, auto_id="op_%s")
else:
training_form = forms.TrainingForm(user=request.user)
platform_training_form = OnPlatformTrainingForm(auto_id="op_%s")

training = Training.objects.select_related('training_type').filter(user=request.user).order_by('-status')
training_by_status = {
Expand All @@ -759,6 +764,7 @@ def edit_training(request):
request,
'user/edit_training.html',
{'training_form': training_form,
'platform_training_form': platform_training_form,
'training_by_status': training_by_status,
'ticket_system_url': ticket_system_url},
)
Expand Down

0 comments on commit 3eab05d

Please sign in to comment.