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

each study has a study columns object

there is singleton study columns object created in db to reflect current state of the project (single study per smasch instance)
parent ee8aefda
No related branches found
No related tags found
1 merge request!101Resolve "list of subjects should contain columns dependent on the study"
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2017-12-01 10:13
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
# noinspection PyUnusedLocal
# noinspection PyPep8Naming
def create_default_study_columns(apps, schema_editor):
# We can't import the Study model directly as it may be a newer
# version than this migration expects. We use the historical version.
StudyColumns = apps.get_model("web", "StudyColumns")
study_columns = StudyColumns.objects.create()
study_columns.save()
class Migration(migrations.Migration):
dependencies = [
('web', '0071_auto_20171130_1607'),
]
operations = [
migrations.CreateModel(
name='StudyColumns',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('postponed', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'Postponed')),
('datetime_contact_reminder', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'Please make a contact on')),
('type', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'Type')),
('default_location', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'Default appointment location')),
('flying_team', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'Default flying team location (if applicable)')),
('screening_number', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'Screening number')),
('nd_number', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'ND number')),
('mpower_id', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'MPower ID')),
('comments', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'Comments')),
('referral', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'Referred by')),
('diagnosis', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'Diagnosis')),
('year_of_diagnosis', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'Year of diagnosis (YYYY)')),
('information_sent', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'Information sent')),
('pd_in_family', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'PD in family')),
('resigned', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'Resigned')),
('resign_reason', models.BooleanField(choices=[(True, b'Yes'), (False, b'No')], default=True, verbose_name=b'Resign reason')),
],
),
migrations.RunPython(create_default_study_columns),
migrations.AddField(
model_name='study',
name='columns',
field=models.OneToOneField(default=1, on_delete=django.db.models.deletion.CASCADE, to='web.StudyColumns'),
preserve_default=False,
),
]
...@@ -8,6 +8,7 @@ from flying_team import FlyingTeam ...@@ -8,6 +8,7 @@ from flying_team import FlyingTeam
from location import Location from location import Location
from appointment_type_link import AppointmentTypeLink from appointment_type_link import AppointmentTypeLink
from country import Country from country import Country
from study_columns import StudyColumns
from study import Study from study import Study
from room import Room from room import Room
from visit import Visit from visit import Visit
...@@ -28,4 +29,4 @@ from inconsistent_subject import InconsistentSubject, InconsistentField ...@@ -28,4 +29,4 @@ from inconsistent_subject import InconsistentSubject, InconsistentField
__all__ = [Study, FlyingTeam, Appointment, AppointmentType, Availability, Holiday, Item, Language, Location, Room, Subject, StudySubject, __all__ = [Study, FlyingTeam, Appointment, AppointmentType, Availability, Holiday, Item, Language, Location, Room, Subject, StudySubject,
Visit, Worker, ContactAttempt, ConfigurationItem, MailTemplate, AppointmentTypeLink, MissingSubject, Visit, Worker, ContactAttempt, ConfigurationItem, MailTemplate, AppointmentTypeLink, MissingSubject,
InconsistentSubject, InconsistentField, Country] InconsistentSubject, InconsistentField, Country, StudyColumns]
# coding=utf-8 # coding=utf-8
from django.db import models from django.db import models
from web.models.study_columns import StudyColumns
class Study(models.Model): class Study(models.Model):
class Meta: class Meta:
...@@ -8,6 +10,11 @@ class Study(models.Model): ...@@ -8,6 +10,11 @@ class Study(models.Model):
name = models.CharField(max_length=255, verbose_name='Name') name = models.CharField(max_length=255, verbose_name='Name')
columns = models.OneToOneField(
StudyColumns,
on_delete=models.CASCADE,
)
def __str__(self): def __str__(self):
return "%s" % self.name return "%s" % self.name
......
# coding=utf-8
from django.db import models
from web.models.constants import BOOL_CHOICES
class StudyColumns(models.Model):
class Meta:
app_label = 'web'
postponed = models.BooleanField(choices=BOOL_CHOICES,
verbose_name='Postponed',
default=True
)
datetime_contact_reminder = models.BooleanField(choices=BOOL_CHOICES,
default=True,
verbose_name='Please make a contact on'
)
type = models.BooleanField(choices=BOOL_CHOICES,
default=True,
verbose_name='Type'
)
default_location = models.BooleanField(choices=BOOL_CHOICES,
default=True,
verbose_name='Default appointment location',
)
flying_team = models.BooleanField(choices=BOOL_CHOICES,
default=True,
verbose_name='Default flying team location (if applicable)',
)
screening_number = models.BooleanField(choices=BOOL_CHOICES,
default=True,
verbose_name='Screening number',
)
nd_number = models.BooleanField(choices=BOOL_CHOICES,
default=True,
verbose_name='ND number',
)
mpower_id = models.BooleanField(choices=BOOL_CHOICES,
default=True,
verbose_name='MPower ID'
)
comments = models.BooleanField(choices=BOOL_CHOICES,
default=True,
verbose_name='Comments'
)
referral = models.BooleanField(choices=BOOL_CHOICES,
default=True,
verbose_name='Referred by'
)
diagnosis = models.BooleanField(choices=BOOL_CHOICES,
default=True,
verbose_name='Diagnosis'
)
year_of_diagnosis = models.BooleanField(choices=BOOL_CHOICES,
default=True,
verbose_name='Year of diagnosis (YYYY)'
)
information_sent = models.BooleanField(choices=BOOL_CHOICES,
default=True,
verbose_name='Information sent',
)
pd_in_family = models.BooleanField(choices=BOOL_CHOICES,
default=True,
verbose_name='PD in family',
)
resigned = models.BooleanField(choices=BOOL_CHOICES,
default=True,
verbose_name='Resigned',
)
resign_reason = models.BooleanField(choices=BOOL_CHOICES,
default=True,
verbose_name='Resign reason'
)
def __str__(self):
return "%s" % self.study
def __unicode__(self):
return "%s" % self.study
...@@ -4,7 +4,7 @@ import os ...@@ -4,7 +4,7 @@ import os
from django.contrib.auth.models import User from django.contrib.auth.models import User
from web.models import Location, AppointmentType, StudySubject, Worker, Visit, Appointment, ConfigurationItem, Language, \ from web.models import Location, AppointmentType, StudySubject, Worker, Visit, Appointment, ConfigurationItem, Language, \
ContactAttempt, FlyingTeam, Availability, Subject, Study ContactAttempt, FlyingTeam, Availability, Subject, Study, StudyColumns
from web.models.constants import REDCAP_TOKEN_CONFIGURATION_TYPE, REDCAP_BASE_URL_CONFIGURATION_TYPE, \ from web.models.constants import REDCAP_TOKEN_CONFIGURATION_TYPE, REDCAP_BASE_URL_CONFIGURATION_TYPE, \
SEX_CHOICES_MALE, SUBJECT_TYPE_CHOICES_CONTROL, CONTACT_TYPES_PHONE, \ SEX_CHOICES_MALE, SUBJECT_TYPE_CHOICES_CONTROL, CONTACT_TYPES_PHONE, \
MONDAY_AS_DAY_OF_WEEK, COUNTRY_AFGHANISTAN_ID MONDAY_AS_DAY_OF_WEEK, COUNTRY_AFGHANISTAN_ID
...@@ -24,7 +24,8 @@ def create_location(name="test"): ...@@ -24,7 +24,8 @@ def create_location(name="test"):
def create_study(name="test"): def create_study(name="test"):
return Study.objects.create(name=name) study_columns = StudyColumns.objects.create()
return Study.objects.create(name=name, columns=study_columns)
def get_test_location(): def get_test_location():
......
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