Skip to content

Commit

Permalink
Merge pull request #566 from DH-IT-Portal-Development/fix/supervisor_…
Browse files Browse the repository at this point in the history
…clarity

Fix/supervisor clarity
  • Loading branch information
EdoStorm96 authored Nov 6, 2023
2 parents b04fe9b + 5b429d8 commit 4e17a3d
Show file tree
Hide file tree
Showing 8 changed files with 164 additions and 279 deletions.
Binary file modified locale/en/LC_MESSAGES/django.mo
Binary file not shown.
361 changes: 115 additions & 246 deletions locale/en/LC_MESSAGES/django.po

Large diffs are not rendered by default.

19 changes: 14 additions & 5 deletions proposals/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ class Meta:
}),
'funding': forms.CheckboxSelectMultiple(),
'applicants': SelectMultipleUser(),
'supervisor': SelectUser(),
'supervisor': forms.Select(),
}
error_messages = {
'title': {
Expand All @@ -65,7 +65,6 @@ class Meta:
}

_soft_validation_fields = ['relation',
'supervisor',
'other_applicants',
'other_stakeholders',
'stakeholders',
Expand Down Expand Up @@ -132,6 +131,7 @@ def __init__(self, *args, **kwargs):

self.fields['supervisor'].choices = [(None, _(
'Selecteer...'))] + get_users_as_list(supervisors)

self.fields['applicants'].choices = get_users_as_list(applicants)

if in_course:
Expand Down Expand Up @@ -166,6 +166,7 @@ def clean(self):
"""
Check for conditional requirements:
- If relation needs supervisor, make sure supervisor is set
- If relation needs supervisor, make sure supervisor is a different person
- If other_applicants is checked, make sure applicants are set
- If other_stakeholders is checked, make sure stakeholders is not empty
- Maximum number of words for summary
Expand All @@ -183,20 +184,28 @@ def clean(self):
self.mark_soft_required(cleaned_data, 'date_start')

relation = cleaned_data.get('relation')
supervisor = cleaned_data.get('supervisor')

if relation and relation.needs_supervisor and \
not cleaned_data.get('supervisor'):
not supervisor:
error = forms.ValidationError(
_('Je dient een eindverantwoordelijke op te geven.'),
_('Je dient een promotor/begeleider op te geven.'),
code='required')
self.add_error('supervisor', error)

if relation and relation.needs_supervisor and \
supervisor == self.user:
error = forms.ValidationError(
_('Je kunt niet jezelf als promotor/begeleider opgeven.')
)
self.add_error('supervisor', error)

if relation.check_in_course:
self.mark_soft_required(cleaned_data, 'student_context')
self.mark_soft_required(cleaned_data, 'student_justification')

other_applicants = cleaned_data.get('other_applicants')
applicants = cleaned_data.get('applicants')
supervisor = cleaned_data.get('supervisor')

# Always make sure the applicant is actually in the applicants list
if self.user not in applicants and self.user != supervisor:
Expand Down
21 changes: 21 additions & 0 deletions proposals/migrations/0049_alter_proposal_supervisor.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Generated by Django 3.2.20 on 2023-10-26 09:38

from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('proposals', '0048_auto_20231016_1202'),
]

operations = [
migrations.AlterField(
model_name='proposal',
name='supervisor',
field=models.ForeignKey(blank=True, help_text='Je aanvraag moet, als je alles hebt ingevuld, via de portal \n naar je promotor of begeleider gestuurd worden. Deze persoon \n is de eindverantwoordelijk onderzoeker, en zal de aanvraag \n vervolgens waar nodig kunnen aanpassen en indienen bij de FETC-GW.\n <br><br><strong>Belangrijk</strong>: als je je promotor of \n begeleider niet kunt vinden met dit veld, dan moeten zij \n waarschijnlijk eerst één keer inloggen in deze portal. \n Je kunt nog wel verder met de aanvraag, maar vergeet dit veld \n niet in te vullen voor je de aanvraag indient. Je aanvraag \n zal dan namelijk niet in behandeling kunnen worden genomen.', null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Promotor/Begeleider'),
),
]
20 changes: 11 additions & 9 deletions proposals/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -514,17 +514,19 @@ class Proposal(models.Model):

supervisor = models.ForeignKey(
settings.AUTH_USER_MODEL,
verbose_name=_('Eindverantwoordelijke onderzoeker'),
verbose_name=_('Promotor/Begeleider'),
blank=True,
null=True,
help_text=_('''Aan het einde van de procedure kan je deze aanvraag ter
verificatie naar je eindverantwoordelijke sturen. De
eindverantwoordelijke zal de aanvraag vervolgens kunnen aanpassen en
indienen bij de FETC-GW. <br><br><strong>NB</strong>: als je je
eindverantwoordelijke niet kunt vinden met dit veld, moeten zij
waarschijnlijk eerst één keer inloggen in deze portal. Je kunt nog wel
verder met de aanvraag, maar vergeet dit veld niet in te vullen voor je de
aanvraag indient.'''),
help_text=_('''Je aanvraag moet, als je alles hebt ingevuld, via de portal
naar je promotor of begeleider gestuurd worden. Deze persoon
is de eindverantwoordelijk onderzoeker, en zal de aanvraag
vervolgens waar nodig kunnen aanpassen en indienen bij de FETC-GW.
<br><br><strong>Belangrijk</strong>: als je je promotor of
begeleider niet kunt vinden met dit veld, dan moeten zij
waarschijnlijk eerst één keer inloggen in deze portal.
Je kunt nog wel verder met de aanvraag, maar vergeet dit veld
niet in te vullen voor je de aanvraag indient. Je aanvraag
zal dan namelijk niet in behandeling kunnen worden genomen.'''),
on_delete=models.CASCADE,
)

Expand Down
18 changes: 1 addition & 17 deletions proposals/templates/proposals/proposal_form.html
Original file line number Diff line number Diff line change
Expand Up @@ -49,23 +49,7 @@
});

// AJAX supervisors
$('select#id_supervisor').select2({
ajax: {
url: '{% url 'main:user_search' %}',
dataType: 'json',
data: function (params) {
return {
q: params.term || '*',
page: params.page || 1
}
},
delay: 1500,
error: function (err) {
console.log(err)
},
cache: true
}
});
$('select#id_supervisor').select2();
});
$(function() {
// adds running wordcounter for the summary and self_assessment text fields
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ <h4>
</tr>
<tr v-if="proposal.supervisor">
<td>
{% trans "Eindverantwoordelijke onderzoeker" %}:
{% trans "Promotor/Begeleider" %}:
</td>
<td v-html="proposal.supervisor.fullname">

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ <h4>
</tr>
<tr v-if="proposal.supervisor">
<td>
{% trans "Eindverantwoordelijke onderzoeker" %}:
{% trans "Promotor/Begeleider" %}:
</td>
<td v-html="proposal.supervisor.fullname">

Expand Down

0 comments on commit 4e17a3d

Please sign in to comment.