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

worker contain additional information about helat partner and voucher partners

parent b7dc0e9c
No related branches found
No related tags found
1 merge request!117Resolve "extend worker class"
import logging
from django import forms
from django.forms import ModelForm
from web.models import Worker, WorkerStudyRole
from web.models.constants import GLOBAL_STUDY_ID
from web.models.worker import role_choices_by_worker_type
from web.models.worker import role_choices_by_worker_type, worker_type_by_worker
from web.models.worker_study_role import WORKER_STAFF
logger = logging.getLogger(__name__)
class WorkerForm(ModelForm):
class Meta:
......@@ -14,14 +18,23 @@ class WorkerForm(ModelForm):
def __init__(self, *args, **kwargs):
worker_type = kwargs.pop('worker_type', WORKER_STAFF)
choices = role_choices_by_worker_type(worker_type)
super(WorkerForm, self).__init__(*args, **kwargs)
self.fields['role'] = forms.ChoiceField(label='Role', choices=choices)
instance = getattr(self, 'instance', None)
initial_role=None
if instance is not None:
worker_type = worker_type_by_worker(instance)
roles = WorkerStudyRole.objects.filter(worker=instance, study_id=GLOBAL_STUDY_ID)
if roles.count() > 0:
self.fields['role'].initial = roles[0].role
initial_role = roles[0].role
choices = role_choices_by_worker_type(worker_type)
self.fields['role'] = forms.ChoiceField(label='Role', choices=choices)
self.fields['role'].initial = initial_role
if worker_type == WORKER_STAFF:
del self.fields['voucher_types']
def save(self, commit=True):
instance = super(WorkerForm, self).save(commit)
......
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2017-12-13 11:40
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('web', '0099_auto_20171213_1115'),
]
operations = [
migrations.AddField(
model_name='worker',
name='address',
field=models.CharField(blank=True, max_length=255, verbose_name=b'Address'),
),
migrations.AddField(
model_name='worker',
name='city',
field=models.CharField(blank=True, max_length=50, verbose_name=b'City'),
),
migrations.AddField(
model_name='worker',
name='country',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='web.Country', verbose_name=b'Country'),
),
migrations.AddField(
model_name='worker',
name='fax_number',
field=models.CharField(blank=True, max_length=20, verbose_name=b'Fax number'),
),
migrations.AddField(
model_name='worker',
name='phone_number_2',
field=models.CharField(blank=True, max_length=20, verbose_name=b'Phone number 2'),
),
migrations.AddField(
model_name='worker',
name='postal_code',
field=models.CharField(blank=True, max_length=7, verbose_name=b'Postal code'),
),
migrations.AddField(
model_name='worker',
name='voucher_types',
field=models.ManyToManyField(blank=True, to='web.VoucherType', verbose_name=b'Voucher types'),
),
]
......@@ -5,9 +5,9 @@ import logging
from django.contrib.auth.models import User, AnonymousUser
from django.db import models
from web.models.constants import GLOBAL_STUDY_ID
from web.models.worker_study_role import STUDY_ROLE_CHOICES, HEALTH_PARTNER_ROLE_CHOICES, VOUCHER_PARTNER_ROLE_CHOICES, \
WORKER_STAFF, WORKER_HEALTH_PARTNER, WORKER_VOUCHER_PARTNER
from web.models.constants import GLOBAL_STUDY_ID, COUNTRY_OTHER_ID
from web.models.worker_study_role import STUDY_ROLE_CHOICES, HEALTH_PARTNER_ROLE_CHOICES, \
VOUCHER_PARTNER_ROLE_CHOICES, WORKER_STAFF, WORKER_HEALTH_PARTNER, WORKER_VOUCHER_PARTNER
logger = logging.getLogger(__name__)
......@@ -77,6 +77,41 @@ class Worker(models.Model):
verbose_name='Phone number',
blank=True
)
phone_number_2 = models.CharField(max_length=20,
verbose_name='Phone number 2',
blank=True
)
fax_number = models.CharField(max_length=20,
verbose_name='Fax number',
blank=True
)
address = models.CharField(max_length=255,
blank=True,
verbose_name='Address'
)
postal_code = models.CharField(max_length=7,
blank=True,
verbose_name='Postal code'
)
city = models.CharField(max_length=50,
blank=True,
verbose_name='City'
)
country = models.ForeignKey('web.Country',
null=False,
blank=False,
default=COUNTRY_OTHER_ID,
verbose_name='Country'
)
voucher_types = models.ManyToManyField("web.VoucherType",
verbose_name='Voucher types',
blank=True
)
unit = models.CharField(max_length=50,
verbose_name='Unit',
blank=True
......
......@@ -28,9 +28,8 @@ class WorkerViewTests(LoggedInTestCase):
def test_render_worker_added_request(self):
language = create_language()
location = create_location()
count = Worker.objects.all().count()
form_data = self.get_form_data()
form_data = self.get_form_data(Worker())
form_data["first_name"] = "John"
form_data["last_name"] = "Doe"
form_data["phone_number"] = "0123456789"
......@@ -43,11 +42,11 @@ class WorkerViewTests(LoggedInTestCase):
response = self.client.post(reverse('web.views.worker_add', kwargs={'worker_type': WORKER_STAFF}),
data=form_data)
logger.debug(response.content)
self.assertEqual(response.status_code, 302)
new_count = Worker.objects.all().count()
self.assertEqual(count + 1, new_count)
self.assertEqual(1, Worker.objects.all().count())
@staticmethod
def get_form_data(worker=None):
......
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