Skip to content
Snippets Groups Projects
Commit 170865eb authored by Piotr Gawron's avatar Piotr Gawron
Browse files

subject contain resign reason field (obligatory when marking subject as resigned)

parent a7078a91
No related branches found
No related tags found
1 merge request!91subject contain resign reason field (obligatory when marking subject as resigned)
Pipeline #
......@@ -49,6 +49,11 @@ def validate_subject_country(self, cleaned_data):
self.add_error('country', "Select valid country")
def validate_subject_resign_reason(self, cleaned_data):
if cleaned_data['resigned'] and cleaned_data['resign_reason'] == '':
self.add_error('resign_reason', "Resign reason cannot be empty")
def validate_subject_mpower_number(self, cleaned_data):
if cleaned_data['mpower_id'] != "":
subjects_from_db = Subject.objects.filter(mpower_id=cleaned_data['mpower_id'])
......@@ -71,7 +76,7 @@ class SubjectAddForm(ModelForm):
class Meta:
model = Subject
fields = '__all__'
exclude = ['dead', 'resigned']
exclude = ['dead', 'resigned', 'resign_reason']
def __init__(self, *args, **kwargs):
user = kwargs.pop('user', None)
......@@ -174,6 +179,7 @@ class SubjectEditForm(ModelForm):
validate_subject_nd_number(self, self.cleaned_data)
validate_subject_mpower_number(self, self.cleaned_data)
validate_subject_country(self, self.cleaned_data)
validate_subject_resign_reason(self, self.cleaned_data)
class Meta:
model = Subject
......
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2017-10-31 12:14
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('web', '0061_remove_subject_country'),
]
operations = [
migrations.AddField(
model_name='subject',
name='resign_reason',
field=models.TextField(blank=True, max_length=2000, verbose_name=b'Resign reason'),
),
]
......@@ -171,6 +171,10 @@ class Subject(models.Model):
default=False,
editable=True
)
resign_reason = models.TextField(max_length=2000,
blank=True,
verbose_name='Resign reason'
)
def __str__(self):
return "%s %s" % (self.first_name, self.last_name)
......
......@@ -154,6 +154,11 @@
});
var dead_was_checked = $("#id_dead").is(":checked");
var resigned_was_checked = $("#id_resigned").is(":checked");
$("#id_resign_reason").prop('disabled', !resigned_was_checked);
$("#id_resigned").on("click", function(){
var checked = $("#id_resigned").is(":checked");
$("#id_resign_reason").prop('disabled', !checked);
});
$("form").submit(function () {
if (confirmed) {
return true;
......
......@@ -43,6 +43,22 @@ class SubjectsViewTests(LoggedInWithWorkerTestCase):
self.assertEqual(response.status_code, 200)
self.assertTrue("Add visit" in response.content)
def test_save_subject_edit_when_resigned_without_reason(self):
subject = create_subject()
form_subject = SubjectEditForm(instance=subject)
form_data = {}
for key, value in form_subject.initial.items():
if value is not None:
form_data[key] = value
form_data['dead'] = "True"
form_data['resigned'] = "True"
response = self.client.post(
reverse('web.views.subject_edit', kwargs={'id': subject.id}), data=form_data)
self.assertEqual(response.status_code, 200)
self.assertTrue("Resign reason cannot be empty" in response.content)
def test_save_subject_edit(self):
subject = create_subject()
form_subject = SubjectEditForm(instance=subject)
......@@ -53,6 +69,7 @@ class SubjectsViewTests(LoggedInWithWorkerTestCase):
form_data['dead'] = "True"
form_data['resigned'] = "True"
form_data['resign_reason'] = "doesn't want to participate"
response = self.client.post(
reverse('web.views.subject_edit', kwargs={'id': subject.id}), data=form_data)
......
......@@ -68,6 +68,8 @@ def subject_edit(request, id):
if '_continue' in request.POST:
return redirect('web.views.subject_edit', id=the_subject.id)
return redirect('web.views.subjects')
else:
messages.add_message(request, messages.ERROR, 'Invalid data. Please fix data and try again.')
else:
form = SubjectEditForm(instance=the_subject, was_dead=was_dead, was_resigned=was_resigned)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment