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 import forms
from django.forms import ModelForm from django.forms import ModelForm
from web.models import Worker, WorkerStudyRole from web.models import Worker, WorkerStudyRole
from web.models.constants import GLOBAL_STUDY_ID 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 from web.models.worker_study_role import WORKER_STAFF
logger = logging.getLogger(__name__)
class WorkerForm(ModelForm): class WorkerForm(ModelForm):
class Meta: class Meta:
...@@ -14,14 +18,23 @@ class WorkerForm(ModelForm): ...@@ -14,14 +18,23 @@ class WorkerForm(ModelForm):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
worker_type = kwargs.pop('worker_type', WORKER_STAFF) worker_type = kwargs.pop('worker_type', WORKER_STAFF)
choices = role_choices_by_worker_type(worker_type)
super(WorkerForm, self).__init__(*args, **kwargs) super(WorkerForm, self).__init__(*args, **kwargs)
self.fields['role'] = forms.ChoiceField(label='Role', choices=choices)
instance = getattr(self, 'instance', None) instance = getattr(self, 'instance', None)
initial_role=None
if instance is not None: if instance is not None:
worker_type = worker_type_by_worker(instance)
roles = WorkerStudyRole.objects.filter(worker=instance, study_id=GLOBAL_STUDY_ID) roles = WorkerStudyRole.objects.filter(worker=instance, study_id=GLOBAL_STUDY_ID)
if roles.count() > 0: 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): def save(self, commit=True):
instance = super(WorkerForm, self).save(commit) 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 ...@@ -5,9 +5,9 @@ import logging
from django.contrib.auth.models import User, AnonymousUser from django.contrib.auth.models import User, AnonymousUser
from django.db import models from django.db import models
from web.models.constants import GLOBAL_STUDY_ID 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, \ from web.models.worker_study_role import STUDY_ROLE_CHOICES, HEALTH_PARTNER_ROLE_CHOICES, \
WORKER_STAFF, WORKER_HEALTH_PARTNER, WORKER_VOUCHER_PARTNER VOUCHER_PARTNER_ROLE_CHOICES, WORKER_STAFF, WORKER_HEALTH_PARTNER, WORKER_VOUCHER_PARTNER
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
...@@ -77,6 +77,41 @@ class Worker(models.Model): ...@@ -77,6 +77,41 @@ class Worker(models.Model):
verbose_name='Phone number', verbose_name='Phone number',
blank=True 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, unit = models.CharField(max_length=50,
verbose_name='Unit', verbose_name='Unit',
blank=True blank=True
......
...@@ -28,9 +28,8 @@ class WorkerViewTests(LoggedInTestCase): ...@@ -28,9 +28,8 @@ class WorkerViewTests(LoggedInTestCase):
def test_render_worker_added_request(self): def test_render_worker_added_request(self):
language = create_language() language = create_language()
location = create_location() 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["first_name"] = "John"
form_data["last_name"] = "Doe" form_data["last_name"] = "Doe"
form_data["phone_number"] = "0123456789" form_data["phone_number"] = "0123456789"
...@@ -43,11 +42,11 @@ class WorkerViewTests(LoggedInTestCase): ...@@ -43,11 +42,11 @@ class WorkerViewTests(LoggedInTestCase):
response = self.client.post(reverse('web.views.worker_add', kwargs={'worker_type': WORKER_STAFF}), response = self.client.post(reverse('web.views.worker_add', kwargs={'worker_type': WORKER_STAFF}),
data=form_data) data=form_data)
logger.debug(response.content)
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
new_count = Worker.objects.all().count() self.assertEqual(1, Worker.objects.all().count())
self.assertEqual(count + 1, new_count)
@staticmethod @staticmethod
def get_form_data(worker=None): 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