Skip to content
Snippets Groups Projects
Commit 6e8a6b5c 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 cf8cb1de
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
from location import Location
from appointment_type_link import AppointmentTypeLink
from country import Country
from study_columns import StudyColumns
from study import Study
from room import Room
from visit import Visit
......@@ -28,4 +29,4 @@ from inconsistent_subject import InconsistentSubject, InconsistentField
__all__ = [Study, FlyingTeam, Appointment, AppointmentType, Availability, Holiday, Item, Language, Location, Room, Subject, StudySubject,
Visit, Worker, ContactAttempt, ConfigurationItem, MailTemplate, AppointmentTypeLink, MissingSubject,
InconsistentSubject, InconsistentField, Country]
InconsistentSubject, InconsistentField, Country, StudyColumns]
# coding=utf-8
from django.db import models
from web.models.study_columns import StudyColumns
class Study(models.Model):
class Meta:
......@@ -8,6 +10,11 @@ class Study(models.Model):
name = models.CharField(max_length=255, verbose_name='Name')
columns = models.OneToOneField(
StudyColumns,
on_delete=models.CASCADE,
)
def __str__(self):
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
from django.contrib.auth.models import User
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, \
SEX_CHOICES_MALE, SUBJECT_TYPE_CHOICES_CONTROL, CONTACT_TYPES_PHONE, \
MONDAY_AS_DAY_OF_WEEK, COUNTRY_AFGHANISTAN_ID
......@@ -24,7 +24,8 @@ def create_location(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():
......
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