diff --git a/.pylintrc b/.pylintrc index 9abb5c0f6925d56bbc1e758b1fb7224d2a832139..501b838b00b119ce9888e0f63038bd5b1f67a5e9 100644 --- a/.pylintrc +++ b/.pylintrc @@ -1,4 +1,6 @@ [MASTER] +load-plugins=pylint.extensions.no_self_use + disable= C0114, # missing-module-docstring C0115, # missing-class-docstring diff --git a/smash/web/migrations/0001_initial.py b/smash/web/migrations/0001_initial.py index 36267b3798672f7d38b5f5e4d6fe2d0235e99ede..545ed4a1da48b3249d8e711983d73b08b80c46ab 100644 --- a/smash/web/migrations/0001_initial.py +++ b/smash/web/migrations/0001_initial.py @@ -16,187 +16,277 @@ class Migration(migrations.Migration): operations = [ migrations.CreateModel( - name='Appointment', + name="Appointment", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('datetime_when', models.DateTimeField(verbose_name='Appointment on')), - ('length', models.IntegerField(verbose_name='Appointment length (in minutes)')), - ('is_finished', models.BooleanField(default=False, verbose_name='Has the appointment ended?')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("datetime_when", models.DateTimeField(verbose_name="Appointment on")), + ("length", models.IntegerField(verbose_name="Appointment length (in minutes)")), + ("is_finished", models.BooleanField(default=False, verbose_name="Has the appointment ended?")), ], ), migrations.CreateModel( - name='AppointmentType', + name="AppointmentType", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('code', models.CharField(max_length=20, verbose_name='Appointment code')), - ('description', models.CharField(max_length=2000, verbose_name='Appointment description')), - ('default_duration', models.IntegerField(verbose_name='Default duration (in minutes)')), - ('rest_time', models.IntegerField(verbose_name='Suggested rest time')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("code", models.CharField(max_length=20, verbose_name="Appointment code")), + ("description", models.CharField(max_length=2000, verbose_name="Appointment description")), + ("default_duration", models.IntegerField(verbose_name="Default duration (in minutes)")), + ("rest_time", models.IntegerField(verbose_name="Suggested rest time")), ], ), migrations.CreateModel( - name='Avaibility', + name="Avaibility", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('day_number', models.IntegerField(verbose_name='Day of the week')), - ('available_from', models.TimeField(verbose_name='Avaible since')), - ('available_till', models.TimeField(verbose_name='Avaible until')), - ('is_current', models.BooleanField(default=True, verbose_name='Is current?')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("day_number", models.IntegerField(verbose_name="Day of the week")), + ("available_from", models.TimeField(verbose_name="Avaible since")), + ("available_till", models.TimeField(verbose_name="Avaible until")), + ("is_current", models.BooleanField(default=True, verbose_name="Is current?")), ], ), migrations.CreateModel( - name='FlyingTeam', + name="FlyingTeam", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('datetime_called', models.DateTimeField(verbose_name='Created on')), - ('datetime_until', models.DateTimeField(verbose_name='Disbanded on')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("datetime_called", models.DateTimeField(verbose_name="Created on")), + ("datetime_until", models.DateTimeField(verbose_name="Disbanded on")), ], ), migrations.CreateModel( - name='Holiday', + name="Holiday", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('datetime_start', models.DateTimeField(verbose_name='On leave since')), - ('datetime_end', models.DateTimeField(verbose_name='On leave until')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("datetime_start", models.DateTimeField(verbose_name="On leave since")), + ("datetime_end", models.DateTimeField(verbose_name="On leave until")), ], ), migrations.CreateModel( - name='Item', + name="Item", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('is_fixed', models.BooleanField(default=False, verbose_name='Is the item fixed?')), - ('name', models.CharField(max_length=255, verbose_name='Name')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("is_fixed", models.BooleanField(default=False, verbose_name="Is the item fixed?")), + ("name", models.CharField(max_length=255, verbose_name="Name")), ], ), migrations.CreateModel( - name='Language', + name="Language", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=20)), - ('image', models.ImageField(upload_to='')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("name", models.CharField(max_length=20)), + ("image", models.ImageField(upload_to="")), ], ), migrations.CreateModel( - name='Room', + name="Room", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('owner', models.CharField(max_length=50, verbose_name='Owner')), - ('address', models.CharField(max_length=255, verbose_name='Address')), - ('city', models.CharField(max_length=50, verbose_name='City')), - ('room_number', models.IntegerField(verbose_name='Room number')), - ('floor', models.IntegerField(verbose_name='Floor')), - ('is_vehicle', models.BooleanField(verbose_name='Is a vehicle?')), - ('equipment', models.ManyToManyField(blank=True, to='web.Item', verbose_name='On-site equipment')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("owner", models.CharField(max_length=50, verbose_name="Owner")), + ("address", models.CharField(max_length=255, verbose_name="Address")), + ("city", models.CharField(max_length=50, verbose_name="City")), + ("room_number", models.IntegerField(verbose_name="Room number")), + ("floor", models.IntegerField(verbose_name="Floor")), + ("is_vehicle", models.BooleanField(verbose_name="Is a vehicle?")), + ("equipment", models.ManyToManyField(blank=True, to="web.Item", verbose_name="On-site equipment")), ], ), migrations.CreateModel( - name='Subject', + name="Subject", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('sex', models.CharField(choices=[('M', 'Male'), ('F', 'Female')], max_length=1, verbose_name='Sex')), - ('first_name', models.CharField(max_length=50, verbose_name='First name')), - ('last_name', models.CharField(max_length=50, verbose_name='Last name')), - ('phone_number', models.CharField(max_length=20, verbose_name='Phone number')), - ('email', models.EmailField(max_length=254, verbose_name='E-mail')), - ('date_born', models.DateField(verbose_name='Date date_born')), - ('address', models.CharField(max_length=255, verbose_name='Address')), - ('postal_code', models.CharField(max_length=6, verbose_name='Postal code')), - ('city', models.CharField(max_length=50, verbose_name='City')), - ('country', models.CharField(max_length=50, verbose_name='Country')), - ('screening_number', models.CharField(max_length=50, verbose_name='Screening number')), - ('nd_number', models.CharField(max_length=6, verbose_name='ND number')), - ('visit_count', models.IntegerField(verbose_name='Number of visits')), - ('mpower_id', models.CharField(max_length=20, verbose_name='MPower ID')), - ('status', models.CharField(choices=[('NCO', 'Not contacted'), ('TST', 'Test group'), ('LEA', 'Level A'), ('LEB', 'Level B'), ('OPT', 'Opted out'), ('REJ', 'Rejected'), ('DEA', 'Dead')], default='NCO', max_length=3, verbose_name='Status')), - ('main_pseudonym', models.CharField(max_length=45, verbose_name='Pseudonym')), - ('comments', models.CharField(max_length=2000, verbose_name='Comments')), - ('date_added', models.DateField(auto_now=True, verbose_name='Added on')), - ('referral', models.CharField(max_length=128, null=True, verbose_name='Referred by')), - ('diagnosis', models.CharField(max_length=128, null=True, verbose_name='Diagnosis')), - ('year_of_diagnosis', models.IntegerField(default=0, null=True, verbose_name='Year of diagnosis')), - ('languages', models.ManyToManyField(to='web.Language', verbose_name='Known languages')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("sex", models.CharField(choices=[("M", "Male"), ("F", "Female")], max_length=1, verbose_name="Sex")), + ("first_name", models.CharField(max_length=50, verbose_name="First name")), + ("last_name", models.CharField(max_length=50, verbose_name="Last name")), + ("phone_number", models.CharField(max_length=20, verbose_name="Phone number")), + ("email", models.EmailField(max_length=254, verbose_name="E-mail")), + ("date_born", models.DateField(verbose_name="Date date_born")), + ("address", models.CharField(max_length=255, verbose_name="Address")), + ("postal_code", models.CharField(max_length=6, verbose_name="Postal code")), + ("city", models.CharField(max_length=50, verbose_name="City")), + ("country", models.CharField(max_length=50, verbose_name="Country")), + ("screening_number", models.CharField(max_length=50, verbose_name="Screening number")), + ("nd_number", models.CharField(max_length=6, verbose_name="ND number")), + ("visit_count", models.IntegerField(verbose_name="Number of visits")), + ("mpower_id", models.CharField(max_length=20, verbose_name="MPower ID")), + ( + "status", + models.CharField( + choices=[ + ("NCO", "Not contacted"), + ("TST", "Test group"), + ("LEA", "Level A"), + ("LEB", "Level B"), + ("OPT", "Opted out"), + ("REJ", "Rejected"), + ("DEA", "Dead"), + ], + default="NCO", + max_length=3, + verbose_name="Status", + ), + ), + ("main_pseudonym", models.CharField(max_length=45, verbose_name="Pseudonym")), + ("comments", models.CharField(max_length=2000, verbose_name="Comments")), + ("date_added", models.DateField(auto_now=True, verbose_name="Added on")), + ("referral", models.CharField(max_length=128, null=True, verbose_name="Referred by")), + ("diagnosis", models.CharField(max_length=128, null=True, verbose_name="Diagnosis")), + ("year_of_diagnosis", models.IntegerField(default=0, null=True, verbose_name="Year of diagnosis")), + ("languages", models.ManyToManyField(to="web.Language", verbose_name="Known languages")), ], ), migrations.CreateModel( - name='Visit', + name="Visit", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('datetime_begin', models.DateTimeField(verbose_name='Visit starts at')), - ('datetime_end', models.DateTimeField(verbose_name='Visit ends at')), - ('visit_type', models.CharField(choices=[('A', 'Level A visit'), ('B', 'Level B visit'), ('O', 'Other')], default='O', max_length=1, verbose_name='Visit type')), - ('is_finished', models.BooleanField(default=False, verbose_name='Has ended')), - ('subject', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.Subject', verbose_name='Subject')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("datetime_begin", models.DateTimeField(verbose_name="Visit starts at")), + ("datetime_end", models.DateTimeField(verbose_name="Visit ends at")), + ( + "visit_type", + models.CharField( + choices=[("A", "Level A visit"), ("B", "Level B visit"), ("O", "Other")], + default="O", + max_length=1, + verbose_name="Visit type", + ), + ), + ("is_finished", models.BooleanField(default=False, verbose_name="Has ended")), + ( + "subject", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, to="web.Subject", verbose_name="Subject" + ), + ), ], ), migrations.CreateModel( - name='Worker', + name="Worker", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('first_name', models.CharField(max_length=50, verbose_name='First name')), - ('last_name', models.CharField(max_length=50, verbose_name='Last name')), - ('phone_number', models.CharField(max_length=20, verbose_name='Phone number')), - ('unit', models.CharField(max_length=50, verbose_name='Unit')), - ('email', models.EmailField(max_length=254, verbose_name='E-mail')), - ('role', models.CharField(choices=[('DOCTOR', 'Doctor'), ('NURSE', 'Nurse'), ('PSYCHOLOGIST', 'Psychologist'), ('TECHNICIAN', 'Technician'), ('SECRETARY', 'Secretary')], max_length=20, verbose_name='Role')), - ('specialization', models.CharField(max_length=20, verbose_name='Specialization')), - ('appointments', models.ManyToManyField(blank=True, to='web.Appointment', verbose_name='Appointments')), - ('languages', models.ManyToManyField(to='web.Language', verbose_name='Known languages')), - ('user', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Username')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("first_name", models.CharField(max_length=50, verbose_name="First name")), + ("last_name", models.CharField(max_length=50, verbose_name="Last name")), + ("phone_number", models.CharField(max_length=20, verbose_name="Phone number")), + ("unit", models.CharField(max_length=50, verbose_name="Unit")), + ("email", models.EmailField(max_length=254, verbose_name="E-mail")), + ( + "role", + models.CharField( + choices=[ + ("DOCTOR", "Doctor"), + ("NURSE", "Nurse"), + ("PSYCHOLOGIST", "Psychologist"), + ("TECHNICIAN", "Technician"), + ("SECRETARY", "Secretary"), + ], + max_length=20, + verbose_name="Role", + ), + ), + ("specialization", models.CharField(max_length=20, verbose_name="Specialization")), + ("appointments", models.ManyToManyField(blank=True, to="web.Appointment", verbose_name="Appointments")), + ("languages", models.ManyToManyField(to="web.Language", verbose_name="Known languages")), + ( + "user", + models.OneToOneField( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to=settings.AUTH_USER_MODEL, + verbose_name="Username", + ), + ), ], ), migrations.AddField( - model_name='holiday', - name='person', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.Worker', verbose_name='Worker'), + model_name="holiday", + name="person", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, to="web.Worker", verbose_name="Worker" + ), ), migrations.AddField( - model_name='flyingteam', - name='doctor', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='FlyingTeamDoctor', to='web.Worker', verbose_name='Doctor'), + model_name="flyingteam", + name="doctor", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="FlyingTeamDoctor", + to="web.Worker", + verbose_name="Doctor", + ), ), migrations.AddField( - model_name='flyingteam', - name='nurse', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='FlyingTeamNurse', to='web.Worker', verbose_name='Nurse'), + model_name="flyingteam", + name="nurse", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="FlyingTeamNurse", + to="web.Worker", + verbose_name="Nurse", + ), ), migrations.AddField( - model_name='flyingteam', - name='psychologist', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='FlyingTeamPsychologist', to='web.Worker', verbose_name='Psychologist'), + model_name="flyingteam", + name="psychologist", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="FlyingTeamPsychologist", + to="web.Worker", + verbose_name="Psychologist", + ), ), migrations.AddField( - model_name='avaibility', - name='person', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.Worker', verbose_name='Worker'), + model_name="avaibility", + name="person", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, to="web.Worker", verbose_name="Worker" + ), ), migrations.AddField( - model_name='appointmenttype', - name='required_equipment', - field=models.ManyToManyField(to='web.Item', verbose_name='Required equipment'), + model_name="appointmenttype", + name="required_equipment", + field=models.ManyToManyField(to="web.Item", verbose_name="Required equipment"), ), migrations.AddField( - model_name='appointment', - name='appointment_type', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='web.AppointmentType', verbose_name='Appointment type'), + model_name="appointment", + name="appointment_type", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.AppointmentType", + verbose_name="Appointment type", + ), ), migrations.AddField( - model_name='appointment', - name='flying_team', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='web.FlyingTeam', verbose_name='Flying team (if applicable)'), + model_name="appointment", + name="flying_team", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.FlyingTeam", + verbose_name="Flying team (if applicable)", + ), ), migrations.AddField( - model_name='appointment', - name='room', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.Room', verbose_name='Room ID'), + model_name="appointment", + name="room", + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="web.Room", verbose_name="Room ID"), ), migrations.AddField( - model_name='appointment', - name='visit', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.Visit', verbose_name='Visit ID'), + model_name="appointment", + name="visit", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, to="web.Visit", verbose_name="Visit ID" + ), ), migrations.AddField( - model_name='appointment', - name='worker_assigned', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='web.Worker', verbose_name='Worker conducting the assessment (if applicable)'), + model_name="appointment", + name="worker_assigned", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.Worker", + verbose_name="Worker conducting the assessment (if applicable)", + ), ), ] diff --git a/smash/web/migrations/0001_version-1-0-0.py b/smash/web/migrations/0001_version-1-0-0.py index fbfbcc638cd8b41da2c3d20a3e7c408c2d57ddcd..ce718e11984372d835576cb3190ff4b40dca43a8 100644 --- a/smash/web/migrations/0001_version-1-0-0.py +++ b/smash/web/migrations/0001_version-1-0-0.py @@ -7,20 +7,50 @@ from django.conf import settings from django.db import migrations, models from web.models.appointment_list import APPOINTMENT_LIST_UNFINISHED -from web.models.constants import CANCELLED_APPOINTMENT_COLOR_CONFIGURATION_TYPE, \ - NO_SHOW_APPOINTMENT_COLOR_CONFIGURATION_TYPE, KIT_RECIPIENT_EMAIL_CONFIGURATION_TYPE, \ - KIT_EMAIL_HOUR_CONFIGURATION_TYPE, KIT_EMAIL_DAY_OF_WEEK_CONFIGURATION_TYPE, REDCAP_TOKEN_CONFIGURATION_TYPE, \ - REDCAP_BASE_URL_CONFIGURATION_TYPE, KIT_DAILY_EMAIL_DAYS_PERIOD_TYPE, KIT_DAILY_EMAIL_TIME_FORMAT_TYPE, \ - RED_CAP_LANGUAGE_4_FIELD_TYPE, RED_CAP_LANGUAGE_3_FIELD_TYPE, RED_CAP_LANGUAGE_2_FIELD_TYPE, \ - RED_CAP_LANGUAGE_1_FIELD_TYPE, RED_CAP_MPOWER_ID_FIELD_TYPE, RED_CAP_DEAD_FIELD_TYPE, RED_CAP_SEX_FIELD_TYPE, \ - RED_CAP_DATE_BORN_FIELD_TYPE, RED_CAP_ND_NUMBER_FIELD_TYPE, RED_CAP_VIRUS_FIELD_TYPE, \ - RED_CAP_SAMPLE_DATE_FIELD_TYPE, VIRUS_EMAIL_HOUR_CONFIGURATION_TYPE, VISIT_SHOW_VISIT_NUMBER_FROM_ZERO, \ - RED_CAP_KIT_ID_FIELD_TYPE, RED_CAP_IGA_STATUS_FIELD_TYPE, RED_CAP_IGG_STATUS_FIELD_TYPE, DEFAULT_FROM_EMAIL, \ - IMPORTER_USER, IMPORT_APPOINTMENT_TYPE, NEXMO_API_KEY, NEXMO_API_SECRET, NEXMO_DEFAULT_FROM, \ - LOGIN_PAGE_BACKGROUND_IMAGE, VALUE_TYPE_TEXT, VALUE_TYPE_PASSWORD +from web.models.constants import ( + CANCELLED_APPOINTMENT_COLOR_CONFIGURATION_TYPE, + NO_SHOW_APPOINTMENT_COLOR_CONFIGURATION_TYPE, + KIT_RECIPIENT_EMAIL_CONFIGURATION_TYPE, + KIT_EMAIL_HOUR_CONFIGURATION_TYPE, + KIT_EMAIL_DAY_OF_WEEK_CONFIGURATION_TYPE, + REDCAP_TOKEN_CONFIGURATION_TYPE, + REDCAP_BASE_URL_CONFIGURATION_TYPE, + KIT_DAILY_EMAIL_DAYS_PERIOD_TYPE, + KIT_DAILY_EMAIL_TIME_FORMAT_TYPE, + RED_CAP_LANGUAGE_4_FIELD_TYPE, + RED_CAP_LANGUAGE_3_FIELD_TYPE, + RED_CAP_LANGUAGE_2_FIELD_TYPE, + RED_CAP_LANGUAGE_1_FIELD_TYPE, + RED_CAP_MPOWER_ID_FIELD_TYPE, + RED_CAP_DEAD_FIELD_TYPE, + RED_CAP_SEX_FIELD_TYPE, + RED_CAP_DATE_BORN_FIELD_TYPE, + RED_CAP_ND_NUMBER_FIELD_TYPE, + RED_CAP_VIRUS_FIELD_TYPE, + RED_CAP_SAMPLE_DATE_FIELD_TYPE, + VIRUS_EMAIL_HOUR_CONFIGURATION_TYPE, + VISIT_SHOW_VISIT_NUMBER_FROM_ZERO, + RED_CAP_KIT_ID_FIELD_TYPE, + RED_CAP_IGA_STATUS_FIELD_TYPE, + RED_CAP_IGG_STATUS_FIELD_TYPE, + DEFAULT_FROM_EMAIL, + IMPORTER_USER, + IMPORT_APPOINTMENT_TYPE, + NEXMO_API_KEY, + NEXMO_API_SECRET, + NEXMO_DEFAULT_FROM, + LOGIN_PAGE_BACKGROUND_IMAGE, + VALUE_TYPE_TEXT, + VALUE_TYPE_PASSWORD, +) from web.models.study_subject_list import SUBJECT_LIST_GENERIC, SUBJECT_LIST_REQUIRE_CONTACT, SUBJECT_LIST_NO_VISIT -from web.models.study_visit_list import VISIT_LIST_EXCEEDED_TIME, VISIT_LIST_APPROACHING_WITHOUT_APPOINTMENTS, \ - VISIT_LIST_UNFINISHED, VISIT_LIST_APPROACHING_FOR_MAIL_CONTACT, VISIT_LIST_MISSING_APPOINTMENTS +from web.models.study_visit_list import ( + VISIT_LIST_EXCEEDED_TIME, + VISIT_LIST_APPROACHING_WITHOUT_APPOINTMENTS, + VISIT_LIST_UNFINISHED, + VISIT_LIST_APPROACHING_FOR_MAIL_CONTACT, + VISIT_LIST_MISSING_APPOINTMENTS, +) def configuration_item_color_fields__0025(apps, schema_editor): @@ -53,20 +83,26 @@ def create_item(apps, type, value, name, value_type: str = VALUE_TYPE_TEXT): def configuration_items__0032(apps, schema_editor): - create_item(apps, KIT_RECIPIENT_EMAIL_CONFIGURATION_TYPE, "kit.receipents@lu;with.semicolon@separation.lu", - "Recipients of kit requests email") - create_item(apps, KIT_EMAIL_HOUR_CONFIGURATION_TYPE, "17:00", - "At what time kit request emails should be sent") - create_item(apps, KIT_EMAIL_DAY_OF_WEEK_CONFIGURATION_TYPE, "FRIDAY", - "At what weekday kit request emails should be sent") + create_item( + apps, + KIT_RECIPIENT_EMAIL_CONFIGURATION_TYPE, + "kit.receipents@lu;with.semicolon@separation.lu", + "Recipients of kit requests email", + ) + create_item(apps, KIT_EMAIL_HOUR_CONFIGURATION_TYPE, "17:00", "At what time kit request emails should be sent") + create_item( + apps, KIT_EMAIL_DAY_OF_WEEK_CONFIGURATION_TYPE, "FRIDAY", "At what weekday kit request emails should be sent" + ) def configuration_item_color_fields__0050(apps, schema_editor): - create_item(apps, REDCAP_TOKEN_CONFIGURATION_TYPE, '', 'API Token for RED Cap integration', - VALUE_TYPE_PASSWORD) # 0182 + create_item( + apps, REDCAP_TOKEN_CONFIGURATION_TYPE, "", "API Token for RED Cap integration", VALUE_TYPE_PASSWORD + ) # 0182 - create_item(apps, REDCAP_BASE_URL_CONFIGURATION_TYPE, '', - "Base url of RED Cap (ie 'https://pd-redcap.uni.lu/redcap/')") + create_item( + apps, REDCAP_BASE_URL_CONFIGURATION_TYPE, "", "Base url of RED Cap (ie 'https://pd-redcap.uni.lu/redcap/')" + ) def create_default_study__0071__072__0076__0077__0079__0080__081__0085__0086__0140(apps, schema_editor): @@ -460,7 +496,9 @@ def create_default_study__0071__072__0076__0077__0079__0080__081__0085__0086__01 approaching_post_subject_columns.first_name = True approaching_post_subject_columns.last_name = True approaching_post_subject_columns.languages = False - approaching_post_subject_columns.default_written_communication_langua0106_approaching_post_mail_list_updatege = False + approaching_post_subject_columns.default_written_communication_langua0106_approaching_post_mail_list_updatege = ( + False + ) approaching_post_subject_columns.phone_number = False approaching_post_subject_columns.phone_number_2 = False approaching_post_subject_columns.phone_number_3 = False @@ -570,7 +608,7 @@ def create_default_study__0071__072__0076__0077__0079__0080__081__0085__0086__01 entry.filename = "" entry.run_at_times = "23:45" - entry.delimiter = ';' + entry.delimiter = ";" entry.save() SubjectImportData = apps.get_model("web", "SubjectImportData") @@ -580,1343 +618,2367 @@ def create_default_study__0071__072__0076__0077__0079__0080__081__0085__0086__01 entry.filename = "" entry.run_at_times = "23:45" - entry.delimiter = ';' + entry.delimiter = ";" entry.save() def configuration_items__0158(apps, schema_editor): - create_item(apps, KIT_DAILY_EMAIL_DAYS_PERIOD_TYPE, "7", - "Number of days with sample kits included in email") - create_item(apps, KIT_DAILY_EMAIL_TIME_FORMAT_TYPE, "%Y-%m-%d %H:%M", - "Appointment date format used in sample kits email") + create_item(apps, KIT_DAILY_EMAIL_DAYS_PERIOD_TYPE, "7", "Number of days with sample kits included in email") + create_item( + apps, KIT_DAILY_EMAIL_TIME_FORMAT_TYPE, "%Y-%m-%d %H:%M", "Appointment date format used in sample kits email" + ) def configuration_items__0159(apps, schema_editor): - create_item(apps, RED_CAP_LANGUAGE_4_FIELD_TYPE, "dm_language_4", - "Redcap field for language 4") - create_item(apps, RED_CAP_LANGUAGE_3_FIELD_TYPE, "dm_language_3", - "Redcap field for language 3") - create_item(apps, RED_CAP_LANGUAGE_2_FIELD_TYPE, "dm_language_2", - "Redcap field for language 2") - create_item(apps, RED_CAP_LANGUAGE_1_FIELD_TYPE, "dm_language_1", - "Redcap field for language 1") - create_item(apps, RED_CAP_MPOWER_ID_FIELD_TYPE, "dm_mpowerid", - "Redcap field for mPowerId") - create_item(apps, RED_CAP_DEAD_FIELD_TYPE, "dm_death", - "Redcap field for deceased") - create_item(apps, RED_CAP_SEX_FIELD_TYPE, "cdisc_dm_sex", - "Redcap field for sex") - create_item(apps, RED_CAP_DATE_BORN_FIELD_TYPE, "cdisc_dm_brthdtc", - "Redcap field for birth date") - create_item(apps, RED_CAP_ND_NUMBER_FIELD_TYPE, "cdisc_dm_usubjd", - "Redcap field for subject id") - create_item(apps, RED_CAP_VIRUS_FIELD_TYPE, "", - "Redcap field for virus test result") + create_item(apps, RED_CAP_LANGUAGE_4_FIELD_TYPE, "dm_language_4", "Redcap field for language 4") + create_item(apps, RED_CAP_LANGUAGE_3_FIELD_TYPE, "dm_language_3", "Redcap field for language 3") + create_item(apps, RED_CAP_LANGUAGE_2_FIELD_TYPE, "dm_language_2", "Redcap field for language 2") + create_item(apps, RED_CAP_LANGUAGE_1_FIELD_TYPE, "dm_language_1", "Redcap field for language 1") + create_item(apps, RED_CAP_MPOWER_ID_FIELD_TYPE, "dm_mpowerid", "Redcap field for mPowerId") + create_item(apps, RED_CAP_DEAD_FIELD_TYPE, "dm_death", "Redcap field for deceased") + create_item(apps, RED_CAP_SEX_FIELD_TYPE, "cdisc_dm_sex", "Redcap field for sex") + create_item(apps, RED_CAP_DATE_BORN_FIELD_TYPE, "cdisc_dm_brthdtc", "Redcap field for birth date") + create_item(apps, RED_CAP_ND_NUMBER_FIELD_TYPE, "cdisc_dm_usubjd", "Redcap field for subject id") + create_item(apps, RED_CAP_VIRUS_FIELD_TYPE, "", "Redcap field for virus test result") def configuration_items__0164(apps, schema_editor): - create_item(apps, RED_CAP_SAMPLE_DATE_FIELD_TYPE, "", - "Redcap field for sample date in the visit") + create_item(apps, RED_CAP_SAMPLE_DATE_FIELD_TYPE, "", "Redcap field for sample date in the visit") def configuration_items__0165(apps, schema_editor): - create_item(apps, VIRUS_EMAIL_HOUR_CONFIGURATION_TYPE, "", - "At what time a day email with updates about virus tests should be sent") + create_item( + apps, + VIRUS_EMAIL_HOUR_CONFIGURATION_TYPE, + "", + "At what time a day email with updates about virus tests should be sent", + ) def configuration_items__0166(apps, schema_editor): - create_item(apps, VISIT_SHOW_VISIT_NUMBER_FROM_ZERO, False, - "Should visit numbers be shown starting in 0") + create_item(apps, VISIT_SHOW_VISIT_NUMBER_FROM_ZERO, False, "Should visit numbers be shown starting in 0") def configuration_items__0168(apps, schema_editor): - create_item(apps, RED_CAP_KIT_ID_FIELD_TYPE, "", - "Redcap field for sample kit id in the visit") + create_item(apps, RED_CAP_KIT_ID_FIELD_TYPE, "", "Redcap field for sample kit id in the visit") def configuration_items__0171(apps, schema_editor): - create_item(apps, RED_CAP_IGA_STATUS_FIELD_TYPE, "", - "Redcap field for IgA status in the visit") - create_item(apps, RED_CAP_IGG_STATUS_FIELD_TYPE, "", - "Redcap field for IgG status in the visit") + create_item(apps, RED_CAP_IGA_STATUS_FIELD_TYPE, "", "Redcap field for IgA status in the visit") + create_item(apps, RED_CAP_IGG_STATUS_FIELD_TYPE, "", "Redcap field for IgG status in the visit") def configuration_items__0176(apps, schema_editor): - create_item(apps, DEFAULT_FROM_EMAIL, '', - "Default email address used in the from field when sending emails") + create_item(apps, DEFAULT_FROM_EMAIL, "", "Default email address used in the from field when sending emails") - create_item(apps, IMPORTER_USER, '', "User that should be assigned to changes introduced by importer") + create_item(apps, IMPORTER_USER, "", "User that should be assigned to changes introduced by importer") - create_item(apps, IMPORT_APPOINTMENT_TYPE, 'SAMPLES', "Type of appointment assigned to imported visits") + create_item(apps, IMPORT_APPOINTMENT_TYPE, "SAMPLES", "Type of appointment assigned to imported visits") - create_item(apps, NEXMO_API_KEY, '', "NEXMO API KEY", VALUE_TYPE_PASSWORD) # 0182 + create_item(apps, NEXMO_API_KEY, "", "NEXMO API KEY", VALUE_TYPE_PASSWORD) # 0182 - create_item(apps, NEXMO_API_SECRET, '', "NEXMO API SECRET", VALUE_TYPE_PASSWORD) # 0182 + create_item(apps, NEXMO_API_SECRET, "", "NEXMO API SECRET", VALUE_TYPE_PASSWORD) # 0182 - create_item(apps, NEXMO_DEFAULT_FROM, 'SMASCH', "The sender of the message from NEXMO (phone number or text)") + create_item(apps, NEXMO_DEFAULT_FROM, "SMASCH", "The sender of the message from NEXMO (phone number or text)") - create_item(apps, LOGIN_PAGE_BACKGROUND_IMAGE, "background.jpg", - "Path to a static file containing background image, used in login.html") + create_item( + apps, + LOGIN_PAGE_BACKGROUND_IMAGE, + "background.jpg", + "Path to a static file containing background image, used in login.html", + ) class Migration(migrations.Migration): - replaces = [('web', '0001_initial'), ('web', '0002_auto_20170201_1624'), ('web', '0003_auto_20170206_1249'), - ('web', '0004_auto_20170207_1400'), ('web', '0005_auto_20170207_1432'), - ('web', '0006_auto_20170207_1436'), ('web', '0007_auto_20170207_1537'), - ('web', '0008_auto_20170207_1604'), ('web', '0009_remove_subject_visit_count'), - ('web', '0010_remove_subject_main_pseudonym'), ('web', '0011_auto_20170208_1208'), - ('web', '0012_auto_20170208_1414'), ('web', '0013_auto_20170208_1415'), - ('web', '0014_auto_20170220_0812'), ('web', '0015_auto_20170228_1651'), - ('web', '0016_auto_20170228_1652'), ('web', '0017_auto_20170301_1600'), - ('web', '0018_auto_20170307_1602'), ('web', '0019_auto_20170309_1538'), - ('web', '0020_auto_20170309_1545'), ('web', '0021_auto_20170317_0738'), - ('web', '0022_auto_20170403_0904'), ('web', '0023_auto_20170404_1047'), - ('web', '0024_configurationitem'), ('web', '0025_configurationitem_calendar_items'), - ('web', '0026_location_color'), ('web', '0027_auto_20170404_1505'), - ('web', '0028_location_color_of_flying_team'), ('web', '0029_auto_20170404_1616'), - ('web', '0030_subject_information_sent'), ('web', '0031_appointment_post_mail_sent'), - ('web', '0032_configurationitem_email_items'), ('web', '0033_auto_20170406_1146'), - ('web', '0034_mail_templates'), ('web', '0035_screening_number'), - ('web', '0036_year_of_diagnosis_default'), ('web', '0037_appointment_types_descriptions_changes'), - ('web', '0038_subject_pd_family_allow_null'), ('web', '0039_pd_family_default_unknown'), - ('web', '0040_daily_planning'), ('web', '0041_language_windows_locale_name'), - ('web', '0042_auto_20170613_1634'), ('web', '0043_auto_20170904_1240'), - ('web', '0044_auto_20170904_1602'), ('web', '0045_holiday_info'), ('web', '0046_subject_flying_team'), - ('web', '0047_subject_flying_team_from_annotation'), ('web', '0048_auto_20170911_1504'), - ('web', '0049_auto_20170912_1438'), ('web', '0050_configurationitem_redcap_items'), - ('web', '0051_missingsubject'), ('web', '0052_auto_20170913_0943'), ('web', '0053_auto_20170913_0948'), - ('web', '0054_remove_inconsistentsubject_ignore'), ('web', '0055_auto_20170925_0905'), - ('web', '0056_visit_visit_number'), ('web', '0057_update_visit_number_for_existing_visits'), - ('web', '0058_country'), ('web', '0059_subject_country_2'), ('web', '0060_remove_subject_country'), - ('web', '0061_remove_subject_country'), ('web', '0062_subject_resign_reason'), - ('web', '0063_auto_20171120_1429'), ('web', '0064_auto_20171127_0954'), - ('web', '0065_auto_20171127_0957'), ('web', '0066_subject'), ('web', '0067_subject'), - ('web', '0068_remove_studysubject_dead'), ('web', '0069_remove_studysubject_sex'), - ('web', '0070_auto_20171128_1124'), ('web', '0071_auto_20171130_1607'), - ('web', '0072_auto_20171201_1013'), ('web', '0073_auto_20171201_1034'), - ('web', '0074_auto_20171201_1038'), ('web', '0075_auto_20171201_1252'), - ('web', '0076_studysubjectlist'), ('web', '0077_subjectcolumns'), ('web', '0078_auto_20171204_1040'), - ('web', '0079_auto_20171204_1235'), ('web', '0080_auto_20171204_1341'), - ('web', '0081_studysubjectlist_last_contact_attempt'), ('web', '0082_studysubjectlist_visits'), - ('web', '0083_auto_20171205_1251'), ('web', '0084_auto_20171205_1640'), - ('web', '0085_auto_20171205_1650'), ('web', '0086_unfinished_visit_list'), - ('web', '0087_approaching_visit_wihout_appointment_list'), - ('web', '0088_appointmentcolumns_appointmentlist'), ('web', '0089_unfinshed_appointment_list'), - ('web', '0090_vouchertype_vouchertypeprice'), ('web', '0091_auto_20171208_1312'), - ('web', '0092_voucher'), ('web', '0093_auto_20171208_1508'), ('web', '0094_auto_20171208_1508'), - ('web', '0095_auto_20171208_1509'), ('web', '0096_auto_20171208_1509'), - ('web', '0097_auto_20171211_1616'), ('web', '0098_workerstudyrole'), ('web', '0099_auto_20171213_1115'), - ('web', '0100_auto_20171213_1140'), ('web', '0101_auto_20171214_1047'), - ('web', '0102_studynotificationparameters_subject_voucher_expiry_visible'), - ('web', '0103_auto_20180214_1026'), ('web', '0104_contact_required_list_update'), - ('web', '0105_unfinished_appointments_list_update'), ('web', '0106_approaching_post_mail_list_update'), - ('web', '0107_exceeded_visit_time_list_update'), ('web', '0108_unfinished_visit_list_update'), - ('web', '0109_missing_appointment_list_update'), ('web', '0110_auto_20180601_0754'), - ('web', '0111_auto_20180601_1318'), ('web', '0112_auto_20180604_1021'), - ('web', '0113_auto_20180608_1258'), ('web', '0114_auto_20180611_0950'), - ('web', '0115_auto_20180611_0950'), ('web', '0116_auto_20180611_1346'), - ('web', '0117_auto_20180717_1434'), ('web', '0118_voucher_activity_type'), - ('web', '0119_auto_20181002_0908'), ('web', '0120_holiday_kind'), ('web', '0121_auto_20181003_1256'), - ('web', '0122_remove_worker_appointments'), ('web', '0119_auto_20181015_1324'), - ('web', '0123_merge_20181017_1532'), ('web', '0124_auto_20181017_1532'), - ('web', '0119_auto_20181024_1158'), ('web', '0120_study_nd_number_study_subject_regex'), - ('web', '0121_auto_20181024_1859'), ('web', '0125_merge_20181025_0745'), - ('web', '0126_auto_20181030_1733'), ('web', '0127_auto_20181031_0959'), - ('web', '0128_studycolumns_excluded'), ('web', '0129_auto_20181031_1348'), - ('web', '0130_study_visits_to_show_in_subject_list'), - ('web', '0131_study_default_voucher_expiration_in_months'), - ('web', '0132_study_default_visit_duration_in_months'), ('web', '0133_auto_20181113_1550'), - ('web', '0132_workerstudyrole_permissions'), ('web', '0134_merge_20181211_1542'), - ('web', '0132_worker_comment'), ('web', '0135_merge_20190108_1336'), - ('web', '0135_merge_20181212_1333'), ('web', '0136_merge_20190109_1041'), - ('web', '0137_auto_20190321_1024'), ('web', '0138_auto_20190321_1111'), - ('web', '0139_auto_20190321_1400'), ('web', '0140_auto_20190528_0953'), - ('web', '0141_auto_20200319_1040'), ('web', '0142_provenance'), ('web', '0143_auto_20200319_1121'), - ('web', '0144_auto_20200319_1221'), ('web', '0145_auto_20200319_1404'), - ('web', '0146_auto_20200319_1446'), ('web', '0147_auto_20200320_0931'), - ('web', '0148_auto_20200319_1301'), ('web', '0149_auto_20200319_1415'), - ('web', '0150_auto_20200319_1446'), ('web', '0151_auto_20200319_1518'), - ('web', '0152_add_permissions_to_existing_workers'), ('web', '0153_auto_20200320_0932'), - ('web', '0154_add_permission_to_existing_workers'), ('web', '0155_auto_20200406_1144'), - ('web', '0156_auto_20200406_1207'), ('web', '0157_auto_20200414_0909'), - ('web', '0158_configurationitem_email_items'), ('web', '0159_configurationitem_email_items_for_redcap'), - ('web', '0160_auto_20200415_1101'), ('web', '0161_auto_20200416_0736'), - ('web', '0162_auto_20200416_1212'), ('web', '0163_study_redcap_first_visit_number'), - ('web', '0164_configurationitem_email_items_for_redcap'), ('web', '0165_configurationitem_email_virus'), - ('web', '0166_auto_20200423_1457'), ('web', '0167_auto_20200428_1110'), - ('web', '0168_rename_radcap_field'), ('web', '0169_auto_20200525_1123'), - ('web', '0170_auto_20200525_1126'), ('web', '0171_configurationitem_serology'), - ('web', '0172_auto_20200525_1246'), ('web', '0173_auto_20201105_1142'), - ('web', '0174_auto_20201105_1157'), ('web', '0175_auto_20201109_1404'), - ('web', '0176_configurationitem_local_setting_clean'), - ('web', '0177_customstudysubjectfield_customstudysubjectvalue'), ('web', '0178_auto_20201116_1250'), - ('web', '0177_auto_20201116_1508_squashed_0180_auto_20201117_0838'), - ('web', '0179_merge_20201117_1048'), ('web', '0180_auto_20201120_1554'), - ('web', '0181_worker_privacy_notice_accepted'), ('web', '0182_auto_20201126_1042'), - ('web', '0183_auto_20201126_1154'), ('web', '0184_visitimportdata'), - ('web', '0185_visitimportdata_migration'), ('web', '0186_auto_20201127_1003'), - ('web', '0187_auto_20201130_1224'), ('web', '0188_studysubject_virus_test_1_result'), - ('web', '0189_remove_studysubject_virus_test_1'), ('web', '0190_remove_study_related_fields'), - ('web', '0191_auto_20201201_1033'), ('web', '0192_auto_20210224_1703')] + replaces = [ + ("web", "0001_initial"), + ("web", "0002_auto_20170201_1624"), + ("web", "0003_auto_20170206_1249"), + ("web", "0004_auto_20170207_1400"), + ("web", "0005_auto_20170207_1432"), + ("web", "0006_auto_20170207_1436"), + ("web", "0007_auto_20170207_1537"), + ("web", "0008_auto_20170207_1604"), + ("web", "0009_remove_subject_visit_count"), + ("web", "0010_remove_subject_main_pseudonym"), + ("web", "0011_auto_20170208_1208"), + ("web", "0012_auto_20170208_1414"), + ("web", "0013_auto_20170208_1415"), + ("web", "0014_auto_20170220_0812"), + ("web", "0015_auto_20170228_1651"), + ("web", "0016_auto_20170228_1652"), + ("web", "0017_auto_20170301_1600"), + ("web", "0018_auto_20170307_1602"), + ("web", "0019_auto_20170309_1538"), + ("web", "0020_auto_20170309_1545"), + ("web", "0021_auto_20170317_0738"), + ("web", "0022_auto_20170403_0904"), + ("web", "0023_auto_20170404_1047"), + ("web", "0024_configurationitem"), + ("web", "0025_configurationitem_calendar_items"), + ("web", "0026_location_color"), + ("web", "0027_auto_20170404_1505"), + ("web", "0028_location_color_of_flying_team"), + ("web", "0029_auto_20170404_1616"), + ("web", "0030_subject_information_sent"), + ("web", "0031_appointment_post_mail_sent"), + ("web", "0032_configurationitem_email_items"), + ("web", "0033_auto_20170406_1146"), + ("web", "0034_mail_templates"), + ("web", "0035_screening_number"), + ("web", "0036_year_of_diagnosis_default"), + ("web", "0037_appointment_types_descriptions_changes"), + ("web", "0038_subject_pd_family_allow_null"), + ("web", "0039_pd_family_default_unknown"), + ("web", "0040_daily_planning"), + ("web", "0041_language_windows_locale_name"), + ("web", "0042_auto_20170613_1634"), + ("web", "0043_auto_20170904_1240"), + ("web", "0044_auto_20170904_1602"), + ("web", "0045_holiday_info"), + ("web", "0046_subject_flying_team"), + ("web", "0047_subject_flying_team_from_annotation"), + ("web", "0048_auto_20170911_1504"), + ("web", "0049_auto_20170912_1438"), + ("web", "0050_configurationitem_redcap_items"), + ("web", "0051_missingsubject"), + ("web", "0052_auto_20170913_0943"), + ("web", "0053_auto_20170913_0948"), + ("web", "0054_remove_inconsistentsubject_ignore"), + ("web", "0055_auto_20170925_0905"), + ("web", "0056_visit_visit_number"), + ("web", "0057_update_visit_number_for_existing_visits"), + ("web", "0058_country"), + ("web", "0059_subject_country_2"), + ("web", "0060_remove_subject_country"), + ("web", "0061_remove_subject_country"), + ("web", "0062_subject_resign_reason"), + ("web", "0063_auto_20171120_1429"), + ("web", "0064_auto_20171127_0954"), + ("web", "0065_auto_20171127_0957"), + ("web", "0066_subject"), + ("web", "0067_subject"), + ("web", "0068_remove_studysubject_dead"), + ("web", "0069_remove_studysubject_sex"), + ("web", "0070_auto_20171128_1124"), + ("web", "0071_auto_20171130_1607"), + ("web", "0072_auto_20171201_1013"), + ("web", "0073_auto_20171201_1034"), + ("web", "0074_auto_20171201_1038"), + ("web", "0075_auto_20171201_1252"), + ("web", "0076_studysubjectlist"), + ("web", "0077_subjectcolumns"), + ("web", "0078_auto_20171204_1040"), + ("web", "0079_auto_20171204_1235"), + ("web", "0080_auto_20171204_1341"), + ("web", "0081_studysubjectlist_last_contact_attempt"), + ("web", "0082_studysubjectlist_visits"), + ("web", "0083_auto_20171205_1251"), + ("web", "0084_auto_20171205_1640"), + ("web", "0085_auto_20171205_1650"), + ("web", "0086_unfinished_visit_list"), + ("web", "0087_approaching_visit_wihout_appointment_list"), + ("web", "0088_appointmentcolumns_appointmentlist"), + ("web", "0089_unfinshed_appointment_list"), + ("web", "0090_vouchertype_vouchertypeprice"), + ("web", "0091_auto_20171208_1312"), + ("web", "0092_voucher"), + ("web", "0093_auto_20171208_1508"), + ("web", "0094_auto_20171208_1508"), + ("web", "0095_auto_20171208_1509"), + ("web", "0096_auto_20171208_1509"), + ("web", "0097_auto_20171211_1616"), + ("web", "0098_workerstudyrole"), + ("web", "0099_auto_20171213_1115"), + ("web", "0100_auto_20171213_1140"), + ("web", "0101_auto_20171214_1047"), + ("web", "0102_studynotificationparameters_subject_voucher_expiry_visible"), + ("web", "0103_auto_20180214_1026"), + ("web", "0104_contact_required_list_update"), + ("web", "0105_unfinished_appointments_list_update"), + ("web", "0106_approaching_post_mail_list_update"), + ("web", "0107_exceeded_visit_time_list_update"), + ("web", "0108_unfinished_visit_list_update"), + ("web", "0109_missing_appointment_list_update"), + ("web", "0110_auto_20180601_0754"), + ("web", "0111_auto_20180601_1318"), + ("web", "0112_auto_20180604_1021"), + ("web", "0113_auto_20180608_1258"), + ("web", "0114_auto_20180611_0950"), + ("web", "0115_auto_20180611_0950"), + ("web", "0116_auto_20180611_1346"), + ("web", "0117_auto_20180717_1434"), + ("web", "0118_voucher_activity_type"), + ("web", "0119_auto_20181002_0908"), + ("web", "0120_holiday_kind"), + ("web", "0121_auto_20181003_1256"), + ("web", "0122_remove_worker_appointments"), + ("web", "0119_auto_20181015_1324"), + ("web", "0123_merge_20181017_1532"), + ("web", "0124_auto_20181017_1532"), + ("web", "0119_auto_20181024_1158"), + ("web", "0120_study_nd_number_study_subject_regex"), + ("web", "0121_auto_20181024_1859"), + ("web", "0125_merge_20181025_0745"), + ("web", "0126_auto_20181030_1733"), + ("web", "0127_auto_20181031_0959"), + ("web", "0128_studycolumns_excluded"), + ("web", "0129_auto_20181031_1348"), + ("web", "0130_study_visits_to_show_in_subject_list"), + ("web", "0131_study_default_voucher_expiration_in_months"), + ("web", "0132_study_default_visit_duration_in_months"), + ("web", "0133_auto_20181113_1550"), + ("web", "0132_workerstudyrole_permissions"), + ("web", "0134_merge_20181211_1542"), + ("web", "0132_worker_comment"), + ("web", "0135_merge_20190108_1336"), + ("web", "0135_merge_20181212_1333"), + ("web", "0136_merge_20190109_1041"), + ("web", "0137_auto_20190321_1024"), + ("web", "0138_auto_20190321_1111"), + ("web", "0139_auto_20190321_1400"), + ("web", "0140_auto_20190528_0953"), + ("web", "0141_auto_20200319_1040"), + ("web", "0142_provenance"), + ("web", "0143_auto_20200319_1121"), + ("web", "0144_auto_20200319_1221"), + ("web", "0145_auto_20200319_1404"), + ("web", "0146_auto_20200319_1446"), + ("web", "0147_auto_20200320_0931"), + ("web", "0148_auto_20200319_1301"), + ("web", "0149_auto_20200319_1415"), + ("web", "0150_auto_20200319_1446"), + ("web", "0151_auto_20200319_1518"), + ("web", "0152_add_permissions_to_existing_workers"), + ("web", "0153_auto_20200320_0932"), + ("web", "0154_add_permission_to_existing_workers"), + ("web", "0155_auto_20200406_1144"), + ("web", "0156_auto_20200406_1207"), + ("web", "0157_auto_20200414_0909"), + ("web", "0158_configurationitem_email_items"), + ("web", "0159_configurationitem_email_items_for_redcap"), + ("web", "0160_auto_20200415_1101"), + ("web", "0161_auto_20200416_0736"), + ("web", "0162_auto_20200416_1212"), + ("web", "0163_study_redcap_first_visit_number"), + ("web", "0164_configurationitem_email_items_for_redcap"), + ("web", "0165_configurationitem_email_virus"), + ("web", "0166_auto_20200423_1457"), + ("web", "0167_auto_20200428_1110"), + ("web", "0168_rename_radcap_field"), + ("web", "0169_auto_20200525_1123"), + ("web", "0170_auto_20200525_1126"), + ("web", "0171_configurationitem_serology"), + ("web", "0172_auto_20200525_1246"), + ("web", "0173_auto_20201105_1142"), + ("web", "0174_auto_20201105_1157"), + ("web", "0175_auto_20201109_1404"), + ("web", "0176_configurationitem_local_setting_clean"), + ("web", "0177_customstudysubjectfield_customstudysubjectvalue"), + ("web", "0178_auto_20201116_1250"), + ("web", "0177_auto_20201116_1508_squashed_0180_auto_20201117_0838"), + ("web", "0179_merge_20201117_1048"), + ("web", "0180_auto_20201120_1554"), + ("web", "0181_worker_privacy_notice_accepted"), + ("web", "0182_auto_20201126_1042"), + ("web", "0183_auto_20201126_1154"), + ("web", "0184_visitimportdata"), + ("web", "0185_visitimportdata_migration"), + ("web", "0186_auto_20201127_1003"), + ("web", "0187_auto_20201130_1224"), + ("web", "0188_studysubject_virus_test_1_result"), + ("web", "0189_remove_studysubject_virus_test_1"), + ("web", "0190_remove_study_related_fields"), + ("web", "0191_auto_20201201_1033"), + ("web", "0192_auto_20210224_1703"), + ] initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('auth', '0008_alter_user_username_max_length'), + ("auth", "0008_alter_user_username_max_length"), ] operations = [ migrations.CreateModel( - name='Country', + name="Country", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=50)), - ('order', models.IntegerField(default=0)), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("name", models.CharField(max_length=50)), + ("order", models.IntegerField(default=0)), ], options={ - 'ordering': ['order'], + "ordering": ["order"], }, ), migrations.CreateModel( - name='FlyingTeam', + name="FlyingTeam", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('place', models.CharField(max_length=255, verbose_name='Place')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("place", models.CharField(max_length=255, verbose_name="Place")), ], ), migrations.CreateModel( - name='Language', + name="Language", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=20)), - ('image', models.ImageField(upload_to='')), - ('locale', models.CharField( - choices=[('af_ZA', 'af_ZA'), ('am_ET', 'am_ET'), ('ar_AE', 'ar_AE'), ('ar_BH', 'ar_BH'), - ('ar_DZ', 'ar_DZ'), ('ar_EG', 'ar_EG'), ('ar_IQ', 'ar_IQ'), ('ar_JO', 'ar_JO'), - ('ar_KW', 'ar_KW'), ('ar_LB', 'ar_LB'), ('ar_LY', 'ar_LY'), ('ar_MA', 'ar_MA'), - ('ar_OM', 'ar_OM'), ('ar_QA', 'ar_QA'), ('ar_SA', 'ar_SA'), ('ar_SY', 'ar_SY'), - ('ar_TN', 'ar_TN'), ('ar_YE', 'ar_YE'), ('arn_CL', 'arn_CL'), ('as_IN', 'as_IN'), - ('az_AZ', 'az_AZ'), ('az_AZ', 'az_AZ'), ('ba_RU', 'ba_RU'), ('be_BY', 'be_BY'), - ('bg_BG', 'bg_BG'), ('bn_IN', 'bn_IN'), ('bo_BT', 'bo_BT'), ('bo_CN', 'bo_CN'), - ('br_FR', 'br_FR'), ('bs_BA', 'bs_BA'), ('bs_BA', 'bs_BA'), ('ca_ES', 'ca_ES'), - ('co_FR', 'co_FR'), ('cs_CZ', 'cs_CZ'), ('cy_GB', 'cy_GB'), ('da_DK', 'da_DK'), - ('de_AT', 'de_AT'), ('de_CH', 'de_CH'), ('de_DE', 'de_DE'), ('de_LI', 'de_LI'), - ('de_LU', 'de_LU'), ('div_MV', 'div_MV'), ('dsb_DE', 'dsb_DE'), ('el_GR', 'el_GR'), - ('en_AU', 'en_AU'), ('en_BZ', 'en_BZ'), ('en_CA', 'en_CA'), ('en_CB', 'en_CB'), - ('en_GB', 'en_GB'), ('en_IE', 'en_IE'), ('en_IN', 'en_IN'), ('en_IN', 'en_IN'), - ('en_JA', 'en_JA'), ('en_MY', 'en_MY'), ('en_NZ', 'en_NZ'), ('en_PH', 'en_PH'), - ('en_TT', 'en_TT'), ('en_US', 'en_US'), ('en_ZA', 'en_ZA'), ('en_ZW', 'en_ZW'), - ('es_AR', 'es_AR'), ('es_BO', 'es_BO'), ('es_CL', 'es_CL'), ('es_CO', 'es_CO'), - ('es_CR', 'es_CR'), ('es_DO', 'es_DO'), ('es_EC', 'es_EC'), ('es_ES', 'es_ES'), - ('es_ES', 'es_ES'), ('es_GT', 'es_GT'), ('es_HN', 'es_HN'), ('es_MX', 'es_MX'), - ('es_NI', 'es_NI'), ('es_PA', 'es_PA'), ('es_PE', 'es_PE'), ('es_PR', 'es_PR'), - ('es_PY', 'es_PY'), ('es_SV', 'es_SV'), ('es_UR', 'es_UR'), ('es_US', 'es_US'), - ('es_VE', 'es_VE'), ('et_EE', 'et_EE'), ('eu_ES', 'eu_ES'), ('fa_IR', 'fa_IR'), - ('fi_FI', 'fi_FI'), ('fil_PH', 'fil_PH'), ('fo_FO', 'fo_FO'), ('fr_BE', 'fr_BE'), - ('fr_CA', 'fr_CA'), ('fr_CH', 'fr_CH'), ('fr_FR', 'fr_FR'), ('fr_LU', 'fr_LU'), - ('fr_MC', 'fr_MC'), ('fy_NL', 'fy_NL'), ('ga_IE', 'ga_IE'), ('gbz_AF', 'gbz_AF'), - ('gl_ES', 'gl_ES'), ('gsw_FR', 'gsw_FR'), ('gu_IN', 'gu_IN'), ('ha_NG', 'ha_NG'), - ('he_IL', 'he_IL'), ('hi_IN', 'hi_IN'), ('hr_BA', 'hr_BA'), ('hr_HR', 'hr_HR'), - ('hu_HU', 'hu_HU'), ('hy_AM', 'hy_AM'), ('id_ID', 'id_ID'), ('ii_CN', 'ii_CN'), - ('is_IS', 'is_IS'), ('it_CH', 'it_CH'), ('it_IT', 'it_IT'), ('iu_CA', 'iu_CA'), - ('iu_CA', 'iu_CA'), ('ja_JP', 'ja_JP'), ('ka_GE', 'ka_GE'), ('kh_KH', 'kh_KH'), - ('kk_KZ', 'kk_KZ'), ('kl_GL', 'kl_GL'), ('kn_IN', 'kn_IN'), ('ko_KR', 'ko_KR'), - ('kok_IN', 'kok_IN'), ('ky_KG', 'ky_KG'), ('lb_LU', 'lb_LU'), ('lo_LA', 'lo_LA'), - ('lt_LT', 'lt_LT'), ('lv_LV', 'lv_LV'), ('mi_NZ', 'mi_NZ'), ('mk_MK', 'mk_MK'), - ('ml_IN', 'ml_IN'), ('mn_CN', 'mn_CN'), ('mn_MN', 'mn_MN'), ('moh_CA', 'moh_CA'), - ('mr_IN', 'mr_IN'), ('ms_BN', 'ms_BN'), ('ms_MY', 'ms_MY'), ('mt_MT', 'mt_MT'), - ('nb_NO', 'nb_NO'), ('ne_NP', 'ne_NP'), ('nl_BE', 'nl_BE'), ('nl_NL', 'nl_NL'), - ('nn_NO', 'nn_NO'), ('ns_ZA', 'ns_ZA'), ('oc_FR', 'oc_FR'), ('or_IN', 'or_IN'), - ('pa_IN', 'pa_IN'), ('pl_PL', 'pl_PL'), ('ps_AF', 'ps_AF'), ('pt_BR', 'pt_BR'), - ('pt_PT', 'pt_PT'), ('qut_GT', 'qut_GT'), ('quz_BO', 'quz_BO'), ('quz_EC', 'quz_EC'), - ('quz_PE', 'quz_PE'), ('rm_CH', 'rm_CH'), ('ro_RO', 'ro_RO'), ('ru_RU', 'ru_RU'), - ('rw_RW', 'rw_RW'), ('sa_IN', 'sa_IN'), ('sah_RU', 'sah_RU'), ('se_FI', 'se_FI'), - ('se_NO', 'se_NO'), ('se_SE', 'se_SE'), ('si_LK', 'si_LK'), ('sk_SK', 'sk_SK'), - ('sl_SI', 'sl_SI'), ('sma_NO', 'sma_NO'), ('sma_SE', 'sma_SE'), ('smj_NO', 'smj_NO'), - ('smj_SE', 'smj_SE'), ('smn_FI', 'smn_FI'), ('sms_FI', 'sms_FI'), ('sq_AL', 'sq_AL'), - ('sr_BA', 'sr_BA'), ('sr_BA', 'sr_BA'), ('sr_SP', 'sr_SP'), ('sr_SP', 'sr_SP'), - ('sv_FI', 'sv_FI'), ('sv_SE', 'sv_SE'), ('sw_KE', 'sw_KE'), ('syr_SY', 'syr_SY'), - ('ta_IN', 'ta_IN'), ('te_IN', 'te_IN'), ('tg_TJ', 'tg_TJ'), ('th_TH', 'th_TH'), - ('tk_TM', 'tk_TM'), ('tmz_DZ', 'tmz_DZ'), ('tn_ZA', 'tn_ZA'), ('tr_TR', 'tr_TR'), - ('tt_RU', 'tt_RU'), ('ug_CN', 'ug_CN'), ('uk_UA', 'uk_UA'), ('ur_IN', 'ur_IN'), - ('ur_PK', 'ur_PK'), ('uz_UZ', 'uz_UZ'), ('uz_UZ', 'uz_UZ'), ('vi_VN', 'vi_VN'), - ('wen_DE', 'wen_DE'), ('wo_SN', 'wo_SN'), ('xh_ZA', 'xh_ZA'), ('yo_NG', 'yo_NG'), - ('zh_CHS', 'zh_CHS'), ('zh_CHT', 'zh_CHT'), ('zh_CN', 'zh_CN'), ('zh_HK', 'zh_HK'), - ('zh_MO', 'zh_MO'), ('zh_SG', 'zh_SG'), ('zh_TW', 'zh_TW'), ('zu_ZA', 'zu_ZA')], - default='fr_FR', max_length=10)), - ('order', models.IntegerField(default=0)), - ('windows_locale_name', models.CharField( - choices=[('af_ZA', 'af_ZA'), ('am_ET', 'am_ET'), ('ar_AE', 'ar_AE'), ('ar_BH', 'ar_BH'), - ('ar_DZ', 'ar_DZ'), ('ar_EG', 'ar_EG'), ('ar_IQ', 'ar_IQ'), ('ar_JO', 'ar_JO'), - ('ar_KW', 'ar_KW'), ('ar_LB', 'ar_LB'), ('ar_LY', 'ar_LY'), ('ar_MA', 'ar_MA'), - ('ar_OM', 'ar_OM'), ('ar_QA', 'ar_QA'), ('ar_SA', 'ar_SA'), ('ar_SY', 'ar_SY'), - ('ar_TN', 'ar_TN'), ('ar_YE', 'ar_YE'), ('arn_CL', 'arn_CL'), ('as_IN', 'as_IN'), - ('az_AZ', 'az_AZ'), ('az_AZ', 'az_AZ'), ('ba_RU', 'ba_RU'), ('be_BY', 'be_BY'), - ('bg_BG', 'bg_BG'), ('bn_IN', 'bn_IN'), ('bo_BT', 'bo_BT'), ('bo_CN', 'bo_CN'), - ('br_FR', 'br_FR'), ('bs_BA', 'bs_BA'), ('bs_BA', 'bs_BA'), ('ca_ES', 'ca_ES'), - ('co_FR', 'co_FR'), ('cs_CZ', 'cs_CZ'), ('cy_GB', 'cy_GB'), ('da_DK', 'da_DK'), - ('de_AT', 'de_AT'), ('de_CH', 'de_CH'), ('de_DE', 'de_DE'), ('de_LI', 'de_LI'), - ('de_LU', 'de_LU'), ('div_MV', 'div_MV'), ('dsb_DE', 'dsb_DE'), ('el_GR', 'el_GR'), - ('en_AU', 'en_AU'), ('en_BZ', 'en_BZ'), ('en_CA', 'en_CA'), ('en_CB', 'en_CB'), - ('en_GB', 'en_GB'), ('en_IE', 'en_IE'), ('en_IN', 'en_IN'), ('en_IN', 'en_IN'), - ('en_JA', 'en_JA'), ('en_MY', 'en_MY'), ('en_NZ', 'en_NZ'), ('en_PH', 'en_PH'), - ('en_TT', 'en_TT'), ('en_US', 'en_US'), ('en_ZA', 'en_ZA'), ('en_ZW', 'en_ZW'), - ('es_AR', 'es_AR'), ('es_BO', 'es_BO'), ('es_CL', 'es_CL'), ('es_CO', 'es_CO'), - ('es_CR', 'es_CR'), ('es_DO', 'es_DO'), ('es_EC', 'es_EC'), ('es_ES', 'es_ES'), - ('es_ES', 'es_ES'), ('es_GT', 'es_GT'), ('es_HN', 'es_HN'), ('es_MX', 'es_MX'), - ('es_NI', 'es_NI'), ('es_PA', 'es_PA'), ('es_PE', 'es_PE'), ('es_PR', 'es_PR'), - ('es_PY', 'es_PY'), ('es_SV', 'es_SV'), ('es_UR', 'es_UR'), ('es_US', 'es_US'), - ('es_VE', 'es_VE'), ('et_EE', 'et_EE'), ('eu_ES', 'eu_ES'), ('fa_IR', 'fa_IR'), - ('fi_FI', 'fi_FI'), ('fil_PH', 'fil_PH'), ('fo_FO', 'fo_FO'), ('fr_BE', 'fr_BE'), - ('fr_CA', 'fr_CA'), ('fr_CH', 'fr_CH'), ('fr_FR', 'fr_FR'), ('fr_LU', 'fr_LU'), - ('fr_MC', 'fr_MC'), ('fy_NL', 'fy_NL'), ('ga_IE', 'ga_IE'), ('gbz_AF', 'gbz_AF'), - ('gl_ES', 'gl_ES'), ('gsw_FR', 'gsw_FR'), ('gu_IN', 'gu_IN'), ('ha_NG', 'ha_NG'), - ('he_IL', 'he_IL'), ('hi_IN', 'hi_IN'), ('hr_BA', 'hr_BA'), ('hr_HR', 'hr_HR'), - ('hu_HU', 'hu_HU'), ('hy_AM', 'hy_AM'), ('id_ID', 'id_ID'), ('ii_CN', 'ii_CN'), - ('is_IS', 'is_IS'), ('it_CH', 'it_CH'), ('it_IT', 'it_IT'), ('iu_CA', 'iu_CA'), - ('iu_CA', 'iu_CA'), ('ja_JP', 'ja_JP'), ('ka_GE', 'ka_GE'), ('kh_KH', 'kh_KH'), - ('kk_KZ', 'kk_KZ'), ('kl_GL', 'kl_GL'), ('kn_IN', 'kn_IN'), ('ko_KR', 'ko_KR'), - ('kok_IN', 'kok_IN'), ('ky_KG', 'ky_KG'), ('lb_LU', 'lb_LU'), ('lo_LA', 'lo_LA'), - ('lt_LT', 'lt_LT'), ('lv_LV', 'lv_LV'), ('mi_NZ', 'mi_NZ'), ('mk_MK', 'mk_MK'), - ('ml_IN', 'ml_IN'), ('mn_CN', 'mn_CN'), ('mn_MN', 'mn_MN'), ('moh_CA', 'moh_CA'), - ('mr_IN', 'mr_IN'), ('ms_BN', 'ms_BN'), ('ms_MY', 'ms_MY'), ('mt_MT', 'mt_MT'), - ('nb_NO', 'nb_NO'), ('ne_NP', 'ne_NP'), ('nl_BE', 'nl_BE'), ('nl_NL', 'nl_NL'), - ('nn_NO', 'nn_NO'), ('ns_ZA', 'ns_ZA'), ('oc_FR', 'oc_FR'), ('or_IN', 'or_IN'), - ('pa_IN', 'pa_IN'), ('pl_PL', 'pl_PL'), ('ps_AF', 'ps_AF'), ('pt_BR', 'pt_BR'), - ('pt_PT', 'pt_PT'), ('qut_GT', 'qut_GT'), ('quz_BO', 'quz_BO'), ('quz_EC', 'quz_EC'), - ('quz_PE', 'quz_PE'), ('rm_CH', 'rm_CH'), ('ro_RO', 'ro_RO'), ('ru_RU', 'ru_RU'), - ('rw_RW', 'rw_RW'), ('sa_IN', 'sa_IN'), ('sah_RU', 'sah_RU'), ('se_FI', 'se_FI'), - ('se_NO', 'se_NO'), ('se_SE', 'se_SE'), ('si_LK', 'si_LK'), ('sk_SK', 'sk_SK'), - ('sl_SI', 'sl_SI'), ('sma_NO', 'sma_NO'), ('sma_SE', 'sma_SE'), ('smj_NO', 'smj_NO'), - ('smj_SE', 'smj_SE'), ('smn_FI', 'smn_FI'), ('sms_FI', 'sms_FI'), ('sq_AL', 'sq_AL'), - ('sr_BA', 'sr_BA'), ('sr_BA', 'sr_BA'), ('sr_SP', 'sr_SP'), ('sr_SP', 'sr_SP'), - ('sv_FI', 'sv_FI'), ('sv_SE', 'sv_SE'), ('sw_KE', 'sw_KE'), ('syr_SY', 'syr_SY'), - ('ta_IN', 'ta_IN'), ('te_IN', 'te_IN'), ('tg_TJ', 'tg_TJ'), ('th_TH', 'th_TH'), - ('tk_TM', 'tk_TM'), ('tmz_DZ', 'tmz_DZ'), ('tn_ZA', 'tn_ZA'), ('tr_TR', 'tr_TR'), - ('tt_RU', 'tt_RU'), ('ug_CN', 'ug_CN'), ('uk_UA', 'uk_UA'), ('ur_IN', 'ur_IN'), - ('ur_PK', 'ur_PK'), ('uz_UZ', 'uz_UZ'), ('uz_UZ', 'uz_UZ'), ('vi_VN', 'vi_VN'), - ('wen_DE', 'wen_DE'), ('wo_SN', 'wo_SN'), ('xh_ZA', 'xh_ZA'), ('yo_NG', 'yo_NG'), - ('zh_CHS', 'zh_CHS'), ('zh_CHT', 'zh_CHT'), ('zh_CN', 'zh_CN'), ('zh_HK', 'zh_HK'), - ('zh_MO', 'zh_MO'), ('zh_SG', 'zh_SG'), ('zh_TW', 'zh_TW'), ('zu_ZA', 'zu_ZA')], - default='French', max_length=10)), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("name", models.CharField(max_length=20)), + ("image", models.ImageField(upload_to="")), + ( + "locale", + models.CharField( + choices=[ + ("af_ZA", "af_ZA"), + ("am_ET", "am_ET"), + ("ar_AE", "ar_AE"), + ("ar_BH", "ar_BH"), + ("ar_DZ", "ar_DZ"), + ("ar_EG", "ar_EG"), + ("ar_IQ", "ar_IQ"), + ("ar_JO", "ar_JO"), + ("ar_KW", "ar_KW"), + ("ar_LB", "ar_LB"), + ("ar_LY", "ar_LY"), + ("ar_MA", "ar_MA"), + ("ar_OM", "ar_OM"), + ("ar_QA", "ar_QA"), + ("ar_SA", "ar_SA"), + ("ar_SY", "ar_SY"), + ("ar_TN", "ar_TN"), + ("ar_YE", "ar_YE"), + ("arn_CL", "arn_CL"), + ("as_IN", "as_IN"), + ("az_AZ", "az_AZ"), + ("az_AZ", "az_AZ"), + ("ba_RU", "ba_RU"), + ("be_BY", "be_BY"), + ("bg_BG", "bg_BG"), + ("bn_IN", "bn_IN"), + ("bo_BT", "bo_BT"), + ("bo_CN", "bo_CN"), + ("br_FR", "br_FR"), + ("bs_BA", "bs_BA"), + ("bs_BA", "bs_BA"), + ("ca_ES", "ca_ES"), + ("co_FR", "co_FR"), + ("cs_CZ", "cs_CZ"), + ("cy_GB", "cy_GB"), + ("da_DK", "da_DK"), + ("de_AT", "de_AT"), + ("de_CH", "de_CH"), + ("de_DE", "de_DE"), + ("de_LI", "de_LI"), + ("de_LU", "de_LU"), + ("div_MV", "div_MV"), + ("dsb_DE", "dsb_DE"), + ("el_GR", "el_GR"), + ("en_AU", "en_AU"), + ("en_BZ", "en_BZ"), + ("en_CA", "en_CA"), + ("en_CB", "en_CB"), + ("en_GB", "en_GB"), + ("en_IE", "en_IE"), + ("en_IN", "en_IN"), + ("en_IN", "en_IN"), + ("en_JA", "en_JA"), + ("en_MY", "en_MY"), + ("en_NZ", "en_NZ"), + ("en_PH", "en_PH"), + ("en_TT", "en_TT"), + ("en_US", "en_US"), + ("en_ZA", "en_ZA"), + ("en_ZW", "en_ZW"), + ("es_AR", "es_AR"), + ("es_BO", "es_BO"), + ("es_CL", "es_CL"), + ("es_CO", "es_CO"), + ("es_CR", "es_CR"), + ("es_DO", "es_DO"), + ("es_EC", "es_EC"), + ("es_ES", "es_ES"), + ("es_ES", "es_ES"), + ("es_GT", "es_GT"), + ("es_HN", "es_HN"), + ("es_MX", "es_MX"), + ("es_NI", "es_NI"), + ("es_PA", "es_PA"), + ("es_PE", "es_PE"), + ("es_PR", "es_PR"), + ("es_PY", "es_PY"), + ("es_SV", "es_SV"), + ("es_UR", "es_UR"), + ("es_US", "es_US"), + ("es_VE", "es_VE"), + ("et_EE", "et_EE"), + ("eu_ES", "eu_ES"), + ("fa_IR", "fa_IR"), + ("fi_FI", "fi_FI"), + ("fil_PH", "fil_PH"), + ("fo_FO", "fo_FO"), + ("fr_BE", "fr_BE"), + ("fr_CA", "fr_CA"), + ("fr_CH", "fr_CH"), + ("fr_FR", "fr_FR"), + ("fr_LU", "fr_LU"), + ("fr_MC", "fr_MC"), + ("fy_NL", "fy_NL"), + ("ga_IE", "ga_IE"), + ("gbz_AF", "gbz_AF"), + ("gl_ES", "gl_ES"), + ("gsw_FR", "gsw_FR"), + ("gu_IN", "gu_IN"), + ("ha_NG", "ha_NG"), + ("he_IL", "he_IL"), + ("hi_IN", "hi_IN"), + ("hr_BA", "hr_BA"), + ("hr_HR", "hr_HR"), + ("hu_HU", "hu_HU"), + ("hy_AM", "hy_AM"), + ("id_ID", "id_ID"), + ("ii_CN", "ii_CN"), + ("is_IS", "is_IS"), + ("it_CH", "it_CH"), + ("it_IT", "it_IT"), + ("iu_CA", "iu_CA"), + ("iu_CA", "iu_CA"), + ("ja_JP", "ja_JP"), + ("ka_GE", "ka_GE"), + ("kh_KH", "kh_KH"), + ("kk_KZ", "kk_KZ"), + ("kl_GL", "kl_GL"), + ("kn_IN", "kn_IN"), + ("ko_KR", "ko_KR"), + ("kok_IN", "kok_IN"), + ("ky_KG", "ky_KG"), + ("lb_LU", "lb_LU"), + ("lo_LA", "lo_LA"), + ("lt_LT", "lt_LT"), + ("lv_LV", "lv_LV"), + ("mi_NZ", "mi_NZ"), + ("mk_MK", "mk_MK"), + ("ml_IN", "ml_IN"), + ("mn_CN", "mn_CN"), + ("mn_MN", "mn_MN"), + ("moh_CA", "moh_CA"), + ("mr_IN", "mr_IN"), + ("ms_BN", "ms_BN"), + ("ms_MY", "ms_MY"), + ("mt_MT", "mt_MT"), + ("nb_NO", "nb_NO"), + ("ne_NP", "ne_NP"), + ("nl_BE", "nl_BE"), + ("nl_NL", "nl_NL"), + ("nn_NO", "nn_NO"), + ("ns_ZA", "ns_ZA"), + ("oc_FR", "oc_FR"), + ("or_IN", "or_IN"), + ("pa_IN", "pa_IN"), + ("pl_PL", "pl_PL"), + ("ps_AF", "ps_AF"), + ("pt_BR", "pt_BR"), + ("pt_PT", "pt_PT"), + ("qut_GT", "qut_GT"), + ("quz_BO", "quz_BO"), + ("quz_EC", "quz_EC"), + ("quz_PE", "quz_PE"), + ("rm_CH", "rm_CH"), + ("ro_RO", "ro_RO"), + ("ru_RU", "ru_RU"), + ("rw_RW", "rw_RW"), + ("sa_IN", "sa_IN"), + ("sah_RU", "sah_RU"), + ("se_FI", "se_FI"), + ("se_NO", "se_NO"), + ("se_SE", "se_SE"), + ("si_LK", "si_LK"), + ("sk_SK", "sk_SK"), + ("sl_SI", "sl_SI"), + ("sma_NO", "sma_NO"), + ("sma_SE", "sma_SE"), + ("smj_NO", "smj_NO"), + ("smj_SE", "smj_SE"), + ("smn_FI", "smn_FI"), + ("sms_FI", "sms_FI"), + ("sq_AL", "sq_AL"), + ("sr_BA", "sr_BA"), + ("sr_BA", "sr_BA"), + ("sr_SP", "sr_SP"), + ("sr_SP", "sr_SP"), + ("sv_FI", "sv_FI"), + ("sv_SE", "sv_SE"), + ("sw_KE", "sw_KE"), + ("syr_SY", "syr_SY"), + ("ta_IN", "ta_IN"), + ("te_IN", "te_IN"), + ("tg_TJ", "tg_TJ"), + ("th_TH", "th_TH"), + ("tk_TM", "tk_TM"), + ("tmz_DZ", "tmz_DZ"), + ("tn_ZA", "tn_ZA"), + ("tr_TR", "tr_TR"), + ("tt_RU", "tt_RU"), + ("ug_CN", "ug_CN"), + ("uk_UA", "uk_UA"), + ("ur_IN", "ur_IN"), + ("ur_PK", "ur_PK"), + ("uz_UZ", "uz_UZ"), + ("uz_UZ", "uz_UZ"), + ("vi_VN", "vi_VN"), + ("wen_DE", "wen_DE"), + ("wo_SN", "wo_SN"), + ("xh_ZA", "xh_ZA"), + ("yo_NG", "yo_NG"), + ("zh_CHS", "zh_CHS"), + ("zh_CHT", "zh_CHT"), + ("zh_CN", "zh_CN"), + ("zh_HK", "zh_HK"), + ("zh_MO", "zh_MO"), + ("zh_SG", "zh_SG"), + ("zh_TW", "zh_TW"), + ("zu_ZA", "zu_ZA"), + ], + default="fr_FR", + max_length=10, + ), + ), + ("order", models.IntegerField(default=0)), + ( + "windows_locale_name", + models.CharField( + choices=[ + ("af_ZA", "af_ZA"), + ("am_ET", "am_ET"), + ("ar_AE", "ar_AE"), + ("ar_BH", "ar_BH"), + ("ar_DZ", "ar_DZ"), + ("ar_EG", "ar_EG"), + ("ar_IQ", "ar_IQ"), + ("ar_JO", "ar_JO"), + ("ar_KW", "ar_KW"), + ("ar_LB", "ar_LB"), + ("ar_LY", "ar_LY"), + ("ar_MA", "ar_MA"), + ("ar_OM", "ar_OM"), + ("ar_QA", "ar_QA"), + ("ar_SA", "ar_SA"), + ("ar_SY", "ar_SY"), + ("ar_TN", "ar_TN"), + ("ar_YE", "ar_YE"), + ("arn_CL", "arn_CL"), + ("as_IN", "as_IN"), + ("az_AZ", "az_AZ"), + ("az_AZ", "az_AZ"), + ("ba_RU", "ba_RU"), + ("be_BY", "be_BY"), + ("bg_BG", "bg_BG"), + ("bn_IN", "bn_IN"), + ("bo_BT", "bo_BT"), + ("bo_CN", "bo_CN"), + ("br_FR", "br_FR"), + ("bs_BA", "bs_BA"), + ("bs_BA", "bs_BA"), + ("ca_ES", "ca_ES"), + ("co_FR", "co_FR"), + ("cs_CZ", "cs_CZ"), + ("cy_GB", "cy_GB"), + ("da_DK", "da_DK"), + ("de_AT", "de_AT"), + ("de_CH", "de_CH"), + ("de_DE", "de_DE"), + ("de_LI", "de_LI"), + ("de_LU", "de_LU"), + ("div_MV", "div_MV"), + ("dsb_DE", "dsb_DE"), + ("el_GR", "el_GR"), + ("en_AU", "en_AU"), + ("en_BZ", "en_BZ"), + ("en_CA", "en_CA"), + ("en_CB", "en_CB"), + ("en_GB", "en_GB"), + ("en_IE", "en_IE"), + ("en_IN", "en_IN"), + ("en_IN", "en_IN"), + ("en_JA", "en_JA"), + ("en_MY", "en_MY"), + ("en_NZ", "en_NZ"), + ("en_PH", "en_PH"), + ("en_TT", "en_TT"), + ("en_US", "en_US"), + ("en_ZA", "en_ZA"), + ("en_ZW", "en_ZW"), + ("es_AR", "es_AR"), + ("es_BO", "es_BO"), + ("es_CL", "es_CL"), + ("es_CO", "es_CO"), + ("es_CR", "es_CR"), + ("es_DO", "es_DO"), + ("es_EC", "es_EC"), + ("es_ES", "es_ES"), + ("es_ES", "es_ES"), + ("es_GT", "es_GT"), + ("es_HN", "es_HN"), + ("es_MX", "es_MX"), + ("es_NI", "es_NI"), + ("es_PA", "es_PA"), + ("es_PE", "es_PE"), + ("es_PR", "es_PR"), + ("es_PY", "es_PY"), + ("es_SV", "es_SV"), + ("es_UR", "es_UR"), + ("es_US", "es_US"), + ("es_VE", "es_VE"), + ("et_EE", "et_EE"), + ("eu_ES", "eu_ES"), + ("fa_IR", "fa_IR"), + ("fi_FI", "fi_FI"), + ("fil_PH", "fil_PH"), + ("fo_FO", "fo_FO"), + ("fr_BE", "fr_BE"), + ("fr_CA", "fr_CA"), + ("fr_CH", "fr_CH"), + ("fr_FR", "fr_FR"), + ("fr_LU", "fr_LU"), + ("fr_MC", "fr_MC"), + ("fy_NL", "fy_NL"), + ("ga_IE", "ga_IE"), + ("gbz_AF", "gbz_AF"), + ("gl_ES", "gl_ES"), + ("gsw_FR", "gsw_FR"), + ("gu_IN", "gu_IN"), + ("ha_NG", "ha_NG"), + ("he_IL", "he_IL"), + ("hi_IN", "hi_IN"), + ("hr_BA", "hr_BA"), + ("hr_HR", "hr_HR"), + ("hu_HU", "hu_HU"), + ("hy_AM", "hy_AM"), + ("id_ID", "id_ID"), + ("ii_CN", "ii_CN"), + ("is_IS", "is_IS"), + ("it_CH", "it_CH"), + ("it_IT", "it_IT"), + ("iu_CA", "iu_CA"), + ("iu_CA", "iu_CA"), + ("ja_JP", "ja_JP"), + ("ka_GE", "ka_GE"), + ("kh_KH", "kh_KH"), + ("kk_KZ", "kk_KZ"), + ("kl_GL", "kl_GL"), + ("kn_IN", "kn_IN"), + ("ko_KR", "ko_KR"), + ("kok_IN", "kok_IN"), + ("ky_KG", "ky_KG"), + ("lb_LU", "lb_LU"), + ("lo_LA", "lo_LA"), + ("lt_LT", "lt_LT"), + ("lv_LV", "lv_LV"), + ("mi_NZ", "mi_NZ"), + ("mk_MK", "mk_MK"), + ("ml_IN", "ml_IN"), + ("mn_CN", "mn_CN"), + ("mn_MN", "mn_MN"), + ("moh_CA", "moh_CA"), + ("mr_IN", "mr_IN"), + ("ms_BN", "ms_BN"), + ("ms_MY", "ms_MY"), + ("mt_MT", "mt_MT"), + ("nb_NO", "nb_NO"), + ("ne_NP", "ne_NP"), + ("nl_BE", "nl_BE"), + ("nl_NL", "nl_NL"), + ("nn_NO", "nn_NO"), + ("ns_ZA", "ns_ZA"), + ("oc_FR", "oc_FR"), + ("or_IN", "or_IN"), + ("pa_IN", "pa_IN"), + ("pl_PL", "pl_PL"), + ("ps_AF", "ps_AF"), + ("pt_BR", "pt_BR"), + ("pt_PT", "pt_PT"), + ("qut_GT", "qut_GT"), + ("quz_BO", "quz_BO"), + ("quz_EC", "quz_EC"), + ("quz_PE", "quz_PE"), + ("rm_CH", "rm_CH"), + ("ro_RO", "ro_RO"), + ("ru_RU", "ru_RU"), + ("rw_RW", "rw_RW"), + ("sa_IN", "sa_IN"), + ("sah_RU", "sah_RU"), + ("se_FI", "se_FI"), + ("se_NO", "se_NO"), + ("se_SE", "se_SE"), + ("si_LK", "si_LK"), + ("sk_SK", "sk_SK"), + ("sl_SI", "sl_SI"), + ("sma_NO", "sma_NO"), + ("sma_SE", "sma_SE"), + ("smj_NO", "smj_NO"), + ("smj_SE", "smj_SE"), + ("smn_FI", "smn_FI"), + ("sms_FI", "sms_FI"), + ("sq_AL", "sq_AL"), + ("sr_BA", "sr_BA"), + ("sr_BA", "sr_BA"), + ("sr_SP", "sr_SP"), + ("sr_SP", "sr_SP"), + ("sv_FI", "sv_FI"), + ("sv_SE", "sv_SE"), + ("sw_KE", "sw_KE"), + ("syr_SY", "syr_SY"), + ("ta_IN", "ta_IN"), + ("te_IN", "te_IN"), + ("tg_TJ", "tg_TJ"), + ("th_TH", "th_TH"), + ("tk_TM", "tk_TM"), + ("tmz_DZ", "tmz_DZ"), + ("tn_ZA", "tn_ZA"), + ("tr_TR", "tr_TR"), + ("tt_RU", "tt_RU"), + ("ug_CN", "ug_CN"), + ("uk_UA", "uk_UA"), + ("ur_IN", "ur_IN"), + ("ur_PK", "ur_PK"), + ("uz_UZ", "uz_UZ"), + ("uz_UZ", "uz_UZ"), + ("vi_VN", "vi_VN"), + ("wen_DE", "wen_DE"), + ("wo_SN", "wo_SN"), + ("xh_ZA", "xh_ZA"), + ("yo_NG", "yo_NG"), + ("zh_CHS", "zh_CHS"), + ("zh_CHT", "zh_CHT"), + ("zh_CN", "zh_CN"), + ("zh_HK", "zh_HK"), + ("zh_MO", "zh_MO"), + ("zh_SG", "zh_SG"), + ("zh_TW", "zh_TW"), + ("zu_ZA", "zu_ZA"), + ], + default="French", + max_length=10, + ), + ), ], options={ - 'ordering': ['order'], + "ordering": ["order"], }, ), migrations.CreateModel( - name='Location', + name="Location", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=256)), - ('color', - models.CharField(blank=True, default='', max_length=20, verbose_name='Calendar appointment color')), - ('prefix', models.CharField(blank=True, max_length=1)), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("name", models.CharField(max_length=256)), + ( + "color", + models.CharField(blank=True, default="", max_length=20, verbose_name="Calendar appointment color"), + ), + ("prefix", models.CharField(blank=True, max_length=1)), ], ), migrations.CreateModel( - name='PrivacyNotice', + name="PrivacyNotice", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created at')), - ('document', models.FileField(upload_to='privacy_notices/', verbose_name='Study Privacy Notice file')), - ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated at')), - ('name', models.CharField(max_length=255, verbose_name='Name')), - ('summary', models.CharField(max_length=255, verbose_name='Summary')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("created_at", models.DateTimeField(auto_now_add=True, verbose_name="Created at")), + ("document", models.FileField(upload_to="privacy_notices/", verbose_name="Study Privacy Notice file")), + ("updated_at", models.DateTimeField(auto_now=True, verbose_name="Updated at")), + ("name", models.CharField(max_length=255, verbose_name="Name")), + ("summary", models.CharField(max_length=255, verbose_name="Summary")), ], ), migrations.CreateModel( - name='StudyColumns', + name="StudyColumns", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('postponed', models.BooleanField(default=True, verbose_name='Postponed')), - ('datetime_contact_reminder', - models.BooleanField(default=True, verbose_name='Please make a contact on')), - ('type', models.BooleanField(default=True, verbose_name='Type')), - ('default_location', models.BooleanField(default=True, verbose_name='Default appointment location')), - ('flying_team', - models.BooleanField(default=True, verbose_name='Default flying team location (if applicable)')), - ('screening_number', models.BooleanField(default=True, verbose_name='Screening number')), - ('nd_number', models.BooleanField(default=True, verbose_name='Subject number')), - ('comments', models.BooleanField(default=True, verbose_name='Comments')), - ('referral', models.BooleanField(default=True, verbose_name='Referred by')), - ('information_sent', models.BooleanField(default=True, verbose_name='Information sent')), - ('resigned', models.BooleanField(default=True, verbose_name='Resigned')), - ('resign_reason', models.BooleanField(default=True, verbose_name='Endpoint reached comments')), - ('health_partner', models.BooleanField(default=False, verbose_name='Health partner')), - ('health_partner_feedback_agreement', - models.BooleanField(default=False, verbose_name='Agrees to give information to referral')), - ('referral_letter', models.BooleanField(default=False, verbose_name='Referral letter')), - ('voucher_types', models.BooleanField(default=False, verbose_name='Voucher types')), - ('vouchers', models.BooleanField(default=False, verbose_name='Vouchers')), - ('excluded', models.BooleanField(default=False, verbose_name='Excluded')), - ('endpoint_reached', models.BooleanField(default=True, verbose_name='Endpoint reached')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("postponed", models.BooleanField(default=True, verbose_name="Postponed")), + ( + "datetime_contact_reminder", + models.BooleanField(default=True, verbose_name="Please make a contact on"), + ), + ("type", models.BooleanField(default=True, verbose_name="Type")), + ("default_location", models.BooleanField(default=True, verbose_name="Default appointment location")), + ( + "flying_team", + models.BooleanField(default=True, verbose_name="Default flying team location (if applicable)"), + ), + ("screening_number", models.BooleanField(default=True, verbose_name="Screening number")), + ("nd_number", models.BooleanField(default=True, verbose_name="Subject number")), + ("comments", models.BooleanField(default=True, verbose_name="Comments")), + ("referral", models.BooleanField(default=True, verbose_name="Referred by")), + ("information_sent", models.BooleanField(default=True, verbose_name="Information sent")), + ("resigned", models.BooleanField(default=True, verbose_name="Resigned")), + ("resign_reason", models.BooleanField(default=True, verbose_name="Endpoint reached comments")), + ("health_partner", models.BooleanField(default=False, verbose_name="Health partner")), + ( + "health_partner_feedback_agreement", + models.BooleanField(default=False, verbose_name="Agrees to give information to referral"), + ), + ("referral_letter", models.BooleanField(default=False, verbose_name="Referral letter")), + ("voucher_types", models.BooleanField(default=False, verbose_name="Voucher types")), + ("vouchers", models.BooleanField(default=False, verbose_name="Vouchers")), + ("excluded", models.BooleanField(default=False, verbose_name="Excluded")), + ("endpoint_reached", models.BooleanField(default=True, verbose_name="Endpoint reached")), ], ), migrations.CreateModel( - name='StudyNotificationParameters', + name="StudyNotificationParameters", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('exceeded_visits_visible', models.BooleanField(default=True, verbose_name='exceeded visit time')), - ('missing_redcap_subject_visible', - models.BooleanField(default=True, verbose_name='missing RED Cap subject')), - ('inconsistent_redcap_subject_visible', - models.BooleanField(default=True, verbose_name='inconsistent RED Cap subject')), - ('subject_require_contact_visible', - models.BooleanField(default=True, verbose_name='subject required contact')), - ('subject_no_visits_visible', models.BooleanField(default=True, verbose_name='subject without visit')), - ('unfinished_visits_visible', models.BooleanField(default=True, verbose_name='unfinished visits')), - ('visits_with_missing_appointments_visible', - models.BooleanField(default=True, verbose_name='visits with missing appointments')), - ('approaching_visits_without_appointments_visible', - models.BooleanField(default=True, verbose_name='approaching visits')), - ('approaching_visits_for_mail_contact_visible', - models.BooleanField(default=True, verbose_name='post mail for approaching visits')), - ('unfinished_appointments_visible', - models.BooleanField(default=True, verbose_name='unfinished appointments')), - ('subject_voucher_expiry_visible', - models.BooleanField(default=False, verbose_name='subject vouchers almost expired')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("exceeded_visits_visible", models.BooleanField(default=True, verbose_name="exceeded visit time")), + ( + "missing_redcap_subject_visible", + models.BooleanField(default=True, verbose_name="missing RED Cap subject"), + ), + ( + "inconsistent_redcap_subject_visible", + models.BooleanField(default=True, verbose_name="inconsistent RED Cap subject"), + ), + ( + "subject_require_contact_visible", + models.BooleanField(default=True, verbose_name="subject required contact"), + ), + ("subject_no_visits_visible", models.BooleanField(default=True, verbose_name="subject without visit")), + ("unfinished_visits_visible", models.BooleanField(default=True, verbose_name="unfinished visits")), + ( + "visits_with_missing_appointments_visible", + models.BooleanField(default=True, verbose_name="visits with missing appointments"), + ), + ( + "approaching_visits_without_appointments_visible", + models.BooleanField(default=True, verbose_name="approaching visits"), + ), + ( + "approaching_visits_for_mail_contact_visible", + models.BooleanField(default=True, verbose_name="post mail for approaching visits"), + ), + ( + "unfinished_appointments_visible", + models.BooleanField(default=True, verbose_name="unfinished appointments"), + ), + ( + "subject_voucher_expiry_visible", + models.BooleanField(default=False, verbose_name="subject vouchers almost expired"), + ), ], ), migrations.CreateModel( - name='StudyRedCapColumns', + name="StudyRedCapColumns", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('sex', models.BooleanField(default=True, verbose_name='Sex')), - ('date_born', models.BooleanField(default=True, verbose_name='Date of birth')), - ('dead', models.BooleanField(default=True, verbose_name='Dead')), - ('mpower_id', models.BooleanField(default=True, verbose_name='MPower ID')), - ('languages', models.BooleanField(default=True, verbose_name='Languages')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("sex", models.BooleanField(default=True, verbose_name="Sex")), + ("date_born", models.BooleanField(default=True, verbose_name="Date of birth")), + ("dead", models.BooleanField(default=True, verbose_name="Dead")), + ("mpower_id", models.BooleanField(default=True, verbose_name="MPower ID")), + ("languages", models.BooleanField(default=True, verbose_name="Languages")), ], ), migrations.CreateModel( - name='Study', + name="Study", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=255, verbose_name='Name')), - ( - 'auto_create_follow_up', - models.BooleanField(default=True, verbose_name='Auto create follow up visit')), - ('nd_number_study_subject_regex', models.CharField(default='^ND\\d{4}$', - help_text='Defines the regex to check the ID used for each study subject. Keep in mind that this regex should be valid for all previous study subjects in the database.', - max_length=255, - verbose_name='Study Subject ND Number Regex')), - ('visits_to_show_in_subject_list', - models.IntegerField(default=5, validators=[django.core.validators.MaxValueValidator(100), - django.core.validators.MinValueValidator(1)], - verbose_name='Number of visits to show in the subject list')), - ('default_delta_time_for_control_follow_up', models.IntegerField(default=4, - help_text='Time difference between visits used to automatically create follow up visits', - validators=[ - django.core.validators.MinValueValidator( - 1)], - verbose_name='Time difference between control visits')), - ('default_delta_time_for_follow_up_units', - models.CharField(choices=[('years', 'Years'), ('days', 'Days')], default='years', - help_text='Units for the number of days between visits for both patients and controls', - max_length=10, verbose_name='Units for the follow up incrementals')), - ('default_delta_time_for_patient_follow_up', models.IntegerField(default=1, - help_text='Time difference between visits used to automatically create follow up visits', - validators=[ - django.core.validators.MinValueValidator( - 1)], - verbose_name='Time difference between patient visits')), - ('default_visit_duration_in_months', models.IntegerField(default=6, - help_text='Duration of the visit, this is, the time interval, in months, when the appointments may take place', - validators=[ - django.core.validators.MinValueValidator( - 1)], - verbose_name='Duration of the visits in months')), - ('default_voucher_expiration_in_months', - models.IntegerField(default=3, validators=[django.core.validators.MinValueValidator(1)], - verbose_name='Duration of the vouchers in months')), - ('sample_mail_statistics', models.BooleanField(default=False, - verbose_name='Email with sample collections should use statistics')), - ('redcap_first_visit_number', models.IntegerField(default=1, - verbose_name='Number of the first visit in redcap system')), - ('acceptance_of_study_privacy_notice_required', models.BooleanField(default=False, - verbose_name='Is privacy notice acceptance required?')), - ('study_privacy_notice', models.ForeignKey(blank=True, - null=True, on_delete=django.db.models.deletion.SET_NULL, - related_name='studies', to='web.privacynotice', - verbose_name='Study Privacy Note')), - ('columns', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='web.studycolumns')), - ('notification_parameters', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, - to='web.studynotificationparameters')), - ('redcap_columns', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, - to='web.studyredcapcolumns')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("name", models.CharField(max_length=255, verbose_name="Name")), + ( + "auto_create_follow_up", + models.BooleanField(default=True, verbose_name="Auto create follow up visit"), + ), + ( + "nd_number_study_subject_regex", + models.CharField( + default="^ND\\d{4}$", + help_text="Defines the regex to check the ID used for each study subject. Keep in mind that" + + "this regex should be valid for all previous study subjects in the database.", + max_length=255, + verbose_name="Study Subject ND Number Regex", + ), + ), + ( + "visits_to_show_in_subject_list", + models.IntegerField( + default=5, + validators=[ + django.core.validators.MaxValueValidator(100), + django.core.validators.MinValueValidator(1), + ], + verbose_name="Number of visits to show in the subject list", + ), + ), + ( + "default_delta_time_for_control_follow_up", + models.IntegerField( + default=4, + help_text="Time difference between visits used to automatically create follow up visits", + validators=[django.core.validators.MinValueValidator(1)], + verbose_name="Time difference between control visits", + ), + ), + ( + "default_delta_time_for_follow_up_units", + models.CharField( + choices=[("years", "Years"), ("days", "Days")], + default="years", + help_text="Units for the number of days between visits for both patients and controls", + max_length=10, + verbose_name="Units for the follow up incrementals", + ), + ), + ( + "default_delta_time_for_patient_follow_up", + models.IntegerField( + default=1, + help_text="Time difference between visits used to automatically create follow up visits", + validators=[django.core.validators.MinValueValidator(1)], + verbose_name="Time difference between patient visits", + ), + ), + ( + "default_visit_duration_in_months", + models.IntegerField( + default=6, + help_text="Duration of the visit, this is, the time interval, in months, " + + "when the appointments may take place", + validators=[django.core.validators.MinValueValidator(1)], + verbose_name="Duration of the visits in months", + ), + ), + ( + "default_voucher_expiration_in_months", + models.IntegerField( + default=3, + validators=[django.core.validators.MinValueValidator(1)], + verbose_name="Duration of the vouchers in months", + ), + ), + ( + "sample_mail_statistics", + models.BooleanField( + default=False, verbose_name="Email with sample collections should use statistics" + ), + ), + ( + "redcap_first_visit_number", + models.IntegerField(default=1, verbose_name="Number of the first visit in redcap system"), + ), + ( + "acceptance_of_study_privacy_notice_required", + models.BooleanField(default=False, verbose_name="Is privacy notice acceptance required?"), + ), + ( + "study_privacy_notice", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="studies", + to="web.privacynotice", + verbose_name="Study Privacy Note", + ), + ), + ("columns", models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to="web.studycolumns")), + ( + "notification_parameters", + models.OneToOneField( + on_delete=django.db.models.deletion.CASCADE, to="web.studynotificationparameters" + ), + ), + ( + "redcap_columns", + models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to="web.studyredcapcolumns"), + ), ], ), migrations.CreateModel( - name='VoucherType', + name="VoucherType", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('code', models.CharField(max_length=20, verbose_name='Code')), - ('description', models.CharField(blank=True, max_length=1024, verbose_name='Description')), - ('study', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.study')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("code", models.CharField(max_length=20, verbose_name="Code")), + ("description", models.CharField(blank=True, max_length=1024, verbose_name="Description")), + ("study", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="web.study")), ], ), migrations.CreateModel( - name='Worker', + name="Worker", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('first_name', models.CharField(blank=True, max_length=50, verbose_name='First name')), - ('last_name', models.CharField(blank=True, max_length=50, verbose_name='Last name')), - ('phone_number', models.CharField(blank=True, max_length=20, verbose_name='Phone number')), - ('phone_number_2', models.CharField(blank=True, max_length=20, verbose_name='Phone number 2')), - ('unit', models.CharField(blank=True, max_length=50, verbose_name='Unit')), - ('email', models.EmailField(blank=True, max_length=254, verbose_name='E-mail')), - ('specialization', models.CharField(blank=True, max_length=20, verbose_name='Specialization')), - ('address', models.CharField(blank=True, max_length=255, verbose_name='Address')), - ('city', models.CharField(blank=True, max_length=50, verbose_name='City')), - ('country', models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='web.country', - verbose_name='Country')), - ('postal_code', models.CharField(blank=True, max_length=7, verbose_name='Postal code')), - ('fax_number', models.CharField(blank=True, max_length=20, verbose_name='Fax number')), - ('voucher_partner_code', models.CharField(blank=True, max_length=10, verbose_name='Code')), - ('name', models.CharField(blank=True, default='', max_length=50, verbose_name='Name')), - ('comment', models.TextField(blank=True, max_length=1024, null=True, verbose_name='Comment')), - ('languages', models.ManyToManyField(blank=True, to='web.Language', verbose_name='Known languages')), - ('user', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, - to=settings.AUTH_USER_MODEL, verbose_name='Username')), - ('privacy_notice_accepted', - models.BooleanField(default=False, verbose_name='Has accepted privacy notice?')), - ('locations', models.ManyToManyField(blank=True, to='web.Location', verbose_name='Locations')), - ('voucher_types', - models.ManyToManyField(blank=True, to='web.VoucherType', verbose_name='Voucher types')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("first_name", models.CharField(blank=True, max_length=50, verbose_name="First name")), + ("last_name", models.CharField(blank=True, max_length=50, verbose_name="Last name")), + ("phone_number", models.CharField(blank=True, max_length=20, verbose_name="Phone number")), + ("phone_number_2", models.CharField(blank=True, max_length=20, verbose_name="Phone number 2")), + ("unit", models.CharField(blank=True, max_length=50, verbose_name="Unit")), + ("email", models.EmailField(blank=True, max_length=254, verbose_name="E-mail")), + ("specialization", models.CharField(blank=True, max_length=20, verbose_name="Specialization")), + ("address", models.CharField(blank=True, max_length=255, verbose_name="Address")), + ("city", models.CharField(blank=True, max_length=50, verbose_name="City")), + ( + "country", + models.ForeignKey( + default=1, on_delete=django.db.models.deletion.CASCADE, to="web.country", verbose_name="Country" + ), + ), + ("postal_code", models.CharField(blank=True, max_length=7, verbose_name="Postal code")), + ("fax_number", models.CharField(blank=True, max_length=20, verbose_name="Fax number")), + ("voucher_partner_code", models.CharField(blank=True, max_length=10, verbose_name="Code")), + ("name", models.CharField(blank=True, default="", max_length=50, verbose_name="Name")), + ("comment", models.TextField(blank=True, max_length=1024, null=True, verbose_name="Comment")), + ("languages", models.ManyToManyField(blank=True, to="web.Language", verbose_name="Known languages")), + ( + "user", + models.OneToOneField( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to=settings.AUTH_USER_MODEL, + verbose_name="Username", + ), + ), + ( + "privacy_notice_accepted", + models.BooleanField(default=False, verbose_name="Has accepted privacy notice?"), + ), + ("locations", models.ManyToManyField(blank=True, to="web.Location", verbose_name="Locations")), + ( + "voucher_types", + models.ManyToManyField(blank=True, to="web.VoucherType", verbose_name="Voucher types"), + ), ], ), migrations.CreateModel( - name='Item', + name="Item", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('is_fixed', models.BooleanField(default=False, verbose_name='Is the item fixed?')), - ('name', models.CharField(max_length=255, verbose_name='Name')), - ('disposable', models.BooleanField(default=False, verbose_name='Disposable set')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("is_fixed", models.BooleanField(default=False, verbose_name="Is the item fixed?")), + ("name", models.CharField(max_length=255, verbose_name="Name")), + ("disposable", models.BooleanField(default=False, verbose_name="Disposable set")), ], ), migrations.CreateModel( - name='Room', + name="Room", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('owner', models.CharField(max_length=50, verbose_name='Owner')), - ('address', models.CharField(max_length=255, verbose_name='Address')), - ('city', models.CharField(max_length=50, verbose_name='City')), - ('room_number', models.IntegerField(verbose_name='Room number')), - ('floor', models.IntegerField(verbose_name='Floor')), - ('is_vehicle', models.BooleanField(verbose_name='Is a vehicle?')), - ('equipment', models.ManyToManyField(blank=True, to='web.Item', verbose_name='On-site equipment')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("owner", models.CharField(max_length=50, verbose_name="Owner")), + ("address", models.CharField(max_length=255, verbose_name="Address")), + ("city", models.CharField(max_length=50, verbose_name="City")), + ("room_number", models.IntegerField(verbose_name="Room number")), + ("floor", models.IntegerField(verbose_name="Floor")), + ("is_vehicle", models.BooleanField(verbose_name="Is a vehicle?")), + ("equipment", models.ManyToManyField(blank=True, to="web.Item", verbose_name="On-site equipment")), ], ), migrations.CreateModel( - name='AppointmentType', + name="AppointmentType", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('code', models.CharField(max_length=20, verbose_name='Appointment code')), - ('description', models.CharField(max_length=2000, verbose_name='Appointment description')), - ('default_duration', models.IntegerField(verbose_name='Default duration (in minutes)')), - ('rest_time', models.IntegerField(default=0, verbose_name='Suggested rest time')), - ('required_equipment', - models.ManyToManyField(blank=True, to='web.Item', verbose_name='Required equipment')), - ('required_worker', models.CharField( - choices=[('DOCTOR', 'Doctor'), ('NURSE', 'Nurse'), ('PSYCHOLOGIST', 'Psychologist'), - ('ANY', 'Any')], default='ANY', max_length=20, - verbose_name='Type of worker required for appointment')), - ('calendar_color', models.CharField(default='#cfc600', max_length=2000, verbose_name='Calendar color')), - ('calendar_color_priority', models.IntegerField(default=1, verbose_name='Calendar color priority')), - ('calendar_font_color', - models.CharField(default='#00000', max_length=2000, verbose_name='Calendar font color')), - ('can_be_parallelized', models.BooleanField(default=False, verbose_name='Can be parallelized')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("code", models.CharField(max_length=20, verbose_name="Appointment code")), + ("description", models.CharField(max_length=2000, verbose_name="Appointment description")), + ("default_duration", models.IntegerField(verbose_name="Default duration (in minutes)")), + ("rest_time", models.IntegerField(default=0, verbose_name="Suggested rest time")), + ( + "required_equipment", + models.ManyToManyField(blank=True, to="web.Item", verbose_name="Required equipment"), + ), + ( + "required_worker", + models.CharField( + choices=[ + ("DOCTOR", "Doctor"), + ("NURSE", "Nurse"), + ("PSYCHOLOGIST", "Psychologist"), + ("ANY", "Any"), + ], + default="ANY", + max_length=20, + verbose_name="Type of worker required for appointment", + ), + ), + ("calendar_color", models.CharField(default="#cfc600", max_length=2000, verbose_name="Calendar color")), + ("calendar_color_priority", models.IntegerField(default=1, verbose_name="Calendar color priority")), + ( + "calendar_font_color", + models.CharField(default="#00000", max_length=2000, verbose_name="Calendar font color"), + ), + ("can_be_parallelized", models.BooleanField(default=False, verbose_name="Can be parallelized")), ], options={ - 'ordering': ['description'], + "ordering": ["description"], }, ), - migrations.CreateModel( - name='Subject', + name="Subject", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('sex', models.CharField(choices=[('M', 'Male'), ('F', 'Female')], max_length=1, verbose_name='Sex')), - ('first_name', models.CharField(max_length=50, verbose_name='First name')), - ('last_name', models.CharField(max_length=50, verbose_name='Last name')), - ('phone_number', models.CharField(blank=True, max_length=64, null=True, verbose_name='Phone number')), - ('phone_number_2', - models.CharField(blank=True, max_length=64, null=True, verbose_name='Phone number 2')), - ('phone_number_3', - models.CharField(blank=True, max_length=64, null=True, verbose_name='Phone number 3')), - ('email', models.EmailField(blank=True, max_length=254, null=True, verbose_name='E-mail')), - ('date_born', models.DateField(blank=True, null=True, verbose_name='Date of birth (YYYY-MM-DD)')), - ('address', models.CharField(blank=True, max_length=255, verbose_name='Address')), - ('postal_code', models.CharField(blank=True, max_length=7, verbose_name='Postal code')), - ('city', models.CharField(blank=True, max_length=50, verbose_name='City')), - ('dead', models.BooleanField(default=False, verbose_name='Deceased')), - ('country', models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='web.country', - verbose_name='Country')), - ('default_written_communication_language', - models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, - related_name='subjects_written_communication', to='web.language', - verbose_name='Default language for document generation')), - ('languages', models.ManyToManyField(blank=True, to='web.Language', verbose_name='Known languages')), - ('social_security_number', - models.CharField(blank=True, max_length=50, verbose_name='Social security number')), - ('next_of_kin_address', - models.TextField(blank=True, max_length=2000, verbose_name='Next of kin address')), - ('next_of_kin_name', models.CharField(blank=True, max_length=255, verbose_name='Next of kin')), - ('next_of_kin_phone', models.CharField(blank=True, max_length=50, verbose_name='Next of kin phone')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("sex", models.CharField(choices=[("M", "Male"), ("F", "Female")], max_length=1, verbose_name="Sex")), + ("first_name", models.CharField(max_length=50, verbose_name="First name")), + ("last_name", models.CharField(max_length=50, verbose_name="Last name")), + ("phone_number", models.CharField(blank=True, max_length=64, null=True, verbose_name="Phone number")), + ( + "phone_number_2", + models.CharField(blank=True, max_length=64, null=True, verbose_name="Phone number 2"), + ), + ( + "phone_number_3", + models.CharField(blank=True, max_length=64, null=True, verbose_name="Phone number 3"), + ), + ("email", models.EmailField(blank=True, max_length=254, null=True, verbose_name="E-mail")), + ("date_born", models.DateField(blank=True, null=True, verbose_name="Date of birth (YYYY-MM-DD)")), + ("address", models.CharField(blank=True, max_length=255, verbose_name="Address")), + ("postal_code", models.CharField(blank=True, max_length=7, verbose_name="Postal code")), + ("city", models.CharField(blank=True, max_length=50, verbose_name="City")), + ("dead", models.BooleanField(default=False, verbose_name="Deceased")), + ( + "country", + models.ForeignKey( + default=1, on_delete=django.db.models.deletion.CASCADE, to="web.country", verbose_name="Country" + ), + ), + ( + "default_written_communication_language", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="subjects_written_communication", + to="web.language", + verbose_name="Default language for document generation", + ), + ), + ("languages", models.ManyToManyField(blank=True, to="web.Language", verbose_name="Known languages")), + ( + "social_security_number", + models.CharField(blank=True, max_length=50, verbose_name="Social security number"), + ), + ( + "next_of_kin_address", + models.TextField(blank=True, max_length=2000, verbose_name="Next of kin address"), + ), + ("next_of_kin_name", models.CharField(blank=True, max_length=255, verbose_name="Next of kin")), + ("next_of_kin_phone", models.CharField(blank=True, max_length=50, verbose_name="Next of kin phone")), ], options={ - 'permissions': [('send_sample_mail_for_appointments', 'Can send sample collection list'), - ('export_subjects', 'Can export subject data to excel/csv')], + "permissions": [ + ("send_sample_mail_for_appointments", "Can send sample collection list"), + ("export_subjects", "Can export subject data to excel/csv"), + ], }, ), migrations.CreateModel( - name='StudySubject', + name="StudySubject", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('screening_number', models.CharField(blank=True, max_length=50, null=True, - verbose_name='Screening number')), - ('nd_number', models.CharField(blank=True, max_length=25, verbose_name='Subject number')), - ('comments', models.TextField(blank=True, max_length=2000, verbose_name='Comments')), - ('date_added', models.DateField(auto_now_add=True, verbose_name='Added on')), - ('referral', models.CharField(blank=True, max_length=128, null=True, verbose_name='Referred by')), - ('resigned', models.BooleanField(default=False, verbose_name='Resigned')), - ('resign_reason', models.TextField(blank=True, max_length=2000, verbose_name='Resign reason')), - ('type', models.CharField(blank=True, choices=[('P', 'PATIENT'), ('C', 'CONTROL')], max_length=1, - null=True, verbose_name='Type')), - ('default_location', models.ForeignKey(blank=True, null=True, - on_delete=django.db.models.deletion.CASCADE, - to='web.location', - verbose_name='Default appointment location')), - ('datetime_contact_reminder', models.DateTimeField(blank=True, null=True, - verbose_name='Please make a contact on')), - ('postponed', - models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=False, verbose_name='Postponed')), - ('information_sent', models.BooleanField(default=False, verbose_name='Information sent')), - ('flying_team', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, - to='web.flyingteam', - verbose_name='Default flying team location (if applicable)')), - ('exclude_reason', models.TextField(blank=True, max_length=2000, verbose_name='Exclude reason')), - ('excluded', models.BooleanField(default=False, verbose_name='Excluded')), - ('endpoint_reached', models.BooleanField(default=False, verbose_name='Endpoint Reached')), - ('endpoint_reached_reason', models.TextField(blank=True, max_length=2000, - verbose_name='Endpoint reached comments')), - ('health_partner', models.ForeignKey(blank=True, null=True, - on_delete=django.db.models.deletion.CASCADE, to='web.worker', - verbose_name='Health partner')), - ('health_partner_feedback_agreement', models.BooleanField(default=False, - verbose_name='Agrees to give information to referral')), - ('referral_letter', models.FileField(blank=True, null=True, - storage=django.core.files.storage.FileSystemStorage( - location='~/tmp/upload'), - upload_to='referral_letters', verbose_name='Referral letter')), - ('study', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, - to='web.study', verbose_name='Study')), - ('voucher_types', - models.ManyToManyField(blank=True, to='web.VoucherType', verbose_name='Voucher types')), - ('subject', - models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='web.subject', - verbose_name='Subject')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ( + "screening_number", + models.CharField(blank=True, max_length=50, null=True, verbose_name="Screening number"), + ), + ("nd_number", models.CharField(blank=True, max_length=25, verbose_name="Subject number")), + ("comments", models.TextField(blank=True, max_length=2000, verbose_name="Comments")), + ("date_added", models.DateField(auto_now_add=True, verbose_name="Added on")), + ("referral", models.CharField(blank=True, max_length=128, null=True, verbose_name="Referred by")), + ("resigned", models.BooleanField(default=False, verbose_name="Resigned")), + ("resign_reason", models.TextField(blank=True, max_length=2000, verbose_name="Resign reason")), + ( + "type", + models.CharField( + blank=True, + choices=[("P", "PATIENT"), ("C", "CONTROL")], + max_length=1, + null=True, + verbose_name="Type", + ), + ), + ( + "default_location", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.location", + verbose_name="Default appointment location", + ), + ), + ( + "datetime_contact_reminder", + models.DateTimeField(blank=True, null=True, verbose_name="Please make a contact on"), + ), + ( + "postponed", + models.BooleanField( + choices=[(True, "Yes"), (False, "No")], default=False, verbose_name="Postponed" + ), + ), + ("information_sent", models.BooleanField(default=False, verbose_name="Information sent")), + ( + "flying_team", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.flyingteam", + verbose_name="Default flying team location (if applicable)", + ), + ), + ("exclude_reason", models.TextField(blank=True, max_length=2000, verbose_name="Exclude reason")), + ("excluded", models.BooleanField(default=False, verbose_name="Excluded")), + ("endpoint_reached", models.BooleanField(default=False, verbose_name="Endpoint Reached")), + ( + "endpoint_reached_reason", + models.TextField(blank=True, max_length=2000, verbose_name="Endpoint reached comments"), + ), + ( + "health_partner", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.worker", + verbose_name="Health partner", + ), + ), + ( + "health_partner_feedback_agreement", + models.BooleanField(default=False, verbose_name="Agrees to give information to referral"), + ), + ( + "referral_letter", + models.FileField( + blank=True, + null=True, + storage=django.core.files.storage.FileSystemStorage(location="~/tmp/upload"), + upload_to="referral_letters", + verbose_name="Referral letter", + ), + ), + ( + "study", + models.ForeignKey( + editable=False, + on_delete=django.db.models.deletion.CASCADE, + to="web.study", + verbose_name="Study", + ), + ), + ( + "voucher_types", + models.ManyToManyField(blank=True, to="web.VoucherType", verbose_name="Voucher types"), + ), + ( + "subject", + models.ForeignKey( + editable=False, + on_delete=django.db.models.deletion.CASCADE, + to="web.subject", + verbose_name="Subject", + ), + ), ], ), migrations.CreateModel( - name='Visit', + name="Visit", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('datetime_begin', models.DateTimeField(verbose_name='Visit starts at')), - ('datetime_end', models.DateTimeField(verbose_name='Visit ends at')), - ('is_finished', models.BooleanField(default=False, verbose_name='Has ended')), - ('subject', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.studysubject', - verbose_name='Subject')), - ('appointment_types', - models.ManyToManyField(blank=True, to='web.AppointmentType', verbose_name='Requested appointments')), - ('post_mail_sent', models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=False, - verbose_name='Post mail sent')), - ('visit_number', models.IntegerField(default=1, verbose_name='Visit number')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("datetime_begin", models.DateTimeField(verbose_name="Visit starts at")), + ("datetime_end", models.DateTimeField(verbose_name="Visit ends at")), + ("is_finished", models.BooleanField(default=False, verbose_name="Has ended")), + ( + "subject", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, to="web.studysubject", verbose_name="Subject" + ), + ), + ( + "appointment_types", + models.ManyToManyField(blank=True, to="web.AppointmentType", verbose_name="Requested appointments"), + ), + ( + "post_mail_sent", + models.BooleanField( + choices=[(True, "Yes"), (False, "No")], default=False, verbose_name="Post mail sent" + ), + ), + ("visit_number", models.IntegerField(default=1, verbose_name="Visit number")), ], ), migrations.CreateModel( - name='Appointment', + name="Appointment", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('length', models.IntegerField(verbose_name='Appointment length (in minutes)')), - ('comment', models.TextField(blank=True, max_length=1024, null=True, verbose_name='Comment')), - ('datetime_when', models.DateTimeField(blank=True, null=True, verbose_name='Appointment on')), - ('status', models.CharField( - choices=[('SCHEDULED', 'Scheduled'), ('FINISHED', 'Finished'), ('CANCELLED', 'Cancelled'), - ('NO_SHOW', 'No Show')], default='SCHEDULED', max_length=20, verbose_name='Status')), - ('post_mail_sent', models.BooleanField(default=False, verbose_name='Post mail sent')), - ('flying_team', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, - to='web.flyingteam', verbose_name='Flying team (if applicable)')), - ('worker_assigned', models.ForeignKey(blank=True, null=True, - on_delete=django.db.models.deletion.CASCADE, to='web.worker', - verbose_name='Worker conducting the assessment (if applicable)')), - ('room', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, - to='web.room', verbose_name='Room ID')), - ('location', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, - to='web.location', verbose_name='Location')), - ('visit', - models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, - to='web.visit', verbose_name='Visit ID')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("length", models.IntegerField(verbose_name="Appointment length (in minutes)")), + ("comment", models.TextField(blank=True, max_length=1024, null=True, verbose_name="Comment")), + ("datetime_when", models.DateTimeField(blank=True, null=True, verbose_name="Appointment on")), + ( + "status", + models.CharField( + choices=[ + ("SCHEDULED", "Scheduled"), + ("FINISHED", "Finished"), + ("CANCELLED", "Cancelled"), + ("NO_SHOW", "No Show"), + ], + default="SCHEDULED", + max_length=20, + verbose_name="Status", + ), + ), + ("post_mail_sent", models.BooleanField(default=False, verbose_name="Post mail sent")), + ( + "flying_team", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.flyingteam", + verbose_name="Flying team (if applicable)", + ), + ), + ( + "worker_assigned", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.worker", + verbose_name="Worker conducting the assessment (if applicable)", + ), + ), + ( + "room", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.room", + verbose_name="Room ID", + ), + ), + ( + "location", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, to="web.location", verbose_name="Location" + ), + ), + ( + "visit", + models.ForeignKey( + blank=True, + editable=False, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.visit", + verbose_name="Visit ID", + ), + ), ], ), migrations.CreateModel( - name='Holiday', + name="Holiday", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('datetime_start', models.DateTimeField(verbose_name='On leave since')), - ('datetime_end', models.DateTimeField(verbose_name='On leave until')), - ('person', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.worker', - verbose_name='Worker')), - ('info', models.TextField(blank=True, max_length=2000, verbose_name='Comments')), - ('kind', models.CharField(choices=[('H', 'Holiday'), ('X', 'Extra Availability')], default='H', - help_text='Defines the kind of availability. Either Holiday or Extra Availability.', - max_length=1)), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("datetime_start", models.DateTimeField(verbose_name="On leave since")), + ("datetime_end", models.DateTimeField(verbose_name="On leave until")), + ( + "person", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, to="web.worker", verbose_name="Worker" + ), + ), + ("info", models.TextField(blank=True, max_length=2000, verbose_name="Comments")), + ( + "kind", + models.CharField( + choices=[("H", "Holiday"), ("X", "Extra Availability")], + default="H", + help_text="Defines the kind of availability. Either Holiday or Extra Availability.", + max_length=1, + ), + ), ], ), - migrations.CreateModel( - name='AppointmentTypeLink', + name="AppointmentTypeLink", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('date_when', models.DateTimeField(default=None, null=True)), - ('appointment', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.appointment')), - ('appointment_type', - models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.appointmenttype')), - ('worker', models.ForeignKey(default=None, null=True, on_delete=django.db.models.deletion.CASCADE, - to='web.worker')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("date_when", models.DateTimeField(default=None, null=True)), + ("appointment", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="web.appointment")), + ( + "appointment_type", + models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="web.appointmenttype"), + ), + ( + "worker", + models.ForeignKey( + default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to="web.worker" + ), + ), ], options={ - 'permissions': [('view_daily_planning', 'Can see daily planning')], + "permissions": [("view_daily_planning", "Can see daily planning")], }, ), migrations.CreateModel( - name='InconsistentSubject', + name="InconsistentSubject", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('redcap_url', - models.CharField(blank=True, max_length=255, null=True, verbose_name='URL to RED Cap subject')), - ('subject', - models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, - to='web.studysubject', verbose_name='Subject')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ( + "redcap_url", + models.CharField(blank=True, max_length=255, null=True, verbose_name="URL to RED Cap subject"), + ), + ( + "subject", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.studysubject", + verbose_name="Subject", + ), + ), ], ), migrations.CreateModel( - name='SubjectColumns', + name="SubjectColumns", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('sex', models.BooleanField(default=False, max_length=1, verbose_name='Sex')), - ('first_name', models.BooleanField(default=True, max_length=1, verbose_name='First name')), - ('last_name', models.BooleanField(default=True, max_length=1, verbose_name='Last name')), - ('languages', models.BooleanField(default=False, max_length=1, verbose_name='Known languages')), - ('default_written_communication_language', models.BooleanField(default=False, max_length=1, - verbose_name='Default language for document generation')), - ('phone_number', models.BooleanField(default=False, max_length=1, verbose_name='Phone number')), - ('phone_number_2', models.BooleanField(default=False, max_length=1, verbose_name='Phone number 2')), - ('phone_number_3', models.BooleanField(default=False, max_length=1, verbose_name='Phone number 3')), - ('email', models.BooleanField(default=False, max_length=1, verbose_name='E-mail')), - ('date_born', models.BooleanField(default=False, max_length=1, verbose_name='Date of birth')), - ('address', models.BooleanField(default=False, max_length=1, verbose_name='Address')), - ('postal_code', models.BooleanField(default=False, max_length=1, verbose_name='Postal code')), - ('city', models.BooleanField(default=False, max_length=1, verbose_name='City')), - ('country', models.BooleanField(default=False, max_length=1, verbose_name='Country')), - ('dead', models.BooleanField(default=True, max_length=1, verbose_name='Deceased')), - ('social_security_number', models.BooleanField(default=False, verbose_name='Social security_number')), - ('next_of_kin_address', - models.BooleanField(default=False, max_length=1, verbose_name='Next of kin address')), - ('next_of_kin_name', models.BooleanField(default=False, max_length=1, verbose_name='Next of kin')), - ('next_of_kin_phone', - models.BooleanField(default=False, max_length=1, verbose_name='Next of kin phone')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("sex", models.BooleanField(default=False, max_length=1, verbose_name="Sex")), + ("first_name", models.BooleanField(default=True, max_length=1, verbose_name="First name")), + ("last_name", models.BooleanField(default=True, max_length=1, verbose_name="Last name")), + ("languages", models.BooleanField(default=False, max_length=1, verbose_name="Known languages")), + ( + "default_written_communication_language", + models.BooleanField( + default=False, max_length=1, verbose_name="Default language for document generation" + ), + ), + ("phone_number", models.BooleanField(default=False, max_length=1, verbose_name="Phone number")), + ("phone_number_2", models.BooleanField(default=False, max_length=1, verbose_name="Phone number 2")), + ("phone_number_3", models.BooleanField(default=False, max_length=1, verbose_name="Phone number 3")), + ("email", models.BooleanField(default=False, max_length=1, verbose_name="E-mail")), + ("date_born", models.BooleanField(default=False, max_length=1, verbose_name="Date of birth")), + ("address", models.BooleanField(default=False, max_length=1, verbose_name="Address")), + ("postal_code", models.BooleanField(default=False, max_length=1, verbose_name="Postal code")), + ("city", models.BooleanField(default=False, max_length=1, verbose_name="City")), + ("country", models.BooleanField(default=False, max_length=1, verbose_name="Country")), + ("dead", models.BooleanField(default=True, max_length=1, verbose_name="Deceased")), + ("social_security_number", models.BooleanField(default=False, verbose_name="Social security_number")), + ( + "next_of_kin_address", + models.BooleanField(default=False, max_length=1, verbose_name="Next of kin address"), + ), + ("next_of_kin_name", models.BooleanField(default=False, max_length=1, verbose_name="Next of kin")), + ( + "next_of_kin_phone", + models.BooleanField(default=False, max_length=1, verbose_name="Next of kin phone"), + ), ], ), migrations.CreateModel( - name='VisitColumns', + name="VisitColumns", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('datetime_begin', models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, - verbose_name='Visit starts date')), - ('datetime_end', models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, - verbose_name='Visit ends date')), - ('is_finished', - models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, verbose_name='Is finished')), - ('post_mail_sent', models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, - verbose_name='Post mail sent')), - ('visit_number', models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, - verbose_name='Visit number')), - ('visible_appointment_types', models.BooleanField(default=False, verbose_name='All appointments')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ( + "datetime_begin", + models.BooleanField( + choices=[(True, "Yes"), (False, "No")], default=True, verbose_name="Visit starts date" + ), + ), + ( + "datetime_end", + models.BooleanField( + choices=[(True, "Yes"), (False, "No")], default=True, verbose_name="Visit ends date" + ), + ), + ( + "is_finished", + models.BooleanField( + choices=[(True, "Yes"), (False, "No")], default=True, verbose_name="Is finished" + ), + ), + ( + "post_mail_sent", + models.BooleanField( + choices=[(True, "Yes"), (False, "No")], default=True, verbose_name="Post mail sent" + ), + ), + ( + "visit_number", + models.BooleanField( + choices=[(True, "Yes"), (False, "No")], default=True, verbose_name="Visit number" + ), + ), + ("visible_appointment_types", models.BooleanField(default=False, verbose_name="All appointments")), ], ), migrations.CreateModel( - name='AppointmentColumns', + name="AppointmentColumns", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('flying_team', models.BooleanField(default=False, verbose_name='Flying team')), - ( - 'worker_assigned', - models.BooleanField(default=False, verbose_name='Worker conducting the assessment')), - ('appointment_types', models.BooleanField(default=True, verbose_name='Appointment types')), - ('room', models.BooleanField(default=False, verbose_name='Room')), - ('location', models.BooleanField(default=False, verbose_name='Location')), - ('comment', models.BooleanField(default=False, verbose_name='Comment')), - ('datetime_when', models.BooleanField(default=True, verbose_name='Comment')), - ('length', models.BooleanField(default=False, verbose_name='Appointment length')), - ('status', models.BooleanField(default=False, verbose_name='Status')), - ('post_mail_sent', models.BooleanField(default=False, verbose_name='Post mail sent')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("flying_team", models.BooleanField(default=False, verbose_name="Flying team")), + ( + "worker_assigned", + models.BooleanField(default=False, verbose_name="Worker conducting the assessment"), + ), + ("appointment_types", models.BooleanField(default=True, verbose_name="Appointment types")), + ("room", models.BooleanField(default=False, verbose_name="Room")), + ("location", models.BooleanField(default=False, verbose_name="Location")), + ("comment", models.BooleanField(default=False, verbose_name="Comment")), + ("datetime_when", models.BooleanField(default=True, verbose_name="Comment")), + ("length", models.BooleanField(default=False, verbose_name="Appointment length")), + ("status", models.BooleanField(default=False, verbose_name="Status")), + ("post_mail_sent", models.BooleanField(default=False, verbose_name="Post mail sent")), ], ), migrations.AlterModelOptions( - name='appointment', - options={'permissions': [('send_sample_mail_for_appointments', 'Can send sample collection list'), - ('view_statistics', 'Can see statistics')]}, + name="appointment", + options={ + "permissions": [ + ("send_sample_mail_for_appointments", "Can send sample collection list"), + ("view_statistics", "Can see statistics"), + ] + }, ), migrations.CreateModel( - name='CustomStudySubjectField', + name="CustomStudySubjectField", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=64)), - ('type', models.CharField( - choices=[('TEXT', 'Text'), ('BOOL', 'Boolean (True/False)'), ('INTEGER', 'Integer'), - ('DOUBLE', 'Double (real number)'), ('DATE', 'Date'), ('SELECT_LIST', 'Select list'), - ('FILE', 'File')], max_length=20)), - ('possible_values', models.CharField(blank=True, default='', max_length=1024, null=True)), - ('default_value', models.CharField(blank=True, max_length=256, null=True)), - ('readonly', models.BooleanField(default=False)), - ('required', models.BooleanField(default=False)), - ('unique', models.BooleanField(default=False)), - ('study', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='web.study', - verbose_name='Study')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("name", models.CharField(max_length=64)), + ( + "type", + models.CharField( + choices=[ + ("TEXT", "Text"), + ("BOOL", "Boolean (True/False)"), + ("INTEGER", "Integer"), + ("DOUBLE", "Double (real number)"), + ("DATE", "Date"), + ("SELECT_LIST", "Select list"), + ("FILE", "File"), + ], + max_length=20, + ), + ), + ("possible_values", models.CharField(blank=True, default="", max_length=1024, null=True)), + ("default_value", models.CharField(blank=True, max_length=256, null=True)), + ("readonly", models.BooleanField(default=False)), + ("required", models.BooleanField(default=False)), + ("unique", models.BooleanField(default=False)), + ( + "study", + models.ForeignKey( + editable=False, + on_delete=django.db.models.deletion.CASCADE, + to="web.study", + verbose_name="Study", + ), + ), ], ), migrations.CreateModel( - name='CustomStudySubjectValue', + name="CustomStudySubjectValue", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('value', models.CharField(blank=True, max_length=2048, null=True)), - ('study_subject', - models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='web.studysubject', - verbose_name='Study')), - ('study_subject_field', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, - to='web.customstudysubjectfield', - verbose_name='Custom Field')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("value", models.CharField(blank=True, max_length=2048, null=True)), + ( + "study_subject", + models.ForeignKey( + editable=False, + on_delete=django.db.models.deletion.CASCADE, + to="web.studysubject", + verbose_name="Study", + ), + ), + ( + "study_subject_field", + models.ForeignKey( + editable=False, + on_delete=django.db.models.deletion.CASCADE, + to="web.customstudysubjectfield", + verbose_name="Custom Field", + ), + ), ], ), migrations.AddField( - model_name='appointment', - name='appointment_types', - field=models.ManyToManyField(blank=True, related_name='new_appointment', through='web.AppointmentTypeLink', - to='web.AppointmentType', verbose_name='Appointment types'), + model_name="appointment", + name="appointment_types", + field=models.ManyToManyField( + blank=True, + related_name="new_appointment", + through="web.AppointmentTypeLink", + to="web.AppointmentType", + verbose_name="Appointment types", + ), ), migrations.CreateModel( - name='AppointmentList', + name="AppointmentList", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('type', models.CharField( - choices=[('GENERIC', 'Generic'), ('UNFINISHED', 'Unfinished'), ('APPROACHING', 'Approaching')], - max_length=50, verbose_name='Type of list')), - ('study', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.study')), - ('visible_appointment_columns', - models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.appointmentcolumns')), - ('visible_study_subject_columns', - models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.studycolumns')), - ('visible_subject_columns', - models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.subjectcolumns')), - ('visible_visit_columns', - models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.visitcolumns')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ( + "type", + models.CharField( + choices=[("GENERIC", "Generic"), ("UNFINISHED", "Unfinished"), ("APPROACHING", "Approaching")], + max_length=50, + verbose_name="Type of list", + ), + ), + ("study", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="web.study")), + ( + "visible_appointment_columns", + models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="web.appointmentcolumns"), + ), + ( + "visible_study_subject_columns", + models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="web.studycolumns"), + ), + ( + "visible_subject_columns", + models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="web.subjectcolumns"), + ), + ( + "visible_visit_columns", + models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="web.visitcolumns"), + ), ], ), migrations.CreateModel( - name='Availability', + name="Availability", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('day_number', models.IntegerField( - choices=[(1, 'MONDAY'), (2, 'TUESDAY'), (3, 'WEDNESDAY'), (4, 'THURSDAY'), (5, 'FRIDAY'), - (6, 'SATURDAY'), (7, 'SUNDAY')], verbose_name='Day of the week')), - ('available_from', models.TimeField(verbose_name='Available from')), - ('available_till', models.TimeField(verbose_name='Available until')), - ('person', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.worker', - verbose_name='Worker')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ( + "day_number", + models.IntegerField( + choices=[ + (1, "MONDAY"), + (2, "TUESDAY"), + (3, "WEDNESDAY"), + (4, "THURSDAY"), + (5, "FRIDAY"), + (6, "SATURDAY"), + (7, "SUNDAY"), + ], + verbose_name="Day of the week", + ), + ), + ("available_from", models.TimeField(verbose_name="Available from")), + ("available_till", models.TimeField(verbose_name="Available until")), + ( + "person", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, to="web.worker", verbose_name="Worker" + ), + ), ], ), migrations.CreateModel( - name='ContactAttempt', + name="ContactAttempt", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('type', models.CharField( - choices=[('E', 'Email'), ('M', 'Post mail'), ('F', 'Face to face'), ('X', 'Fax'), ('P', 'Phone'), - ('S', 'SMS')], default='P', max_length=2)), - ( - 'datetime_when', - models.DateTimeField(help_text='When did the contact occurred?', verbose_name='When')), - ('success', models.BooleanField(default=False)), - ('comment', models.TextField(blank=True, max_length=1024, null=True)), - ('subject', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.studysubject', - verbose_name='Subject')), - ('worker', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='web.worker', - verbose_name='Worker')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ( + "type", + models.CharField( + choices=[ + ("E", "Email"), + ("M", "Post mail"), + ("F", "Face to face"), + ("X", "Fax"), + ("P", "Phone"), + ("S", "SMS"), + ], + default="P", + max_length=2, + ), + ), + ( + "datetime_when", + models.DateTimeField(help_text="When did the contact occurred?", verbose_name="When"), + ), + ("success", models.BooleanField(default=False)), + ("comment", models.TextField(blank=True, max_length=1024, null=True)), + ( + "subject", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, to="web.studysubject", verbose_name="Subject" + ), + ), + ( + "worker", + models.ForeignKey( + null=True, on_delete=django.db.models.deletion.CASCADE, to="web.worker", verbose_name="Worker" + ), + ), ], ), migrations.CreateModel( - name='InconsistentField', + name="InconsistentField", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=255, verbose_name='Field name')), - ('smash_value', models.CharField(max_length=255, verbose_name='Smash value')), - ('redcap_value', models.CharField(max_length=255, verbose_name='RED Cap value')), - ('inconsistent_subject', - models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.inconsistentsubject', - verbose_name='Invalid fields')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("name", models.CharField(max_length=255, verbose_name="Field name")), + ("smash_value", models.CharField(max_length=255, verbose_name="Smash value")), + ("redcap_value", models.CharField(max_length=255, verbose_name="RED Cap value")), + ( + "inconsistent_subject", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to="web.inconsistentsubject", + verbose_name="Invalid fields", + ), + ), ], ), migrations.CreateModel( - name='MailTemplate', + name="MailTemplate", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=255)), - ('context', - models.CharField(choices=[('A', 'Appointment'), ('S', 'Subject'), ('V', 'Visit'), ('C', 'Voucher')], - max_length=1)), - ('template_file', models.FileField(upload_to='templates/')), - ('language', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, - to='web.language')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("name", models.CharField(max_length=255)), + ( + "context", + models.CharField( + choices=[("A", "Appointment"), ("S", "Subject"), ("V", "Visit"), ("C", "Voucher")], max_length=1 + ), + ), + ("template_file", models.FileField(upload_to="templates/")), + ( + "language", + models.ForeignKey( + blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to="web.language" + ), + ), ], ), migrations.CreateModel( - name='MissingSubject', + name="MissingSubject", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('ignore', models.BooleanField(default=False, verbose_name='Ignore missing subject')), - ('redcap_id', models.CharField(blank=True, max_length=255, null=True, verbose_name='RED Cap id')), - ('redcap_url', - models.CharField(blank=True, max_length=255, null=True, verbose_name='URL to RED Cap subject')), - ('subject', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, - to='web.studysubject', verbose_name='Subject')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("ignore", models.BooleanField(default=False, verbose_name="Ignore missing subject")), + ("redcap_id", models.CharField(blank=True, max_length=255, null=True, verbose_name="RED Cap id")), + ( + "redcap_url", + models.CharField(blank=True, max_length=255, null=True, verbose_name="URL to RED Cap subject"), + ), + ( + "subject", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.studysubject", + verbose_name="Subject", + ), + ), ], ), migrations.CreateModel( - name='Provenance', + name="Provenance", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('modified_table', models.CharField(max_length=1024, null=True, verbose_name='Modified table')), - ('modified_table_id', models.IntegerField(default=0, null=True, verbose_name='Modified table row')), - ('modification_date', models.DateTimeField(auto_now_add=True, verbose_name='Modified on')), - ('previous_value', - models.CharField(blank=True, max_length=2048, null=True, verbose_name='Previous Value')), - ('new_value', models.CharField(blank=True, max_length=2048, null=True, verbose_name='New Value')), - ('modification_description', models.CharField(max_length=20480, verbose_name='Description')), - ('modification_author', - models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='web.worker', - verbose_name='Worker who modified the row')), - ('modified_field', models.CharField(blank='', max_length=1024, verbose_name='Modified field')), - ( - 'request_path', - models.CharField(blank=True, max_length=20480, null=True, verbose_name='Request Path')), - ('request_ip_addr', models.GenericIPAddressField(null=True, verbose_name='Request IP Address')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("modified_table", models.CharField(max_length=1024, null=True, verbose_name="Modified table")), + ("modified_table_id", models.IntegerField(default=0, null=True, verbose_name="Modified table row")), + ("modification_date", models.DateTimeField(auto_now_add=True, verbose_name="Modified on")), + ( + "previous_value", + models.CharField(blank=True, max_length=2048, null=True, verbose_name="Previous Value"), + ), + ("new_value", models.CharField(blank=True, max_length=2048, null=True, verbose_name="New Value")), + ("modification_description", models.CharField(max_length=20480, verbose_name="Description")), + ( + "modification_author", + models.ForeignKey( + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.worker", + verbose_name="Worker who modified the row", + ), + ), + ("modified_field", models.CharField(blank="", max_length=1024, verbose_name="Modified field")), + ( + "request_path", + models.CharField(blank=True, max_length=20480, null=True, verbose_name="Request Path"), + ), + ("request_ip_addr", models.GenericIPAddressField(null=True, verbose_name="Request IP Address")), ], options={ - 'index_together': {('modified_table', 'modified_table_id', 'modification_date')}, + "index_together": {("modified_table", "modified_table_id", "modification_date")}, }, ), migrations.CreateModel( - name='StudyVisitList', + name="StudyVisitList", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('type', models.CharField( - choices=[('GENERIC', 'Generic visit list'), ('EXCEEDED_TIME', 'Exceeded visit time'), - ('UNFINISHED', 'Unfinished visits'), - ('MISSING_APPOINTMENTS', 'Visits with missing appointments'), - ('APPROACHING_WITHOUT_APPOINTMENTS', 'Approaching visits'), - ('APPROACHING_FOR_MAIL_CONTACT', 'Post mail for approaching visits')], max_length=50, - verbose_name='Type of list')), - ('study', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.study')), - ('visible_subject_columns', - models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.subjectcolumns')), - ('visible_visit_columns', - models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.visitcolumns')), - ( - 'visible_appointment_types_done', - models.BooleanField(default=False, verbose_name='Done appointments')), - ('visible_appointment_types_in_progress', - models.BooleanField(default=False, verbose_name='Appointments in progress')), - ('visible_appointment_types_missing', - models.BooleanField(default=False, verbose_name='Missing appointments')), - ('visible_study_subject_columns', - models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.studycolumns')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ( + "type", + models.CharField( + choices=[ + ("GENERIC", "Generic visit list"), + ("EXCEEDED_TIME", "Exceeded visit time"), + ("UNFINISHED", "Unfinished visits"), + ("MISSING_APPOINTMENTS", "Visits with missing appointments"), + ("APPROACHING_WITHOUT_APPOINTMENTS", "Approaching visits"), + ("APPROACHING_FOR_MAIL_CONTACT", "Post mail for approaching visits"), + ], + max_length=50, + verbose_name="Type of list", + ), + ), + ("study", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="web.study")), + ( + "visible_subject_columns", + models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="web.subjectcolumns"), + ), + ( + "visible_visit_columns", + models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="web.visitcolumns"), + ), + ( + "visible_appointment_types_done", + models.BooleanField(default=False, verbose_name="Done appointments"), + ), + ( + "visible_appointment_types_in_progress", + models.BooleanField(default=False, verbose_name="Appointments in progress"), + ), + ( + "visible_appointment_types_missing", + models.BooleanField(default=False, verbose_name="Missing appointments"), + ), + ( + "visible_study_subject_columns", + models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="web.studycolumns"), + ), ], ), migrations.CreateModel( - name='Voucher', + name="Voucher", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('number', models.CharField(max_length=50, unique=True, verbose_name='Number')), - ('issue_date', models.DateField(verbose_name='Issue date')), - ('expiry_date', models.DateField(verbose_name='Expiry date')), - ('status', models.CharField( - choices=[('NEW', 'New'), ('IN_USE', 'In use'), ('USED', 'Used'), ('EXPIRED', 'Expired'), - ('REMOVED', 'Removed')], default='NEW', max_length=20, verbose_name='Status')), - ('feedback', models.TextField(blank=True, max_length=2000, verbose_name='Feedback')), - ('study_subject', - models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, related_name='vouchers', - to='web.studysubject')), - ('usage_partner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.worker')), - ('voucher_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.vouchertype')), - ('hours', models.IntegerField(default=0, verbose_name='Hours')), - ('issue_worker', - models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='issued_vouchers', - to='web.worker', verbose_name='Issued by')), - ( - 'activity_type', - models.CharField(blank=True, default='', max_length=40, verbose_name='Activity type')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("number", models.CharField(max_length=50, unique=True, verbose_name="Number")), + ("issue_date", models.DateField(verbose_name="Issue date")), + ("expiry_date", models.DateField(verbose_name="Expiry date")), + ( + "status", + models.CharField( + choices=[ + ("NEW", "New"), + ("IN_USE", "In use"), + ("USED", "Used"), + ("EXPIRED", "Expired"), + ("REMOVED", "Removed"), + ], + default="NEW", + max_length=20, + verbose_name="Status", + ), + ), + ("feedback", models.TextField(blank=True, max_length=2000, verbose_name="Feedback")), + ( + "study_subject", + models.ForeignKey( + editable=False, + on_delete=django.db.models.deletion.CASCADE, + related_name="vouchers", + to="web.studysubject", + ), + ), + ("usage_partner", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="web.worker")), + ("voucher_type", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="web.vouchertype")), + ("hours", models.IntegerField(default=0, verbose_name="Hours")), + ( + "issue_worker", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="issued_vouchers", + to="web.worker", + verbose_name="Issued by", + ), + ), + ( + "activity_type", + models.CharField(blank=True, default="", max_length=40, verbose_name="Activity type"), + ), ], ), migrations.CreateModel( - name='VoucherPartnerSession', + name="VoucherPartnerSession", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('length', models.IntegerField(verbose_name='Length (minutes)')), - ('date', models.DateTimeField(verbose_name='Issue date')), - ('voucher', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, - related_name='voucher_partner_sessions', to='web.voucher')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("length", models.IntegerField(verbose_name="Length (minutes)")), + ("date", models.DateTimeField(verbose_name="Issue date")), + ( + "voucher", + models.ForeignKey( + editable=False, + on_delete=django.db.models.deletion.CASCADE, + related_name="voucher_partner_sessions", + to="web.voucher", + ), + ), ], ), migrations.CreateModel( - name='VoucherTypePrice', + name="VoucherTypePrice", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('price', models.DecimalField(decimal_places=2, max_digits=6, verbose_name='Price')), - ('start_date', models.DateField(verbose_name='Start date')), - ('end_date', models.DateField(verbose_name='End date')), - ('voucher_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='prices', - to='web.vouchertype')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("price", models.DecimalField(decimal_places=2, max_digits=6, verbose_name="Price")), + ("start_date", models.DateField(verbose_name="Start date")), + ("end_date", models.DateField(verbose_name="End date")), + ( + "voucher_type", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, related_name="prices", to="web.vouchertype" + ), + ), ], ), migrations.CreateModel( - name='WorkerStudyRole', + name="WorkerStudyRole", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField( - choices=[('DOCTOR', 'Doctor'), ('NURSE', 'Nurse'), ('PSYCHOLOGIST', 'Psychologist'), - ('TECHNICIAN', 'Technician'), ('SECRETARY', 'Secretary'), - ('PROJECT MANAGER', 'Project Manager')], max_length=20, verbose_name='Role')), - ('study', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.study')), - ('worker', - models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='roles', to='web.worker')), - ('permissions', - models.ManyToManyField(blank=True, to='auth.Permission', verbose_name='Worker Study Permissions')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ( + "name", + models.CharField( + choices=[ + ("DOCTOR", "Doctor"), + ("NURSE", "Nurse"), + ("PSYCHOLOGIST", "Psychologist"), + ("TECHNICIAN", "Technician"), + ("SECRETARY", "Secretary"), + ("PROJECT MANAGER", "Project Manager"), + ], + max_length=20, + verbose_name="Role", + ), + ), + ("study", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="web.study")), + ( + "worker", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, related_name="roles", to="web.worker" + ), + ), + ( + "permissions", + models.ManyToManyField(blank=True, to="auth.Permission", verbose_name="Worker Study Permissions"), + ), ], ), migrations.CreateModel( - name='ConfigurationItem', + name="ConfigurationItem", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('type', models.CharField(editable=False, max_length=50, verbose_name='Type')), - ('name', models.CharField(editable=False, max_length=255, verbose_name='Name')), - ('value', models.CharField(max_length=1024, verbose_name='Value')), - ('value_type', - models.CharField(choices=[('PASSWORD', 'Password'), ('TEXT', 'Text')], default='TEXT', max_length=32, - verbose_name='Value type')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("type", models.CharField(editable=False, max_length=50, verbose_name="Type")), + ("name", models.CharField(editable=False, max_length=255, verbose_name="Name")), + ("value", models.CharField(max_length=1024, verbose_name="Value")), + ( + "value_type", + models.CharField( + choices=[("PASSWORD", "Password"), ("TEXT", "Text")], + default="TEXT", + max_length=32, + verbose_name="Value type", + ), + ), ], ), migrations.CreateModel( - name='EtlData', + name="EtlData", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('filename', models.CharField(blank=True, default='', max_length=128, - verbose_name='File used for automatic import')), - ('run_at_times', models.CharField(blank=True, default='', max_length=1024, - verbose_name='At what time automatic import should run')), - ('csv_delimiter', models.CharField(default=',', max_length=1, verbose_name='CSV delimiter')), - ('date_format', models.CharField(default='%Y-%m-%d', max_length=20, verbose_name='Date format')), - ('import_worker', - models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='web.worker', - verbose_name='Worker used by importer')), - ('study', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='web.study', - verbose_name='Study')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ( + "filename", + models.CharField( + blank=True, default="", max_length=128, verbose_name="File used for automatic import" + ), + ), + ( + "run_at_times", + models.CharField( + blank=True, default="", max_length=1024, verbose_name="At what time automatic import should run" + ), + ), + ("csv_delimiter", models.CharField(default=",", max_length=1, verbose_name="CSV delimiter")), + ("date_format", models.CharField(default="%Y-%m-%d", max_length=20, verbose_name="Date format")), + ( + "import_worker", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.worker", + verbose_name="Worker used by importer", + ), + ), + ( + "study", + models.ForeignKey( + editable=False, + on_delete=django.db.models.deletion.CASCADE, + to="web.study", + verbose_name="Study", + ), + ), ], ), migrations.CreateModel( - name='VisitImportData', + name="VisitImportData", fields=[ - ('etldata_ptr', - models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, - primary_key=True, serialize=False, to='web.etldata')), - ('subject_id_column_name', - models.CharField(default='donor_id', max_length=128, verbose_name='Subject id column name')), - ('visit_date_column_name', - models.CharField(default='dateofvisit', max_length=128, verbose_name='Visit date column name')), - ('location_column_name', - models.CharField(default='adressofvisit', max_length=128, verbose_name='Location column name')), - ('visit_number_column_name', - models.CharField(default='visit_id', max_length=128, verbose_name='Visit number column name')), - ('appointment_type', - models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, - to='web.appointmenttype', verbose_name='Default appointment type')), + ( + "etldata_ptr", + models.OneToOneField( + auto_created=True, + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + serialize=False, + to="web.etldata", + ), + ), + ( + "subject_id_column_name", + models.CharField(default="donor_id", max_length=128, verbose_name="Subject id column name"), + ), + ( + "visit_date_column_name", + models.CharField(default="dateofvisit", max_length=128, verbose_name="Visit date column name"), + ), + ( + "location_column_name", + models.CharField(default="adressofvisit", max_length=128, verbose_name="Location column name"), + ), + ( + "visit_number_column_name", + models.CharField(default="visit_id", max_length=128, verbose_name="Visit number column name"), + ), + ( + "appointment_type", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.appointmenttype", + verbose_name="Default appointment type", + ), + ), ], - bases=('web.etldata',), + bases=("web.etldata",), ), migrations.CreateModel( - name='SubjectImportData', + name="SubjectImportData", fields=[ - ('etldata_ptr', - models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, - primary_key=True, serialize=False, to='web.etldata')), - ('country', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, - to='web.country', verbose_name='Default country')), - ('location', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, - to='web.location', verbose_name='Default location')), + ( + "etldata_ptr", + models.OneToOneField( + auto_created=True, + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + serialize=False, + to="web.etldata", + ), + ), + ( + "country", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to="web.country", + verbose_name="Default country", + ), + ), + ( + "location", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to="web.location", + verbose_name="Default location", + ), + ), ], - bases=('web.etldata',), + bases=("web.etldata",), ), migrations.CreateModel( - name='EtlColumnMapping', + name="EtlColumnMapping", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('table_name', models.CharField(blank=True, default='', max_length=128)), - ('column_name', models.CharField(blank=True, default='', max_length=128)), - ('csv_column_name', models.CharField(blank=True, default='', max_length=1024)), - ('enabled', models.BooleanField(default=True)), - ('etl_data', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, - related_name='column_mappings', to='web.etldata', - verbose_name='Importer')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("table_name", models.CharField(blank=True, default="", max_length=128)), + ("column_name", models.CharField(blank=True, default="", max_length=128)), + ("csv_column_name", models.CharField(blank=True, default="", max_length=1024)), + ("enabled", models.BooleanField(default=True)), + ( + "etl_data", + models.ForeignKey( + editable=False, + on_delete=django.db.models.deletion.CASCADE, + related_name="column_mappings", + to="web.etldata", + verbose_name="Importer", + ), + ), ], ), migrations.CreateModel( - name='StudySubjectList', + name="StudySubjectList", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('type', models.CharField(blank=True, choices=[('GENERIC', 'Generic subject list'), - ('NO_VISIT', 'Subjects without visit'), - ('REQUIRE_CONTACT', 'Subjects required contact'), ( - 'VOUCHER_EXPIRY', - 'Subject with vouchers to be expired soon')], - editable=False, max_length=50, null=True, verbose_name='Type of list')), - ('study', - models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='web.study')), - ('visible_subject_study_columns', - models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='web.studycolumns')), - ('visible_subject_columns', - models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, - to='web.subjectcolumns')), - ('visits', models.BooleanField(default=True, verbose_name='Visits summary')), - ('last_contact_attempt', models.BooleanField(default=False, verbose_name='Last contact attempt')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ( + "type", + models.CharField( + blank=True, + choices=[ + ("GENERIC", "Generic subject list"), + ("NO_VISIT", "Subjects without visit"), + ("REQUIRE_CONTACT", "Subjects required contact"), + ("VOUCHER_EXPIRY", "Subject with vouchers to be expired soon"), + ], + editable=False, + max_length=50, + null=True, + verbose_name="Type of list", + ), + ), + ( + "study", + models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to="web.study"), + ), + ( + "visible_subject_study_columns", + models.ForeignKey( + editable=False, on_delete=django.db.models.deletion.CASCADE, to="web.studycolumns" + ), + ), + ( + "visible_subject_columns", + models.ForeignKey( + editable=False, on_delete=django.db.models.deletion.CASCADE, to="web.subjectcolumns" + ), + ), + ("visits", models.BooleanField(default=True, verbose_name="Visits summary")), + ("last_contact_attempt", models.BooleanField(default=False, verbose_name="Last contact attempt")), ], ), migrations.CreateModel( - name='CustomStudySubjectVisibility', + name="CustomStudySubjectVisibility", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('visible', models.BooleanField(default=False)), - ('study_subject_field', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, - to='web.customstudysubjectfield', - verbose_name='Custom Field')), - ('visible_subject_study_columns', - models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='web.studycolumns', - verbose_name='List of visible columns')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("visible", models.BooleanField(default=False)), + ( + "study_subject_field", + models.ForeignKey( + editable=False, + on_delete=django.db.models.deletion.CASCADE, + to="web.customstudysubjectfield", + verbose_name="Custom Field", + ), + ), + ( + "visible_subject_study_columns", + models.ForeignKey( + editable=False, + on_delete=django.db.models.deletion.CASCADE, + to="web.studycolumns", + verbose_name="List of visible columns", + ), + ), ], ), - migrations.RunPython(configuration_item_color_fields__0025), migrations.RunPython(configuration_items__0032), migrations.RunPython(configuration_item_color_fields__0050), - migrations.RunSQL('insert into web_country (name, "order") values(\'---\', 0);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Afghanistan\', 100);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Albania\', 101);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Algeria\', 102);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Andorra\', 103);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Angola\', 104);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Antigua & Deps\', 105);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Argentina\', 106);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Armenia\', 107);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Australia\', 108);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Austria\', 109);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Azerbaijan\', 110);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Bahamas\', 111);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Bahrain\', 112);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Bangladesh\', 113);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Barbados\', 114);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Belarus\', 115);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Belgium\', 4);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Belize\', 117);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Benin\', 118);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Bhutan\', 119);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Bolivia\', 120);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Bosnia Herzegovina\', 121);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Botswana\', 122);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Brazil\', 123);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Brunei\', 124);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Bulgaria\', 125);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Burkina\', 126);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Burundi\', 127);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Cambodia\', 128);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Cameroon\', 129);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Canada\', 130);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Cape Verde\', 131);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Central African Rep\', 132);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Chad\', 133);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Chile\', 134);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'China\', 135);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Colombia\', 136);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Comoros\', 137);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Congo\', 138);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Congo {Democratic Rep}\', 139);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Costa Rica\', 140);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Croatia\', 141);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Cuba\', 142);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Cyprus\', 143);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Czech Republic\', 144);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Denmark\', 145);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Djibouti\', 146);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Dominica\', 147);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Dominican Republic\', 148);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'East Timor\', 149);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Ecuador\', 150);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Egypt\', 151);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'El Salvador\', 152);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Equatorial Guinea\', 153);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Eritrea\', 154);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Estonia\', 155);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Ethiopia\', 156);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Fiji\', 157);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Finland\', 158);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'France\', 2);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Gabon\', 160);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Gambia\', 161);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Georgia\', 162);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Germany\', 3);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Ghana\', 164);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Greece\', 165);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Grenada\', 166);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Guatemala\', 167);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Guinea\', 168);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Guinea-Bissau\', 169);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Guyana\', 170);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Haiti\', 171);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Honduras\', 172);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Hungary\', 173);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Iceland\', 174);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'India\', 175);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Indonesia\', 176);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Iran\', 177);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Iraq\', 178);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Ireland {Republic}\', 179);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Israel\', 180);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Italy\', 181);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Ivory Coast\', 182);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Jamaica\', 183);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Japan\', 184);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Jordan\', 185);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Kazakhstan\', 186);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Kenya\', 187);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Kiribati\', 188);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Korea North\', 189);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Korea South\', 190);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Kosovo\', 191);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Kuwait\', 192);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Kyrgyzstan\', 193);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Laos\', 194);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Latvia\', 195);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Lebanon\', 196);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Lesotho\', 197);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Liberia\', 198);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Libya\', 199);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Liechtenstein\', 200);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Lithuania\', 201);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Luxembourg\', 1);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Macedonia\', 203);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Madagascar\', 204);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Malawi\', 205);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Malaysia\', 206);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Maldives\', 207);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Mali\', 208);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Malta\', 209);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Marshall Islands\', 210);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Mauritania\', 211);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Mauritius\', 212);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Mexico\', 213);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Micronesia\', 214);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Moldova\', 215);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Monaco\', 216);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Mongolia\', 217);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Montenegro\', 218);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Morocco\', 219);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Mozambique\', 220);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Myanmar, {Burma}\', 221);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Namibia\', 222);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Nauru\', 223);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Nepal\', 224);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Netherlands\', 225);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'New Zealand\', 226);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Nicaragua\', 227);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Niger\', 228);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Nigeria\', 229);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Norway\', 230);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Oman\', 231);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Pakistan\', 232);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Palau\', 233);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Panama\', 234);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Papua New Guinea\', 235);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Paraguay\', 236);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Peru\', 237);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Philippines\', 238);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Poland\', 239);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Portugal\', 240);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Qatar\', 241);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Romania\', 242);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Russian Federation\', 243);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Rwanda\', 244);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'St Kitts & Nevis\', 245);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'St Lucia\', 246);'), - migrations.RunSQL( - 'insert into web_country (name, "order") values(\'Saint Vincent & the Grenadines\', 247);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Samoa\', 248);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'San Marino\', 249);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Sao Tome & Principe\', 250);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Saudi Arabia\', 251);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Senegal\', 252);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Serbia\', 253);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Seychelles\', 254);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Sierra Leone\', 255);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Singapore\', 256);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Slovakia\', 257);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Slovenia\', 258);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Solomon Islands\', 259);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Somalia\', 260);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'South Africa\', 261);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'South Sudan\', 262);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Spain\', 263);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Sri Lanka\', 264);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Sudan\', 265);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Suriname\', 266);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Swaziland\', 267);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Sweden\', 268);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Switzerland\', 269);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Syria\', 270);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Taiwan\', 271);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Tajikistan\', 272);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Tanzania\', 273);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Thailand\', 274);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Togo\', 275);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Tonga\', 276);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Trinidad & Tobago\', 277);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Tunisia\', 278);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Turkey\', 279);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Turkmenistan\', 280);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Tuvalu\', 281);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Uganda\', 282);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Ukraine\', 283);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'United Arab Emirates\', 284);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'United Kingdom\', 285);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'United States\', 286);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Uruguay\', 287);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Uzbekistan\', 288);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Vanuatu\', 289);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Vatican City\', 290);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Venezuela\', 291);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Vietnam\', 292);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Yemen\', 293);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Zambia\', 294);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Zimbabwe\', 295);'), - + migrations.RunSQL("insert into web_country (name, \"order\") values('---', 0);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Afghanistan', 100);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Albania', 101);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Algeria', 102);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Andorra', 103);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Angola', 104);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Antigua & Deps', 105);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Argentina', 106);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Armenia', 107);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Australia', 108);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Austria', 109);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Azerbaijan', 110);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Bahamas', 111);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Bahrain', 112);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Bangladesh', 113);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Barbados', 114);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Belarus', 115);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Belgium', 4);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Belize', 117);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Benin', 118);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Bhutan', 119);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Bolivia', 120);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Bosnia Herzegovina', 121);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Botswana', 122);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Brazil', 123);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Brunei', 124);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Bulgaria', 125);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Burkina', 126);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Burundi', 127);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Cambodia', 128);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Cameroon', 129);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Canada', 130);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Cape Verde', 131);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Central African Rep', 132);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Chad', 133);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Chile', 134);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('China', 135);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Colombia', 136);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Comoros', 137);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Congo', 138);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Congo {Democratic Rep}', 139);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Costa Rica', 140);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Croatia', 141);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Cuba', 142);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Cyprus', 143);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Czech Republic', 144);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Denmark', 145);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Djibouti', 146);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Dominica', 147);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Dominican Republic', 148);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('East Timor', 149);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Ecuador', 150);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Egypt', 151);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('El Salvador', 152);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Equatorial Guinea', 153);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Eritrea', 154);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Estonia', 155);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Ethiopia', 156);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Fiji', 157);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Finland', 158);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('France', 2);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Gabon', 160);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Gambia', 161);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Georgia', 162);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Germany', 3);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Ghana', 164);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Greece', 165);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Grenada', 166);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Guatemala', 167);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Guinea', 168);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Guinea-Bissau', 169);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Guyana', 170);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Haiti', 171);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Honduras', 172);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Hungary', 173);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Iceland', 174);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('India', 175);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Indonesia', 176);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Iran', 177);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Iraq', 178);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Ireland {Republic}', 179);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Israel', 180);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Italy', 181);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Ivory Coast', 182);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Jamaica', 183);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Japan', 184);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Jordan', 185);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Kazakhstan', 186);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Kenya', 187);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Kiribati', 188);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Korea North', 189);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Korea South', 190);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Kosovo', 191);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Kuwait', 192);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Kyrgyzstan', 193);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Laos', 194);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Latvia', 195);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Lebanon', 196);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Lesotho', 197);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Liberia', 198);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Libya', 199);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Liechtenstein', 200);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Lithuania', 201);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Luxembourg', 1);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Macedonia', 203);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Madagascar', 204);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Malawi', 205);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Malaysia', 206);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Maldives', 207);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Mali', 208);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Malta', 209);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Marshall Islands', 210);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Mauritania', 211);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Mauritius', 212);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Mexico', 213);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Micronesia', 214);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Moldova', 215);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Monaco', 216);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Mongolia', 217);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Montenegro', 218);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Morocco', 219);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Mozambique', 220);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Myanmar, {Burma}', 221);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Namibia', 222);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Nauru', 223);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Nepal', 224);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Netherlands', 225);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('New Zealand', 226);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Nicaragua', 227);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Niger', 228);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Nigeria', 229);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Norway', 230);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Oman', 231);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Pakistan', 232);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Palau', 233);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Panama', 234);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Papua New Guinea', 235);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Paraguay', 236);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Peru', 237);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Philippines', 238);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Poland', 239);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Portugal', 240);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Qatar', 241);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Romania', 242);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Russian Federation', 243);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Rwanda', 244);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('St Kitts & Nevis', 245);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('St Lucia', 246);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Saint Vincent & the Grenadines', 247);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Samoa', 248);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('San Marino', 249);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Sao Tome & Principe', 250);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Saudi Arabia', 251);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Senegal', 252);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Serbia', 253);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Seychelles', 254);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Sierra Leone', 255);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Singapore', 256);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Slovakia', 257);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Slovenia', 258);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Solomon Islands', 259);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Somalia', 260);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('South Africa', 261);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('South Sudan', 262);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Spain', 263);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Sri Lanka', 264);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Sudan', 265);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Suriname', 266);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Swaziland', 267);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Sweden', 268);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Switzerland', 269);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Syria', 270);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Taiwan', 271);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Tajikistan', 272);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Tanzania', 273);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Thailand', 274);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Togo', 275);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Tonga', 276);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Trinidad & Tobago', 277);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Tunisia', 278);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Turkey', 279);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Turkmenistan', 280);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Tuvalu', 281);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Uganda', 282);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Ukraine', 283);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('United Arab Emirates', 284);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('United Kingdom', 285);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('United States', 286);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Uruguay', 287);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Uzbekistan', 288);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Vanuatu', 289);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Vatican City', 290);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Venezuela', 291);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Vietnam', 292);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Yemen', 293);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Zambia', 294);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Zimbabwe', 295);"), migrations.RunPython(create_default_study__0071__072__0076__0077__0079__0080__081__0085__0086__0140), migrations.RunPython(configuration_items__0158), migrations.RunPython(configuration_items__0159), @@ -1926,5 +2988,4 @@ class Migration(migrations.Migration): migrations.RunPython(configuration_items__0168), migrations.RunPython(configuration_items__0171), migrations.RunPython(configuration_items__0176), - ] diff --git a/smash/web/migrations/0002_auto_20170201_1624.py b/smash/web/migrations/0002_auto_20170201_1624.py index 88cfff229f6220bf8bc618241240837dbc8287da..5ae84666add33664d0836a5248b07eb08e0e9b95 100644 --- a/smash/web/migrations/0002_auto_20170201_1624.py +++ b/smash/web/migrations/0002_auto_20170201_1624.py @@ -6,30 +6,34 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ - ('web', '0001_initial'), + ("web", "0001_initial"), ] operations = [ migrations.AddField( - model_name='appointmenttype', - name='required_worker', - field=models.CharField(choices=[('DOCTOR', 'Doctor'), ('NURSE', 'Nurse'), ('PSYCHOLOGIST', 'Psychologist'), ('ANY', 'Any')], default='ANY', max_length=20, verbose_name='Type of worker required for assignment'), + model_name="appointmenttype", + name="required_worker", + field=models.CharField( + choices=[("DOCTOR", "Doctor"), ("NURSE", "Nurse"), ("PSYCHOLOGIST", "Psychologist"), ("ANY", "Any")], + default="ANY", + max_length=20, + verbose_name="Type of worker required for assignment", + ), ), migrations.AlterField( - model_name='appointment', - name='datetime_when', - field=models.DateTimeField(blank=True, null=True, verbose_name='Appointment on'), + model_name="appointment", + name="datetime_when", + field=models.DateTimeField(blank=True, null=True, verbose_name="Appointment on"), ), migrations.AlterField( - model_name='subject', - name='date_born', - field=models.DateField(verbose_name='Date of birth (YYYY-MM-DD)'), + model_name="subject", + name="date_born", + field=models.DateField(verbose_name="Date of birth (YYYY-MM-DD)"), ), migrations.AlterField( - model_name='subject', - name='year_of_diagnosis', - field=models.IntegerField(default=0, null=True, verbose_name='Year of diagnosis (YYYY)'), + model_name="subject", + name="year_of_diagnosis", + field=models.IntegerField(default=0, null=True, verbose_name="Year of diagnosis (YYYY)"), ), ] diff --git a/smash/web/migrations/0004_auto_20170207_1400.py b/smash/web/migrations/0004_auto_20170207_1400.py index 52714d63a34e25a908cc85fa3a13a9b9d8ed195b..1adf3707595139ea9b639a52d107bb624afdf16b 100644 --- a/smash/web/migrations/0004_auto_20170207_1400.py +++ b/smash/web/migrations/0004_auto_20170207_1400.py @@ -6,15 +6,19 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ - ('web', '0003_auto_20170206_1249'), + ("web", "0003_auto_20170206_1249"), ] operations = [ migrations.AlterField( - model_name='appointmenttype', - name='required_worker', - field=models.CharField(choices=[('DOCTOR', 'Doctor'), ('NURSE', 'Nurse'), ('PSYCHOLOGIST', 'Psychologist'), ('ANY', 'Any')], default='ANY', max_length=20, verbose_name='Type of worker required for appointment'), + model_name="appointmenttype", + name="required_worker", + field=models.CharField( + choices=[("DOCTOR", "Doctor"), ("NURSE", "Nurse"), ("PSYCHOLOGIST", "Psychologist"), ("ANY", "Any")], + default="ANY", + max_length=20, + verbose_name="Type of worker required for appointment", + ), ), ] diff --git a/smash/web/migrations/0014_auto_20170220_0812.py b/smash/web/migrations/0014_auto_20170220_0812.py index 25478fad57fa85a6074d45db72230020a9059848..190888eddad882ffef72c0ac8f43c4b86d55610e 100644 --- a/smash/web/migrations/0014_auto_20170220_0812.py +++ b/smash/web/migrations/0014_auto_20170220_0812.py @@ -7,70 +7,75 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0013_auto_20170208_1415'), + ("web", "0013_auto_20170208_1415"), ] operations = [ migrations.AlterField( - model_name='appointment', - name='room', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='web.Room', verbose_name='Room ID'), + model_name="appointment", + name="room", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.Room", + verbose_name="Room ID", + ), ), migrations.AlterField( - model_name='subject', - name='address', - field=models.CharField(blank=True, max_length=255, verbose_name='Address'), + model_name="subject", + name="address", + field=models.CharField(blank=True, max_length=255, verbose_name="Address"), ), migrations.AlterField( - model_name='subject', - name='city', - field=models.CharField(blank=True, max_length=50, verbose_name='City'), + model_name="subject", + name="city", + field=models.CharField(blank=True, max_length=50, verbose_name="City"), ), migrations.AlterField( - model_name='subject', - name='comments', - field=models.CharField(blank=True, max_length=2000, verbose_name='Comments'), + model_name="subject", + name="comments", + field=models.CharField(blank=True, max_length=2000, verbose_name="Comments"), ), migrations.AlterField( - model_name='subject', - name='diagnosis', - field=models.CharField(blank=True, max_length=128, null=True, verbose_name='Diagnosis'), + model_name="subject", + name="diagnosis", + field=models.CharField(blank=True, max_length=128, null=True, verbose_name="Diagnosis"), ), migrations.AlterField( - model_name='subject', - name='languages', - field=models.ManyToManyField(blank=True, to='web.Language', verbose_name='Known languages'), + model_name="subject", + name="languages", + field=models.ManyToManyField(blank=True, to="web.Language", verbose_name="Known languages"), ), migrations.AlterField( - model_name='subject', - name='mpower_id', - field=models.CharField(blank=True, max_length=20, verbose_name='MPower ID'), + model_name="subject", + name="mpower_id", + field=models.CharField(blank=True, max_length=20, verbose_name="MPower ID"), ), migrations.AlterField( - model_name='subject', - name='nd_number', - field=models.CharField(blank=True, max_length=6, verbose_name='ND number'), + model_name="subject", + name="nd_number", + field=models.CharField(blank=True, max_length=6, verbose_name="ND number"), ), migrations.AlterField( - model_name='subject', - name='postal_code', - field=models.CharField(blank=True, max_length=7, verbose_name='Postal code'), + model_name="subject", + name="postal_code", + field=models.CharField(blank=True, max_length=7, verbose_name="Postal code"), ), migrations.AlterField( - model_name='subject', - name='referral', - field=models.CharField(blank=True, max_length=128, null=True, verbose_name='Referred by'), + model_name="subject", + name="referral", + field=models.CharField(blank=True, max_length=128, null=True, verbose_name="Referred by"), ), migrations.AlterField( - model_name='subject', - name='screening_number', - field=models.CharField(blank=True, max_length=50, unique=True, verbose_name='Screening number'), + model_name="subject", + name="screening_number", + field=models.CharField(blank=True, max_length=50, unique=True, verbose_name="Screening number"), ), migrations.AlterField( - model_name='subject', - name='year_of_diagnosis', - field=models.IntegerField(blank=True, default=0, null=True, verbose_name='Year of diagnosis (YYYY)'), + model_name="subject", + name="year_of_diagnosis", + field=models.IntegerField(blank=True, default=0, null=True, verbose_name="Year of diagnosis (YYYY)"), ), ] diff --git a/smash/web/migrations/0015_auto_20170228_1651.py b/smash/web/migrations/0015_auto_20170228_1651.py index c3801f510bcd91808ed239a29aa000b3b2fd35a1..9979fffc698ef248cc26fd6c31e19288d957563f 100644 --- a/smash/web/migrations/0015_auto_20170228_1651.py +++ b/smash/web/migrations/0015_auto_20170228_1651.py @@ -6,49 +6,57 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ - ('web', '0014_auto_20170220_0812'), + ("web", "0014_auto_20170220_0812"), ] operations = [ migrations.RemoveField( - model_name='appointment', - name='appointment_type', + model_name="appointment", + name="appointment_type", ), migrations.RemoveField( - model_name='subject', - name='status', + model_name="subject", + name="status", ), migrations.RemoveField( - model_name='visit', - name='visit_type', + model_name="visit", + name="visit_type", ), migrations.AddField( - model_name='appointment', - name='appointment_types', - field=models.ManyToManyField(blank=True, null=True, to='web.AppointmentType', verbose_name='Appointment types'), + model_name="appointment", + name="appointment_types", + field=models.ManyToManyField( + blank=True, null=True, to="web.AppointmentType", verbose_name="Appointment types" + ), ), migrations.AddField( - model_name='subject', - name='dead', - field=models.BooleanField(default=False, verbose_name='Dead'), + model_name="subject", + name="dead", + field=models.BooleanField(default=False, verbose_name="Dead"), ), migrations.AddField( - model_name='subject', - name='default_appointment_location', - field=models.CharField(choices=[('L', 'LIH'), ('P', 'PRC'), ('F', 'FLYING TEAM')], default='P', max_length=1, verbose_name='Default appointment location'), + model_name="subject", + name="default_appointment_location", + field=models.CharField( + choices=[("L", "LIH"), ("P", "PRC"), ("F", "FLYING TEAM")], + default="P", + max_length=1, + verbose_name="Default appointment location", + ), preserve_default=False, ), migrations.AddField( - model_name='subject', - name='resigned', - field=models.BooleanField(default=False, verbose_name='Resigned'), + model_name="subject", + name="resigned", + field=models.BooleanField(default=False, verbose_name="Resigned"), ), migrations.AddField( - model_name='subject', - name='type', - field=models.CharField(choices=[('C', 'CONTROL'), ('P', 'PATIENT')], default='C', max_length=1, verbose_name='Type'), + model_name="subject", + name="type", + field=models.CharField( + choices=[("C", "CONTROL"), ("P", "PATIENT")], default="C", max_length=1, verbose_name="Type" + ), preserve_default=False, ), ] diff --git a/smash/web/migrations/0018_auto_20170307_1602.py b/smash/web/migrations/0018_auto_20170307_1602.py index 14a6c6cf1f1ae70f09fe7ccbf0a192be67e8e354..5e0ca3449f99ce7641749a0bae15e05c4f3bf12d 100644 --- a/smash/web/migrations/0018_auto_20170307_1602.py +++ b/smash/web/migrations/0018_auto_20170307_1602.py @@ -7,57 +7,74 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0017_auto_20170301_1600'), + ("web", "0017_auto_20170301_1600"), ] operations = [ migrations.CreateModel( - name='Location', + name="Location", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=20)), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("name", models.CharField(max_length=20)), ], ), migrations.RemoveField( - model_name='appointment', - name='is_finished', + model_name="appointment", + name="is_finished", ), migrations.RemoveField( - model_name='subject', - name='default_appointment_location', + model_name="subject", + name="default_appointment_location", ), migrations.AddField( - model_name='appointment', - name='status', - field=models.CharField(choices=[('SCHEDULED', 'Scheduled'), ('FINISHED', 'Finished'), ('CANCELLED', 'Cancelled'), ('NO_SHOW', 'No Show')], default='SCHEDULED', editable=False, max_length=20, verbose_name='Status'), + model_name="appointment", + name="status", + field=models.CharField( + choices=[ + ("SCHEDULED", "Scheduled"), + ("FINISHED", "Finished"), + ("CANCELLED", "Cancelled"), + ("NO_SHOW", "No Show"), + ], + default="SCHEDULED", + editable=False, + max_length=20, + verbose_name="Status", + ), ), migrations.AlterField( - model_name='appointment', - name='comment', - field=models.TextField(blank=True, max_length=1024, null=True, verbose_name='Comment'), + model_name="appointment", + name="comment", + field=models.TextField(blank=True, max_length=1024, null=True, verbose_name="Comment"), ), migrations.AlterField( - model_name='subject', - name='comments', - field=models.TextField(blank=True, max_length=2000, verbose_name='Comments'), + model_name="subject", + name="comments", + field=models.TextField(blank=True, max_length=2000, verbose_name="Comments"), ), migrations.AddField( - model_name='appointment', - name='location', - field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='web.Location', verbose_name='Location'), + model_name="appointment", + name="location", + field=models.ForeignKey( + default=1, on_delete=django.db.models.deletion.CASCADE, to="web.Location", verbose_name="Location" + ), preserve_default=False, ), migrations.AddField( - model_name='subject', - name='default_location', - field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='web.Location', verbose_name='Default appointment location'), + model_name="subject", + name="default_location", + field=models.ForeignKey( + default=1, + on_delete=django.db.models.deletion.CASCADE, + to="web.Location", + verbose_name="Default appointment location", + ), preserve_default=False, ), migrations.AddField( - model_name='worker', - name='locations', - field=models.ManyToManyField(to='web.Location', verbose_name='Locations'), + model_name="worker", + name="locations", + field=models.ManyToManyField(to="web.Location", verbose_name="Locations"), ), ] diff --git a/smash/web/migrations/0019_auto_20170309_1538.py b/smash/web/migrations/0019_auto_20170309_1538.py index d50b7e3a2a1d427eb560b2c8077d3adc5a2dd161..50c00957c8125da12c657de415f314e2c1e3f572 100644 --- a/smash/web/migrations/0019_auto_20170309_1538.py +++ b/smash/web/migrations/0019_auto_20170309_1538.py @@ -7,61 +7,67 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0018_auto_20170307_1602'), + ("web", "0018_auto_20170307_1602"), ] operations = [ migrations.RemoveField( - model_name='flyingteam', - name='datetime_called', + model_name="flyingteam", + name="datetime_called", ), migrations.RemoveField( - model_name='flyingteam', - name='datetime_until', + model_name="flyingteam", + name="datetime_until", ), migrations.RemoveField( - model_name='flyingteam', - name='doctor', + model_name="flyingteam", + name="doctor", ), migrations.RemoveField( - model_name='flyingteam', - name='nurse', + model_name="flyingteam", + name="nurse", ), migrations.RemoveField( - model_name='flyingteam', - name='psychologist', + model_name="flyingteam", + name="psychologist", ), migrations.AddField( - model_name='flyingteam', - name='place', - field=models.CharField(default='test', max_length=50, verbose_name='Place'), + model_name="flyingteam", + name="place", + field=models.CharField(default="test", max_length=50, verbose_name="Place"), preserve_default=False, ), migrations.AddField( - model_name='subject', - name='default_written_communication_language', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='subject_written_comunication', to='web.Language', verbose_name='Default language for document generation'), + model_name="subject", + name="default_written_communication_language", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="subject_written_comunication", + to="web.Language", + verbose_name="Default language for document generation", + ), ), migrations.AddField( - model_name='visit', - name='appointment_types', - field=models.ManyToManyField(blank=True, to='web.AppointmentType', verbose_name='Requested appointments'), + model_name="visit", + name="appointment_types", + field=models.ManyToManyField(blank=True, to="web.AppointmentType", verbose_name="Requested appointments"), ), migrations.AlterField( - model_name='appointment', - name='appointment_types', - field=models.ManyToManyField(blank=True, to='web.AppointmentType', verbose_name='Appointment types'), + model_name="appointment", + name="appointment_types", + field=models.ManyToManyField(blank=True, to="web.AppointmentType", verbose_name="Appointment types"), ), migrations.AlterField( - model_name='appointmenttype', - name='rest_time', - field=models.IntegerField(default=0, verbose_name='Suggested rest time'), + model_name="appointmenttype", + name="rest_time", + field=models.IntegerField(default=0, verbose_name="Suggested rest time"), ), migrations.AlterField( - model_name='subject', - name='screening_number', - field=models.CharField(max_length=50, unique=True, verbose_name='Screening number'), + model_name="subject", + name="screening_number", + field=models.CharField(max_length=50, unique=True, verbose_name="Screening number"), ), ] diff --git a/smash/web/migrations/0021_auto_20170317_0738.py b/smash/web/migrations/0021_auto_20170317_0738.py index 57c7a116bdd1c85a1b42a60bb0c9a334dc011b41..4717388abc566e44cd468552714979bc4a0ac422 100644 --- a/smash/web/migrations/0021_auto_20170317_0738.py +++ b/smash/web/migrations/0021_auto_20170317_0738.py @@ -6,35 +6,36 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ - ('web', '0020_auto_20170309_1545'), + ("web", "0020_auto_20170309_1545"), ] operations = [ migrations.AddField( - model_name='appointmenttype', - name='can_be_parallelized', - field=models.BooleanField(default=False, verbose_name='Can be parallelized'), + model_name="appointmenttype", + name="can_be_parallelized", + field=models.BooleanField(default=False, verbose_name="Can be parallelized"), ), migrations.AddField( - model_name='item', - name='disposable', - field=models.BooleanField(default=False, verbose_name='Disposable set'), + model_name="item", + name="disposable", + field=models.BooleanField(default=False, verbose_name="Disposable set"), ), migrations.AddField( - model_name='subject', - name='datetime_contact_reminder', - field=models.DateField(blank=True, null=True, verbose_name='Contact on'), + model_name="subject", + name="datetime_contact_reminder", + field=models.DateField(blank=True, null=True, verbose_name="Contact on"), ), migrations.AddField( - model_name='subject', - name='postponed', - field=models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=False, verbose_name='Postponed'), + model_name="subject", + name="postponed", + field=models.BooleanField(choices=[(True, "Yes"), (False, "No")], default=False, verbose_name="Postponed"), ), migrations.AddField( - model_name='visit', - name='post_mail_sent', - field=models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=False, verbose_name='Post mail sent'), + model_name="visit", + name="post_mail_sent", + field=models.BooleanField( + choices=[(True, "Yes"), (False, "No")], default=False, verbose_name="Post mail sent" + ), ), ] diff --git a/smash/web/migrations/0022_auto_20170403_0904.py b/smash/web/migrations/0022_auto_20170403_0904.py index bde42f6c5487879a6f0f1857205ccb88a69cd459..06d9f80e7e70b0271bb757e640d3c71f295ecfba 100644 --- a/smash/web/migrations/0022_auto_20170403_0904.py +++ b/smash/web/migrations/0022_auto_20170403_0904.py @@ -7,44 +7,60 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0021_auto_20170317_0738'), + ("web", "0021_auto_20170317_0738"), ] operations = [ migrations.AlterModelOptions( - name='appointmenttype', - options={'ordering': ['description']}, + name="appointmenttype", + options={"ordering": ["description"]}, ), migrations.AddField( - model_name='worker', - name='screening_number_prefix', - field=models.CharField(blank=True, max_length=1, null=True, verbose_name='Default screening number prefix'), + model_name="worker", + name="screening_number_prefix", + field=models.CharField(blank=True, max_length=1, null=True, verbose_name="Default screening number prefix"), ), migrations.AlterField( - model_name='appointment', - name='status', - field=models.CharField(choices=[('SCHEDULED', 'Scheduled'), ('CANCELLED', 'Cancelled'), ('FINISHED', 'Finished'), ('NO_SHOW', 'No Show')], default='SCHEDULED', max_length=20, verbose_name='Status'), + model_name="appointment", + name="status", + field=models.CharField( + choices=[ + ("SCHEDULED", "Scheduled"), + ("CANCELLED", "Cancelled"), + ("FINISHED", "Finished"), + ("NO_SHOW", "No Show"), + ], + default="SCHEDULED", + max_length=20, + verbose_name="Status", + ), ), migrations.AlterField( - model_name='appointment', - name='visit', - field=models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, to='web.Visit', verbose_name='Visit ID'), + model_name="appointment", + name="visit", + field=models.ForeignKey( + blank=True, + editable=False, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.Visit", + verbose_name="Visit ID", + ), ), migrations.AlterField( - model_name='subject', - name='dead', - field=models.BooleanField(default=False, verbose_name='Deceased'), + model_name="subject", + name="dead", + field=models.BooleanField(default=False, verbose_name="Deceased"), ), migrations.AlterField( - model_name='subject', - name='resigned', - field=models.BooleanField(default=False, verbose_name='Resigned'), + model_name="subject", + name="resigned", + field=models.BooleanField(default=False, verbose_name="Resigned"), ), migrations.AlterField( - model_name='subject', - name='type', - field=models.CharField(choices=[('P', 'PATIENT'), ('C', 'CONTROL')], max_length=1, verbose_name='Type'), + model_name="subject", + name="type", + field=models.CharField(choices=[("P", "PATIENT"), ("C", "CONTROL")], max_length=1, verbose_name="Type"), ), ] diff --git a/smash/web/migrations/0023_auto_20170404_1047.py b/smash/web/migrations/0023_auto_20170404_1047.py index 8e5da3b0300a02610f5150979a3501c82b128011..11be90dae0b39b6bdd733a48ea8729f4e3fb1dde 100644 --- a/smash/web/migrations/0023_auto_20170404_1047.py +++ b/smash/web/migrations/0023_auto_20170404_1047.py @@ -7,40 +7,64 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0022_auto_20170403_0904'), + ("web", "0022_auto_20170403_0904"), ] operations = [ migrations.CreateModel( - name='Availability', + name="Availability", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('day_number', models.IntegerField(verbose_name='Day of the week')), - ('available_from', models.TimeField(verbose_name='Available since')), - ('available_till', models.TimeField(verbose_name='Available until')), - ('is_current', models.BooleanField(default=True, verbose_name='Is current?')), - ('person', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.Worker', verbose_name='Worker')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("day_number", models.IntegerField(verbose_name="Day of the week")), + ("available_from", models.TimeField(verbose_name="Available since")), + ("available_till", models.TimeField(verbose_name="Available until")), + ("is_current", models.BooleanField(default=True, verbose_name="Is current?")), + ( + "person", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, to="web.Worker", verbose_name="Worker" + ), + ), ], ), migrations.CreateModel( - name='ContactAttempt', + name="ContactAttempt", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('type', models.CharField(choices=[('E', 'Email'), ('F', 'Face to face'), ('X', 'Fax'), ('P', 'Phone'), ('S', 'SMS')], default='P', max_length=2)), - ('datetime_when', models.DateTimeField(help_text='When did the contact occurred?', verbose_name='Contact on')), - ('success', models.BooleanField(default=False)), - ('comment', models.TextField(blank=True, max_length=1024, null=True)), - ('subject', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.Subject', verbose_name='Subject')), - ('worker', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='web.Worker', verbose_name='Worker')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ( + "type", + models.CharField( + choices=[("E", "Email"), ("F", "Face to face"), ("X", "Fax"), ("P", "Phone"), ("S", "SMS")], + default="P", + max_length=2, + ), + ), + ( + "datetime_when", + models.DateTimeField(help_text="When did the contact occurred?", verbose_name="Contact on"), + ), + ("success", models.BooleanField(default=False)), + ("comment", models.TextField(blank=True, max_length=1024, null=True)), + ( + "subject", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, to="web.Subject", verbose_name="Subject" + ), + ), + ( + "worker", + models.ForeignKey( + null=True, on_delete=django.db.models.deletion.CASCADE, to="web.Worker", verbose_name="Worker" + ), + ), ], ), migrations.RemoveField( - model_name='avaibility', - name='person', + model_name="avaibility", + name="person", ), migrations.DeleteModel( - name='Avaibility', + name="Avaibility", ), ] diff --git a/smash/web/migrations/0040_daily_planning.py b/smash/web/migrations/0040_daily_planning.py index ce59986f6286c0bed8bc0a19ef6e5f6f2b2f5f9b..aa4783f11dc5392cbb48e81a25f5dd2106ffb910 100644 --- a/smash/web/migrations/0040_daily_planning.py +++ b/smash/web/migrations/0040_daily_planning.py @@ -11,35 +11,49 @@ from ..models import AppointmentTypeLink def convert_records(apps, schema_editor): Appointment = apps.get_model("web", "Appointment") for appointment in Appointment.objects.all(): - for appointment_type_id in appointment.appointment_types.values_list('id', flat=True): + for appointment_type_id in appointment.appointment_types.values_list("id", flat=True): new_link = AppointmentTypeLink(appointment_id=appointment.id, appointment_type_id=appointment_type_id) new_link.save() -class Migration(migrations.Migration): +class Migration(migrations.Migration): dependencies = [ - ('web', '0039_pd_family_default_unknown'), + ("web", "0039_pd_family_default_unknown"), ] operations = [ migrations.CreateModel( - name='AppointmentTypeLink', + name="AppointmentTypeLink", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('date_when', models.DateTimeField(null=True, default=None)), - ('appointment', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.Appointment')), - ('appointment_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.AppointmentType')), - ('worker', models.ForeignKey(default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to='web.Worker')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("date_when", models.DateTimeField(null=True, default=None)), + ("appointment", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="web.Appointment")), + ( + "appointment_type", + models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="web.AppointmentType"), + ), + ( + "worker", + models.ForeignKey( + default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to="web.Worker" + ), + ), ], ), migrations.AddField( - model_name='appointment', - name='appointment_types_new', - field=models.ManyToManyField(blank=True, related_name='new_appointment', through='web.AppointmentTypeLink', to='web.AppointmentType', verbose_name='Appointment types'), + model_name="appointment", + name="appointment_types_new", + field=models.ManyToManyField( + blank=True, + related_name="new_appointment", + through="web.AppointmentTypeLink", + to="web.AppointmentType", + verbose_name="Appointment types", + ), ), migrations.RunPython(convert_records), - migrations.RunSQL( - "DROP TABLE web_appointment_appointment_types"), - migrations.RenameField(model_name='appointment', old_name='appointment_types_new', new_name='appointment_types') - + migrations.RunSQL("DROP TABLE web_appointment_appointment_types"), + migrations.RenameField( + model_name="appointment", old_name="appointment_types_new", new_name="appointment_types" + ), ] diff --git a/smash/web/migrations/0041_language_windows_locale_name.py b/smash/web/migrations/0041_language_windows_locale_name.py index 1c7d7909b9426ef32d60b5c14be12f0f7fb24b65..f164c13379a32f9a1cf996acbe50d3c9f4ab3fb5 100644 --- a/smash/web/migrations/0041_language_windows_locale_name.py +++ b/smash/web/migrations/0041_language_windows_locale_name.py @@ -6,15 +6,227 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ - ('web', '0040_daily_planning'), + ("web", "0040_daily_planning"), ] operations = [ migrations.AddField( - model_name='language', - name='windows_locale_name', - field=models.CharField(choices=[('af_ZA', 'af_ZA'), ('am_ET', 'am_ET'), ('ar_AE', 'ar_AE'), ('ar_BH', 'ar_BH'), ('ar_DZ', 'ar_DZ'), ('ar_EG', 'ar_EG'), ('ar_IQ', 'ar_IQ'), ('ar_JO', 'ar_JO'), ('ar_KW', 'ar_KW'), ('ar_LB', 'ar_LB'), ('ar_LY', 'ar_LY'), ('ar_MA', 'ar_MA'), ('ar_OM', 'ar_OM'), ('ar_QA', 'ar_QA'), ('ar_SA', 'ar_SA'), ('ar_SY', 'ar_SY'), ('ar_TN', 'ar_TN'), ('ar_YE', 'ar_YE'), ('arn_CL', 'arn_CL'), ('as_IN', 'as_IN'), ('az_AZ', 'az_AZ'), ('az_AZ', 'az_AZ'), ('ba_RU', 'ba_RU'), ('be_BY', 'be_BY'), ('bg_BG', 'bg_BG'), ('bn_IN', 'bn_IN'), ('bo_BT', 'bo_BT'), ('bo_CN', 'bo_CN'), ('br_FR', 'br_FR'), ('bs_BA', 'bs_BA'), ('bs_BA', 'bs_BA'), ('ca_ES', 'ca_ES'), ('co_FR', 'co_FR'), ('cs_CZ', 'cs_CZ'), ('cy_GB', 'cy_GB'), ('da_DK', 'da_DK'), ('de_AT', 'de_AT'), ('de_CH', 'de_CH'), ('de_DE', 'de_DE'), ('de_LI', 'de_LI'), ('de_LU', 'de_LU'), ('div_MV', 'div_MV'), ('dsb_DE', 'dsb_DE'), ('el_GR', 'el_GR'), ('en_AU', 'en_AU'), ('en_BZ', 'en_BZ'), ('en_CA', 'en_CA'), ('en_CB', 'en_CB'), ('en_GB', 'en_GB'), ('en_IE', 'en_IE'), ('en_IN', 'en_IN'), ('en_IN', 'en_IN'), ('en_JA', 'en_JA'), ('en_MY', 'en_MY'), ('en_NZ', 'en_NZ'), ('en_PH', 'en_PH'), ('en_TT', 'en_TT'), ('en_US', 'en_US'), ('en_ZA', 'en_ZA'), ('en_ZW', 'en_ZW'), ('es_AR', 'es_AR'), ('es_BO', 'es_BO'), ('es_CL', 'es_CL'), ('es_CO', 'es_CO'), ('es_CR', 'es_CR'), ('es_DO', 'es_DO'), ('es_EC', 'es_EC'), ('es_ES', 'es_ES'), ('es_ES', 'es_ES'), ('es_GT', 'es_GT'), ('es_HN', 'es_HN'), ('es_MX', 'es_MX'), ('es_NI', 'es_NI'), ('es_PA', 'es_PA'), ('es_PE', 'es_PE'), ('es_PR', 'es_PR'), ('es_PY', 'es_PY'), ('es_SV', 'es_SV'), ('es_UR', 'es_UR'), ('es_US', 'es_US'), ('es_VE', 'es_VE'), ('et_EE', 'et_EE'), ('eu_ES', 'eu_ES'), ('fa_IR', 'fa_IR'), ('fi_FI', 'fi_FI'), ('fil_PH', 'fil_PH'), ('fo_FO', 'fo_FO'), ('fr_BE', 'fr_BE'), ('fr_CA', 'fr_CA'), ('fr_CH', 'fr_CH'), ('fr_FR', 'fr_FR'), ('fr_LU', 'fr_LU'), ('fr_MC', 'fr_MC'), ('fy_NL', 'fy_NL'), ('ga_IE', 'ga_IE'), ('gbz_AF', 'gbz_AF'), ('gl_ES', 'gl_ES'), ('gsw_FR', 'gsw_FR'), ('gu_IN', 'gu_IN'), ('ha_NG', 'ha_NG'), ('he_IL', 'he_IL'), ('hi_IN', 'hi_IN'), ('hr_BA', 'hr_BA'), ('hr_HR', 'hr_HR'), ('hu_HU', 'hu_HU'), ('hy_AM', 'hy_AM'), ('id_ID', 'id_ID'), ('ii_CN', 'ii_CN'), ('is_IS', 'is_IS'), ('it_CH', 'it_CH'), ('it_IT', 'it_IT'), ('iu_CA', 'iu_CA'), ('iu_CA', 'iu_CA'), ('ja_JP', 'ja_JP'), ('ka_GE', 'ka_GE'), ('kh_KH', 'kh_KH'), ('kk_KZ', 'kk_KZ'), ('kl_GL', 'kl_GL'), ('kn_IN', 'kn_IN'), ('ko_KR', 'ko_KR'), ('kok_IN', 'kok_IN'), ('ky_KG', 'ky_KG'), ('lb_LU', 'lb_LU'), ('lo_LA', 'lo_LA'), ('lt_LT', 'lt_LT'), ('lv_LV', 'lv_LV'), ('mi_NZ', 'mi_NZ'), ('mk_MK', 'mk_MK'), ('ml_IN', 'ml_IN'), ('mn_CN', 'mn_CN'), ('mn_MN', 'mn_MN'), ('moh_CA', 'moh_CA'), ('mr_IN', 'mr_IN'), ('ms_BN', 'ms_BN'), ('ms_MY', 'ms_MY'), ('mt_MT', 'mt_MT'), ('nb_NO', 'nb_NO'), ('ne_NP', 'ne_NP'), ('nl_BE', 'nl_BE'), ('nl_NL', 'nl_NL'), ('nn_NO', 'nn_NO'), ('ns_ZA', 'ns_ZA'), ('oc_FR', 'oc_FR'), ('or_IN', 'or_IN'), ('pa_IN', 'pa_IN'), ('pl_PL', 'pl_PL'), ('ps_AF', 'ps_AF'), ('pt_BR', 'pt_BR'), ('pt_PT', 'pt_PT'), ('qut_GT', 'qut_GT'), ('quz_BO', 'quz_BO'), ('quz_EC', 'quz_EC'), ('quz_PE', 'quz_PE'), ('rm_CH', 'rm_CH'), ('ro_RO', 'ro_RO'), ('ru_RU', 'ru_RU'), ('rw_RW', 'rw_RW'), ('sa_IN', 'sa_IN'), ('sah_RU', 'sah_RU'), ('se_FI', 'se_FI'), ('se_NO', 'se_NO'), ('se_SE', 'se_SE'), ('si_LK', 'si_LK'), ('sk_SK', 'sk_SK'), ('sl_SI', 'sl_SI'), ('sma_NO', 'sma_NO'), ('sma_SE', 'sma_SE'), ('smj_NO', 'smj_NO'), ('smj_SE', 'smj_SE'), ('smn_FI', 'smn_FI'), ('sms_FI', 'sms_FI'), ('sq_AL', 'sq_AL'), ('sr_BA', 'sr_BA'), ('sr_BA', 'sr_BA'), ('sr_SP', 'sr_SP'), ('sr_SP', 'sr_SP'), ('sv_FI', 'sv_FI'), ('sv_SE', 'sv_SE'), ('sw_KE', 'sw_KE'), ('syr_SY', 'syr_SY'), ('ta_IN', 'ta_IN'), ('te_IN', 'te_IN'), ('tg_TJ', 'tg_TJ'), ('th_TH', 'th_TH'), ('tk_TM', 'tk_TM'), ('tmz_DZ', 'tmz_DZ'), ('tn_ZA', 'tn_ZA'), ('tr_TR', 'tr_TR'), ('tt_RU', 'tt_RU'), ('ug_CN', 'ug_CN'), ('uk_UA', 'uk_UA'), ('ur_IN', 'ur_IN'), ('ur_PK', 'ur_PK'), ('uz_UZ', 'uz_UZ'), ('uz_UZ', 'uz_UZ'), ('vi_VN', 'vi_VN'), ('wen_DE', 'wen_DE'), ('wo_SN', 'wo_SN'), ('xh_ZA', 'xh_ZA'), ('yo_NG', 'yo_NG'), ('zh_CHS', 'zh_CHS'), ('zh_CHT', 'zh_CHT'), ('zh_CN', 'zh_CN'), ('zh_HK', 'zh_HK'), ('zh_MO', 'zh_MO'), ('zh_SG', 'zh_SG'), ('zh_TW', 'zh_TW'), ('zu_ZA', 'zu_ZA')], default='fr_FR', max_length=10), + model_name="language", + name="windows_locale_name", + field=models.CharField( + choices=[ + ("af_ZA", "af_ZA"), + ("am_ET", "am_ET"), + ("ar_AE", "ar_AE"), + ("ar_BH", "ar_BH"), + ("ar_DZ", "ar_DZ"), + ("ar_EG", "ar_EG"), + ("ar_IQ", "ar_IQ"), + ("ar_JO", "ar_JO"), + ("ar_KW", "ar_KW"), + ("ar_LB", "ar_LB"), + ("ar_LY", "ar_LY"), + ("ar_MA", "ar_MA"), + ("ar_OM", "ar_OM"), + ("ar_QA", "ar_QA"), + ("ar_SA", "ar_SA"), + ("ar_SY", "ar_SY"), + ("ar_TN", "ar_TN"), + ("ar_YE", "ar_YE"), + ("arn_CL", "arn_CL"), + ("as_IN", "as_IN"), + ("az_AZ", "az_AZ"), + ("az_AZ", "az_AZ"), + ("ba_RU", "ba_RU"), + ("be_BY", "be_BY"), + ("bg_BG", "bg_BG"), + ("bn_IN", "bn_IN"), + ("bo_BT", "bo_BT"), + ("bo_CN", "bo_CN"), + ("br_FR", "br_FR"), + ("bs_BA", "bs_BA"), + ("bs_BA", "bs_BA"), + ("ca_ES", "ca_ES"), + ("co_FR", "co_FR"), + ("cs_CZ", "cs_CZ"), + ("cy_GB", "cy_GB"), + ("da_DK", "da_DK"), + ("de_AT", "de_AT"), + ("de_CH", "de_CH"), + ("de_DE", "de_DE"), + ("de_LI", "de_LI"), + ("de_LU", "de_LU"), + ("div_MV", "div_MV"), + ("dsb_DE", "dsb_DE"), + ("el_GR", "el_GR"), + ("en_AU", "en_AU"), + ("en_BZ", "en_BZ"), + ("en_CA", "en_CA"), + ("en_CB", "en_CB"), + ("en_GB", "en_GB"), + ("en_IE", "en_IE"), + ("en_IN", "en_IN"), + ("en_IN", "en_IN"), + ("en_JA", "en_JA"), + ("en_MY", "en_MY"), + ("en_NZ", "en_NZ"), + ("en_PH", "en_PH"), + ("en_TT", "en_TT"), + ("en_US", "en_US"), + ("en_ZA", "en_ZA"), + ("en_ZW", "en_ZW"), + ("es_AR", "es_AR"), + ("es_BO", "es_BO"), + ("es_CL", "es_CL"), + ("es_CO", "es_CO"), + ("es_CR", "es_CR"), + ("es_DO", "es_DO"), + ("es_EC", "es_EC"), + ("es_ES", "es_ES"), + ("es_ES", "es_ES"), + ("es_GT", "es_GT"), + ("es_HN", "es_HN"), + ("es_MX", "es_MX"), + ("es_NI", "es_NI"), + ("es_PA", "es_PA"), + ("es_PE", "es_PE"), + ("es_PR", "es_PR"), + ("es_PY", "es_PY"), + ("es_SV", "es_SV"), + ("es_UR", "es_UR"), + ("es_US", "es_US"), + ("es_VE", "es_VE"), + ("et_EE", "et_EE"), + ("eu_ES", "eu_ES"), + ("fa_IR", "fa_IR"), + ("fi_FI", "fi_FI"), + ("fil_PH", "fil_PH"), + ("fo_FO", "fo_FO"), + ("fr_BE", "fr_BE"), + ("fr_CA", "fr_CA"), + ("fr_CH", "fr_CH"), + ("fr_FR", "fr_FR"), + ("fr_LU", "fr_LU"), + ("fr_MC", "fr_MC"), + ("fy_NL", "fy_NL"), + ("ga_IE", "ga_IE"), + ("gbz_AF", "gbz_AF"), + ("gl_ES", "gl_ES"), + ("gsw_FR", "gsw_FR"), + ("gu_IN", "gu_IN"), + ("ha_NG", "ha_NG"), + ("he_IL", "he_IL"), + ("hi_IN", "hi_IN"), + ("hr_BA", "hr_BA"), + ("hr_HR", "hr_HR"), + ("hu_HU", "hu_HU"), + ("hy_AM", "hy_AM"), + ("id_ID", "id_ID"), + ("ii_CN", "ii_CN"), + ("is_IS", "is_IS"), + ("it_CH", "it_CH"), + ("it_IT", "it_IT"), + ("iu_CA", "iu_CA"), + ("iu_CA", "iu_CA"), + ("ja_JP", "ja_JP"), + ("ka_GE", "ka_GE"), + ("kh_KH", "kh_KH"), + ("kk_KZ", "kk_KZ"), + ("kl_GL", "kl_GL"), + ("kn_IN", "kn_IN"), + ("ko_KR", "ko_KR"), + ("kok_IN", "kok_IN"), + ("ky_KG", "ky_KG"), + ("lb_LU", "lb_LU"), + ("lo_LA", "lo_LA"), + ("lt_LT", "lt_LT"), + ("lv_LV", "lv_LV"), + ("mi_NZ", "mi_NZ"), + ("mk_MK", "mk_MK"), + ("ml_IN", "ml_IN"), + ("mn_CN", "mn_CN"), + ("mn_MN", "mn_MN"), + ("moh_CA", "moh_CA"), + ("mr_IN", "mr_IN"), + ("ms_BN", "ms_BN"), + ("ms_MY", "ms_MY"), + ("mt_MT", "mt_MT"), + ("nb_NO", "nb_NO"), + ("ne_NP", "ne_NP"), + ("nl_BE", "nl_BE"), + ("nl_NL", "nl_NL"), + ("nn_NO", "nn_NO"), + ("ns_ZA", "ns_ZA"), + ("oc_FR", "oc_FR"), + ("or_IN", "or_IN"), + ("pa_IN", "pa_IN"), + ("pl_PL", "pl_PL"), + ("ps_AF", "ps_AF"), + ("pt_BR", "pt_BR"), + ("pt_PT", "pt_PT"), + ("qut_GT", "qut_GT"), + ("quz_BO", "quz_BO"), + ("quz_EC", "quz_EC"), + ("quz_PE", "quz_PE"), + ("rm_CH", "rm_CH"), + ("ro_RO", "ro_RO"), + ("ru_RU", "ru_RU"), + ("rw_RW", "rw_RW"), + ("sa_IN", "sa_IN"), + ("sah_RU", "sah_RU"), + ("se_FI", "se_FI"), + ("se_NO", "se_NO"), + ("se_SE", "se_SE"), + ("si_LK", "si_LK"), + ("sk_SK", "sk_SK"), + ("sl_SI", "sl_SI"), + ("sma_NO", "sma_NO"), + ("sma_SE", "sma_SE"), + ("smj_NO", "smj_NO"), + ("smj_SE", "smj_SE"), + ("smn_FI", "smn_FI"), + ("sms_FI", "sms_FI"), + ("sq_AL", "sq_AL"), + ("sr_BA", "sr_BA"), + ("sr_BA", "sr_BA"), + ("sr_SP", "sr_SP"), + ("sr_SP", "sr_SP"), + ("sv_FI", "sv_FI"), + ("sv_SE", "sv_SE"), + ("sw_KE", "sw_KE"), + ("syr_SY", "syr_SY"), + ("ta_IN", "ta_IN"), + ("te_IN", "te_IN"), + ("tg_TJ", "tg_TJ"), + ("th_TH", "th_TH"), + ("tk_TM", "tk_TM"), + ("tmz_DZ", "tmz_DZ"), + ("tn_ZA", "tn_ZA"), + ("tr_TR", "tr_TR"), + ("tt_RU", "tt_RU"), + ("ug_CN", "ug_CN"), + ("uk_UA", "uk_UA"), + ("ur_IN", "ur_IN"), + ("ur_PK", "ur_PK"), + ("uz_UZ", "uz_UZ"), + ("uz_UZ", "uz_UZ"), + ("vi_VN", "vi_VN"), + ("wen_DE", "wen_DE"), + ("wo_SN", "wo_SN"), + ("xh_ZA", "xh_ZA"), + ("yo_NG", "yo_NG"), + ("zh_CHS", "zh_CHS"), + ("zh_CHT", "zh_CHT"), + ("zh_CN", "zh_CN"), + ("zh_HK", "zh_HK"), + ("zh_MO", "zh_MO"), + ("zh_SG", "zh_SG"), + ("zh_TW", "zh_TW"), + ("zu_ZA", "zu_ZA"), + ], + default="fr_FR", + max_length=10, + ), ), ] diff --git a/smash/web/migrations/0042_auto_20170613_1634.py b/smash/web/migrations/0042_auto_20170613_1634.py index 3276fe5a6f1b184645a0157aac050e13e6049371..3bbce79505ca71f8eb5092c789a54ae12120141d 100644 --- a/smash/web/migrations/0042_auto_20170613_1634.py +++ b/smash/web/migrations/0042_auto_20170613_1634.py @@ -6,15 +6,227 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ - ('web', '0041_language_windows_locale_name'), + ("web", "0041_language_windows_locale_name"), ] operations = [ migrations.AlterField( - model_name='language', - name='windows_locale_name', - field=models.CharField(choices=[('af_ZA', 'af_ZA'), ('am_ET', 'am_ET'), ('ar_AE', 'ar_AE'), ('ar_BH', 'ar_BH'), ('ar_DZ', 'ar_DZ'), ('ar_EG', 'ar_EG'), ('ar_IQ', 'ar_IQ'), ('ar_JO', 'ar_JO'), ('ar_KW', 'ar_KW'), ('ar_LB', 'ar_LB'), ('ar_LY', 'ar_LY'), ('ar_MA', 'ar_MA'), ('ar_OM', 'ar_OM'), ('ar_QA', 'ar_QA'), ('ar_SA', 'ar_SA'), ('ar_SY', 'ar_SY'), ('ar_TN', 'ar_TN'), ('ar_YE', 'ar_YE'), ('arn_CL', 'arn_CL'), ('as_IN', 'as_IN'), ('az_AZ', 'az_AZ'), ('az_AZ', 'az_AZ'), ('ba_RU', 'ba_RU'), ('be_BY', 'be_BY'), ('bg_BG', 'bg_BG'), ('bn_IN', 'bn_IN'), ('bo_BT', 'bo_BT'), ('bo_CN', 'bo_CN'), ('br_FR', 'br_FR'), ('bs_BA', 'bs_BA'), ('bs_BA', 'bs_BA'), ('ca_ES', 'ca_ES'), ('co_FR', 'co_FR'), ('cs_CZ', 'cs_CZ'), ('cy_GB', 'cy_GB'), ('da_DK', 'da_DK'), ('de_AT', 'de_AT'), ('de_CH', 'de_CH'), ('de_DE', 'de_DE'), ('de_LI', 'de_LI'), ('de_LU', 'de_LU'), ('div_MV', 'div_MV'), ('dsb_DE', 'dsb_DE'), ('el_GR', 'el_GR'), ('en_AU', 'en_AU'), ('en_BZ', 'en_BZ'), ('en_CA', 'en_CA'), ('en_CB', 'en_CB'), ('en_GB', 'en_GB'), ('en_IE', 'en_IE'), ('en_IN', 'en_IN'), ('en_IN', 'en_IN'), ('en_JA', 'en_JA'), ('en_MY', 'en_MY'), ('en_NZ', 'en_NZ'), ('en_PH', 'en_PH'), ('en_TT', 'en_TT'), ('en_US', 'en_US'), ('en_ZA', 'en_ZA'), ('en_ZW', 'en_ZW'), ('es_AR', 'es_AR'), ('es_BO', 'es_BO'), ('es_CL', 'es_CL'), ('es_CO', 'es_CO'), ('es_CR', 'es_CR'), ('es_DO', 'es_DO'), ('es_EC', 'es_EC'), ('es_ES', 'es_ES'), ('es_ES', 'es_ES'), ('es_GT', 'es_GT'), ('es_HN', 'es_HN'), ('es_MX', 'es_MX'), ('es_NI', 'es_NI'), ('es_PA', 'es_PA'), ('es_PE', 'es_PE'), ('es_PR', 'es_PR'), ('es_PY', 'es_PY'), ('es_SV', 'es_SV'), ('es_UR', 'es_UR'), ('es_US', 'es_US'), ('es_VE', 'es_VE'), ('et_EE', 'et_EE'), ('eu_ES', 'eu_ES'), ('fa_IR', 'fa_IR'), ('fi_FI', 'fi_FI'), ('fil_PH', 'fil_PH'), ('fo_FO', 'fo_FO'), ('fr_BE', 'fr_BE'), ('fr_CA', 'fr_CA'), ('fr_CH', 'fr_CH'), ('fr_FR', 'fr_FR'), ('fr_LU', 'fr_LU'), ('fr_MC', 'fr_MC'), ('fy_NL', 'fy_NL'), ('ga_IE', 'ga_IE'), ('gbz_AF', 'gbz_AF'), ('gl_ES', 'gl_ES'), ('gsw_FR', 'gsw_FR'), ('gu_IN', 'gu_IN'), ('ha_NG', 'ha_NG'), ('he_IL', 'he_IL'), ('hi_IN', 'hi_IN'), ('hr_BA', 'hr_BA'), ('hr_HR', 'hr_HR'), ('hu_HU', 'hu_HU'), ('hy_AM', 'hy_AM'), ('id_ID', 'id_ID'), ('ii_CN', 'ii_CN'), ('is_IS', 'is_IS'), ('it_CH', 'it_CH'), ('it_IT', 'it_IT'), ('iu_CA', 'iu_CA'), ('iu_CA', 'iu_CA'), ('ja_JP', 'ja_JP'), ('ka_GE', 'ka_GE'), ('kh_KH', 'kh_KH'), ('kk_KZ', 'kk_KZ'), ('kl_GL', 'kl_GL'), ('kn_IN', 'kn_IN'), ('ko_KR', 'ko_KR'), ('kok_IN', 'kok_IN'), ('ky_KG', 'ky_KG'), ('lb_LU', 'lb_LU'), ('lo_LA', 'lo_LA'), ('lt_LT', 'lt_LT'), ('lv_LV', 'lv_LV'), ('mi_NZ', 'mi_NZ'), ('mk_MK', 'mk_MK'), ('ml_IN', 'ml_IN'), ('mn_CN', 'mn_CN'), ('mn_MN', 'mn_MN'), ('moh_CA', 'moh_CA'), ('mr_IN', 'mr_IN'), ('ms_BN', 'ms_BN'), ('ms_MY', 'ms_MY'), ('mt_MT', 'mt_MT'), ('nb_NO', 'nb_NO'), ('ne_NP', 'ne_NP'), ('nl_BE', 'nl_BE'), ('nl_NL', 'nl_NL'), ('nn_NO', 'nn_NO'), ('ns_ZA', 'ns_ZA'), ('oc_FR', 'oc_FR'), ('or_IN', 'or_IN'), ('pa_IN', 'pa_IN'), ('pl_PL', 'pl_PL'), ('ps_AF', 'ps_AF'), ('pt_BR', 'pt_BR'), ('pt_PT', 'pt_PT'), ('qut_GT', 'qut_GT'), ('quz_BO', 'quz_BO'), ('quz_EC', 'quz_EC'), ('quz_PE', 'quz_PE'), ('rm_CH', 'rm_CH'), ('ro_RO', 'ro_RO'), ('ru_RU', 'ru_RU'), ('rw_RW', 'rw_RW'), ('sa_IN', 'sa_IN'), ('sah_RU', 'sah_RU'), ('se_FI', 'se_FI'), ('se_NO', 'se_NO'), ('se_SE', 'se_SE'), ('si_LK', 'si_LK'), ('sk_SK', 'sk_SK'), ('sl_SI', 'sl_SI'), ('sma_NO', 'sma_NO'), ('sma_SE', 'sma_SE'), ('smj_NO', 'smj_NO'), ('smj_SE', 'smj_SE'), ('smn_FI', 'smn_FI'), ('sms_FI', 'sms_FI'), ('sq_AL', 'sq_AL'), ('sr_BA', 'sr_BA'), ('sr_BA', 'sr_BA'), ('sr_SP', 'sr_SP'), ('sr_SP', 'sr_SP'), ('sv_FI', 'sv_FI'), ('sv_SE', 'sv_SE'), ('sw_KE', 'sw_KE'), ('syr_SY', 'syr_SY'), ('ta_IN', 'ta_IN'), ('te_IN', 'te_IN'), ('tg_TJ', 'tg_TJ'), ('th_TH', 'th_TH'), ('tk_TM', 'tk_TM'), ('tmz_DZ', 'tmz_DZ'), ('tn_ZA', 'tn_ZA'), ('tr_TR', 'tr_TR'), ('tt_RU', 'tt_RU'), ('ug_CN', 'ug_CN'), ('uk_UA', 'uk_UA'), ('ur_IN', 'ur_IN'), ('ur_PK', 'ur_PK'), ('uz_UZ', 'uz_UZ'), ('uz_UZ', 'uz_UZ'), ('vi_VN', 'vi_VN'), ('wen_DE', 'wen_DE'), ('wo_SN', 'wo_SN'), ('xh_ZA', 'xh_ZA'), ('yo_NG', 'yo_NG'), ('zh_CHS', 'zh_CHS'), ('zh_CHT', 'zh_CHT'), ('zh_CN', 'zh_CN'), ('zh_HK', 'zh_HK'), ('zh_MO', 'zh_MO'), ('zh_SG', 'zh_SG'), ('zh_TW', 'zh_TW'), ('zu_ZA', 'zu_ZA')], default='French', max_length=10), + model_name="language", + name="windows_locale_name", + field=models.CharField( + choices=[ + ("af_ZA", "af_ZA"), + ("am_ET", "am_ET"), + ("ar_AE", "ar_AE"), + ("ar_BH", "ar_BH"), + ("ar_DZ", "ar_DZ"), + ("ar_EG", "ar_EG"), + ("ar_IQ", "ar_IQ"), + ("ar_JO", "ar_JO"), + ("ar_KW", "ar_KW"), + ("ar_LB", "ar_LB"), + ("ar_LY", "ar_LY"), + ("ar_MA", "ar_MA"), + ("ar_OM", "ar_OM"), + ("ar_QA", "ar_QA"), + ("ar_SA", "ar_SA"), + ("ar_SY", "ar_SY"), + ("ar_TN", "ar_TN"), + ("ar_YE", "ar_YE"), + ("arn_CL", "arn_CL"), + ("as_IN", "as_IN"), + ("az_AZ", "az_AZ"), + ("az_AZ", "az_AZ"), + ("ba_RU", "ba_RU"), + ("be_BY", "be_BY"), + ("bg_BG", "bg_BG"), + ("bn_IN", "bn_IN"), + ("bo_BT", "bo_BT"), + ("bo_CN", "bo_CN"), + ("br_FR", "br_FR"), + ("bs_BA", "bs_BA"), + ("bs_BA", "bs_BA"), + ("ca_ES", "ca_ES"), + ("co_FR", "co_FR"), + ("cs_CZ", "cs_CZ"), + ("cy_GB", "cy_GB"), + ("da_DK", "da_DK"), + ("de_AT", "de_AT"), + ("de_CH", "de_CH"), + ("de_DE", "de_DE"), + ("de_LI", "de_LI"), + ("de_LU", "de_LU"), + ("div_MV", "div_MV"), + ("dsb_DE", "dsb_DE"), + ("el_GR", "el_GR"), + ("en_AU", "en_AU"), + ("en_BZ", "en_BZ"), + ("en_CA", "en_CA"), + ("en_CB", "en_CB"), + ("en_GB", "en_GB"), + ("en_IE", "en_IE"), + ("en_IN", "en_IN"), + ("en_IN", "en_IN"), + ("en_JA", "en_JA"), + ("en_MY", "en_MY"), + ("en_NZ", "en_NZ"), + ("en_PH", "en_PH"), + ("en_TT", "en_TT"), + ("en_US", "en_US"), + ("en_ZA", "en_ZA"), + ("en_ZW", "en_ZW"), + ("es_AR", "es_AR"), + ("es_BO", "es_BO"), + ("es_CL", "es_CL"), + ("es_CO", "es_CO"), + ("es_CR", "es_CR"), + ("es_DO", "es_DO"), + ("es_EC", "es_EC"), + ("es_ES", "es_ES"), + ("es_ES", "es_ES"), + ("es_GT", "es_GT"), + ("es_HN", "es_HN"), + ("es_MX", "es_MX"), + ("es_NI", "es_NI"), + ("es_PA", "es_PA"), + ("es_PE", "es_PE"), + ("es_PR", "es_PR"), + ("es_PY", "es_PY"), + ("es_SV", "es_SV"), + ("es_UR", "es_UR"), + ("es_US", "es_US"), + ("es_VE", "es_VE"), + ("et_EE", "et_EE"), + ("eu_ES", "eu_ES"), + ("fa_IR", "fa_IR"), + ("fi_FI", "fi_FI"), + ("fil_PH", "fil_PH"), + ("fo_FO", "fo_FO"), + ("fr_BE", "fr_BE"), + ("fr_CA", "fr_CA"), + ("fr_CH", "fr_CH"), + ("fr_FR", "fr_FR"), + ("fr_LU", "fr_LU"), + ("fr_MC", "fr_MC"), + ("fy_NL", "fy_NL"), + ("ga_IE", "ga_IE"), + ("gbz_AF", "gbz_AF"), + ("gl_ES", "gl_ES"), + ("gsw_FR", "gsw_FR"), + ("gu_IN", "gu_IN"), + ("ha_NG", "ha_NG"), + ("he_IL", "he_IL"), + ("hi_IN", "hi_IN"), + ("hr_BA", "hr_BA"), + ("hr_HR", "hr_HR"), + ("hu_HU", "hu_HU"), + ("hy_AM", "hy_AM"), + ("id_ID", "id_ID"), + ("ii_CN", "ii_CN"), + ("is_IS", "is_IS"), + ("it_CH", "it_CH"), + ("it_IT", "it_IT"), + ("iu_CA", "iu_CA"), + ("iu_CA", "iu_CA"), + ("ja_JP", "ja_JP"), + ("ka_GE", "ka_GE"), + ("kh_KH", "kh_KH"), + ("kk_KZ", "kk_KZ"), + ("kl_GL", "kl_GL"), + ("kn_IN", "kn_IN"), + ("ko_KR", "ko_KR"), + ("kok_IN", "kok_IN"), + ("ky_KG", "ky_KG"), + ("lb_LU", "lb_LU"), + ("lo_LA", "lo_LA"), + ("lt_LT", "lt_LT"), + ("lv_LV", "lv_LV"), + ("mi_NZ", "mi_NZ"), + ("mk_MK", "mk_MK"), + ("ml_IN", "ml_IN"), + ("mn_CN", "mn_CN"), + ("mn_MN", "mn_MN"), + ("moh_CA", "moh_CA"), + ("mr_IN", "mr_IN"), + ("ms_BN", "ms_BN"), + ("ms_MY", "ms_MY"), + ("mt_MT", "mt_MT"), + ("nb_NO", "nb_NO"), + ("ne_NP", "ne_NP"), + ("nl_BE", "nl_BE"), + ("nl_NL", "nl_NL"), + ("nn_NO", "nn_NO"), + ("ns_ZA", "ns_ZA"), + ("oc_FR", "oc_FR"), + ("or_IN", "or_IN"), + ("pa_IN", "pa_IN"), + ("pl_PL", "pl_PL"), + ("ps_AF", "ps_AF"), + ("pt_BR", "pt_BR"), + ("pt_PT", "pt_PT"), + ("qut_GT", "qut_GT"), + ("quz_BO", "quz_BO"), + ("quz_EC", "quz_EC"), + ("quz_PE", "quz_PE"), + ("rm_CH", "rm_CH"), + ("ro_RO", "ro_RO"), + ("ru_RU", "ru_RU"), + ("rw_RW", "rw_RW"), + ("sa_IN", "sa_IN"), + ("sah_RU", "sah_RU"), + ("se_FI", "se_FI"), + ("se_NO", "se_NO"), + ("se_SE", "se_SE"), + ("si_LK", "si_LK"), + ("sk_SK", "sk_SK"), + ("sl_SI", "sl_SI"), + ("sma_NO", "sma_NO"), + ("sma_SE", "sma_SE"), + ("smj_NO", "smj_NO"), + ("smj_SE", "smj_SE"), + ("smn_FI", "smn_FI"), + ("sms_FI", "sms_FI"), + ("sq_AL", "sq_AL"), + ("sr_BA", "sr_BA"), + ("sr_BA", "sr_BA"), + ("sr_SP", "sr_SP"), + ("sr_SP", "sr_SP"), + ("sv_FI", "sv_FI"), + ("sv_SE", "sv_SE"), + ("sw_KE", "sw_KE"), + ("syr_SY", "syr_SY"), + ("ta_IN", "ta_IN"), + ("te_IN", "te_IN"), + ("tg_TJ", "tg_TJ"), + ("th_TH", "th_TH"), + ("tk_TM", "tk_TM"), + ("tmz_DZ", "tmz_DZ"), + ("tn_ZA", "tn_ZA"), + ("tr_TR", "tr_TR"), + ("tt_RU", "tt_RU"), + ("ug_CN", "ug_CN"), + ("uk_UA", "uk_UA"), + ("ur_IN", "ur_IN"), + ("ur_PK", "ur_PK"), + ("uz_UZ", "uz_UZ"), + ("uz_UZ", "uz_UZ"), + ("vi_VN", "vi_VN"), + ("wen_DE", "wen_DE"), + ("wo_SN", "wo_SN"), + ("xh_ZA", "xh_ZA"), + ("yo_NG", "yo_NG"), + ("zh_CHS", "zh_CHS"), + ("zh_CHT", "zh_CHT"), + ("zh_CN", "zh_CN"), + ("zh_HK", "zh_HK"), + ("zh_MO", "zh_MO"), + ("zh_SG", "zh_SG"), + ("zh_TW", "zh_TW"), + ("zu_ZA", "zu_ZA"), + ], + default="French", + max_length=10, + ), ), ] diff --git a/smash/web/migrations/0043_auto_20170904_1240.py b/smash/web/migrations/0043_auto_20170904_1240.py index 878d593ede130fc28875e5ac46fba4116cdbac89..56aeabd612baa8ecc0bf0df55ca64a5dd02d4887 100644 --- a/smash/web/migrations/0043_auto_20170904_1240.py +++ b/smash/web/migrations/0043_auto_20170904_1240.py @@ -12,30 +12,41 @@ from django.db import migrations, models d = datetime.time(17, 0, 0) -class Migration(migrations.Migration): +class Migration(migrations.Migration): dependencies = [ - ('web', '0042_auto_20170613_1634'), + ("web", "0042_auto_20170613_1634"), ] operations = [ migrations.RemoveField( - model_name='availability', - name='is_current', + model_name="availability", + name="is_current", ), migrations.AlterField( - model_name='availability', - name='available_from', - field=models.TimeField(verbose_name='Available from'), + model_name="availability", + name="available_from", + field=models.TimeField(verbose_name="Available from"), ), migrations.AlterField( - model_name='availability', - name='available_till', - field=models.TimeField(default=d, verbose_name='Available until'), + model_name="availability", + name="available_till", + field=models.TimeField(default=d, verbose_name="Available until"), ), migrations.AlterField( - model_name='availability', - name='day_number', - field=models.IntegerField(choices=[(1, 'MONDAY'), (2, 'TUESDAY'), (3, 'WEDNESDAY'), (4, 'THURSDAY'), (5, 'FRIDAY'), (6, 'SATURDAY'), (7, 'SUNDAY')], verbose_name='Day of the week'), + model_name="availability", + name="day_number", + field=models.IntegerField( + choices=[ + (1, "MONDAY"), + (2, "TUESDAY"), + (3, "WEDNESDAY"), + (4, "THURSDAY"), + (5, "FRIDAY"), + (6, "SATURDAY"), + (7, "SUNDAY"), + ], + verbose_name="Day of the week", + ), ), ] diff --git a/smash/web/migrations/0046_subject_flying_team.py b/smash/web/migrations/0046_subject_flying_team.py index 200e52e536056d1b96415f86dd5d4fa827caf524..4cb1a8c772a878518fa5a183141d09b296102a4d 100644 --- a/smash/web/migrations/0046_subject_flying_team.py +++ b/smash/web/migrations/0046_subject_flying_team.py @@ -7,15 +7,20 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0045_holiday_info'), + ("web", "0045_holiday_info"), ] operations = [ migrations.AddField( - model_name='subject', - name='flying_team', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='web.FlyingTeam', verbose_name='Flying team (if applicable)'), + model_name="subject", + name="flying_team", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.FlyingTeam", + verbose_name="Flying team (if applicable)", + ), ), ] diff --git a/smash/web/migrations/0047_subject_flying_team_from_annotation.py b/smash/web/migrations/0047_subject_flying_team_from_annotation.py index 4747e562d85c1daeedbb908caf4c2e51d3c3734e..3461538515dca509df0fcc5c653f665547682cbf 100644 --- a/smash/web/migrations/0047_subject_flying_team_from_annotation.py +++ b/smash/web/migrations/0047_subject_flying_team_from_annotation.py @@ -9,26 +9,25 @@ from ..migration_functions import is_sqlite_db class Migration(migrations.Migration): dependencies = [ - ('web', '0046_subject_flying_team'), + ("web", "0046_subject_flying_team"), ] if is_sqlite_db(): operations = [ migrations.RunSQL( - "update web_subject set flying_team_id = (select flying_team_id from web_visit, web_appointment " + - "where web_subject.id=web_visit.subject_id and " + - "web_visit.id = web_appointment.visit_id and " + - "web_appointment.flying_team_id is not null and status = 'FINISHED') " + "update web_subject set flying_team_id = (select flying_team_id from web_visit, web_appointment " + + "where web_subject.id=web_visit.subject_id and " + + "web_visit.id = web_appointment.visit_id and " + + "web_appointment.flying_team_id is not null and status = 'FINISHED') " "where web_subject.flying_team_id is null" - ), ] else: operations = [ migrations.RunSQL( - "update web_subject set flying_team_id = web_appointment.flying_team_id from web_visit, web_appointment " + - "where web_subject.id=web_visit.subject_id and " + - "web_subject.flying_team_id is null and " + - "web_visit.id = web_appointment.visit_id and " + - "web_appointment.flying_team_id is not null and status = 'FINISHED';" + "update web_subject set flying_team_id = web_appointment.flying_team_id from web_visit, web_appointment" + + " where web_subject.id=web_visit.subject_id and " + + "web_subject.flying_team_id is null and " + + "web_visit.id = web_appointment.visit_id and " + + "web_appointment.flying_team_id is not null and status = 'FINISHED';" ), ] diff --git a/smash/web/migrations/0048_auto_20170911_1504.py b/smash/web/migrations/0048_auto_20170911_1504.py index 1d4f890a9162d7bbd0be23da1df5e3fab05591dd..337f6babd9c1c67ad299157d82e6b13c5e2b6d21 100644 --- a/smash/web/migrations/0048_auto_20170911_1504.py +++ b/smash/web/migrations/0048_auto_20170911_1504.py @@ -7,15 +7,20 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0047_subject_flying_team_from_annotation'), + ("web", "0047_subject_flying_team_from_annotation"), ] operations = [ migrations.AlterField( - model_name='subject', - name='flying_team', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='web.FlyingTeam', verbose_name='Default flying team location (if applicable)'), + model_name="subject", + name="flying_team", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.FlyingTeam", + verbose_name="Default flying team location (if applicable)", + ), ), ] diff --git a/smash/web/migrations/0051_missingsubject.py b/smash/web/migrations/0051_missingsubject.py index a00459a696e3d4cd0d086c17a91746661895e8d4..0a197e32261df3d913898cb9c24878ab2e69544f 100644 --- a/smash/web/migrations/0051_missingsubject.py +++ b/smash/web/migrations/0051_missingsubject.py @@ -7,20 +7,31 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0050_configurationitem_redcap_items'), + ("web", "0050_configurationitem_redcap_items"), ] operations = [ migrations.CreateModel( - name='MissingSubject', + name="MissingSubject", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('ignore', models.BooleanField(default=False, verbose_name='Ignore missing subject')), - ('redcap_id', models.CharField(blank=True, max_length=255, null=True, verbose_name='RED Cap id')), - ('redcap_url', models.CharField(blank=True, max_length=255, null=True, verbose_name='URL to RED Cap subject')), - ('subject', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='web.Subject', verbose_name='Subject')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("ignore", models.BooleanField(default=False, verbose_name="Ignore missing subject")), + ("redcap_id", models.CharField(blank=True, max_length=255, null=True, verbose_name="RED Cap id")), + ( + "redcap_url", + models.CharField(blank=True, max_length=255, null=True, verbose_name="URL to RED Cap subject"), + ), + ( + "subject", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.Subject", + verbose_name="Subject", + ), + ), ], ), ] diff --git a/smash/web/migrations/0052_auto_20170913_0943.py b/smash/web/migrations/0052_auto_20170913_0943.py index dcfd06d1d7005e74fa909522f84dfb1deb23c7e3..501d8fa55c93a41598008fdc6631feecbb642e8c 100644 --- a/smash/web/migrations/0052_auto_20170913_0943.py +++ b/smash/web/migrations/0052_auto_20170913_0943.py @@ -7,33 +7,46 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0051_missingsubject'), + ("web", "0051_missingsubject"), ] operations = [ migrations.CreateModel( - name='InconsistentField', + name="InconsistentField", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=255, verbose_name='Field name')), - ('smash_value', models.CharField(max_length=255, verbose_name='Smash value')), - ('redcap_value', models.CharField(max_length=255, verbose_name='RED Cap value')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("name", models.CharField(max_length=255, verbose_name="Field name")), + ("smash_value", models.CharField(max_length=255, verbose_name="Smash value")), + ("redcap_value", models.CharField(max_length=255, verbose_name="RED Cap value")), ], ), migrations.CreateModel( - name='InconsistentSubject', + name="InconsistentSubject", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('ignore', models.BooleanField(default=False, verbose_name='Ignore missing subject')), - ('redcap_url', models.CharField(blank=True, max_length=255, null=True, verbose_name='URL to RED Cap subject')), - ('subject', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='web.Subject', verbose_name='Subject')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("ignore", models.BooleanField(default=False, verbose_name="Ignore missing subject")), + ( + "redcap_url", + models.CharField(blank=True, max_length=255, null=True, verbose_name="URL to RED Cap subject"), + ), + ( + "subject", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.Subject", + verbose_name="Subject", + ), + ), ], ), migrations.AddField( - model_name='inconsistentfield', - name='inconsistent_subject', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.InconsistentSubject', verbose_name='Invalid fields'), + model_name="inconsistentfield", + name="inconsistent_subject", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, to="web.InconsistentSubject", verbose_name="Invalid fields" + ), ), ] diff --git a/smash/web/migrations/0059_subject_country_2.py b/smash/web/migrations/0059_subject_country_2.py index 97d023bb4b7845fd94e4f6e1c7aeeb219b0d1028..232bccec6549c69f834c8f08862cab995581b5bb 100644 --- a/smash/web/migrations/0059_subject_country_2.py +++ b/smash/web/migrations/0059_subject_country_2.py @@ -7,15 +7,16 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0058_country'), + ("web", "0058_country"), ] operations = [ migrations.AddField( - model_name='subject', - name='country_2', - field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='web.Country', verbose_name='Country'), + model_name="subject", + name="country_2", + field=models.ForeignKey( + default=1, on_delete=django.db.models.deletion.CASCADE, to="web.Country", verbose_name="Country" + ), ), ] diff --git a/smash/web/migrations/0060_remove_subject_country.py b/smash/web/migrations/0060_remove_subject_country.py index 7ec9f237a35be39cecd424780078cae820e9d2b8..59f46c066b2f79043c71211875d65a3f53958d69 100644 --- a/smash/web/migrations/0060_remove_subject_country.py +++ b/smash/web/migrations/0060_remove_subject_country.py @@ -9,219 +9,225 @@ from ..migration_functions import is_sqlite_db class Migration(migrations.Migration): dependencies = [ - ('web', '0059_subject_country_2'), + ("web", "0059_subject_country_2"), ] operations = [ migrations.AlterField( - model_name='country', - name='name', + model_name="country", + name="name", field=models.CharField(max_length=50), ), - migrations.RunSQL('insert into web_country (name, "order") values(\'Afghanistan\', 100);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Albania\', 101);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Algeria\', 102);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Andorra\', 103);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Angola\', 104);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Antigua & Deps\', 105);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Argentina\', 106);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Armenia\', 107);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Australia\', 108);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Austria\', 109);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Azerbaijan\', 110);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Bahamas\', 111);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Bahrain\', 112);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Bangladesh\', 113);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Barbados\', 114);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Belarus\', 115);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Belgium\', 4);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Belize\', 117);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Benin\', 118);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Bhutan\', 119);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Bolivia\', 120);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Bosnia Herzegovina\', 121);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Botswana\', 122);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Brazil\', 123);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Brunei\', 124);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Bulgaria\', 125);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Burkina\', 126);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Burundi\', 127);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Cambodia\', 128);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Cameroon\', 129);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Canada\', 130);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Cape Verde\', 131);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Central African Rep\', 132);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Chad\', 133);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Chile\', 134);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'China\', 135);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Colombia\', 136);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Comoros\', 137);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Congo\', 138);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Congo {Democratic Rep}\', 139);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Costa Rica\', 140);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Croatia\', 141);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Cuba\', 142);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Cyprus\', 143);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Czech Republic\', 144);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Denmark\', 145);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Djibouti\', 146);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Dominica\', 147);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Dominican Republic\', 148);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'East Timor\', 149);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Ecuador\', 150);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Egypt\', 151);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'El Salvador\', 152);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Equatorial Guinea\', 153);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Eritrea\', 154);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Estonia\', 155);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Ethiopia\', 156);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Fiji\', 157);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Finland\', 158);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'France\', 2);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Gabon\', 160);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Gambia\', 161);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Georgia\', 162);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Germany\', 3);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Ghana\', 164);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Greece\', 165);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Grenada\', 166);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Guatemala\', 167);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Guinea\', 168);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Guinea-Bissau\', 169);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Guyana\', 170);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Haiti\', 171);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Honduras\', 172);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Hungary\', 173);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Iceland\', 174);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'India\', 175);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Indonesia\', 176);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Iran\', 177);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Iraq\', 178);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Ireland {Republic}\', 179);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Israel\', 180);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Italy\', 181);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Ivory Coast\', 182);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Jamaica\', 183);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Japan\', 184);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Jordan\', 185);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Kazakhstan\', 186);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Kenya\', 187);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Kiribati\', 188);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Korea North\', 189);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Korea South\', 190);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Kosovo\', 191);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Kuwait\', 192);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Kyrgyzstan\', 193);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Laos\', 194);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Latvia\', 195);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Lebanon\', 196);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Lesotho\', 197);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Liberia\', 198);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Libya\', 199);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Liechtenstein\', 200);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Lithuania\', 201);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Luxembourg\', 1);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Macedonia\', 203);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Madagascar\', 204);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Malawi\', 205);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Malaysia\', 206);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Maldives\', 207);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Mali\', 208);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Malta\', 209);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Marshall Islands\', 210);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Mauritania\', 211);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Mauritius\', 212);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Mexico\', 213);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Micronesia\', 214);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Moldova\', 215);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Monaco\', 216);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Mongolia\', 217);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Montenegro\', 218);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Morocco\', 219);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Mozambique\', 220);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Myanmar, {Burma}\', 221);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Namibia\', 222);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Nauru\', 223);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Nepal\', 224);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Netherlands\', 225);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'New Zealand\', 226);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Nicaragua\', 227);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Niger\', 228);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Nigeria\', 229);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Norway\', 230);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Oman\', 231);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Pakistan\', 232);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Palau\', 233);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Panama\', 234);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Papua New Guinea\', 235);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Paraguay\', 236);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Peru\', 237);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Philippines\', 238);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Poland\', 239);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Portugal\', 240);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Qatar\', 241);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Romania\', 242);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Russian Federation\', 243);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Rwanda\', 244);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'St Kitts & Nevis\', 245);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'St Lucia\', 246);'), - migrations.RunSQL( - 'insert into web_country (name, "order") values(\'Saint Vincent & the Grenadines\', 247);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Samoa\', 248);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'San Marino\', 249);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Sao Tome & Principe\', 250);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Saudi Arabia\', 251);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Senegal\', 252);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Serbia\', 253);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Seychelles\', 254);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Sierra Leone\', 255);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Singapore\', 256);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Slovakia\', 257);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Slovenia\', 258);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Solomon Islands\', 259);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Somalia\', 260);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'South Africa\', 261);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'South Sudan\', 262);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Spain\', 263);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Sri Lanka\', 264);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Sudan\', 265);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Suriname\', 266);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Swaziland\', 267);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Sweden\', 268);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Switzerland\', 269);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Syria\', 270);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Taiwan\', 271);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Tajikistan\', 272);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Tanzania\', 273);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Thailand\', 274);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Togo\', 275);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Tonga\', 276);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Trinidad & Tobago\', 277);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Tunisia\', 278);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Turkey\', 279);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Turkmenistan\', 280);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Tuvalu\', 281);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Uganda\', 282);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Ukraine\', 283);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'United Arab Emirates\', 284);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'United Kingdom\', 285);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'United States\', 286);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Uruguay\', 287);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Uzbekistan\', 288);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Vanuatu\', 289);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Vatican City\', 290);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Venezuela\', 291);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Vietnam\', 292);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Yemen\', 293);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Zambia\', 294);'), - migrations.RunSQL('insert into web_country (name, "order") values(\'Zimbabwe\', 295);'), - + migrations.RunSQL("insert into web_country (name, \"order\") values('Afghanistan', 100);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Albania', 101);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Algeria', 102);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Andorra', 103);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Angola', 104);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Antigua & Deps', 105);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Argentina', 106);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Armenia', 107);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Australia', 108);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Austria', 109);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Azerbaijan', 110);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Bahamas', 111);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Bahrain', 112);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Bangladesh', 113);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Barbados', 114);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Belarus', 115);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Belgium', 4);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Belize', 117);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Benin', 118);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Bhutan', 119);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Bolivia', 120);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Bosnia Herzegovina', 121);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Botswana', 122);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Brazil', 123);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Brunei', 124);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Bulgaria', 125);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Burkina', 126);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Burundi', 127);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Cambodia', 128);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Cameroon', 129);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Canada', 130);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Cape Verde', 131);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Central African Rep', 132);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Chad', 133);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Chile', 134);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('China', 135);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Colombia', 136);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Comoros', 137);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Congo', 138);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Congo {Democratic Rep}', 139);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Costa Rica', 140);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Croatia', 141);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Cuba', 142);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Cyprus', 143);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Czech Republic', 144);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Denmark', 145);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Djibouti', 146);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Dominica', 147);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Dominican Republic', 148);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('East Timor', 149);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Ecuador', 150);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Egypt', 151);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('El Salvador', 152);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Equatorial Guinea', 153);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Eritrea', 154);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Estonia', 155);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Ethiopia', 156);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Fiji', 157);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Finland', 158);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('France', 2);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Gabon', 160);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Gambia', 161);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Georgia', 162);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Germany', 3);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Ghana', 164);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Greece', 165);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Grenada', 166);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Guatemala', 167);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Guinea', 168);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Guinea-Bissau', 169);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Guyana', 170);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Haiti', 171);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Honduras', 172);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Hungary', 173);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Iceland', 174);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('India', 175);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Indonesia', 176);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Iran', 177);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Iraq', 178);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Ireland {Republic}', 179);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Israel', 180);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Italy', 181);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Ivory Coast', 182);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Jamaica', 183);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Japan', 184);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Jordan', 185);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Kazakhstan', 186);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Kenya', 187);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Kiribati', 188);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Korea North', 189);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Korea South', 190);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Kosovo', 191);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Kuwait', 192);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Kyrgyzstan', 193);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Laos', 194);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Latvia', 195);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Lebanon', 196);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Lesotho', 197);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Liberia', 198);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Libya', 199);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Liechtenstein', 200);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Lithuania', 201);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Luxembourg', 1);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Macedonia', 203);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Madagascar', 204);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Malawi', 205);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Malaysia', 206);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Maldives', 207);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Mali', 208);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Malta', 209);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Marshall Islands', 210);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Mauritania', 211);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Mauritius', 212);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Mexico', 213);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Micronesia', 214);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Moldova', 215);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Monaco', 216);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Mongolia', 217);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Montenegro', 218);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Morocco', 219);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Mozambique', 220);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Myanmar, {Burma}', 221);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Namibia', 222);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Nauru', 223);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Nepal', 224);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Netherlands', 225);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('New Zealand', 226);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Nicaragua', 227);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Niger', 228);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Nigeria', 229);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Norway', 230);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Oman', 231);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Pakistan', 232);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Palau', 233);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Panama', 234);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Papua New Guinea', 235);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Paraguay', 236);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Peru', 237);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Philippines', 238);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Poland', 239);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Portugal', 240);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Qatar', 241);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Romania', 242);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Russian Federation', 243);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Rwanda', 244);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('St Kitts & Nevis', 245);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('St Lucia', 246);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Saint Vincent & the Grenadines', 247);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Samoa', 248);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('San Marino', 249);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Sao Tome & Principe', 250);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Saudi Arabia', 251);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Senegal', 252);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Serbia', 253);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Seychelles', 254);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Sierra Leone', 255);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Singapore', 256);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Slovakia', 257);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Slovenia', 258);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Solomon Islands', 259);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Somalia', 260);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('South Africa', 261);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('South Sudan', 262);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Spain', 263);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Sri Lanka', 264);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Sudan', 265);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Suriname', 266);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Swaziland', 267);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Sweden', 268);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Switzerland', 269);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Syria', 270);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Taiwan', 271);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Tajikistan', 272);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Tanzania', 273);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Thailand', 274);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Togo', 275);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Tonga', 276);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Trinidad & Tobago', 277);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Tunisia', 278);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Turkey', 279);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Turkmenistan', 280);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Tuvalu', 281);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Uganda', 282);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Ukraine', 283);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('United Arab Emirates', 284);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('United Kingdom', 285);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('United States', 286);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Uruguay', 287);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Uzbekistan', 288);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Vanuatu', 289);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Vatican City', 290);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Venezuela', 291);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Vietnam', 292);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Yemen', 293);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Zambia', 294);"), + migrations.RunSQL("insert into web_country (name, \"order\") values('Zimbabwe', 295);"), ] if is_sqlite_db(): - operations.append(migrations.RunSQL('update web_subject set country_2_id = ' - 'case when (select id from web_country u where country=u.name) is Null then 1 ' - 'else (select id from web_country u where country=u.name) end;')) + operations.append( + migrations.RunSQL( + "update web_subject set country_2_id = " + "case when (select id from web_country u where country=u.name) is Null then 1 " + "else (select id from web_country u where country=u.name) end;" + ) + ) else: - operations.append(migrations.RunSQL('update web_subject t set country_2_id = ' - 'case when (select id from web_country u where t.country=u.name) is Null then 1 ' - 'else (select id from web_country u where t.country=u.name) end;')) + operations.append( + migrations.RunSQL( + "update web_subject t set country_2_id = " + "case when (select id from web_country u where t.country=u.name) is Null then 1 " + "else (select id from web_country u where t.country=u.name) end;" + ) + ) diff --git a/smash/web/migrations/0063_auto_20171120_1429.py b/smash/web/migrations/0063_auto_20171120_1429.py index 258a40e72301fd940271dfdddab553fa9060fc4e..4390fe99eea7dcec41812c692b7542e69974e1b4 100644 --- a/smash/web/migrations/0063_auto_20171120_1429.py +++ b/smash/web/migrations/0063_auto_20171120_1429.py @@ -7,15 +7,23 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ - ('web', '0062_subject_resign_reason'), + ("web", "0062_subject_resign_reason"), ] operations = [ migrations.AlterField( - model_name='subject', - name='nd_number', - field=models.CharField(blank=True, max_length=25, validators=[django.core.validators.RegexValidator('^(ND[0-9]{4}|)$', message='ND number should look as follows: NDxxxx')], verbose_name='ND number'), + model_name="subject", + name="nd_number", + field=models.CharField( + blank=True, + max_length=25, + validators=[ + django.core.validators.RegexValidator( + "^(ND[0-9]{4}|)$", message="ND number should look as follows: NDxxxx" + ) + ], + verbose_name="ND number", + ), ), ] diff --git a/smash/web/migrations/0065_auto_20171127_0957.py b/smash/web/migrations/0065_auto_20171127_0957.py index a8e28a6098b32dd8ee5ea44f8418c59b868f2ef8..3db470b5b95909006c64a52d6f6575d0593dd4d9 100644 --- a/smash/web/migrations/0065_auto_20171127_0957.py +++ b/smash/web/migrations/0065_auto_20171127_0957.py @@ -7,15 +7,21 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0064_auto_20171127_0954'), + ("web", "0064_auto_20171127_0954"), ] operations = [ migrations.AlterField( - model_name='studysubject', - name='default_written_communication_language', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='studysubject_written_comunication', to='web.Language', verbose_name='Default language for document generation'), + model_name="studysubject", + name="default_written_communication_language", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="studysubject_written_comunication", + to="web.Language", + verbose_name="Default language for document generation", + ), ), ] diff --git a/smash/web/migrations/0066_subject.py b/smash/web/migrations/0066_subject.py index a0d3357d62299e6f926ebb27b38befef3ea692e9..4f92c9aa88cc328b6625f647fabf60789489ed7e 100644 --- a/smash/web/migrations/0066_subject.py +++ b/smash/web/migrations/0066_subject.py @@ -8,29 +8,62 @@ from ..migration_functions import is_sqlite_db class Migration(migrations.Migration): - dependencies = [ - ('web', '0065_auto_20171127_0957'), + ("web", "0065_auto_20171127_0957"), ] if not is_sqlite_db(): operations = [ - migrations.RunSQL('alter sequence web_subject_id_seq rename to web_studysubject_id_seq;'), - migrations.RunSQL('alter sequence web_subject_languages_id_seq rename to web_studysubject_languages_id_seq;'), - migrations.RunSQL('alter table web_studysubject rename constraint web_subject_flying_team_id_ef78de5d_fk_web_flyingteam_id to web_studysubject_flying_team_id_ef78de5d_fk_web_flyingteam_id;'), - migrations.RunSQL('alter table web_studysubject_languages rename constraint web_subject_languages_language_id_80eca4c1_fk_web_language_id to web_studysubject_languages_language_id_80eca4c1_fk_web_language_id;'), - migrations.RunSQL('alter table web_studysubject rename constraint web_subject_country_id_5d976875_fk_web_country_id to web_studysubject_country_id_5d976875_fk_web_country_id;'), - migrations.RunSQL('alter table web_studysubject rename constraint web_subject_default_location_id_da83b714_fk_web_location_id to web_studyubject_default_location_id_da83b714_fk_web_location_id;'), - migrations.RunSQL('alter table web_studysubject rename constraint web_subject_pkey to web_studysubject_pkey;'), - migrations.RunSQL('alter table web_studysubject_languages rename constraint web_subject_languages_pkey to web_studysubject_languages_pkey;'), - migrations.RunSQL('alter table web_studysubject_languages rename constraint web_subject_languages_subject_id_language_id_a5eb4f49_uniq to web_studysubject_languages_subject_id_language_id_a5eb4f49_uniq;'), - migrations.RunSQL('alter index if exists web_subject_15d1b6cd rename to web_studysubject_15d1b6cd;'), - migrations.RunSQL('alter index if exists web_subject_496f9482 rename to web_studysubject_496f9482;'), - migrations.RunSQL('alter index if exists web_subject_84b500ff rename to web_studysubject_84b500ff;'), - migrations.RunSQL('alter index if exists web_subject_9571fdf9 rename to web_studysubject_9571fdf9;'), - migrations.RunSQL('alter index if exists web_subject_languages_468679bd rename to web_studysubject_languages_468679bd;'), - migrations.RunSQL('alter index if exists web_subject_languages_ffaba1d1 rename to web_studysubject_languages_ffaba1d1;'), - migrations.RunSQL('alter index if exists web_subject_screening_number_75aa70c7_like rename to web_studysubject_screening_number_75aa70c7_like;') + migrations.RunSQL("alter sequence web_subject_id_seq rename to web_studysubject_id_seq;"), + migrations.RunSQL( + "alter sequence web_subject_languages_id_seq rename to web_studysubject_languages_id_seq;" + ), + migrations.RunSQL( + "alter table web_studysubject rename constraint " + "web_subject_flying_team_id_ef78de5d_fk_web_flyingteam_id to " + "web_studysubject_flying_team_id_ef78de5d_fk_web_flyingteam_id;" + ), + migrations.RunSQL( + "alter table web_studysubject_languages rename constraint " + "web_subject_languages_language_id_80eca4c1_fk_web_language_id to " + "web_studysubject_languages_language_id_80eca4c1_fk_web_language_id;" + ), + migrations.RunSQL( + "alter table web_studysubject rename constraint " + "web_subject_country_id_5d976875_fk_web_country_id to " + "web_studysubject_country_id_5d976875_fk_web_country_id;" + ), + migrations.RunSQL( + "alter table web_studysubject rename constraint " + "web_subject_default_location_id_da83b714_fk_web_location_id to " + "web_studyubject_default_location_id_da83b714_fk_web_location_id;" + ), + migrations.RunSQL( + "alter table web_studysubject rename constraint" "web_subject_pkey to web_studysubject_pkey;" + ), + migrations.RunSQL( + "alter table web_studysubject_languages rename constraint" + " web_subject_languages_pkey to web_studysubject_languages_pkey;" + ), + migrations.RunSQL( + "alter table web_studysubject_languages rename constraint" + " web_subject_languages_subject_id_language_id_a5eb4f49_uniq to" + " web_studysubject_languages_subject_id_language_id_a5eb4f49_uniq;" + ), + migrations.RunSQL("alter index if exists web_subject_15d1b6cd rename to web_studysubject_15d1b6cd;"), + migrations.RunSQL("alter index if exists web_subject_496f9482 rename to web_studysubject_496f9482;"), + migrations.RunSQL("alter index if exists web_subject_84b500ff rename to web_studysubject_84b500ff;"), + migrations.RunSQL("alter index if exists web_subject_9571fdf9 rename to web_studysubject_9571fdf9;"), + migrations.RunSQL( + "alter index if exists web_subject_languages_468679bd rename to web_studysubject_languages_468679bd;" + ), + migrations.RunSQL( + "alter index if exists web_subject_languages_ffaba1d1 rename to web_studysubject_languages_ffaba1d1;" + ), + migrations.RunSQL( + "alter index if exists web_subject_screening_number_75aa70c7_like rename to" + " web_studysubject_screening_number_75aa70c7_like;" + ), ] else: operations = [] diff --git a/smash/web/migrations/0067_subject.py b/smash/web/migrations/0067_subject.py index 0ffc0d5d750f1255cf9f5d5468e43a5c5a0b09d1..c210ede846487eb2677be10be8a96305c2c68957 100644 --- a/smash/web/migrations/0067_subject.py +++ b/smash/web/migrations/0067_subject.py @@ -9,71 +9,97 @@ from ..migration_functions import is_sqlite_db class Migration(migrations.Migration): dependencies = [ - ('web', '0066_subject'), + ("web", "0066_subject"), ] operations = [] if not is_sqlite_db(): operations = operations + [ migrations.RunSQL( - 'alter index if exists web_subject_default_written_communication_language_id_0bce1d22 rename to web_studysubject_default_written_communication_language_id_0bce1d22;'), + "alter index if exists web_subject_default_written_communication_language_id_0bce1d22 rename to " + "web_studysubject_default_written_communication_language_id_0bce1d22;" + ), migrations.RunSQL( - 'alter index if exists web_subject_languages_subject_id_2cf93044 rename to web_studysubject_languages_subject_id_2cf93044;'), + "alter index if exists web_subject_languages_subject_id_2cf93044 rename to " + "web_studysubject_languages_subject_id_2cf93044;" + ), migrations.RunSQL( - 'alter index if exists web_subject_languages_language_id_80eca4c1 rename to web_studysubject_languages_language_id_80eca4c1;'), + "alter index if exists web_subject_languages_language_id_80eca4c1 rename to " + "web_studysubject_languages_language_id_80eca4c1;" + ), ] operations = operations + [ migrations.CreateModel( - name='Subject', + name="Subject", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('tmp_study_subject_id', models.IntegerField()), - ('sex', - models.CharField(choices=[('M', 'Male'), ('F', 'Female')], max_length=1, verbose_name='Sex')), - ('first_name', models.CharField(max_length=50, verbose_name='First name')), - ('last_name', models.CharField(max_length=50, verbose_name='Last name')), - ('phone_number', models.CharField(blank=True, max_length=20, null=True, verbose_name='Phone number')), - ('phone_number_2', - models.CharField(blank=True, max_length=20, null=True, verbose_name='Phone number 2')), - ('phone_number_3', - models.CharField(blank=True, max_length=20, null=True, verbose_name='Phone number 3')), - ('email', models.EmailField(blank=True, max_length=254, null=True, verbose_name='E-mail')), - ('date_born', models.DateField(blank=True, null=True, verbose_name='Date of birth (YYYY-MM-DD)')), - ('address', models.CharField(blank=True, max_length=255, verbose_name='Address')), - ('postal_code', models.CharField(blank=True, max_length=7, verbose_name='Postal code')), - ('city', models.CharField(blank=True, max_length=50, verbose_name='City')), - ('dead', models.BooleanField(default=False, verbose_name='Deceased')), - ('country', models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='web.Country', - verbose_name='Country')), - ('default_written_communication_language', - models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, - related_name='subjects_written_communication', to='web.Language', - verbose_name='Default language for document generation')), - ('languages', models.ManyToManyField(blank=True, to='web.Language', verbose_name='Known languages')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("tmp_study_subject_id", models.IntegerField()), + ("sex", models.CharField(choices=[("M", "Male"), ("F", "Female")], max_length=1, verbose_name="Sex")), + ("first_name", models.CharField(max_length=50, verbose_name="First name")), + ("last_name", models.CharField(max_length=50, verbose_name="Last name")), + ("phone_number", models.CharField(blank=True, max_length=20, null=True, verbose_name="Phone number")), + ( + "phone_number_2", + models.CharField(blank=True, max_length=20, null=True, verbose_name="Phone number 2"), + ), + ( + "phone_number_3", + models.CharField(blank=True, max_length=20, null=True, verbose_name="Phone number 3"), + ), + ("email", models.EmailField(blank=True, max_length=254, null=True, verbose_name="E-mail")), + ("date_born", models.DateField(blank=True, null=True, verbose_name="Date of birth (YYYY-MM-DD)")), + ("address", models.CharField(blank=True, max_length=255, verbose_name="Address")), + ("postal_code", models.CharField(blank=True, max_length=7, verbose_name="Postal code")), + ("city", models.CharField(blank=True, max_length=50, verbose_name="City")), + ("dead", models.BooleanField(default=False, verbose_name="Deceased")), + ( + "country", + models.ForeignKey( + default=1, on_delete=django.db.models.deletion.CASCADE, to="web.Country", verbose_name="Country" + ), + ), + ( + "default_written_communication_language", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="subjects_written_communication", + to="web.Language", + verbose_name="Default language for document generation", + ), + ), + ("languages", models.ManyToManyField(blank=True, to="web.Language", verbose_name="Known languages")), ], ), - migrations.RunSQL('insert into web_subject (tmp_study_subject_id, sex, first_name, last_name, phone_number, ' + - 'phone_number_2, phone_number_3, email, date_born, address, postal_code, city, dead, ' + - 'country_id, default_written_communication_language_id) ' + - 'select id, sex, first_name, last_name, phone_number, phone_number_2, phone_number_3, ' + - 'email, date_born, address, postal_code, city, dead, country_id, ' - 'default_written_communication_language_id from web_studysubject;'), + migrations.RunSQL( + "insert into web_subject (tmp_study_subject_id, sex, first_name, last_name, phone_number, " + + "phone_number_2, phone_number_3, email, date_born, address, postal_code, city, dead, " + + "country_id, default_written_communication_language_id) " + + "select id, sex, first_name, last_name, phone_number, phone_number_2, phone_number_3, " + + "email, date_born, address, postal_code, city, dead, country_id, " + "default_written_communication_language_id from web_studysubject;" + ), migrations.AddField( - model_name='studysubject', - name='subject', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='web.Subject', - verbose_name='Subject'), + model_name="studysubject", + name="subject", + field=models.ForeignKey( + null=True, on_delete=django.db.models.deletion.CASCADE, to="web.Subject", verbose_name="Subject" + ), + ), + migrations.RunSQL( + "update web_studysubject set subject_id = " + + "(select id from web_subject where tmp_study_subject_id =web_studysubject.id);" ), - migrations.RunSQL('update web_studysubject set subject_id = ' + - '(select id from web_subject where tmp_study_subject_id =web_studysubject.id);'), migrations.RemoveField( - model_name='subject', - name='tmp_study_subject_id', + model_name="subject", + name="tmp_study_subject_id", ), migrations.AlterField( - model_name='studysubject', - name='subject', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.Subject', - verbose_name='Subject'), + model_name="studysubject", + name="subject", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, to="web.Subject", verbose_name="Subject" + ), ), ] diff --git a/smash/web/migrations/0071_auto_20171130_1607.py b/smash/web/migrations/0071_auto_20171130_1607.py index 747a8ee91194cc6d97e820c8d5073fae17ba38ac..a3b081edfc35fc89c89bdc1318a3dd8b68c64e2e 100644 --- a/smash/web/migrations/0071_auto_20171130_1607.py +++ b/smash/web/migrations/0071_auto_20171130_1607.py @@ -19,35 +19,46 @@ def create_default_study(apps, schema_editor): class Migration(migrations.Migration): dependencies = [ - ('web', '0070_auto_20171128_1124'), + ("web", "0070_auto_20171128_1124"), ] operations = [ migrations.CreateModel( - name='Study', + name="Study", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=255, verbose_name='Name')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("name", models.CharField(max_length=255, verbose_name="Name")), ], ), migrations.AlterField( - model_name='studysubject', - name='subject', - field=models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='web.Subject', - verbose_name='Subject'), + model_name="studysubject", + name="subject", + field=models.ForeignKey( + editable=False, on_delete=django.db.models.deletion.CASCADE, to="web.Subject", verbose_name="Subject" + ), ), migrations.AddField( - model_name='studysubject', - name='study', - field=models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, - to='web.Study', verbose_name='Study'), + model_name="studysubject", + name="study", + field=models.ForeignKey( + editable=False, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.Study", + verbose_name="Study", + ), ), migrations.RunPython(create_default_study), migrations.AlterField( - model_name='studysubject', - name='study', - field=models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='web.Study', verbose_name='Study'), + model_name="studysubject", + name="study", + field=models.ForeignKey( + default=1, + editable=False, + on_delete=django.db.models.deletion.CASCADE, + to="web.Study", + verbose_name="Study", + ), preserve_default=False, ), - ] diff --git a/smash/web/migrations/0072_auto_20171201_1013.py b/smash/web/migrations/0072_auto_20171201_1013.py index cd9e93f75611802739099576add58db8f1c3e979..db51ac793a03ece51a9fcf15d8162c652cd571ae 100644 --- a/smash/web/migrations/0072_auto_20171201_1013.py +++ b/smash/web/migrations/0072_auto_20171201_1013.py @@ -17,39 +17,108 @@ def create_default_study_columns(apps, schema_editor): class Migration(migrations.Migration): - dependencies = [ - ('web', '0071_auto_20171130_1607'), + ("web", "0071_auto_20171130_1607"), ] operations = [ migrations.CreateModel( - name='StudyColumns', + name="StudyColumns", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('postponed', models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, verbose_name='Postponed')), - ('datetime_contact_reminder', models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, verbose_name='Please make a contact on')), - ('type', models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, verbose_name='Type')), - ('default_location', models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, verbose_name='Default appointment location')), - ('flying_team', models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, verbose_name='Default flying team location (if applicable)')), - ('screening_number', models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, verbose_name='Screening number')), - ('nd_number', models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, verbose_name='ND number')), - ('mpower_id', models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, verbose_name='MPower ID')), - ('comments', models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, verbose_name='Comments')), - ('referral', models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, verbose_name='Referred by')), - ('diagnosis', models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, verbose_name='Diagnosis')), - ('year_of_diagnosis', models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, verbose_name='Year of diagnosis (YYYY)')), - ('information_sent', models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, verbose_name='Information sent')), - ('pd_in_family', models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, verbose_name='PD in family')), - ('resigned', models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, verbose_name='Resigned')), - ('resign_reason', models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, verbose_name='Resign reason')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ( + "postponed", + models.BooleanField(choices=[(True, "Yes"), (False, "No")], default=True, verbose_name="Postponed"), + ), + ( + "datetime_contact_reminder", + models.BooleanField( + choices=[(True, "Yes"), (False, "No")], default=True, verbose_name="Please make a contact on" + ), + ), + ( + "type", + models.BooleanField(choices=[(True, "Yes"), (False, "No")], default=True, verbose_name="Type"), + ), + ( + "default_location", + models.BooleanField( + choices=[(True, "Yes"), (False, "No")], + default=True, + verbose_name="Default appointment location", + ), + ), + ( + "flying_team", + models.BooleanField( + choices=[(True, "Yes"), (False, "No")], + default=True, + verbose_name="Default flying team location (if applicable)", + ), + ), + ( + "screening_number", + models.BooleanField( + choices=[(True, "Yes"), (False, "No")], default=True, verbose_name="Screening number" + ), + ), + ( + "nd_number", + models.BooleanField(choices=[(True, "Yes"), (False, "No")], default=True, verbose_name="ND number"), + ), + ( + "mpower_id", + models.BooleanField(choices=[(True, "Yes"), (False, "No")], default=True, verbose_name="MPower ID"), + ), + ( + "comments", + models.BooleanField(choices=[(True, "Yes"), (False, "No")], default=True, verbose_name="Comments"), + ), + ( + "referral", + models.BooleanField( + choices=[(True, "Yes"), (False, "No")], default=True, verbose_name="Referred by" + ), + ), + ( + "diagnosis", + models.BooleanField(choices=[(True, "Yes"), (False, "No")], default=True, verbose_name="Diagnosis"), + ), + ( + "year_of_diagnosis", + models.BooleanField( + choices=[(True, "Yes"), (False, "No")], default=True, verbose_name="Year of diagnosis (YYYY)" + ), + ), + ( + "information_sent", + models.BooleanField( + choices=[(True, "Yes"), (False, "No")], default=True, verbose_name="Information sent" + ), + ), + ( + "pd_in_family", + models.BooleanField( + choices=[(True, "Yes"), (False, "No")], default=True, verbose_name="PD in family" + ), + ), + ( + "resigned", + models.BooleanField(choices=[(True, "Yes"), (False, "No")], default=True, verbose_name="Resigned"), + ), + ( + "resign_reason", + models.BooleanField( + choices=[(True, "Yes"), (False, "No")], default=True, verbose_name="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'), + model_name="study", + name="columns", + field=models.OneToOneField(default=1, on_delete=django.db.models.deletion.CASCADE, to="web.StudyColumns"), preserve_default=False, ), ] diff --git a/smash/web/migrations/0073_auto_20171201_1034.py b/smash/web/migrations/0073_auto_20171201_1034.py index 59d5f473452acae08fee671bbfce578440ea8168..bee322c0b14d7568fafa362575660d8296f530f2 100644 --- a/smash/web/migrations/0073_auto_20171201_1034.py +++ b/smash/web/migrations/0073_auto_20171201_1034.py @@ -7,15 +7,19 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0072_auto_20171201_1013'), + ("web", "0072_auto_20171201_1013"), ] operations = [ migrations.AlterField( - model_name='studysubject', - name='default_location', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='web.Location', verbose_name='Default appointment location'), + model_name="studysubject", + name="default_location", + field=models.ForeignKey( + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.Location", + verbose_name="Default appointment location", + ), ), ] diff --git a/smash/web/migrations/0074_auto_20171201_1038.py b/smash/web/migrations/0074_auto_20171201_1038.py index 5462aa1aa4a9bb3b32853df42b7392a1fbf159e8..6d96fd68b50e08ac5b9a9e10e8b09025c0cbb985 100644 --- a/smash/web/migrations/0074_auto_20171201_1038.py +++ b/smash/web/migrations/0074_auto_20171201_1038.py @@ -7,15 +7,20 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0073_auto_20171201_1034'), + ("web", "0073_auto_20171201_1034"), ] operations = [ migrations.AlterField( - model_name='studysubject', - name='default_location', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='web.Location', verbose_name='Default appointment location'), + model_name="studysubject", + name="default_location", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.Location", + verbose_name="Default appointment location", + ), ), ] diff --git a/smash/web/migrations/0075_auto_20171201_1252.py b/smash/web/migrations/0075_auto_20171201_1252.py index 535a61b27320d0a9d40acd9266a4ef603e61bb5c..6f83658d7d2de3c2c1cfb962981ccbc2afa7847a 100644 --- a/smash/web/migrations/0075_auto_20171201_1252.py +++ b/smash/web/migrations/0075_auto_20171201_1252.py @@ -6,25 +6,26 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ - ('web', '0074_auto_20171201_1038'), + ("web", "0074_auto_20171201_1038"), ] operations = [ migrations.AlterField( - model_name='studysubject', - name='nd_number', - field=models.CharField(blank=True, max_length=25, verbose_name='ND number'), + model_name="studysubject", + name="nd_number", + field=models.CharField(blank=True, max_length=25, verbose_name="ND number"), ), migrations.AlterField( - model_name='studysubject', - name='screening_number', - field=models.CharField(blank=True, max_length=50, null=True, verbose_name='Screening number'), + model_name="studysubject", + name="screening_number", + field=models.CharField(blank=True, max_length=50, null=True, verbose_name="Screening number"), ), migrations.AlterField( - model_name='studysubject', - name='type', - field=models.CharField(blank=True, choices=[('P', 'PATIENT'), ('C', 'CONTROL')], max_length=1, null=True, verbose_name='Type'), + model_name="studysubject", + name="type", + field=models.CharField( + blank=True, choices=[("P", "PATIENT"), ("C", "CONTROL")], max_length=1, null=True, verbose_name="Type" + ), ), ] diff --git a/smash/web/migrations/0077_subjectcolumns.py b/smash/web/migrations/0077_subjectcolumns.py index fabac0d3d305f609b8b5e5db1e887d3db59fc1a7..a3dfdbf665d10e1b157567733ce9477e2879ff90 100644 --- a/smash/web/migrations/0077_subjectcolumns.py +++ b/smash/web/migrations/0077_subjectcolumns.py @@ -17,43 +17,47 @@ def create_default_subject_columns(apps, schema_editor): class Migration(migrations.Migration): - dependencies = [ - ('web', '0076_studysubjectlist'), + ("web", "0076_studysubjectlist"), ] operations = [ migrations.CreateModel( - name='SubjectColumns', + name="SubjectColumns", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('sex', models.BooleanField(default=False, max_length=1, verbose_name='Sex')), - ('first_name', models.BooleanField(default=True, max_length=1, verbose_name='First name')), - ('last_name', models.BooleanField(default=True, max_length=1, verbose_name='Last name')), - ('languages', models.BooleanField(default=False, max_length=1, verbose_name='Known languages')), - ('default_written_communication_language', models.BooleanField(default=False, max_length=1, verbose_name='Default language for document generation')), - ('phone_number', models.BooleanField(default=False, max_length=1, verbose_name='Phone number')), - ('phone_number_2', models.BooleanField(default=False, max_length=1, verbose_name='Phone number 2')), - ('phone_number_3', models.BooleanField(default=False, max_length=1, verbose_name='Phone number 3')), - ('email', models.BooleanField(default=False, max_length=1, verbose_name='E-mail')), - ('date_born', models.BooleanField(default=False, max_length=1, verbose_name='Date of birth')), - ('address', models.BooleanField(default=False, max_length=1, verbose_name='Address')), - ('postal_code', models.BooleanField(default=False, max_length=1, verbose_name='Postal code')), - ('city', models.BooleanField(default=False, max_length=1, verbose_name='City')), - ('country', models.BooleanField(default=False, max_length=1, verbose_name='Country')), - ('dead', models.BooleanField(default=True, max_length=1, verbose_name='Deceased')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("sex", models.BooleanField(default=False, max_length=1, verbose_name="Sex")), + ("first_name", models.BooleanField(default=True, max_length=1, verbose_name="First name")), + ("last_name", models.BooleanField(default=True, max_length=1, verbose_name="Last name")), + ("languages", models.BooleanField(default=False, max_length=1, verbose_name="Known languages")), + ( + "default_written_communication_language", + models.BooleanField( + default=False, max_length=1, verbose_name="Default language for document generation" + ), + ), + ("phone_number", models.BooleanField(default=False, max_length=1, verbose_name="Phone number")), + ("phone_number_2", models.BooleanField(default=False, max_length=1, verbose_name="Phone number 2")), + ("phone_number_3", models.BooleanField(default=False, max_length=1, verbose_name="Phone number 3")), + ("email", models.BooleanField(default=False, max_length=1, verbose_name="E-mail")), + ("date_born", models.BooleanField(default=False, max_length=1, verbose_name="Date of birth")), + ("address", models.BooleanField(default=False, max_length=1, verbose_name="Address")), + ("postal_code", models.BooleanField(default=False, max_length=1, verbose_name="Postal code")), + ("city", models.BooleanField(default=False, max_length=1, verbose_name="City")), + ("country", models.BooleanField(default=False, max_length=1, verbose_name="Country")), + ("dead", models.BooleanField(default=True, max_length=1, verbose_name="Deceased")), ], ), migrations.RunPython(create_default_subject_columns), migrations.RenameField( - model_name='studysubjectlist', - old_name='visible_columns', - new_name='visible_subject_study_columns', + model_name="studysubjectlist", + old_name="visible_columns", + new_name="visible_subject_study_columns", ), migrations.AddField( - model_name='studysubjectlist', - name='visible_subject_columns', - field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='web.SubjectColumns'), + model_name="studysubjectlist", + name="visible_subject_columns", + field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to="web.SubjectColumns"), preserve_default=False, ), ] diff --git a/smash/web/migrations/0083_auto_20171205_1251.py b/smash/web/migrations/0083_auto_20171205_1251.py index 8ce784e18fd0e6be22db55147b63471fc6d770e0..c5891e30be1abafa6a6207bd1e30c6bb178a066f 100644 --- a/smash/web/migrations/0083_auto_20171205_1251.py +++ b/smash/web/migrations/0083_auto_20171205_1251.py @@ -7,35 +7,62 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0082_studysubjectlist_visits'), + ("web", "0082_studysubjectlist_visits"), ] operations = [ migrations.CreateModel( - name='StudyVisitList', + name="StudyVisitList", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('type', models.CharField(choices=[('GENERIC', 'Generic')], max_length=50, verbose_name='Type o list')), - ('study', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.Study')), - ('visible_subject_columns', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.SubjectColumns')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("type", models.CharField(choices=[("GENERIC", "Generic")], max_length=50, verbose_name="Type o list")), + ("study", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="web.Study")), + ( + "visible_subject_columns", + models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="web.SubjectColumns"), + ), ], ), migrations.CreateModel( - name='VisitColumns', + name="VisitColumns", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('datetime_begin', models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, verbose_name='Visit starts date')), - ('datetime_end', models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, verbose_name='Visit ends date')), - ('is_finished', models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, verbose_name='Is finished')), - ('post_mail_sent', models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, verbose_name='Post mail sent')), - ('visit_number', models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, verbose_name='Visit number')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ( + "datetime_begin", + models.BooleanField( + choices=[(True, "Yes"), (False, "No")], default=True, verbose_name="Visit starts date" + ), + ), + ( + "datetime_end", + models.BooleanField( + choices=[(True, "Yes"), (False, "No")], default=True, verbose_name="Visit ends date" + ), + ), + ( + "is_finished", + models.BooleanField( + choices=[(True, "Yes"), (False, "No")], default=True, verbose_name="Is finished" + ), + ), + ( + "post_mail_sent", + models.BooleanField( + choices=[(True, "Yes"), (False, "No")], default=True, verbose_name="Post mail sent" + ), + ), + ( + "visit_number", + models.BooleanField( + choices=[(True, "Yes"), (False, "No")], default=True, verbose_name="Visit number" + ), + ), ], ), migrations.AddField( - model_name='studyvisitlist', - name='visible_visit_columns', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.VisitColumns'), + model_name="studyvisitlist", + name="visible_visit_columns", + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="web.VisitColumns"), ), ] diff --git a/smash/web/migrations/0085_auto_20171205_1650.py b/smash/web/migrations/0085_auto_20171205_1650.py index baa510575f49cc292f9e1f2e26fc104d3b72e70d..fd9bb3db89d8998d830366412d84261bbfc4c105 100644 --- a/smash/web/migrations/0085_auto_20171205_1650.py +++ b/smash/web/migrations/0085_auto_20171205_1650.py @@ -5,6 +5,7 @@ from django.db import migrations, models from ..migration_functions import is_sqlite_db + # noinspection PyUnusedLocal # noinspection PyPep8Naming def create_default_columns_for_VISIT_LIST_EXCEEDED_TIME(apps, schema_editor): @@ -59,55 +60,73 @@ def create_default_columns_for_VISIT_LIST_EXCEEDED_TIME(apps, schema_editor): visit_columns.visible_appointment_types = False visit_columns.save() -class Migration(migrations.Migration): +class Migration(migrations.Migration): dependencies = [ - ('web', '0084_auto_20171205_1640'), + ("web", "0084_auto_20171205_1640"), ] operations = [ migrations.AlterField( - model_name='studysubjectlist', - name='type', - field=models.CharField(blank=True, choices=[('GENERIC', 'Generic'), ('NO_VISIT', 'Subjects without visit'), ('REQUIRE_CONTACT', 'Subjects required contact')], max_length=50, null=True, verbose_name='Type of list'), + model_name="studysubjectlist", + name="type", + field=models.CharField( + blank=True, + choices=[ + ("GENERIC", "Generic"), + ("NO_VISIT", "Subjects without visit"), + ("REQUIRE_CONTACT", "Subjects required contact"), + ], + max_length=50, + null=True, + verbose_name="Type of list", + ), ), - migrations.RunPython(create_default_columns_for_VISIT_LIST_EXCEEDED_TIME) + migrations.RunPython(create_default_columns_for_VISIT_LIST_EXCEEDED_TIME), ] if is_sqlite_db(): - operations.append(migrations.RunSQL('INSERT INTO web_studyvisitlist (' + - 'study_id, ' + - 'visible_visit_columns_id, ' + - 'visible_subject_columns_id, ' + - 'visible_study_subject_columns_id, ' + - 'visible_appointment_types_done,' - 'visible_appointment_types_in_progress,' - 'visible_appointment_types_missing,' - 'type) ' + - "SELECT " + - "1, " + - "max(web_visitcolumns.id), " + - "max(web_subjectcolumns.id), " + - "max(web_studycolumns.id), " + - "0, " + - "0, " + - "0, " + - "'EXCEEDED_TIME' FROM web_visitcolumns, web_studycolumns, web_subjectcolumns;")) + operations.append( + migrations.RunSQL( + "INSERT INTO web_studyvisitlist (" + + "study_id, " + + "visible_visit_columns_id, " + + "visible_subject_columns_id, " + + "visible_study_subject_columns_id, " + + "visible_appointment_types_done," + "visible_appointment_types_in_progress," + "visible_appointment_types_missing," + "type) " + + "SELECT " + + "1, " + + "max(web_visitcolumns.id), " + + "max(web_subjectcolumns.id), " + + "max(web_studycolumns.id), " + + "0, " + + "0, " + + "0, " + + "'EXCEEDED_TIME' FROM web_visitcolumns, web_studycolumns, web_subjectcolumns;" + ) + ) else: - operations.append(migrations.RunSQL('INSERT INTO web_studyvisitlist (' + - 'study_id, ' + - 'visible_visit_columns_id, ' + - 'visible_subject_columns_id, ' + - 'visible_study_subject_columns_id, ' + - 'visible_appointment_types_done,' - 'visible_appointment_types_in_progress,' - 'visible_appointment_types_missing,' - 'type) ' + - "SELECT " + - "1, " + - "max(web_visitcolumns.id), " + - "max(web_subjectcolumns.id), " + - "max(web_studycolumns.id), " + - "TRUE, " + - "TRUE, " + - "TRUE, " + - "'EXCEEDED_TIME' FROM web_visitcolumns, web_studycolumns, web_subjectcolumns;")) + operations.append( + migrations.RunSQL( + "INSERT INTO web_studyvisitlist (" + + "study_id, " + + "visible_visit_columns_id, " + + "visible_subject_columns_id, " + + "visible_study_subject_columns_id, " + + "visible_appointment_types_done," + "visible_appointment_types_in_progress," + "visible_appointment_types_missing," + "type) " + + "SELECT " + + "1, " + + "max(web_visitcolumns.id), " + + "max(web_subjectcolumns.id), " + + "max(web_studycolumns.id), " + + "TRUE, " + + "TRUE, " + + "TRUE, " + + "'EXCEEDED_TIME' FROM web_visitcolumns, web_studycolumns, web_subjectcolumns;" + ) + ) diff --git a/smash/web/migrations/0086_unfinished_visit_list.py b/smash/web/migrations/0086_unfinished_visit_list.py index 460b1d99c285e1762599e57790165d6aad8ae982..b345205a8a2405052f444c0d0f84a9a43d34b3b9 100644 --- a/smash/web/migrations/0086_unfinished_visit_list.py +++ b/smash/web/migrations/0086_unfinished_visit_list.py @@ -5,6 +5,7 @@ from django.db import migrations, models from ..migration_functions import is_sqlite_db + # noinspection PyUnusedLocal # noinspection PyPep8Naming def create_default_columns_for_VISIT_LIST_EXCEEDED_TIME(apps, schema_editor): @@ -59,51 +60,57 @@ def create_default_columns_for_VISIT_LIST_EXCEEDED_TIME(apps, schema_editor): visit_columns.visible_appointment_types = False visit_columns.save() -class Migration(migrations.Migration): +class Migration(migrations.Migration): dependencies = [ - ('web', '0085_auto_20171205_1650'), + ("web", "0085_auto_20171205_1650"), ] - operations = [ - migrations.RunPython(create_default_columns_for_VISIT_LIST_EXCEEDED_TIME) - ] + operations = [migrations.RunPython(create_default_columns_for_VISIT_LIST_EXCEEDED_TIME)] if is_sqlite_db(): - operations.append(migrations.RunSQL('INSERT INTO web_studyvisitlist (' + - 'study_id, ' + - 'visible_visit_columns_id, ' + - 'visible_subject_columns_id, ' + - 'visible_study_subject_columns_id, ' + - 'visible_appointment_types_done,' - 'visible_appointment_types_in_progress,' - 'visible_appointment_types_missing,' - 'type) ' + - "SELECT " + - "1, " + - "max(web_visitcolumns.id), " + - "max(web_subjectcolumns.id), " + - "max(web_studycolumns.id), " + - "1, " + - "1, " + - "1, " + - "'UNFINISHED' FROM web_visitcolumns, web_studycolumns, web_subjectcolumns;")) + operations.append( + migrations.RunSQL( + "INSERT INTO web_studyvisitlist (" + + "study_id, " + + "visible_visit_columns_id, " + + "visible_subject_columns_id, " + + "visible_study_subject_columns_id, " + + "visible_appointment_types_done," + "visible_appointment_types_in_progress," + "visible_appointment_types_missing," + "type) " + + "SELECT " + + "1, " + + "max(web_visitcolumns.id), " + + "max(web_subjectcolumns.id), " + + "max(web_studycolumns.id), " + + "1, " + + "1, " + + "1, " + + "'UNFINISHED' FROM web_visitcolumns, web_studycolumns, web_subjectcolumns;" + ) + ) else: - operations.append(migrations.RunSQL('INSERT INTO web_studyvisitlist (' + - 'study_id, ' + - 'visible_visit_columns_id, ' + - 'visible_subject_columns_id, ' + - 'visible_study_subject_columns_id, ' + - 'visible_appointment_types_done,' - 'visible_appointment_types_in_progress,' - 'visible_appointment_types_missing,' - 'type) ' + - "SELECT " + - "1, " + - "max(web_visitcolumns.id), " + - "max(web_subjectcolumns.id), " + - "max(web_studycolumns.id), " + - "TRUE, " + - "TRUE, " + - "TRUE, " + - "'UNFINISHED' FROM web_visitcolumns, web_studycolumns, web_subjectcolumns;")) + operations.append( + migrations.RunSQL( + "INSERT INTO web_studyvisitlist (" + + "study_id, " + + "visible_visit_columns_id, " + + "visible_subject_columns_id, " + + "visible_study_subject_columns_id, " + + "visible_appointment_types_done," + "visible_appointment_types_in_progress," + "visible_appointment_types_missing," + "type) " + + "SELECT " + + "1, " + + "max(web_visitcolumns.id), " + + "max(web_subjectcolumns.id), " + + "max(web_studycolumns.id), " + + "TRUE, " + + "TRUE, " + + "TRUE, " + + "'UNFINISHED' FROM web_visitcolumns, web_studycolumns, web_subjectcolumns;" + ) + ) diff --git a/smash/web/migrations/0087_approaching_visit_wihout_appointment_list.py b/smash/web/migrations/0087_approaching_visit_wihout_appointment_list.py index 55d62fd48b6c93c8c6e2cc6b61d58a0b23481d6f..26d52ca4f5818bc0f0732d3621da8a41445cc47b 100644 --- a/smash/web/migrations/0087_approaching_visit_wihout_appointment_list.py +++ b/smash/web/migrations/0087_approaching_visit_wihout_appointment_list.py @@ -64,48 +64,54 @@ def create_default_columns_for_VISIT_LIST_APPROACHING_WITHOUT_APPOINTMENTS(apps, class Migration(migrations.Migration): dependencies = [ - ('web', '0086_unfinished_visit_list'), + ("web", "0086_unfinished_visit_list"), ] - operations = [ - migrations.RunPython(create_default_columns_for_VISIT_LIST_APPROACHING_WITHOUT_APPOINTMENTS) - ] + operations = [migrations.RunPython(create_default_columns_for_VISIT_LIST_APPROACHING_WITHOUT_APPOINTMENTS)] if is_sqlite_db(): - operations.append(migrations.RunSQL('INSERT INTO web_studyvisitlist (' + - 'study_id, ' + - 'visible_visit_columns_id, ' + - 'visible_subject_columns_id, ' + - 'visible_study_subject_columns_id, ' + - 'visible_appointment_types_done,' - 'visible_appointment_types_in_progress,' - 'visible_appointment_types_missing,' - 'type) ' + - "SELECT " + - "1, " + - "max(web_visitcolumns.id), " + - "max(web_subjectcolumns.id), " + - "max(web_studycolumns.id), " + - "0, " + - "0, " + - "0, " + - "'APPROACHING_WITHOUT_APPOINTMENTS' FROM web_visitcolumns, web_studycolumns, web_subjectcolumns;")) + operations.append( + migrations.RunSQL( + "INSERT INTO web_studyvisitlist (" + + "study_id, " + + "visible_visit_columns_id, " + + "visible_subject_columns_id, " + + "visible_study_subject_columns_id, " + + "visible_appointment_types_done," + "visible_appointment_types_in_progress," + "visible_appointment_types_missing," + "type) " + + "SELECT " + + "1, " + + "max(web_visitcolumns.id), " + + "max(web_subjectcolumns.id), " + + "max(web_studycolumns.id), " + + "0, " + + "0, " + + "0, " + + "'APPROACHING_WITHOUT_APPOINTMENTS' FROM web_visitcolumns, web_studycolumns, web_subjectcolumns;" + ) + ) else: - operations.append(migrations.RunSQL('INSERT INTO web_studyvisitlist (' + - 'study_id, ' + - 'visible_visit_columns_id, ' + - 'visible_subject_columns_id, ' + - 'visible_study_subject_columns_id, ' + - 'visible_appointment_types_done,' - 'visible_appointment_types_in_progress,' - 'visible_appointment_types_missing,' - 'type) ' + - "SELECT " + - "1, " + - "max(web_visitcolumns.id), " + - "max(web_subjectcolumns.id), " + - "max(web_studycolumns.id), " + - "FALSE, " + - "FALSE, " + - "FALSE, " + - "'APPROACHING_WITHOUT_APPOINTMENTS' FROM web_visitcolumns, web_studycolumns, web_subjectcolumns;")) + operations.append( + migrations.RunSQL( + "INSERT INTO web_studyvisitlist (" + + "study_id, " + + "visible_visit_columns_id, " + + "visible_subject_columns_id, " + + "visible_study_subject_columns_id, " + + "visible_appointment_types_done," + "visible_appointment_types_in_progress," + "visible_appointment_types_missing," + "type) " + + "SELECT " + + "1, " + + "max(web_visitcolumns.id), " + + "max(web_subjectcolumns.id), " + + "max(web_studycolumns.id), " + + "FALSE, " + + "FALSE, " + + "FALSE, " + + "'APPROACHING_WITHOUT_APPOINTMENTS' FROM web_visitcolumns, web_studycolumns, web_subjectcolumns;" + ) + ) diff --git a/smash/web/migrations/0088_appointmentcolumns_appointmentlist.py b/smash/web/migrations/0088_appointmentcolumns_appointmentlist.py index aef3951e92ef55edb9d9397e7ef6de8087bf84f9..f3bd13b134fd6be448553b29da6836ad4d140b56 100644 --- a/smash/web/migrations/0088_appointmentcolumns_appointmentlist.py +++ b/smash/web/migrations/0088_appointmentcolumns_appointmentlist.py @@ -7,38 +7,59 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0087_approaching_visit_wihout_appointment_list'), + ("web", "0087_approaching_visit_wihout_appointment_list"), ] operations = [ migrations.CreateModel( - name='AppointmentColumns', + name="AppointmentColumns", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('flying_team', models.BooleanField(default=False, verbose_name='Flying team')), - ('worker_assigned', models.BooleanField(default=False, verbose_name='Worker conducting the assessment')), - ('appointment_types', models.BooleanField(default=True, verbose_name='Appointment types')), - ('room', models.BooleanField(default=False, verbose_name='Room')), - ('location', models.BooleanField(default=False, verbose_name='Location')), - ('comment', models.BooleanField(default=False, verbose_name='Comment')), - ('datetime_when', models.BooleanField(default=True, verbose_name='Comment')), - ('length', models.BooleanField(default=False, verbose_name='Appointment length')), - ('status', models.BooleanField(default=False, verbose_name='Status')), - ('post_mail_sent', models.BooleanField(default=False, verbose_name='Post mail sent')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("flying_team", models.BooleanField(default=False, verbose_name="Flying team")), + ( + "worker_assigned", + models.BooleanField(default=False, verbose_name="Worker conducting the assessment"), + ), + ("appointment_types", models.BooleanField(default=True, verbose_name="Appointment types")), + ("room", models.BooleanField(default=False, verbose_name="Room")), + ("location", models.BooleanField(default=False, verbose_name="Location")), + ("comment", models.BooleanField(default=False, verbose_name="Comment")), + ("datetime_when", models.BooleanField(default=True, verbose_name="Comment")), + ("length", models.BooleanField(default=False, verbose_name="Appointment length")), + ("status", models.BooleanField(default=False, verbose_name="Status")), + ("post_mail_sent", models.BooleanField(default=False, verbose_name="Post mail sent")), ], ), migrations.CreateModel( - name='AppointmentList', + name="AppointmentList", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('type', models.CharField(choices=[('GENERIC', 'Generic'), ('UNFINISHED', 'Unfinished'), ('APPROACHING', 'Approaching')], max_length=50, verbose_name='Type of list')), - ('study', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.Study')), - ('visible_appointment_columns', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.AppointmentColumns')), - ('visible_study_subject_columns', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.StudyColumns')), - ('visible_subject_columns', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.SubjectColumns')), - ('visible_visit_columns', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.VisitColumns')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ( + "type", + models.CharField( + choices=[("GENERIC", "Generic"), ("UNFINISHED", "Unfinished"), ("APPROACHING", "Approaching")], + max_length=50, + verbose_name="Type of list", + ), + ), + ("study", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="web.Study")), + ( + "visible_appointment_columns", + models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="web.AppointmentColumns"), + ), + ( + "visible_study_subject_columns", + models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="web.StudyColumns"), + ), + ( + "visible_subject_columns", + models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="web.SubjectColumns"), + ), + ( + "visible_visit_columns", + models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="web.VisitColumns"), + ), ], ), ] diff --git a/smash/web/migrations/0089_unfinshed_appointment_list.py b/smash/web/migrations/0089_unfinshed_appointment_list.py index 95a60d3a3a5051bb67bd316a3e3b0fcdc97a2e78..d0d9148eae1fedcf0dc7010edfdcd5e79539cc8d 100644 --- a/smash/web/migrations/0089_unfinshed_appointment_list.py +++ b/smash/web/migrations/0089_unfinshed_appointment_list.py @@ -76,23 +76,25 @@ def create_default_columns_for_APPOINTMENT_LIST_UNFINISHED(apps, schema_editor): class Migration(migrations.Migration): dependencies = [ - ('web', '0088_appointmentcolumns_appointmentlist'), + ("web", "0088_appointmentcolumns_appointmentlist"), ] operations = [ migrations.RunPython(create_default_columns_for_APPOINTMENT_LIST_UNFINISHED), - migrations.RunSQL('INSERT INTO web_appointmentlist (' + - 'study_id, ' + - 'visible_visit_columns_id, ' + - 'visible_subject_columns_id, ' + - 'visible_study_subject_columns_id, ' + - 'visible_appointment_columns_id, ' + - 'type) ' + - "SELECT " + - "1, " + - "max(web_visitcolumns.id), " + - "max(web_subjectcolumns.id), " + - "max(web_studycolumns.id), " + - "max(web_appointmentcolumns.id), " + - "'UNFINISHED' FROM web_visitcolumns, web_studycolumns, web_subjectcolumns, web_appointmentcolumns;"), + migrations.RunSQL( + "INSERT INTO web_appointmentlist (" + + "study_id, " + + "visible_visit_columns_id, " + + "visible_subject_columns_id, " + + "visible_study_subject_columns_id, " + + "visible_appointment_columns_id, " + + "type) " + + "SELECT " + + "1, " + + "max(web_visitcolumns.id), " + + "max(web_subjectcolumns.id), " + + "max(web_studycolumns.id), " + + "max(web_appointmentcolumns.id), " + + "'UNFINISHED' FROM web_visitcolumns, web_studycolumns, web_subjectcolumns, web_appointmentcolumns;" + ), ] diff --git a/smash/web/migrations/0091_auto_20171208_1312.py b/smash/web/migrations/0091_auto_20171208_1312.py index 153b13119e802da6686850138fac162534836530..8d2920aee1e4b874f371ec3245da9ff50473ed3e 100644 --- a/smash/web/migrations/0091_auto_20171208_1312.py +++ b/smash/web/migrations/0091_auto_20171208_1312.py @@ -7,15 +7,16 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0090_vouchertype_vouchertypeprice'), + ("web", "0090_vouchertype_vouchertypeprice"), ] operations = [ migrations.AlterField( - model_name='vouchertypeprice', - name='voucher_type', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='prices', to='web.VoucherType'), + model_name="vouchertypeprice", + name="voucher_type", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, related_name="prices", to="web.VoucherType" + ), ), ] diff --git a/smash/web/migrations/0092_voucher.py b/smash/web/migrations/0092_voucher.py index 64dfcc661822c80c3bed392cf8154729034c13c2..1540dd5a60dee78e0c991bfb453a3909a8a17cac 100644 --- a/smash/web/migrations/0092_voucher.py +++ b/smash/web/migrations/0092_voucher.py @@ -7,25 +7,37 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0091_auto_20171208_1312'), + ("web", "0091_auto_20171208_1312"), ] operations = [ migrations.CreateModel( - name='Voucher', + name="Voucher", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('number', models.CharField(max_length=10, unique=True, verbose_name='Number')), - ('issue_date', models.DateField(verbose_name='Issue date')), - ('expiry_date', models.DateField(verbose_name='Expiry date')), - ('use_date', models.DateField(verbose_name='Use date')), - ('status', models.CharField(choices=[('NEW', 'New'), ('USED', 'Used'), ('EXPIRED', 'Expired')], default='NEW', max_length=20, verbose_name='Status')), - ('feedback', models.TextField(blank=True, max_length=2000, verbose_name='Feedback')), - ('study_subject', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='web.StudySubject')), - ('usage_partner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.Worker')), - ('voucher_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.VoucherType')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("number", models.CharField(max_length=10, unique=True, verbose_name="Number")), + ("issue_date", models.DateField(verbose_name="Issue date")), + ("expiry_date", models.DateField(verbose_name="Expiry date")), + ("use_date", models.DateField(verbose_name="Use date")), + ( + "status", + models.CharField( + choices=[("NEW", "New"), ("USED", "Used"), ("EXPIRED", "Expired")], + default="NEW", + max_length=20, + verbose_name="Status", + ), + ), + ("feedback", models.TextField(blank=True, max_length=2000, verbose_name="Feedback")), + ( + "study_subject", + models.ForeignKey( + editable=False, on_delete=django.db.models.deletion.CASCADE, to="web.StudySubject" + ), + ), + ("usage_partner", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="web.Worker")), + ("voucher_type", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="web.VoucherType")), ], ), ] diff --git a/smash/web/migrations/0094_auto_20171208_1508.py b/smash/web/migrations/0094_auto_20171208_1508.py index ecec765cddd3e9015c5e052dda523400c90062a0..aabc0ee03a41db41256e4ccb3e1bacaebee11cc6 100644 --- a/smash/web/migrations/0094_auto_20171208_1508.py +++ b/smash/web/migrations/0094_auto_20171208_1508.py @@ -7,15 +7,16 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0093_auto_20171208_1508'), + ("web", "0093_auto_20171208_1508"), ] operations = [ migrations.AlterField( - model_name='voucher', - name='usage_partner', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='web.Worker'), + model_name="voucher", + name="usage_partner", + field=models.ForeignKey( + blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to="web.Worker" + ), ), ] diff --git a/smash/web/migrations/0097_auto_20171211_1616.py b/smash/web/migrations/0097_auto_20171211_1616.py index 07c4be145196cfe62fe6e0c448e5cb2d94641353..9ae00ede5a5b0508d61b648430ef65cf7478827c 100644 --- a/smash/web/migrations/0097_auto_20171211_1616.py +++ b/smash/web/migrations/0097_auto_20171211_1616.py @@ -8,90 +8,120 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0096_auto_20171208_1509'), + ("web", "0096_auto_20171208_1509"), ] operations = [ migrations.AddField( - model_name='studycolumns', - name='health_partner', - field=models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=False, verbose_name='Health partner'), + model_name="studycolumns", + name="health_partner", + field=models.BooleanField( + choices=[(True, "Yes"), (False, "No")], default=False, verbose_name="Health partner" + ), ), migrations.AddField( - model_name='studycolumns', - name='health_partner_feedback_agreement', - field=models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=False, verbose_name='Agrees to give information to referral'), + model_name="studycolumns", + name="health_partner_feedback_agreement", + field=models.BooleanField( + choices=[(True, "Yes"), (False, "No")], + default=False, + verbose_name="Agrees to give information to referral", + ), ), migrations.AddField( - model_name='studycolumns', - name='previously_in_study', - field=models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=False, verbose_name='Previously in PDP study'), + model_name="studycolumns", + name="previously_in_study", + field=models.BooleanField( + choices=[(True, "Yes"), (False, "No")], default=False, verbose_name="Previously in PDP study" + ), ), migrations.AddField( - model_name='studycolumns', - name='referral_letter', - field=models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=False, verbose_name='Referral letter'), + model_name="studycolumns", + name="referral_letter", + field=models.BooleanField( + choices=[(True, "Yes"), (False, "No")], default=False, verbose_name="Referral letter" + ), ), migrations.AddField( - model_name='studycolumns', - name='screening', - field=models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=False, verbose_name='Screening'), + model_name="studycolumns", + name="screening", + field=models.BooleanField(choices=[(True, "Yes"), (False, "No")], default=False, verbose_name="Screening"), ), migrations.AddField( - model_name='studycolumns', - name='voucher_types', - field=models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=False, verbose_name='Voucher types'), + model_name="studycolumns", + name="voucher_types", + field=models.BooleanField( + choices=[(True, "Yes"), (False, "No")], default=False, verbose_name="Voucher types" + ), ), migrations.AddField( - model_name='studycolumns', - name='vouchers', - field=models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=False, verbose_name='Vouchers'), + model_name="studycolumns", + name="vouchers", + field=models.BooleanField(choices=[(True, "Yes"), (False, "No")], default=False, verbose_name="Vouchers"), ), migrations.AddField( - model_name='studysubject', - name='health_partner', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='web.Worker', verbose_name='Health partner'), + model_name="studysubject", + name="health_partner", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.Worker", + verbose_name="Health partner", + ), ), migrations.AddField( - model_name='studysubject', - name='health_partner_feedback_agreement', - field=models.BooleanField(default=False, verbose_name='Agrees to give information to referral'), + model_name="studysubject", + name="health_partner_feedback_agreement", + field=models.BooleanField(default=False, verbose_name="Agrees to give information to referral"), ), migrations.AddField( - model_name='studysubject', - name='previously_in_study', - field=models.BooleanField(default=False, verbose_name='Previously in PDP study'), + model_name="studysubject", + name="previously_in_study", + field=models.BooleanField(default=False, verbose_name="Previously in PDP study"), ), migrations.AddField( - model_name='studysubject', - name='referral_letter', - field=models.FileField(blank=True, null=True, storage=django.core.files.storage.FileSystemStorage(location='uploads'), upload_to='referral_letters', verbose_name='Referral letter'), + model_name="studysubject", + name="referral_letter", + field=models.FileField( + blank=True, + null=True, + storage=django.core.files.storage.FileSystemStorage(location="uploads"), + upload_to="referral_letters", + verbose_name="Referral letter", + ), ), migrations.AddField( - model_name='studysubject', - name='screening', - field=models.CharField(blank=True, max_length=1024, null=True, verbose_name='Screening'), + model_name="studysubject", + name="screening", + field=models.CharField(blank=True, max_length=1024, null=True, verbose_name="Screening"), ), migrations.AddField( - model_name='studysubject', - name='voucher_types', - field=models.ManyToManyField(blank=True, to='web.VoucherType', verbose_name='Voucher types'), + model_name="studysubject", + name="voucher_types", + field=models.ManyToManyField(blank=True, to="web.VoucherType", verbose_name="Voucher types"), ), migrations.AlterField( - model_name='studycolumns', - name='datetime_contact_reminder', - field=models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, verbose_name='Please make a contact on'), + model_name="studycolumns", + name="datetime_contact_reminder", + field=models.BooleanField( + choices=[(True, "Yes"), (False, "No")], default=True, verbose_name="Please make a contact on" + ), ), migrations.AlterField( - model_name='studysubject', - name='diagnosis', - field=models.CharField(blank=True, max_length=1024, null=True, verbose_name='Diagnosis'), + model_name="studysubject", + name="diagnosis", + field=models.CharField(blank=True, max_length=1024, null=True, verbose_name="Diagnosis"), ), migrations.AlterField( - model_name='voucher', - name='study_subject', - field=models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, related_name='vouchers', to='web.StudySubject'), + model_name="voucher", + name="study_subject", + field=models.ForeignKey( + editable=False, + on_delete=django.db.models.deletion.CASCADE, + related_name="vouchers", + to="web.StudySubject", + ), ), ] diff --git a/smash/web/migrations/0098_workerstudyrole.py b/smash/web/migrations/0098_workerstudyrole.py index d93368266e326a2f1d9ca19126da6f40e5c9a484..bdd09db4a3e2b5a860087b5e58e303ae4e253742 100644 --- a/smash/web/migrations/0098_workerstudyrole.py +++ b/smash/web/migrations/0098_workerstudyrole.py @@ -7,26 +7,43 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0097_auto_20171211_1616'), + ("web", "0097_auto_20171211_1616"), ] operations = [ migrations.CreateModel( - name='WorkerStudyRole', + name="WorkerStudyRole", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('role', models.CharField(choices=[('DOCTOR', 'Doctor'), ('NURSE', 'Nurse'), ('PSYCHOLOGIST', 'Psychologist'), ('TECHNICIAN', 'Technician'), ('SECRETARY', 'Secretary')], max_length=20, verbose_name='Role')), - ('study', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.Study')), - ('worker', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='roles', to='web.Worker')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ( + "role", + models.CharField( + choices=[ + ("DOCTOR", "Doctor"), + ("NURSE", "Nurse"), + ("PSYCHOLOGIST", "Psychologist"), + ("TECHNICIAN", "Technician"), + ("SECRETARY", "Secretary"), + ], + max_length=20, + verbose_name="Role", + ), + ), + ("study", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="web.Study")), + ( + "worker", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, related_name="roles", to="web.Worker" + ), + ), ], ), - migrations.RunSQL('insert into web_workerstudyrole (study_id, worker_id, role) '+ - 'select 1, id, role from web_worker;'), + migrations.RunSQL( + "insert into web_workerstudyrole (study_id, worker_id, role) " + "select 1, id, role from web_worker;" + ), migrations.RemoveField( - model_name='worker', - name='role', + model_name="worker", + name="role", ), - ] diff --git a/smash/web/migrations/0100_auto_20171213_1140.py b/smash/web/migrations/0100_auto_20171213_1140.py index ae1249db86b339281851f305365d7ec6d5b27e1d..1e9544860b4fbbc769985e35da50a0645d5093b1 100644 --- a/smash/web/migrations/0100_auto_20171213_1140.py +++ b/smash/web/migrations/0100_auto_20171213_1140.py @@ -7,45 +7,46 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0099_auto_20171213_1115'), + ("web", "0099_auto_20171213_1115"), ] operations = [ migrations.AddField( - model_name='worker', - name='address', - field=models.CharField(blank=True, max_length=255, verbose_name='Address'), + model_name="worker", + name="address", + field=models.CharField(blank=True, max_length=255, verbose_name="Address"), ), migrations.AddField( - model_name='worker', - name='city', - field=models.CharField(blank=True, max_length=50, verbose_name='City'), + model_name="worker", + name="city", + field=models.CharField(blank=True, max_length=50, verbose_name="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='Country'), + model_name="worker", + name="country", + field=models.ForeignKey( + default=1, on_delete=django.db.models.deletion.CASCADE, to="web.Country", verbose_name="Country" + ), ), migrations.AddField( - model_name='worker', - name='fax_number', - field=models.CharField(blank=True, max_length=20, verbose_name='Fax number'), + model_name="worker", + name="fax_number", + field=models.CharField(blank=True, max_length=20, verbose_name="Fax number"), ), migrations.AddField( - model_name='worker', - name='phone_number_2', - field=models.CharField(blank=True, max_length=20, verbose_name='Phone number 2'), + model_name="worker", + name="phone_number_2", + field=models.CharField(blank=True, max_length=20, verbose_name="Phone number 2"), ), migrations.AddField( - model_name='worker', - name='postal_code', - field=models.CharField(blank=True, max_length=7, verbose_name='Postal code'), + model_name="worker", + name="postal_code", + field=models.CharField(blank=True, max_length=7, verbose_name="Postal code"), ), migrations.AddField( - model_name='worker', - name='voucher_types', - field=models.ManyToManyField(blank=True, to='web.VoucherType', verbose_name='Voucher types'), + model_name="worker", + name="voucher_types", + field=models.ManyToManyField(blank=True, to="web.VoucherType", verbose_name="Voucher types"), ), ] diff --git a/smash/web/migrations/0103_auto_20180214_1026.py b/smash/web/migrations/0103_auto_20180214_1026.py index 3c92908add9c60ea5143ed026774a0b8250b2614..a6b579bf81056cab7d6dc35a56d1060945b65527 100644 --- a/smash/web/migrations/0103_auto_20180214_1026.py +++ b/smash/web/migrations/0103_auto_20180214_1026.py @@ -6,15 +6,25 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ - ('web', '0102_studynotificationparameters_subject_voucher_expiry_visible'), + ("web", "0102_studynotificationparameters_subject_voucher_expiry_visible"), ] operations = [ migrations.AlterField( - model_name='studysubjectlist', - name='type', - field=models.CharField(blank=True, choices=[('GENERIC', 'Generic'), ('NO_VISIT', 'Subjects without visit'), ('REQUIRE_CONTACT', 'Subjects required contact'), ('VOUCHER_EXPIRY', 'Subject with vouchers to be expired soon')], max_length=50, null=True, verbose_name='Type of list'), + model_name="studysubjectlist", + name="type", + field=models.CharField( + blank=True, + choices=[ + ("GENERIC", "Generic"), + ("NO_VISIT", "Subjects without visit"), + ("REQUIRE_CONTACT", "Subjects required contact"), + ("VOUCHER_EXPIRY", "Subject with vouchers to be expired soon"), + ], + max_length=50, + null=True, + verbose_name="Type of list", + ), ), ] diff --git a/smash/web/migrations/0106_approaching_post_mail_list_update.py b/smash/web/migrations/0106_approaching_post_mail_list_update.py index 93095d3e564a5525613ce5cced349e2cb46474c1..6c375943b273542a9824d8ed9af8f595ca57319e 100644 --- a/smash/web/migrations/0106_approaching_post_mail_list_update.py +++ b/smash/web/migrations/0106_approaching_post_mail_list_update.py @@ -6,6 +6,7 @@ from django.db import migrations, models from ..migration_functions import is_sqlite_db + def create_default_columns_for_VISIT_LIST_APPROACHING_FOR_MAIL_CONTACT(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. @@ -61,48 +62,54 @@ def create_default_columns_for_VISIT_LIST_APPROACHING_FOR_MAIL_CONTACT(apps, sch class Migration(migrations.Migration): dependencies = [ - ('web', '0105_unfinished_appointments_list_update'), + ("web", "0105_unfinished_appointments_list_update"), ] - operations = [ - migrations.RunPython(create_default_columns_for_VISIT_LIST_APPROACHING_FOR_MAIL_CONTACT) - ] + operations = [migrations.RunPython(create_default_columns_for_VISIT_LIST_APPROACHING_FOR_MAIL_CONTACT)] if is_sqlite_db(): - operations.append(migrations.RunSQL('INSERT INTO web_studyvisitlist (' + - 'study_id, ' + - 'visible_visit_columns_id, ' + - 'visible_subject_columns_id, ' + - 'visible_study_subject_columns_id, ' + - 'visible_appointment_types_done,' - 'visible_appointment_types_in_progress,' - 'visible_appointment_types_missing,' - 'type) ' + - "SELECT " + - "1, " + - "max(web_visitcolumns.id), " + - "max(web_subjectcolumns.id), " + - "max(web_studycolumns.id), " + - "0, " + - "0, " + - "0, " + - "'APPROACHING_FOR_MAIL_CONTACT' FROM web_visitcolumns, web_studycolumns, web_subjectcolumns;")) + operations.append( + migrations.RunSQL( + "INSERT INTO web_studyvisitlist (" + + "study_id, " + + "visible_visit_columns_id, " + + "visible_subject_columns_id, " + + "visible_study_subject_columns_id, " + + "visible_appointment_types_done," + "visible_appointment_types_in_progress," + "visible_appointment_types_missing," + "type) " + + "SELECT " + + "1, " + + "max(web_visitcolumns.id), " + + "max(web_subjectcolumns.id), " + + "max(web_studycolumns.id), " + + "0, " + + "0, " + + "0, " + + "'APPROACHING_FOR_MAIL_CONTACT' FROM web_visitcolumns, web_studycolumns, web_subjectcolumns;" + ) + ) else: - operations.append(migrations.RunSQL('INSERT INTO web_studyvisitlist (' + - 'study_id, ' + - 'visible_visit_columns_id, ' + - 'visible_subject_columns_id, ' + - 'visible_study_subject_columns_id, ' + - 'visible_appointment_types_done,' - 'visible_appointment_types_in_progress,' - 'visible_appointment_types_missing,' - 'type) ' + - "SELECT " + - "1, " + - "max(web_visitcolumns.id), " + - "max(web_subjectcolumns.id), " + - "max(web_studycolumns.id), " + - "FALSE, " + - "FALSE, " + - "FALSE, " + - "'APPROACHING_FOR_MAIL_CONTACT' FROM web_visitcolumns, web_studycolumns, web_subjectcolumns;")) + operations.append( + migrations.RunSQL( + "INSERT INTO web_studyvisitlist (" + + "study_id, " + + "visible_visit_columns_id, " + + "visible_subject_columns_id, " + + "visible_study_subject_columns_id, " + + "visible_appointment_types_done," + "visible_appointment_types_in_progress," + "visible_appointment_types_missing," + "type) " + + "SELECT " + + "1, " + + "max(web_visitcolumns.id), " + + "max(web_subjectcolumns.id), " + + "max(web_studycolumns.id), " + + "FALSE, " + + "FALSE, " + + "FALSE, " + + "'APPROACHING_FOR_MAIL_CONTACT' FROM web_visitcolumns, web_studycolumns, web_subjectcolumns;" + ) + ) diff --git a/smash/web/migrations/0109_missing_appointment_list_update.py b/smash/web/migrations/0109_missing_appointment_list_update.py index fad72c2cbff6990ae0217da624856d9844c55d70..11badad38054cffcd072149dd7179bfc1248e21a 100644 --- a/smash/web/migrations/0109_missing_appointment_list_update.py +++ b/smash/web/migrations/0109_missing_appointment_list_update.py @@ -62,7 +62,7 @@ def create_default_columns_for_VISIT_LIST_MISSING_APPOINTMENT(apps, schema_edito class Migration(migrations.Migration): dependencies = [ - ('web', '0108_unfinished_visit_list_update'), + ("web", "0108_unfinished_visit_list_update"), ] operations = [ @@ -70,40 +70,48 @@ class Migration(migrations.Migration): ] if is_sqlite_db(): - operations.append(migrations.RunSQL('INSERT INTO web_studyvisitlist (' + - 'study_id, ' + - 'visible_visit_columns_id, ' + - 'visible_subject_columns_id, ' + - 'visible_study_subject_columns_id, ' + - 'visible_appointment_types_done,' - 'visible_appointment_types_in_progress,' - 'visible_appointment_types_missing,' - 'type) ' + - "SELECT " + - "1, " + - "max(web_visitcolumns.id), " + - "max(web_subjectcolumns.id), " + - "max(web_studycolumns.id), " + - "1, " + - "1, " + - "1, " + - "'MISSING_APPOINTMENTS' FROM web_visitcolumns, web_studycolumns, web_subjectcolumns;")) + operations.append( + migrations.RunSQL( + "INSERT INTO web_studyvisitlist (" + + "study_id, " + + "visible_visit_columns_id, " + + "visible_subject_columns_id, " + + "visible_study_subject_columns_id, " + + "visible_appointment_types_done," + "visible_appointment_types_in_progress," + "visible_appointment_types_missing," + "type) " + + "SELECT " + + "1, " + + "max(web_visitcolumns.id), " + + "max(web_subjectcolumns.id), " + + "max(web_studycolumns.id), " + + "1, " + + "1, " + + "1, " + + "'MISSING_APPOINTMENTS' FROM web_visitcolumns, web_studycolumns, web_subjectcolumns;" + ) + ) else: - operations.append(migrations.RunSQL('INSERT INTO web_studyvisitlist (' + - 'study_id, ' + - 'visible_visit_columns_id, ' + - 'visible_subject_columns_id, ' + - 'visible_study_subject_columns_id, ' + - 'visible_appointment_types_done,' - 'visible_appointment_types_in_progress,' - 'visible_appointment_types_missing,' - 'type) ' + - "SELECT " + - "1, " + - "max(web_visitcolumns.id), " + - "max(web_subjectcolumns.id), " + - "max(web_studycolumns.id), " + - "TRUE, " + - "TRUE, " + - "TRUE, " + - "'MISSING_APPOINTMENTS' FROM web_visitcolumns, web_studycolumns, web_subjectcolumns;")) + operations.append( + migrations.RunSQL( + "INSERT INTO web_studyvisitlist (" + + "study_id, " + + "visible_visit_columns_id, " + + "visible_subject_columns_id, " + + "visible_study_subject_columns_id, " + + "visible_appointment_types_done," + "visible_appointment_types_in_progress," + "visible_appointment_types_missing," + "type) " + + "SELECT " + + "1, " + + "max(web_visitcolumns.id), " + + "max(web_subjectcolumns.id), " + + "max(web_studycolumns.id), " + + "TRUE, " + + "TRUE, " + + "TRUE, " + + "'MISSING_APPOINTMENTS' FROM web_visitcolumns, web_studycolumns, web_subjectcolumns;" + ) + ) diff --git a/smash/web/migrations/0110_auto_20180601_0754.py b/smash/web/migrations/0110_auto_20180601_0754.py index f20b1b9429a96cd4dcf46f9d4b7bae86e722c4f0..e5657529475f1f79381387a69aaab116ff32fe86 100644 --- a/smash/web/migrations/0110_auto_20180601_0754.py +++ b/smash/web/migrations/0110_auto_20180601_0754.py @@ -7,35 +7,56 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0109_missing_appointment_list_update'), + ("web", "0109_missing_appointment_list_update"), ] operations = [ migrations.AddField( - model_name='worker', - name='voucher_partner_code', - field=models.CharField(blank=True, max_length=10, verbose_name='Code'), + model_name="worker", + name="voucher_partner_code", + field=models.CharField(blank=True, max_length=10, verbose_name="Code"), ), migrations.AlterField( - model_name='studysubjectlist', - name='type', - field=models.CharField(blank=True, choices=[('GENERIC', 'Generic subject list'), ('NO_VISIT', 'Subjects without visit'), ('REQUIRE_CONTACT', 'Subjects required contact'), ('VOUCHER_EXPIRY', 'Subject with vouchers to be expired soon')], max_length=50, null=True, verbose_name='Type of list'), + model_name="studysubjectlist", + name="type", + field=models.CharField( + blank=True, + choices=[ + ("GENERIC", "Generic subject list"), + ("NO_VISIT", "Subjects without visit"), + ("REQUIRE_CONTACT", "Subjects required contact"), + ("VOUCHER_EXPIRY", "Subject with vouchers to be expired soon"), + ], + max_length=50, + null=True, + verbose_name="Type of list", + ), ), migrations.AlterField( - model_name='studyvisitlist', - name='type', - field=models.CharField(choices=[('UNFINISHED', 'unfinished visits'), ('APPROACHING_WITHOUT_APPOINTMENTS', 'approaching visits'), ('APPROACHING_FOR_MAIL_CONTACT', 'post mail for approaching visits'), ('GENERIC', 'Generic visit list'), ('MISSING_APPOINTMENTS', 'visits with missing appointments'), ('EXCEEDED_TIME', 'exceeded visit time')], max_length=50, verbose_name='Type of list'), + model_name="studyvisitlist", + name="type", + field=models.CharField( + choices=[ + ("UNFINISHED", "unfinished visits"), + ("APPROACHING_WITHOUT_APPOINTMENTS", "approaching visits"), + ("APPROACHING_FOR_MAIL_CONTACT", "post mail for approaching visits"), + ("GENERIC", "Generic visit list"), + ("MISSING_APPOINTMENTS", "visits with missing appointments"), + ("EXCEEDED_TIME", "exceeded visit time"), + ], + max_length=50, + verbose_name="Type of list", + ), ), migrations.AlterField( - model_name='voucher', - name='number', - field=models.CharField(max_length=50, unique=True, verbose_name='Number'), + model_name="voucher", + name="number", + field=models.CharField(max_length=50, unique=True, verbose_name="Number"), ), migrations.AlterField( - model_name='voucher', - name='usage_partner', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.Worker'), + model_name="voucher", + name="usage_partner", + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="web.Worker"), ), ] diff --git a/smash/web/migrations/0111_auto_20180601_1318.py b/smash/web/migrations/0111_auto_20180601_1318.py index 3605a90d86158bd94d1eca6b85e89670da965b0a..a401e87453281673ae7acd11d12b2f307126ffe7 100644 --- a/smash/web/migrations/0111_auto_20180601_1318.py +++ b/smash/web/migrations/0111_auto_20180601_1318.py @@ -7,37 +7,46 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0110_auto_20180601_0754'), + ("web", "0110_auto_20180601_0754"), ] operations = [ migrations.CreateModel( - name='VoucherPartnerSession', + name="VoucherPartnerSession", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('length', models.IntegerField(verbose_name='Length (minutes)')), - ('date', models.DateTimeField(verbose_name='Issue date')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("length", models.IntegerField(verbose_name="Length (minutes)")), + ("date", models.DateTimeField(verbose_name="Issue date")), ], ), migrations.RemoveField( - model_name='voucher', - name='use_date', + model_name="voucher", + name="use_date", ), migrations.AddField( - model_name='voucher', - name='hours', - field=models.IntegerField(default=0, verbose_name='Hours'), + model_name="voucher", + name="hours", + field=models.IntegerField(default=0, verbose_name="Hours"), ), migrations.AlterField( - model_name='voucher', - name='status', - field=models.CharField(choices=[('NEW', 'New'), ('IN_USE', 'In use'), ('USED', 'Used'), ('EXPIRED', 'Expired')], default='NEW', max_length=20, verbose_name='Status'), + model_name="voucher", + name="status", + field=models.CharField( + choices=[("NEW", "New"), ("IN_USE", "In use"), ("USED", "Used"), ("EXPIRED", "Expired")], + default="NEW", + max_length=20, + verbose_name="Status", + ), ), migrations.AddField( - model_name='voucherpartnersession', - name='voucher', - field=models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, related_name='voucher_partner_sessions', to='web.Voucher'), + model_name="voucherpartnersession", + name="voucher", + field=models.ForeignKey( + editable=False, + on_delete=django.db.models.deletion.CASCADE, + related_name="voucher_partner_sessions", + to="web.Voucher", + ), ), ] diff --git a/smash/web/migrations/0112_auto_20180604_1021.py b/smash/web/migrations/0112_auto_20180604_1021.py index 30dc84cdbf1bdceee3ce39ad712dfdc2613a40e9..e9db21632f623baadca97ed11c61ca3b275c8bcb 100644 --- a/smash/web/migrations/0112_auto_20180604_1021.py +++ b/smash/web/migrations/0112_auto_20180604_1021.py @@ -7,20 +7,21 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0111_auto_20180601_1318'), + ("web", "0111_auto_20180601_1318"), ] operations = [ migrations.AlterField( - model_name='mailtemplate', - name='context', - field=models.CharField(choices=[('A', 'Appointment'), ('S', 'Subject'), ('V', 'Visit'), ('C', 'Voucher')], max_length=1), + model_name="mailtemplate", + name="context", + field=models.CharField( + choices=[("A", "Appointment"), ("S", "Subject"), ("V", "Visit"), ("C", "Voucher")], max_length=1 + ), ), migrations.AlterField( - model_name='mailtemplate', - name='language', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='web.Language'), + model_name="mailtemplate", + name="language", + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to="web.Language"), ), ] diff --git a/smash/web/migrations/0113_auto_20180608_1258.py b/smash/web/migrations/0113_auto_20180608_1258.py index a613eece55c4560a4b4c8f59a269d387bd9e2a64..10611102492e1e3482827f56a8012c4dca497f80 100644 --- a/smash/web/migrations/0113_auto_20180608_1258.py +++ b/smash/web/migrations/0113_auto_20180608_1258.py @@ -7,15 +7,16 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0112_auto_20180604_1021'), + ("web", "0112_auto_20180604_1021"), ] operations = [ migrations.AlterField( - model_name='mailtemplate', - name='language', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='web.Language'), + model_name="mailtemplate", + name="language", + field=models.ForeignKey( + blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to="web.Language" + ), ), ] diff --git a/smash/web/migrations/0119_auto_20181002_0908.py b/smash/web/migrations/0119_auto_20181002_0908.py index 694519ec5d10e37ec794460e75782cefdaf85512..e36d5be73c8c79031f9eb3b063eebe99ba9b3579 100644 --- a/smash/web/migrations/0119_auto_20181002_0908.py +++ b/smash/web/migrations/0119_auto_20181002_0908.py @@ -6,15 +6,25 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ - ('web', '0118_voucher_activity_type'), + ("web", "0118_voucher_activity_type"), ] operations = [ migrations.AlterField( - model_name='workerstudyrole', - name='role', - field=models.CharField(choices=[('DOCTOR', 'Doctor'), ('NURSE', 'Nurse'), ('PSYCHOLOGIST', 'Psychologist'), ('TECHNICIAN', 'Technician'), ('SECRETARY', 'Secretary'), ('PROJECT MANAGER', 'Project Manager')], max_length=20, verbose_name='Role'), + model_name="workerstudyrole", + name="role", + field=models.CharField( + choices=[ + ("DOCTOR", "Doctor"), + ("NURSE", "Nurse"), + ("PSYCHOLOGIST", "Psychologist"), + ("TECHNICIAN", "Technician"), + ("SECRETARY", "Secretary"), + ("PROJECT MANAGER", "Project Manager"), + ], + max_length=20, + verbose_name="Role", + ), ), ] diff --git a/smash/web/migrations/0119_auto_20181015_1324.py b/smash/web/migrations/0119_auto_20181015_1324.py index 8a66f73d04df7ff72802d4e1f61c82aeb7aa3219..0e99bfa9fe0e59f3b67bc75bae3f4ea447ff7e45 100644 --- a/smash/web/migrations/0119_auto_20181015_1324.py +++ b/smash/web/migrations/0119_auto_20181015_1324.py @@ -6,20 +6,41 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ - ('web', '0118_voucher_activity_type'), + ("web", "0118_voucher_activity_type"), ] operations = [ migrations.AlterField( - model_name='studyvisitlist', - name='type', - field=models.CharField(choices=[('UNFINISHED', 'Unfinished visits'), ('APPROACHING_WITHOUT_APPOINTMENTS', 'Approaching visits'), ('APPROACHING_FOR_MAIL_CONTACT', 'Post mail for approaching visits'), ('GENERIC', 'Generic visit list'), ('MISSING_APPOINTMENTS', 'Visits with missing appointments'), ('EXCEEDED_TIME', 'Exceeded visit time')], max_length=50, verbose_name='Type of list'), + model_name="studyvisitlist", + name="type", + field=models.CharField( + choices=[ + ("UNFINISHED", "Unfinished visits"), + ("APPROACHING_WITHOUT_APPOINTMENTS", "Approaching visits"), + ("APPROACHING_FOR_MAIL_CONTACT", "Post mail for approaching visits"), + ("GENERIC", "Generic visit list"), + ("MISSING_APPOINTMENTS", "Visits with missing appointments"), + ("EXCEEDED_TIME", "Exceeded visit time"), + ], + max_length=50, + verbose_name="Type of list", + ), ), migrations.AlterField( - model_name='workerstudyrole', - name='role', - field=models.CharField(choices=[('DOCTOR', 'Doctor'), ('NURSE', 'Nurse'), ('PSYCHOLOGIST', 'Psychologist'), ('TECHNICIAN', 'Technician'), ('SECRETARY', 'Secretary'), ('PROJECT MANAGER', 'Project Manager')], max_length=20, verbose_name='Role'), + model_name="workerstudyrole", + name="role", + field=models.CharField( + choices=[ + ("DOCTOR", "Doctor"), + ("NURSE", "Nurse"), + ("PSYCHOLOGIST", "Psychologist"), + ("TECHNICIAN", "Technician"), + ("SECRETARY", "Secretary"), + ("PROJECT MANAGER", "Project Manager"), + ], + max_length=20, + verbose_name="Role", + ), ), ] diff --git a/smash/web/migrations/0119_auto_20181024_1158.py b/smash/web/migrations/0119_auto_20181024_1158.py index 1132667f7ce5b12b5eb9b4b9a6bf38dce5b458ec..5c528b4bb508b5100000f4be0ac2c09352547071 100644 --- a/smash/web/migrations/0119_auto_20181024_1158.py +++ b/smash/web/migrations/0119_auto_20181024_1158.py @@ -6,20 +6,41 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ - ('web', '0118_voucher_activity_type'), + ("web", "0118_voucher_activity_type"), ] operations = [ migrations.AlterField( - model_name='studyvisitlist', - name='type', - field=models.CharField(choices=[('UNFINISHED', 'Unfinished visits'), ('APPROACHING_WITHOUT_APPOINTMENTS', 'Approaching visits'), ('APPROACHING_FOR_MAIL_CONTACT', 'Post mail for approaching visits'), ('GENERIC', 'Generic visit list'), ('MISSING_APPOINTMENTS', 'Visits with missing appointments'), ('EXCEEDED_TIME', 'Exceeded visit time')], max_length=50, verbose_name='Type of list'), + model_name="studyvisitlist", + name="type", + field=models.CharField( + choices=[ + ("UNFINISHED", "Unfinished visits"), + ("APPROACHING_WITHOUT_APPOINTMENTS", "Approaching visits"), + ("APPROACHING_FOR_MAIL_CONTACT", "Post mail for approaching visits"), + ("GENERIC", "Generic visit list"), + ("MISSING_APPOINTMENTS", "Visits with missing appointments"), + ("EXCEEDED_TIME", "Exceeded visit time"), + ], + max_length=50, + verbose_name="Type of list", + ), ), migrations.AlterField( - model_name='workerstudyrole', - name='role', - field=models.CharField(choices=[('DOCTOR', 'Doctor'), ('NURSE', 'Nurse'), ('PSYCHOLOGIST', 'Psychologist'), ('TECHNICIAN', 'Technician'), ('SECRETARY', 'Secretary'), ('PROJECT MANAGER', 'Project Manager')], max_length=20, verbose_name='Role'), + model_name="workerstudyrole", + name="role", + field=models.CharField( + choices=[ + ("DOCTOR", "Doctor"), + ("NURSE", "Nurse"), + ("PSYCHOLOGIST", "Psychologist"), + ("TECHNICIAN", "Technician"), + ("SECRETARY", "Secretary"), + ("PROJECT MANAGER", "Project Manager"), + ], + max_length=20, + verbose_name="Role", + ), ), ] diff --git a/smash/web/migrations/0120_study_nd_number_study_subject_regex.py b/smash/web/migrations/0120_study_nd_number_study_subject_regex.py index 5b15f27c2e17c5eee4067a3c3caae2d0deaff2dd..03c2c1e2d2ff42dda586cb174194562ba3b054be 100644 --- a/smash/web/migrations/0120_study_nd_number_study_subject_regex.py +++ b/smash/web/migrations/0120_study_nd_number_study_subject_regex.py @@ -6,15 +6,19 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ - ('web', '0119_auto_20181024_1158'), + ("web", "0119_auto_20181024_1158"), ] operations = [ migrations.AddField( - model_name='study', - name='nd_number_study_subject_regex', - field=models.CharField(default='^ND\\d{4}$', help_text='Defines the regex to check the identification number used for each study subject.', max_length=255, verbose_name='Study Subject ND Number Regex'), + model_name="study", + name="nd_number_study_subject_regex", + field=models.CharField( + default="^ND\\d{4}$", + help_text="Defines the regex to check the identification number used for each study subject.", + max_length=255, + verbose_name="Study Subject ND Number Regex", + ), ), ] diff --git a/smash/web/migrations/0121_auto_20181003_1256.py b/smash/web/migrations/0121_auto_20181003_1256.py index 3f9b81340bd1c98d566742128ea21b1b2235d3f5..3a826e296a674bc2c5a1686f832c9ad666badec8 100644 --- a/smash/web/migrations/0121_auto_20181003_1256.py +++ b/smash/web/migrations/0121_auto_20181003_1256.py @@ -6,15 +6,19 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ - ('web', '0120_holiday_kind'), + ("web", "0120_holiday_kind"), ] operations = [ migrations.AlterField( - model_name='holiday', - name='kind', - field=models.CharField(choices=[('H', 'Holiday'), ('X', 'Extra Availability')], default='H', help_text='Defines the kind of availability. Either Holiday or Extra Availability.', max_length=1), + model_name="holiday", + name="kind", + field=models.CharField( + choices=[("H", "Holiday"), ("X", "Extra Availability")], + default="H", + help_text="Defines the kind of availability. Either Holiday or Extra Availability.", + max_length=1, + ), ), ] diff --git a/smash/web/migrations/0121_auto_20181024_1859.py b/smash/web/migrations/0121_auto_20181024_1859.py index e732ceaf89b76edfeb351231375f52faafe4b607..64fcff3992796ad7935bd3d13b685ce35fd84bc8 100644 --- a/smash/web/migrations/0121_auto_20181024_1859.py +++ b/smash/web/migrations/0121_auto_20181024_1859.py @@ -6,15 +6,20 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ - ('web', '0120_study_nd_number_study_subject_regex'), + ("web", "0120_study_nd_number_study_subject_regex"), ] operations = [ migrations.AlterField( - model_name='study', - name='nd_number_study_subject_regex', - field=models.CharField(default='^ND\\d{4}$', help_text='Defines the regex to check the ID used for each study subject. Keep in mind that this regex should be valid for all previous study subjects in the database.', max_length=255, verbose_name='Study Subject ND Number Regex'), + model_name="study", + name="nd_number_study_subject_regex", + field=models.CharField( + default="^ND\\d{4}$", + help_text="Defines the regex to check the ID used for each study subject." + + " Keep in mind that this regex should be valid for all previous study subjects in the database.", + max_length=255, + verbose_name="Study Subject ND Number Regex", + ), ), ] diff --git a/smash/web/migrations/0124_auto_20181017_1532.py b/smash/web/migrations/0124_auto_20181017_1532.py index 19b6a5c29f54d4eec206d6621d858b6a81a45a5f..ce07b27744e9d7c4296cb1d802adbad840cb3d57 100644 --- a/smash/web/migrations/0124_auto_20181017_1532.py +++ b/smash/web/migrations/0124_auto_20181017_1532.py @@ -6,15 +6,25 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ - ('web', '0123_merge_20181017_1532'), + ("web", "0123_merge_20181017_1532"), ] operations = [ migrations.AlterField( - model_name='studyvisitlist', - name='type', - field=models.CharField(choices=[('UNFINISHED', 'unfinished visits'), ('APPROACHING_WITHOUT_APPOINTMENTS', 'approaching visits'), ('APPROACHING_FOR_MAIL_CONTACT', 'post mail for approaching visits'), ('GENERIC', 'Generic visit list'), ('MISSING_APPOINTMENTS', 'visits with missing appointments'), ('EXCEEDED_TIME', 'exceeded visit time')], max_length=50, verbose_name='Type of list'), + model_name="studyvisitlist", + name="type", + field=models.CharField( + choices=[ + ("UNFINISHED", "unfinished visits"), + ("APPROACHING_WITHOUT_APPOINTMENTS", "approaching visits"), + ("APPROACHING_FOR_MAIL_CONTACT", "post mail for approaching visits"), + ("GENERIC", "Generic visit list"), + ("MISSING_APPOINTMENTS", "visits with missing appointments"), + ("EXCEEDED_TIME", "exceeded visit time"), + ], + max_length=50, + verbose_name="Type of list", + ), ), ] diff --git a/smash/web/migrations/0130_study_visits_to_show_in_subject_list.py b/smash/web/migrations/0130_study_visits_to_show_in_subject_list.py index 513548edff75aa2abd19a46622fa69e1cabf932e..2b50d0f67854fc15486010c13d9633d7bc8e5d57 100644 --- a/smash/web/migrations/0130_study_visits_to_show_in_subject_list.py +++ b/smash/web/migrations/0130_study_visits_to_show_in_subject_list.py @@ -7,15 +7,18 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ - ('web', '0129_auto_20181031_1348'), + ("web", "0129_auto_20181031_1348"), ] operations = [ migrations.AddField( - model_name='study', - name='visits_to_show_in_subject_list', - field=models.IntegerField(default=5, validators=[django.core.validators.MaxValueValidator(100), django.core.validators.MinValueValidator(1)], verbose_name='Number of visits to show in the subject list'), + model_name="study", + name="visits_to_show_in_subject_list", + field=models.IntegerField( + default=5, + validators=[django.core.validators.MaxValueValidator(100), django.core.validators.MinValueValidator(1)], + verbose_name="Number of visits to show in the subject list", + ), ), ] diff --git a/smash/web/migrations/0131_study_default_voucher_expiration_in_months.py b/smash/web/migrations/0131_study_default_voucher_expiration_in_months.py index 7e1b0e97c6ed29ddfa3bb97113da85211575b7b0..3c2c7a3d90fa23425b692ea27d44679bec176eec 100644 --- a/smash/web/migrations/0131_study_default_voucher_expiration_in_months.py +++ b/smash/web/migrations/0131_study_default_voucher_expiration_in_months.py @@ -7,15 +7,18 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ - ('web', '0130_study_visits_to_show_in_subject_list'), + ("web", "0130_study_visits_to_show_in_subject_list"), ] operations = [ migrations.AddField( - model_name='study', - name='default_voucher_expiration_in_months', - field=models.IntegerField(default=3, validators=[django.core.validators.MinValueValidator(1)], verbose_name='Default duration of the vouchers in months'), + model_name="study", + name="default_voucher_expiration_in_months", + field=models.IntegerField( + default=3, + validators=[django.core.validators.MinValueValidator(1)], + verbose_name="Default duration of the vouchers in months", + ), ), ] diff --git a/smash/web/migrations/0132_study_default_visit_duration_in_months.py b/smash/web/migrations/0132_study_default_visit_duration_in_months.py index de941d6fc215cc19e2b7e4367b5b12afc90ddbf0..34e67281c900123bde15570d7d098c7f54494e5b 100644 --- a/smash/web/migrations/0132_study_default_visit_duration_in_months.py +++ b/smash/web/migrations/0132_study_default_visit_duration_in_months.py @@ -7,15 +7,18 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ - ('web', '0131_study_default_voucher_expiration_in_months'), + ("web", "0131_study_default_voucher_expiration_in_months"), ] operations = [ migrations.AddField( - model_name='study', - name='default_visit_duration_in_months', - field=models.IntegerField(default=3, validators=[django.core.validators.MinValueValidator(1)], verbose_name='Default duration of the visits in months'), + model_name="study", + name="default_visit_duration_in_months", + field=models.IntegerField( + default=3, + validators=[django.core.validators.MinValueValidator(1)], + verbose_name="Default duration of the visits in months", + ), ), ] diff --git a/smash/web/migrations/0133_auto_20181113_1550.py b/smash/web/migrations/0133_auto_20181113_1550.py index 45761ab806ceca3daf08d1493ea13007b68bbab2..fb574278a802b727e4e5c21041fc5e1dae74170d 100644 --- a/smash/web/migrations/0133_auto_20181113_1550.py +++ b/smash/web/migrations/0133_auto_20181113_1550.py @@ -7,35 +7,60 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ - ('web', '0132_study_default_visit_duration_in_months'), + ("web", "0132_study_default_visit_duration_in_months"), ] operations = [ migrations.AddField( - model_name='study', - name='default_delta_time_for_control_follow_up', - field=models.IntegerField(default=4, help_text='Time difference between visits used to automatically create follow up visits', validators=[django.core.validators.MinValueValidator(1)], verbose_name='Time difference between control visits'), + model_name="study", + name="default_delta_time_for_control_follow_up", + field=models.IntegerField( + default=4, + help_text="Time difference between visits used to automatically create follow up visits", + validators=[django.core.validators.MinValueValidator(1)], + verbose_name="Time difference between control visits", + ), ), migrations.AddField( - model_name='study', - name='default_delta_time_for_follow_up_units', - field=models.CharField(choices=[('days', 'Days'), ('years', 'Years')], default='years', help_text='Units for the number of days between visits for both patients and controls', max_length=10, verbose_name='Units for the follow up incrementals'), + model_name="study", + name="default_delta_time_for_follow_up_units", + field=models.CharField( + choices=[("days", "Days"), ("years", "Years")], + default="years", + help_text="Units for the number of days between visits for both patients and controls", + max_length=10, + verbose_name="Units for the follow up incrementals", + ), ), migrations.AddField( - model_name='study', - name='default_delta_time_for_patient_follow_up', - field=models.IntegerField(default=1, help_text='Time difference between visits used to automatically create follow up visits', validators=[django.core.validators.MinValueValidator(1)], verbose_name='Time difference between patient visits'), + model_name="study", + name="default_delta_time_for_patient_follow_up", + field=models.IntegerField( + default=1, + help_text="Time difference between visits used to automatically create follow up visits", + validators=[django.core.validators.MinValueValidator(1)], + verbose_name="Time difference between patient visits", + ), ), migrations.AlterField( - model_name='study', - name='default_visit_duration_in_months', - field=models.IntegerField(default=6, help_text='Duration of the visit, this is, the time interval, in months, when the appointments may take place', validators=[django.core.validators.MinValueValidator(1)], verbose_name='Duration of the visits in months'), + model_name="study", + name="default_visit_duration_in_months", + field=models.IntegerField( + default=6, + help_text="Duration of the visit, this is, the time interval," + + " in months, when the appointments may take place", + validators=[django.core.validators.MinValueValidator(1)], + verbose_name="Duration of the visits in months", + ), ), migrations.AlterField( - model_name='study', - name='default_voucher_expiration_in_months', - field=models.IntegerField(default=3, validators=[django.core.validators.MinValueValidator(1)], verbose_name='Duration of the vouchers in months'), + model_name="study", + name="default_voucher_expiration_in_months", + field=models.IntegerField( + default=3, + validators=[django.core.validators.MinValueValidator(1)], + verbose_name="Duration of the vouchers in months", + ), ), ] diff --git a/smash/web/migrations/0138_auto_20190321_1111.py b/smash/web/migrations/0138_auto_20190321_1111.py index adf8428e431917d8c4e0e5357f56984983716e16..c2323b02f3925ff7fa20b9c9f1f967dae58c6297 100644 --- a/smash/web/migrations/0138_auto_20190321_1111.py +++ b/smash/web/migrations/0138_auto_20190321_1111.py @@ -6,15 +6,25 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ - ('web', '0137_auto_20190321_1024'), + ("web", "0137_auto_20190321_1024"), ] operations = [ migrations.AlterField( - model_name='voucher', - name='status', - field=models.CharField(choices=[('NEW', 'New'), ('IN_USE', 'In use'), ('USED', 'Used'), ('EXPIRED', 'Expired'), ('REMOVED', 'Removed')], default='NEW', max_length=20, verbose_name='Status'), + model_name="voucher", + name="status", + field=models.CharField( + choices=[ + ("NEW", "New"), + ("IN_USE", "In use"), + ("USED", "Used"), + ("EXPIRED", "Expired"), + ("REMOVED", "Removed"), + ], + default="NEW", + max_length=20, + verbose_name="Status", + ), ), ] diff --git a/smash/web/migrations/0142_provenance.py b/smash/web/migrations/0142_provenance.py index 2d770b2d7323fcac89307aba15f0dfcc61d6f5bd..eb818bfcbd81506d18322e88cf0e7c93c95b9b51 100644 --- a/smash/web/migrations/0142_provenance.py +++ b/smash/web/migrations/0142_provenance.py @@ -7,23 +7,32 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0141_auto_20200319_1040'), + ("web", "0141_auto_20200319_1040"), ] operations = [ migrations.CreateModel( - name='Provenance', + name="Provenance", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('modified_table', models.CharField(max_length=1024, verbose_name='Modified table')), - ('modified_table_id', models.CharField(max_length=1024, verbose_name='Modified table row')), - ('modification_date', models.DateTimeField(verbose_name='Modified on')), - ('previous_value', models.CharField(blank=True, max_length=2048, null=True, verbose_name='Previous Value')), - ('new_value', models.CharField(blank=True, max_length=2048, null=True, verbose_name='New Value')), - ('modification_description', models.CharField(max_length=2048, verbose_name='Description')), - ('modification_author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.Worker', verbose_name='Worker who modified the row')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("modified_table", models.CharField(max_length=1024, verbose_name="Modified table")), + ("modified_table_id", models.CharField(max_length=1024, verbose_name="Modified table row")), + ("modification_date", models.DateTimeField(verbose_name="Modified on")), + ( + "previous_value", + models.CharField(blank=True, max_length=2048, null=True, verbose_name="Previous Value"), + ), + ("new_value", models.CharField(blank=True, max_length=2048, null=True, verbose_name="New Value")), + ("modification_description", models.CharField(max_length=2048, verbose_name="Description")), + ( + "modification_author", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to="web.Worker", + verbose_name="Worker who modified the row", + ), + ), ], ), ] diff --git a/smash/web/migrations/0146_auto_20200319_1446.py b/smash/web/migrations/0146_auto_20200319_1446.py index cfa59cf7e2775d5b461c2786a1b961ab9a544282..6ba2ebff82b7d2b7e1f4af66bf9237f1209fdccb 100644 --- a/smash/web/migrations/0146_auto_20200319_1446.py +++ b/smash/web/migrations/0146_auto_20200319_1446.py @@ -7,15 +7,19 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0145_auto_20200319_1404'), + ("web", "0145_auto_20200319_1404"), ] operations = [ migrations.AlterField( - model_name='provenance', - name='modification_author', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='web.Worker', verbose_name='Worker who modified the row'), + model_name="provenance", + name="modification_author", + field=models.ForeignKey( + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.Worker", + verbose_name="Worker who modified the row", + ), ), ] diff --git a/smash/web/migrations/0150_auto_20200319_1446.py b/smash/web/migrations/0150_auto_20200319_1446.py index 44878a59bf859ccbd6a9a03d3722445ba013c92b..dd0b3a26a0afaf15df0189b76ee67cab8090a5c7 100644 --- a/smash/web/migrations/0150_auto_20200319_1446.py +++ b/smash/web/migrations/0150_auto_20200319_1446.py @@ -6,14 +6,18 @@ from django.db import migrations class Migration(migrations.Migration): - dependencies = [ - ('web', '0149_auto_20200319_1415'), + ("web", "0149_auto_20200319_1415"), ] operations = [ migrations.AlterModelOptions( - name='appointment', - options={'permissions': [('send_sample_mail_for_appointments', 'Can send sample collection list'), ('view_statistics', 'Can see statistics')]}, + name="appointment", + options={ + "permissions": [ + ("send_sample_mail_for_appointments", "Can send sample collection list"), + ("view_statistics", "Can see statistics"), + ] + }, ), ] diff --git a/smash/web/migrations/0151_auto_20200319_1518.py b/smash/web/migrations/0151_auto_20200319_1518.py index 6c7f857faefafa1fd872a7644539c59c38023e47..04090657e811b41951b041cc7abd6689b2f7d29f 100644 --- a/smash/web/migrations/0151_auto_20200319_1518.py +++ b/smash/web/migrations/0151_auto_20200319_1518.py @@ -6,14 +6,18 @@ from django.db import migrations class Migration(migrations.Migration): - dependencies = [ - ('web', '0150_auto_20200319_1446'), + ("web", "0150_auto_20200319_1446"), ] operations = [ migrations.AlterModelOptions( - name='subject', - options={'permissions': [('send_sample_mail_for_appointments', 'Can send sample collection list'), ('export_subjects', 'Can export subject data to excel/csv')]}, + name="subject", + options={ + "permissions": [ + ("send_sample_mail_for_appointments", "Can send sample collection list"), + ("export_subjects", "Can export subject data to excel/csv"), + ] + }, ), ] diff --git a/smash/web/migrations/0159_configurationitem_email_items_for_redcap.py b/smash/web/migrations/0159_configurationitem_email_items_for_redcap.py index 14050e0541df2f94fefb1cd04e4d64494fa5e755..e1c12e6d1b7e555f6ff65af1d00a4e6682a9f26a 100644 --- a/smash/web/migrations/0159_configurationitem_email_items_for_redcap.py +++ b/smash/web/migrations/0159_configurationitem_email_items_for_redcap.py @@ -4,9 +4,18 @@ from django.db import migrations -from web.models.constants import RED_CAP_LANGUAGE_4_FIELD_TYPE, RED_CAP_LANGUAGE_3_FIELD_TYPE, \ - RED_CAP_LANGUAGE_2_FIELD_TYPE, RED_CAP_LANGUAGE_1_FIELD_TYPE, RED_CAP_MPOWER_ID_FIELD_TYPE, RED_CAP_DEAD_FIELD_TYPE, \ - RED_CAP_SEX_FIELD_TYPE, RED_CAP_DATE_BORN_FIELD_TYPE, RED_CAP_ND_NUMBER_FIELD_TYPE, RED_CAP_VIRUS_FIELD_TYPE +from web.models.constants import ( + RED_CAP_LANGUAGE_4_FIELD_TYPE, + RED_CAP_LANGUAGE_3_FIELD_TYPE, + RED_CAP_LANGUAGE_2_FIELD_TYPE, + RED_CAP_LANGUAGE_1_FIELD_TYPE, + RED_CAP_MPOWER_ID_FIELD_TYPE, + RED_CAP_DEAD_FIELD_TYPE, + RED_CAP_SEX_FIELD_TYPE, + RED_CAP_DATE_BORN_FIELD_TYPE, + RED_CAP_ND_NUMBER_FIELD_TYPE, + RED_CAP_VIRUS_FIELD_TYPE, +) def create_item(apps, type, value, name): @@ -21,31 +30,21 @@ def create_item(apps, type, value, name): def configuration_items(apps, schema_editor): - create_item(apps, RED_CAP_LANGUAGE_4_FIELD_TYPE, "dm_language_4", - "Redcap field for language 4") - create_item(apps, RED_CAP_LANGUAGE_3_FIELD_TYPE, "dm_language_3", - "Redcap field for language 3") - create_item(apps, RED_CAP_LANGUAGE_2_FIELD_TYPE, "dm_language_2", - "Redcap field for language 2") - create_item(apps, RED_CAP_LANGUAGE_1_FIELD_TYPE, "dm_language_1", - "Redcap field for language 1") - create_item(apps, RED_CAP_MPOWER_ID_FIELD_TYPE, "dm_mpowerid", - "Redcap field for mPowerId") - create_item(apps, RED_CAP_DEAD_FIELD_TYPE, "dm_death", - "Redcap field for deceased") - create_item(apps, RED_CAP_SEX_FIELD_TYPE, "cdisc_dm_sex", - "Redcap field for sex") - create_item(apps, RED_CAP_DATE_BORN_FIELD_TYPE, "cdisc_dm_brthdtc", - "Redcap field for birth date") - create_item(apps, RED_CAP_ND_NUMBER_FIELD_TYPE, "cdisc_dm_usubjd", - "Redcap field for subject id") - create_item(apps, RED_CAP_VIRUS_FIELD_TYPE, "", - "Redcap field for virus test result") + create_item(apps, RED_CAP_LANGUAGE_4_FIELD_TYPE, "dm_language_4", "Redcap field for language 4") + create_item(apps, RED_CAP_LANGUAGE_3_FIELD_TYPE, "dm_language_3", "Redcap field for language 3") + create_item(apps, RED_CAP_LANGUAGE_2_FIELD_TYPE, "dm_language_2", "Redcap field for language 2") + create_item(apps, RED_CAP_LANGUAGE_1_FIELD_TYPE, "dm_language_1", "Redcap field for language 1") + create_item(apps, RED_CAP_MPOWER_ID_FIELD_TYPE, "dm_mpowerid", "Redcap field for mPowerId") + create_item(apps, RED_CAP_DEAD_FIELD_TYPE, "dm_death", "Redcap field for deceased") + create_item(apps, RED_CAP_SEX_FIELD_TYPE, "cdisc_dm_sex", "Redcap field for sex") + create_item(apps, RED_CAP_DATE_BORN_FIELD_TYPE, "cdisc_dm_brthdtc", "Redcap field for birth date") + create_item(apps, RED_CAP_ND_NUMBER_FIELD_TYPE, "cdisc_dm_usubjd", "Redcap field for subject id") + create_item(apps, RED_CAP_VIRUS_FIELD_TYPE, "", "Redcap field for virus test result") class Migration(migrations.Migration): dependencies = [ - ('web', '0158_configurationitem_email_items'), + ("web", "0158_configurationitem_email_items"), ] operations = [ diff --git a/smash/web/migrations/0160_auto_20200415_1101.py b/smash/web/migrations/0160_auto_20200415_1101.py index af28df3fc089413c0051dd21dc45a2fc0cc9f738..035ff6980c0fdda5b2b43504a3585af51d700df9 100644 --- a/smash/web/migrations/0160_auto_20200415_1101.py +++ b/smash/web/migrations/0160_auto_20200415_1101.py @@ -6,110 +6,134 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ - ('web', '0159_configurationitem_email_items_for_redcap'), + ("web", "0159_configurationitem_email_items_for_redcap"), ] operations = [ migrations.AddField( - model_name='studycolumns', - name='virus_test_1', - field=models.BooleanField(default=False, verbose_name='Visit 1 virus results'), + model_name="studycolumns", + name="virus_test_1", + field=models.BooleanField(default=False, verbose_name="Visit 1 virus results"), ), migrations.AddField( - model_name='studycolumns', - name='virus_test_1_updated', - field=models.BooleanField(default=False, verbose_name='Visit 1 virus results date'), + model_name="studycolumns", + name="virus_test_1_updated", + field=models.BooleanField(default=False, verbose_name="Visit 1 virus results date"), ), migrations.AddField( - model_name='studycolumns', - name='virus_test_2', - field=models.BooleanField(default=False, verbose_name='Visit 2 virus results'), + model_name="studycolumns", + name="virus_test_2", + field=models.BooleanField(default=False, verbose_name="Visit 2 virus results"), ), migrations.AddField( - model_name='studycolumns', - name='virus_test_2_updated', - field=models.BooleanField(default=False, verbose_name='Visit 2 virus results date'), + model_name="studycolumns", + name="virus_test_2_updated", + field=models.BooleanField(default=False, verbose_name="Visit 2 virus results date"), ), migrations.AddField( - model_name='studycolumns', - name='virus_test_3', - field=models.BooleanField(default=False, verbose_name='Visit 3 virus results'), + model_name="studycolumns", + name="virus_test_3", + field=models.BooleanField(default=False, verbose_name="Visit 3 virus results"), ), migrations.AddField( - model_name='studycolumns', - name='virus_test_3_updated', - field=models.BooleanField(default=False, verbose_name='Visit 3 virus results date'), + model_name="studycolumns", + name="virus_test_3_updated", + field=models.BooleanField(default=False, verbose_name="Visit 3 virus results date"), ), migrations.AddField( - model_name='studycolumns', - name='virus_test_4', - field=models.BooleanField(default=False, verbose_name='Visit 4 virus results'), + model_name="studycolumns", + name="virus_test_4", + field=models.BooleanField(default=False, verbose_name="Visit 4 virus results"), ), migrations.AddField( - model_name='studycolumns', - name='virus_test_4_updated', - field=models.BooleanField(default=False, verbose_name='Visit 4 virus results date'), + model_name="studycolumns", + name="virus_test_4_updated", + field=models.BooleanField(default=False, verbose_name="Visit 4 virus results date"), ), migrations.AddField( - model_name='studycolumns', - name='virus_test_5', - field=models.BooleanField(default=False, verbose_name='Visit 5 virus results'), + model_name="studycolumns", + name="virus_test_5", + field=models.BooleanField(default=False, verbose_name="Visit 5 virus results"), ), migrations.AddField( - model_name='studycolumns', - name='virus_test_5_updated', - field=models.BooleanField(default=False, verbose_name='Visit 5 virus results date'), + model_name="studycolumns", + name="virus_test_5_updated", + field=models.BooleanField(default=False, verbose_name="Visit 5 virus results date"), ), migrations.AddField( - model_name='studysubject', - name='virus_test_1', - field=models.NullBooleanField(choices=[(True, 'Yes'), (False, 'No'), (None, 'N/A')], default=None, editable=False, verbose_name='Visit 1 virus result'), + model_name="studysubject", + name="virus_test_1", + field=models.NullBooleanField( + choices=[(True, "Yes"), (False, "No"), (None, "N/A")], + default=None, + editable=False, + verbose_name="Visit 1 virus result", + ), ), migrations.AddField( - model_name='studysubject', - name='virus_test_1_updated', - field=models.DateField(editable=False, null=True, verbose_name='Visit 1 virus result date'), + model_name="studysubject", + name="virus_test_1_updated", + field=models.DateField(editable=False, null=True, verbose_name="Visit 1 virus result date"), ), migrations.AddField( - model_name='studysubject', - name='virus_test_2', - field=models.NullBooleanField(choices=[(True, 'Yes'), (False, 'No'), (None, 'N/A')], default=None, editable=False, verbose_name='Visit 2 virus result'), + model_name="studysubject", + name="virus_test_2", + field=models.NullBooleanField( + choices=[(True, "Yes"), (False, "No"), (None, "N/A")], + default=None, + editable=False, + verbose_name="Visit 2 virus result", + ), ), migrations.AddField( - model_name='studysubject', - name='virus_test_2_updated', - field=models.DateField(editable=False, null=True, verbose_name='Visit 2 virus result date'), + model_name="studysubject", + name="virus_test_2_updated", + field=models.DateField(editable=False, null=True, verbose_name="Visit 2 virus result date"), ), migrations.AddField( - model_name='studysubject', - name='virus_test_3', - field=models.NullBooleanField(choices=[(True, 'Yes'), (False, 'No'), (None, 'N/A')], default=None, editable=False, verbose_name='Visit 3 virus result'), + model_name="studysubject", + name="virus_test_3", + field=models.NullBooleanField( + choices=[(True, "Yes"), (False, "No"), (None, "N/A")], + default=None, + editable=False, + verbose_name="Visit 3 virus result", + ), ), migrations.AddField( - model_name='studysubject', - name='virus_test_3_updated', - field=models.DateField(editable=False, null=True, verbose_name='Visit 3 virus result date'), + model_name="studysubject", + name="virus_test_3_updated", + field=models.DateField(editable=False, null=True, verbose_name="Visit 3 virus result date"), ), migrations.AddField( - model_name='studysubject', - name='virus_test_4', - field=models.NullBooleanField(choices=[(True, 'Yes'), (False, 'No'), (None, 'N/A')], default=None, editable=False, verbose_name='Visit 4 virus result'), + model_name="studysubject", + name="virus_test_4", + field=models.NullBooleanField( + choices=[(True, "Yes"), (False, "No"), (None, "N/A")], + default=None, + editable=False, + verbose_name="Visit 4 virus result", + ), ), migrations.AddField( - model_name='studysubject', - name='virus_test_4_updated', - field=models.DateField(editable=False, null=True, verbose_name='Visit 4 virus result date'), + model_name="studysubject", + name="virus_test_4_updated", + field=models.DateField(editable=False, null=True, verbose_name="Visit 4 virus result date"), ), migrations.AddField( - model_name='studysubject', - name='virus_test_5', - field=models.NullBooleanField(choices=[(True, 'Yes'), (False, 'No'), (None, 'N/A')], default=None, editable=False, verbose_name='Visit 5 virus result'), + model_name="studysubject", + name="virus_test_5", + field=models.NullBooleanField( + choices=[(True, "Yes"), (False, "No"), (None, "N/A")], + default=None, + editable=False, + verbose_name="Visit 5 virus result", + ), ), migrations.AddField( - model_name='studysubject', - name='virus_test_5_updated', - field=models.DateField(editable=False, null=True, verbose_name='Visit 5 virus result date'), + model_name="studysubject", + name="virus_test_5_updated", + field=models.DateField(editable=False, null=True, verbose_name="Visit 5 virus result date"), ), ] diff --git a/smash/web/migrations/0161_auto_20200416_0736.py b/smash/web/migrations/0161_auto_20200416_0736.py index f47b98109fba89724275000eecca39d9c9f94e8b..7a411d71a7f6d16ac2c2fb6f7c61bd79d24107e0 100644 --- a/smash/web/migrations/0161_auto_20200416_0736.py +++ b/smash/web/migrations/0161_auto_20200416_0736.py @@ -6,65 +6,76 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ - ('web', '0160_auto_20200415_1101'), + ("web", "0160_auto_20200415_1101"), ] operations = [ migrations.AddField( - model_name='study', - name='sample_mail_statistics', - field=models.BooleanField(default=False, verbose_name='Email with sample collections should use statistics'), + model_name="study", + name="sample_mail_statistics", + field=models.BooleanField( + default=False, verbose_name="Email with sample collections should use statistics" + ), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_1', - field=models.NullBooleanField(choices=[(True, 'Yes'), (False, 'No'), (None, 'N/A')], default=None, verbose_name='Visit 1 virus result'), + model_name="studysubject", + name="virus_test_1", + field=models.NullBooleanField( + choices=[(True, "Yes"), (False, "No"), (None, "N/A")], default=None, verbose_name="Visit 1 virus result" + ), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_1_updated', - field=models.DateField(blank=True, null=True, verbose_name='Visit 1 virus result date'), + model_name="studysubject", + name="virus_test_1_updated", + field=models.DateField(blank=True, null=True, verbose_name="Visit 1 virus result date"), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_2', - field=models.NullBooleanField(choices=[(True, 'Yes'), (False, 'No'), (None, 'N/A')], default=None, verbose_name='Visit 2 virus result'), + model_name="studysubject", + name="virus_test_2", + field=models.NullBooleanField( + choices=[(True, "Yes"), (False, "No"), (None, "N/A")], default=None, verbose_name="Visit 2 virus result" + ), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_2_updated', - field=models.DateField(blank=True, null=True, verbose_name='Visit 2 virus result date'), + model_name="studysubject", + name="virus_test_2_updated", + field=models.DateField(blank=True, null=True, verbose_name="Visit 2 virus result date"), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_3', - field=models.NullBooleanField(choices=[(True, 'Yes'), (False, 'No'), (None, 'N/A')], default=None, verbose_name='Visit 3 virus result'), + model_name="studysubject", + name="virus_test_3", + field=models.NullBooleanField( + choices=[(True, "Yes"), (False, "No"), (None, "N/A")], default=None, verbose_name="Visit 3 virus result" + ), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_3_updated', - field=models.DateField(blank=True, null=True, verbose_name='Visit 3 virus result date'), + model_name="studysubject", + name="virus_test_3_updated", + field=models.DateField(blank=True, null=True, verbose_name="Visit 3 virus result date"), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_4', - field=models.NullBooleanField(choices=[(True, 'Yes'), (False, 'No'), (None, 'N/A')], default=None, verbose_name='Visit 4 virus result'), + model_name="studysubject", + name="virus_test_4", + field=models.NullBooleanField( + choices=[(True, "Yes"), (False, "No"), (None, "N/A")], default=None, verbose_name="Visit 4 virus result" + ), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_4_updated', - field=models.DateField(blank=True, null=True, verbose_name='Visit 4 virus result date'), + model_name="studysubject", + name="virus_test_4_updated", + field=models.DateField(blank=True, null=True, verbose_name="Visit 4 virus result date"), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_5', - field=models.NullBooleanField(choices=[(True, 'Yes'), (False, 'No'), (None, 'N/A')], default=None, verbose_name='Visit 5 virus result'), + model_name="studysubject", + name="virus_test_5", + field=models.NullBooleanField( + choices=[(True, "Yes"), (False, "No"), (None, "N/A")], default=None, verbose_name="Visit 5 virus result" + ), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_5_updated', - field=models.DateField(blank=True, null=True, verbose_name='Visit 5 virus result date'), + model_name="studysubject", + name="virus_test_5_updated", + field=models.DateField(blank=True, null=True, verbose_name="Visit 5 virus result date"), ), ] diff --git a/smash/web/migrations/0168_rename_radcap_field.py b/smash/web/migrations/0168_rename_radcap_field.py index 9a5980708adb2bc17afcc0dedd91eccaae5452d1..c3e6554ff1c57c88326189cf926096a329a5ec81 100644 --- a/smash/web/migrations/0168_rename_radcap_field.py +++ b/smash/web/migrations/0168_rename_radcap_field.py @@ -18,20 +18,26 @@ def create_item(apps, type, value, name): def configuration_items(apps, schema_editor): - create_item(apps, RED_CAP_SAMPLE_DATE_FIELD_TYPE, "", - "Redcap field for sample date in the visit") + create_item(apps, RED_CAP_SAMPLE_DATE_FIELD_TYPE, "", "Redcap field for sample date in the visit") class Migration(migrations.Migration): dependencies = [ - ('web', '0167_auto_20200428_1110'), + ("web", "0167_auto_20200428_1110"), ] operations = [ migrations.RunSQL( - "update web_configurationitem set type = '" + RED_CAP_KIT_ID_FIELD_TYPE + "' where type = '" + RED_CAP_SAMPLE_DATE_FIELD_TYPE + "';"), + "update web_configurationitem set type = '" + + RED_CAP_KIT_ID_FIELD_TYPE + + "' where type = '" + + RED_CAP_SAMPLE_DATE_FIELD_TYPE + + "';" + ), migrations.RunSQL( - "update web_configurationitem set name = 'Redcap field for sample kit id in the visit' where type = '" + RED_CAP_KIT_ID_FIELD_TYPE + "';"), + "update web_configurationitem set name = 'Redcap field for sample kit id in the visit' where type = '" + + RED_CAP_KIT_ID_FIELD_TYPE + + "';" + ), migrations.RunPython(configuration_items), - ] diff --git a/smash/web/migrations/0177_auto_20201116_1508_squashed_0180_auto_20201117_0838.py b/smash/web/migrations/0177_auto_20201116_1508_squashed_0180_auto_20201117_0838.py index 565d4cd959653c751e5dca6f5eb8ead8b36d197e..d692d5c140358226914bafffaf0d6263f2077a83 100644 --- a/smash/web/migrations/0177_auto_20201116_1508_squashed_0180_auto_20201117_0838.py +++ b/smash/web/migrations/0177_auto_20201116_1508_squashed_0180_auto_20201117_0838.py @@ -5,25 +5,36 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0176_configurationitem_local_setting_clean'), + ("web", "0176_configurationitem_local_setting_clean"), ] operations = [ migrations.CreateModel( - name='PrivacyNotice', + name="PrivacyNotice", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('created_at', models.DateTimeField(auto_now_add=True)), - ('document', models.FileField(editable=False, upload_to='privacy_notices/', verbose_name='Study Privacy Notice file')), - ('updated_at', models.DateTimeField(auto_now=True)), - ('name', models.CharField(default='', max_length=255, verbose_name='Name')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("created_at", models.DateTimeField(auto_now_add=True)), + ( + "document", + models.FileField( + editable=False, upload_to="privacy_notices/", verbose_name="Study Privacy Notice file" + ), + ), + ("updated_at", models.DateTimeField(auto_now=True)), + ("name", models.CharField(default="", max_length=255, verbose_name="Name")), ], ), migrations.AddField( - model_name='study', - name='study_privacy_notice', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='studies', to='web.PrivacyNotice', verbose_name='Study Privacy Note'), + model_name="study", + name="study_privacy_notice", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="studies", + to="web.PrivacyNotice", + verbose_name="Study Privacy Note", + ), ), ] diff --git a/smash/web/migrations/0177_customstudysubjectfield_customstudysubjectvalue.py b/smash/web/migrations/0177_customstudysubjectfield_customstudysubjectvalue.py index 2e7a1dcad99d0e9f6c8983d3e350ccc2fb294531..053afbc6db84ede5d570f4094df5338999a79ce8 100644 --- a/smash/web/migrations/0177_customstudysubjectfield_customstudysubjectvalue.py +++ b/smash/web/migrations/0177_customstudysubjectfield_customstudysubjectvalue.py @@ -5,33 +5,69 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0176_configurationitem_local_setting_clean'), + ("web", "0176_configurationitem_local_setting_clean"), ] operations = [ migrations.CreateModel( - name='CustomStudySubjectField', + name="CustomStudySubjectField", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=64)), - ('type', models.CharField(choices=[('TEXT', 'Text'), ('BOOL', 'Boolean (True/False)'), ('INTEGER', 'Integer'), ('DOUBLE', 'Double (real number)'), ('DATE', 'Date'), ('SELECT_LIST', 'Select list')], max_length=20)), - ('possible_values', models.CharField(blank=True, default='', max_length=1024, null=True)), - ('default_value', models.CharField(blank=True, max_length=20, null=True)), - ('readonly', models.BooleanField(default=False)), - ('required', models.BooleanField(default=False)), - ('unique', models.BooleanField(default=False)), - ('study', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='web.Study', verbose_name='Study')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("name", models.CharField(max_length=64)), + ( + "type", + models.CharField( + choices=[ + ("TEXT", "Text"), + ("BOOL", "Boolean (True/False)"), + ("INTEGER", "Integer"), + ("DOUBLE", "Double (real number)"), + ("DATE", "Date"), + ("SELECT_LIST", "Select list"), + ], + max_length=20, + ), + ), + ("possible_values", models.CharField(blank=True, default="", max_length=1024, null=True)), + ("default_value", models.CharField(blank=True, max_length=20, null=True)), + ("readonly", models.BooleanField(default=False)), + ("required", models.BooleanField(default=False)), + ("unique", models.BooleanField(default=False)), + ( + "study", + models.ForeignKey( + editable=False, + on_delete=django.db.models.deletion.CASCADE, + to="web.Study", + verbose_name="Study", + ), + ), ], ), migrations.CreateModel( - name='CustomStudySubjectValue', + name="CustomStudySubjectValue", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('value', models.CharField(blank=True, max_length=2048, null=True)), - ('study_subject', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='web.StudySubject', verbose_name='Study')), - ('study_subject_field', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='web.CustomStudySubjectField', verbose_name='Custom Field')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("value", models.CharField(blank=True, max_length=2048, null=True)), + ( + "study_subject", + models.ForeignKey( + editable=False, + on_delete=django.db.models.deletion.CASCADE, + to="web.StudySubject", + verbose_name="Study", + ), + ), + ( + "study_subject_field", + models.ForeignKey( + editable=False, + on_delete=django.db.models.deletion.CASCADE, + to="web.CustomStudySubjectField", + verbose_name="Custom Field", + ), + ), ], ), ] diff --git a/smash/web/migrations/0178_auto_20201116_1250.py b/smash/web/migrations/0178_auto_20201116_1250.py index 1f94b8c9e8b6a8846490aa674d4156a807ac137d..1a8e45fefee99d859afbecfb02ab39673170551c 100644 --- a/smash/web/migrations/0178_auto_20201116_1250.py +++ b/smash/web/migrations/0178_auto_20201116_1250.py @@ -7,1350 +7,2015 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0177_customstudysubjectfield_customstudysubjectvalue'), + ("web", "0177_customstudysubjectfield_customstudysubjectvalue"), ] operations = [ migrations.AlterField( - model_name='appointment', - name='appointment_types', - field=models.ManyToManyField(blank=True, related_name='new_appointment', through='web.AppointmentTypeLink', to='web.AppointmentType', verbose_name='Appointment types'), - ), - migrations.AlterField( - model_name='appointment', - name='post_mail_sent', - field=models.BooleanField(default=False, verbose_name='Post mail sent'), - ), - migrations.AlterField( - model_name='appointment', - name='status', - field=models.CharField(choices=[('SCHEDULED', 'Scheduled'), ('FINISHED', 'Finished'), ('CANCELLED', 'Cancelled'), ('NO_SHOW', 'No Show')], default='SCHEDULED', max_length=20, verbose_name='Status'), - ), - migrations.AlterField( - model_name='appointment', - name='visit', - field=models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, to='web.Visit', verbose_name='Visit ID'), - ), - migrations.AlterField( - model_name='appointmentcolumns', - name='appointment_types', - field=models.BooleanField(default=True, verbose_name='Appointment types'), - ), - migrations.AlterField( - model_name='appointmentcolumns', - name='comment', - field=models.BooleanField(default=False, verbose_name='Comment'), - ), - migrations.AlterField( - model_name='appointmentcolumns', - name='datetime_when', - field=models.BooleanField(default=True, verbose_name='Comment'), - ), - migrations.AlterField( - model_name='appointmentcolumns', - name='flying_team', - field=models.BooleanField(default=False, verbose_name='Flying team'), - ), - migrations.AlterField( - model_name='appointmentcolumns', - name='length', - field=models.BooleanField(default=False, verbose_name='Appointment length'), - ), - migrations.AlterField( - model_name='appointmentcolumns', - name='location', - field=models.BooleanField(default=False, verbose_name='Location'), - ), - migrations.AlterField( - model_name='appointmentcolumns', - name='post_mail_sent', - field=models.BooleanField(default=False, verbose_name='Post mail sent'), - ), - migrations.AlterField( - model_name='appointmentcolumns', - name='room', - field=models.BooleanField(default=False, verbose_name='Room'), - ), - migrations.AlterField( - model_name='appointmentcolumns', - name='status', - field=models.BooleanField(default=False, verbose_name='Status'), - ), - migrations.AlterField( - model_name='appointmentcolumns', - name='worker_assigned', - field=models.BooleanField(default=False, verbose_name='Worker conducting the assessment'), - ), - migrations.AlterField( - model_name='appointmentlist', - name='type', - field=models.CharField(choices=[('GENERIC', 'Generic'), ('UNFINISHED', 'Unfinished'), ('APPROACHING', 'Approaching')], max_length=50, verbose_name='Type of list'), - ), - migrations.AlterField( - model_name='appointmenttype', - name='calendar_font_color', - field=models.CharField(default='#00000', max_length=2000, verbose_name='Calendar font color'), - ), - migrations.AlterField( - model_name='availability', - name='available_from', - field=models.TimeField(verbose_name='Available from'), - ), - migrations.AlterField( - model_name='availability', - name='available_till', - field=models.TimeField(verbose_name='Available until'), - ), - migrations.AlterField( - model_name='availability', - name='day_number', - field=models.IntegerField(choices=[(1, 'MONDAY'), (2, 'TUESDAY'), (3, 'WEDNESDAY'), (4, 'THURSDAY'), (5, 'FRIDAY'), (6, 'SATURDAY'), (7, 'SUNDAY')], verbose_name='Day of the week'), - ), - migrations.AlterField( - model_name='availability', - name='person', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.Worker', verbose_name='Worker'), - ), - migrations.AlterField( - model_name='configurationitem', - name='name', - field=models.CharField(editable=False, max_length=255, verbose_name='Name'), - ), - migrations.AlterField( - model_name='configurationitem', - name='type', - field=models.CharField(editable=False, max_length=50, verbose_name='Type'), - ), - migrations.AlterField( - model_name='configurationitem', - name='value', - field=models.CharField(max_length=1024, verbose_name='Value'), - ), - migrations.AlterField( - model_name='contactattempt', - name='datetime_when', - field=models.DateTimeField(help_text='When did the contact occurred?', verbose_name='When'), - ), - migrations.AlterField( - model_name='contactattempt', - name='subject', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.StudySubject', verbose_name='Subject'), + model_name="appointment", + name="appointment_types", + field=models.ManyToManyField( + blank=True, + related_name="new_appointment", + through="web.AppointmentTypeLink", + to="web.AppointmentType", + verbose_name="Appointment types", + ), ), migrations.AlterField( - model_name='contactattempt', - name='type', - field=models.CharField(choices=[('E', 'Email'), ('M', 'Post mail'), ('F', 'Face to face'), ('X', 'Fax'), ('P', 'Phone'), ('S', 'SMS')], default='P', max_length=2), + model_name="appointment", + name="post_mail_sent", + field=models.BooleanField(default=False, verbose_name="Post mail sent"), ), migrations.AlterField( - model_name='contactattempt', - name='worker', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='web.Worker', verbose_name='Worker'), + model_name="appointment", + name="status", + field=models.CharField( + choices=[ + ("SCHEDULED", "Scheduled"), + ("FINISHED", "Finished"), + ("CANCELLED", "Cancelled"), + ("NO_SHOW", "No Show"), + ], + default="SCHEDULED", + max_length=20, + verbose_name="Status", + ), ), migrations.AlterField( - model_name='customstudysubjectfield', - name='type', - field=models.CharField(choices=[('TEXT', 'Text'), ('BOOL', 'Boolean (True/False)'), ('INTEGER', 'Integer'), ('DOUBLE', 'Double (real number)'), ('DATE', 'Date'), ('SELECT_LIST', 'Select list'), ('FILE', 'File')], max_length=20), + model_name="appointment", + name="visit", + field=models.ForeignKey( + blank=True, + editable=False, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.Visit", + verbose_name="Visit ID", + ), ), migrations.AlterField( - model_name='holiday', - name='info', - field=models.TextField(blank=True, max_length=2000, verbose_name='Comments'), + model_name="appointmentcolumns", + name="appointment_types", + field=models.BooleanField(default=True, verbose_name="Appointment types"), ), migrations.AlterField( - model_name='holiday', - name='kind', - field=models.CharField(choices=[('H', 'Holiday'), ('X', 'Extra Availability')], default='H', help_text='Defines the kind of availability. Either Holiday or Extra Availability.', max_length=1), + model_name="appointmentcolumns", + name="comment", + field=models.BooleanField(default=False, verbose_name="Comment"), ), migrations.AlterField( - model_name='inconsistentfield', - name='inconsistent_subject', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.InconsistentSubject', verbose_name='Invalid fields'), + model_name="appointmentcolumns", + name="datetime_when", + field=models.BooleanField(default=True, verbose_name="Comment"), ), migrations.AlterField( - model_name='inconsistentfield', - name='name', - field=models.CharField(max_length=255, verbose_name='Field name'), + model_name="appointmentcolumns", + name="flying_team", + field=models.BooleanField(default=False, verbose_name="Flying team"), ), migrations.AlterField( - model_name='inconsistentfield', - name='redcap_value', - field=models.CharField(max_length=255, verbose_name='RED Cap value'), + model_name="appointmentcolumns", + name="length", + field=models.BooleanField(default=False, verbose_name="Appointment length"), ), migrations.AlterField( - model_name='inconsistentfield', - name='smash_value', - field=models.CharField(max_length=255, verbose_name='Smash value'), + model_name="appointmentcolumns", + name="location", + field=models.BooleanField(default=False, verbose_name="Location"), ), migrations.AlterField( - model_name='inconsistentsubject', - name='redcap_url', - field=models.CharField(blank=True, max_length=255, null=True, verbose_name='URL to RED Cap subject'), + model_name="appointmentcolumns", + name="post_mail_sent", + field=models.BooleanField(default=False, verbose_name="Post mail sent"), ), migrations.AlterField( - model_name='inconsistentsubject', - name='subject', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='web.StudySubject', verbose_name='Subject'), + model_name="appointmentcolumns", + name="room", + field=models.BooleanField(default=False, verbose_name="Room"), ), migrations.AlterField( - model_name='language', - name='image', - field=models.ImageField(upload_to=''), + model_name="appointmentcolumns", + name="status", + field=models.BooleanField(default=False, verbose_name="Status"), ), migrations.AlterField( - model_name='language', - name='locale', - field=models.CharField(choices=[('af_ZA', 'af_ZA'), ('am_ET', 'am_ET'), ('ar_AE', 'ar_AE'), ('ar_BH', 'ar_BH'), ('ar_DZ', 'ar_DZ'), ('ar_EG', 'ar_EG'), ('ar_IQ', 'ar_IQ'), ('ar_JO', 'ar_JO'), ('ar_KW', 'ar_KW'), ('ar_LB', 'ar_LB'), ('ar_LY', 'ar_LY'), ('ar_MA', 'ar_MA'), ('ar_OM', 'ar_OM'), ('ar_QA', 'ar_QA'), ('ar_SA', 'ar_SA'), ('ar_SY', 'ar_SY'), ('ar_TN', 'ar_TN'), ('ar_YE', 'ar_YE'), ('arn_CL', 'arn_CL'), ('as_IN', 'as_IN'), ('az_AZ', 'az_AZ'), ('az_AZ', 'az_AZ'), ('ba_RU', 'ba_RU'), ('be_BY', 'be_BY'), ('bg_BG', 'bg_BG'), ('bn_IN', 'bn_IN'), ('bo_BT', 'bo_BT'), ('bo_CN', 'bo_CN'), ('br_FR', 'br_FR'), ('bs_BA', 'bs_BA'), ('bs_BA', 'bs_BA'), ('ca_ES', 'ca_ES'), ('co_FR', 'co_FR'), ('cs_CZ', 'cs_CZ'), ('cy_GB', 'cy_GB'), ('da_DK', 'da_DK'), ('de_AT', 'de_AT'), ('de_CH', 'de_CH'), ('de_DE', 'de_DE'), ('de_LI', 'de_LI'), ('de_LU', 'de_LU'), ('div_MV', 'div_MV'), ('dsb_DE', 'dsb_DE'), ('el_GR', 'el_GR'), ('en_AU', 'en_AU'), ('en_BZ', 'en_BZ'), ('en_CA', 'en_CA'), ('en_CB', 'en_CB'), ('en_GB', 'en_GB'), ('en_IE', 'en_IE'), ('en_IN', 'en_IN'), ('en_IN', 'en_IN'), ('en_JA', 'en_JA'), ('en_MY', 'en_MY'), ('en_NZ', 'en_NZ'), ('en_PH', 'en_PH'), ('en_TT', 'en_TT'), ('en_US', 'en_US'), ('en_ZA', 'en_ZA'), ('en_ZW', 'en_ZW'), ('es_AR', 'es_AR'), ('es_BO', 'es_BO'), ('es_CL', 'es_CL'), ('es_CO', 'es_CO'), ('es_CR', 'es_CR'), ('es_DO', 'es_DO'), ('es_EC', 'es_EC'), ('es_ES', 'es_ES'), ('es_ES', 'es_ES'), ('es_GT', 'es_GT'), ('es_HN', 'es_HN'), ('es_MX', 'es_MX'), ('es_NI', 'es_NI'), ('es_PA', 'es_PA'), ('es_PE', 'es_PE'), ('es_PR', 'es_PR'), ('es_PY', 'es_PY'), ('es_SV', 'es_SV'), ('es_UR', 'es_UR'), ('es_US', 'es_US'), ('es_VE', 'es_VE'), ('et_EE', 'et_EE'), ('eu_ES', 'eu_ES'), ('fa_IR', 'fa_IR'), ('fi_FI', 'fi_FI'), ('fil_PH', 'fil_PH'), ('fo_FO', 'fo_FO'), ('fr_BE', 'fr_BE'), ('fr_CA', 'fr_CA'), ('fr_CH', 'fr_CH'), ('fr_FR', 'fr_FR'), ('fr_LU', 'fr_LU'), ('fr_MC', 'fr_MC'), ('fy_NL', 'fy_NL'), ('ga_IE', 'ga_IE'), ('gbz_AF', 'gbz_AF'), ('gl_ES', 'gl_ES'), ('gsw_FR', 'gsw_FR'), ('gu_IN', 'gu_IN'), ('ha_NG', 'ha_NG'), ('he_IL', 'he_IL'), ('hi_IN', 'hi_IN'), ('hr_BA', 'hr_BA'), ('hr_HR', 'hr_HR'), ('hu_HU', 'hu_HU'), ('hy_AM', 'hy_AM'), ('id_ID', 'id_ID'), ('ii_CN', 'ii_CN'), ('is_IS', 'is_IS'), ('it_CH', 'it_CH'), ('it_IT', 'it_IT'), ('iu_CA', 'iu_CA'), ('iu_CA', 'iu_CA'), ('ja_JP', 'ja_JP'), ('ka_GE', 'ka_GE'), ('kh_KH', 'kh_KH'), ('kk_KZ', 'kk_KZ'), ('kl_GL', 'kl_GL'), ('kn_IN', 'kn_IN'), ('ko_KR', 'ko_KR'), ('kok_IN', 'kok_IN'), ('ky_KG', 'ky_KG'), ('lb_LU', 'lb_LU'), ('lo_LA', 'lo_LA'), ('lt_LT', 'lt_LT'), ('lv_LV', 'lv_LV'), ('mi_NZ', 'mi_NZ'), ('mk_MK', 'mk_MK'), ('ml_IN', 'ml_IN'), ('mn_CN', 'mn_CN'), ('mn_MN', 'mn_MN'), ('moh_CA', 'moh_CA'), ('mr_IN', 'mr_IN'), ('ms_BN', 'ms_BN'), ('ms_MY', 'ms_MY'), ('mt_MT', 'mt_MT'), ('nb_NO', 'nb_NO'), ('ne_NP', 'ne_NP'), ('nl_BE', 'nl_BE'), ('nl_NL', 'nl_NL'), ('nn_NO', 'nn_NO'), ('ns_ZA', 'ns_ZA'), ('oc_FR', 'oc_FR'), ('or_IN', 'or_IN'), ('pa_IN', 'pa_IN'), ('pl_PL', 'pl_PL'), ('ps_AF', 'ps_AF'), ('pt_BR', 'pt_BR'), ('pt_PT', 'pt_PT'), ('qut_GT', 'qut_GT'), ('quz_BO', 'quz_BO'), ('quz_EC', 'quz_EC'), ('quz_PE', 'quz_PE'), ('rm_CH', 'rm_CH'), ('ro_RO', 'ro_RO'), ('ru_RU', 'ru_RU'), ('rw_RW', 'rw_RW'), ('sa_IN', 'sa_IN'), ('sah_RU', 'sah_RU'), ('se_FI', 'se_FI'), ('se_NO', 'se_NO'), ('se_SE', 'se_SE'), ('si_LK', 'si_LK'), ('sk_SK', 'sk_SK'), ('sl_SI', 'sl_SI'), ('sma_NO', 'sma_NO'), ('sma_SE', 'sma_SE'), ('smj_NO', 'smj_NO'), ('smj_SE', 'smj_SE'), ('smn_FI', 'smn_FI'), ('sms_FI', 'sms_FI'), ('sq_AL', 'sq_AL'), ('sr_BA', 'sr_BA'), ('sr_BA', 'sr_BA'), ('sr_SP', 'sr_SP'), ('sr_SP', 'sr_SP'), ('sv_FI', 'sv_FI'), ('sv_SE', 'sv_SE'), ('sw_KE', 'sw_KE'), ('syr_SY', 'syr_SY'), ('ta_IN', 'ta_IN'), ('te_IN', 'te_IN'), ('tg_TJ', 'tg_TJ'), ('th_TH', 'th_TH'), ('tk_TM', 'tk_TM'), ('tmz_DZ', 'tmz_DZ'), ('tn_ZA', 'tn_ZA'), ('tr_TR', 'tr_TR'), ('tt_RU', 'tt_RU'), ('ug_CN', 'ug_CN'), ('uk_UA', 'uk_UA'), ('ur_IN', 'ur_IN'), ('ur_PK', 'ur_PK'), ('uz_UZ', 'uz_UZ'), ('uz_UZ', 'uz_UZ'), ('vi_VN', 'vi_VN'), ('wen_DE', 'wen_DE'), ('wo_SN', 'wo_SN'), ('xh_ZA', 'xh_ZA'), ('yo_NG', 'yo_NG'), ('zh_CHS', 'zh_CHS'), ('zh_CHT', 'zh_CHT'), ('zh_CN', 'zh_CN'), ('zh_HK', 'zh_HK'), ('zh_MO', 'zh_MO'), ('zh_SG', 'zh_SG'), ('zh_TW', 'zh_TW'), ('zu_ZA', 'zu_ZA')], default='fr_FR', max_length=10), + model_name="appointmentcolumns", + name="worker_assigned", + field=models.BooleanField(default=False, verbose_name="Worker conducting the assessment"), ), migrations.AlterField( - model_name='language', - name='windows_locale_name', - field=models.CharField(choices=[('af_ZA', 'af_ZA'), ('am_ET', 'am_ET'), ('ar_AE', 'ar_AE'), ('ar_BH', 'ar_BH'), ('ar_DZ', 'ar_DZ'), ('ar_EG', 'ar_EG'), ('ar_IQ', 'ar_IQ'), ('ar_JO', 'ar_JO'), ('ar_KW', 'ar_KW'), ('ar_LB', 'ar_LB'), ('ar_LY', 'ar_LY'), ('ar_MA', 'ar_MA'), ('ar_OM', 'ar_OM'), ('ar_QA', 'ar_QA'), ('ar_SA', 'ar_SA'), ('ar_SY', 'ar_SY'), ('ar_TN', 'ar_TN'), ('ar_YE', 'ar_YE'), ('arn_CL', 'arn_CL'), ('as_IN', 'as_IN'), ('az_AZ', 'az_AZ'), ('az_AZ', 'az_AZ'), ('ba_RU', 'ba_RU'), ('be_BY', 'be_BY'), ('bg_BG', 'bg_BG'), ('bn_IN', 'bn_IN'), ('bo_BT', 'bo_BT'), ('bo_CN', 'bo_CN'), ('br_FR', 'br_FR'), ('bs_BA', 'bs_BA'), ('bs_BA', 'bs_BA'), ('ca_ES', 'ca_ES'), ('co_FR', 'co_FR'), ('cs_CZ', 'cs_CZ'), ('cy_GB', 'cy_GB'), ('da_DK', 'da_DK'), ('de_AT', 'de_AT'), ('de_CH', 'de_CH'), ('de_DE', 'de_DE'), ('de_LI', 'de_LI'), ('de_LU', 'de_LU'), ('div_MV', 'div_MV'), ('dsb_DE', 'dsb_DE'), ('el_GR', 'el_GR'), ('en_AU', 'en_AU'), ('en_BZ', 'en_BZ'), ('en_CA', 'en_CA'), ('en_CB', 'en_CB'), ('en_GB', 'en_GB'), ('en_IE', 'en_IE'), ('en_IN', 'en_IN'), ('en_IN', 'en_IN'), ('en_JA', 'en_JA'), ('en_MY', 'en_MY'), ('en_NZ', 'en_NZ'), ('en_PH', 'en_PH'), ('en_TT', 'en_TT'), ('en_US', 'en_US'), ('en_ZA', 'en_ZA'), ('en_ZW', 'en_ZW'), ('es_AR', 'es_AR'), ('es_BO', 'es_BO'), ('es_CL', 'es_CL'), ('es_CO', 'es_CO'), ('es_CR', 'es_CR'), ('es_DO', 'es_DO'), ('es_EC', 'es_EC'), ('es_ES', 'es_ES'), ('es_ES', 'es_ES'), ('es_GT', 'es_GT'), ('es_HN', 'es_HN'), ('es_MX', 'es_MX'), ('es_NI', 'es_NI'), ('es_PA', 'es_PA'), ('es_PE', 'es_PE'), ('es_PR', 'es_PR'), ('es_PY', 'es_PY'), ('es_SV', 'es_SV'), ('es_UR', 'es_UR'), ('es_US', 'es_US'), ('es_VE', 'es_VE'), ('et_EE', 'et_EE'), ('eu_ES', 'eu_ES'), ('fa_IR', 'fa_IR'), ('fi_FI', 'fi_FI'), ('fil_PH', 'fil_PH'), ('fo_FO', 'fo_FO'), ('fr_BE', 'fr_BE'), ('fr_CA', 'fr_CA'), ('fr_CH', 'fr_CH'), ('fr_FR', 'fr_FR'), ('fr_LU', 'fr_LU'), ('fr_MC', 'fr_MC'), ('fy_NL', 'fy_NL'), ('ga_IE', 'ga_IE'), ('gbz_AF', 'gbz_AF'), ('gl_ES', 'gl_ES'), ('gsw_FR', 'gsw_FR'), ('gu_IN', 'gu_IN'), ('ha_NG', 'ha_NG'), ('he_IL', 'he_IL'), ('hi_IN', 'hi_IN'), ('hr_BA', 'hr_BA'), ('hr_HR', 'hr_HR'), ('hu_HU', 'hu_HU'), ('hy_AM', 'hy_AM'), ('id_ID', 'id_ID'), ('ii_CN', 'ii_CN'), ('is_IS', 'is_IS'), ('it_CH', 'it_CH'), ('it_IT', 'it_IT'), ('iu_CA', 'iu_CA'), ('iu_CA', 'iu_CA'), ('ja_JP', 'ja_JP'), ('ka_GE', 'ka_GE'), ('kh_KH', 'kh_KH'), ('kk_KZ', 'kk_KZ'), ('kl_GL', 'kl_GL'), ('kn_IN', 'kn_IN'), ('ko_KR', 'ko_KR'), ('kok_IN', 'kok_IN'), ('ky_KG', 'ky_KG'), ('lb_LU', 'lb_LU'), ('lo_LA', 'lo_LA'), ('lt_LT', 'lt_LT'), ('lv_LV', 'lv_LV'), ('mi_NZ', 'mi_NZ'), ('mk_MK', 'mk_MK'), ('ml_IN', 'ml_IN'), ('mn_CN', 'mn_CN'), ('mn_MN', 'mn_MN'), ('moh_CA', 'moh_CA'), ('mr_IN', 'mr_IN'), ('ms_BN', 'ms_BN'), ('ms_MY', 'ms_MY'), ('mt_MT', 'mt_MT'), ('nb_NO', 'nb_NO'), ('ne_NP', 'ne_NP'), ('nl_BE', 'nl_BE'), ('nl_NL', 'nl_NL'), ('nn_NO', 'nn_NO'), ('ns_ZA', 'ns_ZA'), ('oc_FR', 'oc_FR'), ('or_IN', 'or_IN'), ('pa_IN', 'pa_IN'), ('pl_PL', 'pl_PL'), ('ps_AF', 'ps_AF'), ('pt_BR', 'pt_BR'), ('pt_PT', 'pt_PT'), ('qut_GT', 'qut_GT'), ('quz_BO', 'quz_BO'), ('quz_EC', 'quz_EC'), ('quz_PE', 'quz_PE'), ('rm_CH', 'rm_CH'), ('ro_RO', 'ro_RO'), ('ru_RU', 'ru_RU'), ('rw_RW', 'rw_RW'), ('sa_IN', 'sa_IN'), ('sah_RU', 'sah_RU'), ('se_FI', 'se_FI'), ('se_NO', 'se_NO'), ('se_SE', 'se_SE'), ('si_LK', 'si_LK'), ('sk_SK', 'sk_SK'), ('sl_SI', 'sl_SI'), ('sma_NO', 'sma_NO'), ('sma_SE', 'sma_SE'), ('smj_NO', 'smj_NO'), ('smj_SE', 'smj_SE'), ('smn_FI', 'smn_FI'), ('sms_FI', 'sms_FI'), ('sq_AL', 'sq_AL'), ('sr_BA', 'sr_BA'), ('sr_BA', 'sr_BA'), ('sr_SP', 'sr_SP'), ('sr_SP', 'sr_SP'), ('sv_FI', 'sv_FI'), ('sv_SE', 'sv_SE'), ('sw_KE', 'sw_KE'), ('syr_SY', 'syr_SY'), ('ta_IN', 'ta_IN'), ('te_IN', 'te_IN'), ('tg_TJ', 'tg_TJ'), ('th_TH', 'th_TH'), ('tk_TM', 'tk_TM'), ('tmz_DZ', 'tmz_DZ'), ('tn_ZA', 'tn_ZA'), ('tr_TR', 'tr_TR'), ('tt_RU', 'tt_RU'), ('ug_CN', 'ug_CN'), ('uk_UA', 'uk_UA'), ('ur_IN', 'ur_IN'), ('ur_PK', 'ur_PK'), ('uz_UZ', 'uz_UZ'), ('uz_UZ', 'uz_UZ'), ('vi_VN', 'vi_VN'), ('wen_DE', 'wen_DE'), ('wo_SN', 'wo_SN'), ('xh_ZA', 'xh_ZA'), ('yo_NG', 'yo_NG'), ('zh_CHS', 'zh_CHS'), ('zh_CHT', 'zh_CHT'), ('zh_CN', 'zh_CN'), ('zh_HK', 'zh_HK'), ('zh_MO', 'zh_MO'), ('zh_SG', 'zh_SG'), ('zh_TW', 'zh_TW'), ('zu_ZA', 'zu_ZA')], default='French', max_length=10), + model_name="appointmentlist", + name="type", + field=models.CharField( + choices=[("GENERIC", "Generic"), ("UNFINISHED", "Unfinished"), ("APPROACHING", "Approaching")], + max_length=50, + verbose_name="Type of list", + ), ), migrations.AlterField( - model_name='location', - name='color', - field=models.CharField(blank=True, default='', max_length=20, verbose_name='Calendar appointment color'), + model_name="appointmenttype", + name="calendar_font_color", + field=models.CharField(default="#00000", max_length=2000, verbose_name="Calendar font color"), ), migrations.AlterField( - model_name='mailtemplate', - name='context', - field=models.CharField(choices=[('A', 'Appointment'), ('S', 'Subject'), ('V', 'Visit'), ('C', 'Voucher')], max_length=1), + model_name="availability", + name="available_from", + field=models.TimeField(verbose_name="Available from"), ), migrations.AlterField( - model_name='mailtemplate', - name='template_file', - field=models.FileField(upload_to='templates/'), + model_name="availability", + name="available_till", + field=models.TimeField(verbose_name="Available until"), ), migrations.AlterField( - model_name='missingsubject', - name='ignore', - field=models.BooleanField(default=False, verbose_name='Ignore missing subject'), + model_name="availability", + name="day_number", + field=models.IntegerField( + choices=[ + (1, "MONDAY"), + (2, "TUESDAY"), + (3, "WEDNESDAY"), + (4, "THURSDAY"), + (5, "FRIDAY"), + (6, "SATURDAY"), + (7, "SUNDAY"), + ], + verbose_name="Day of the week", + ), ), migrations.AlterField( - model_name='missingsubject', - name='redcap_id', - field=models.CharField(blank=True, max_length=255, null=True, verbose_name='RED Cap id'), + model_name="availability", + name="person", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, to="web.Worker", verbose_name="Worker" + ), ), migrations.AlterField( - model_name='missingsubject', - name='redcap_url', - field=models.CharField(blank=True, max_length=255, null=True, verbose_name='URL to RED Cap subject'), + model_name="configurationitem", + name="name", + field=models.CharField(editable=False, max_length=255, verbose_name="Name"), ), migrations.AlterField( - model_name='missingsubject', - name='subject', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='web.StudySubject', verbose_name='Subject'), + model_name="configurationitem", + name="type", + field=models.CharField(editable=False, max_length=50, verbose_name="Type"), ), migrations.AlterField( - model_name='provenance', - name='modification_author', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='web.Worker', verbose_name='Worker who modified the row'), + model_name="configurationitem", + name="value", + field=models.CharField(max_length=1024, verbose_name="Value"), ), migrations.AlterField( - model_name='provenance', - name='modification_date', - field=models.DateTimeField(auto_now_add=True, verbose_name='Modified on'), + model_name="contactattempt", + name="datetime_when", + field=models.DateTimeField(help_text="When did the contact occurred?", verbose_name="When"), ), migrations.AlterField( - model_name='provenance', - name='modification_description', - field=models.CharField(max_length=20480, verbose_name='Description'), + model_name="contactattempt", + name="subject", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, to="web.StudySubject", verbose_name="Subject" + ), ), migrations.AlterField( - model_name='provenance', - name='modified_field', - field=models.CharField(blank='', max_length=1024, verbose_name='Modified field'), + model_name="contactattempt", + name="type", + field=models.CharField( + choices=[ + ("E", "Email"), + ("M", "Post mail"), + ("F", "Face to face"), + ("X", "Fax"), + ("P", "Phone"), + ("S", "SMS"), + ], + default="P", + max_length=2, + ), ), migrations.AlterField( - model_name='provenance', - name='new_value', - field=models.CharField(blank=True, max_length=2048, null=True, verbose_name='New Value'), + model_name="contactattempt", + name="worker", + field=models.ForeignKey( + null=True, on_delete=django.db.models.deletion.CASCADE, to="web.Worker", verbose_name="Worker" + ), + ), + migrations.AlterField( + model_name="customstudysubjectfield", + name="type", + field=models.CharField( + choices=[ + ("TEXT", "Text"), + ("BOOL", "Boolean (True/False)"), + ("INTEGER", "Integer"), + ("DOUBLE", "Double (real number)"), + ("DATE", "Date"), + ("SELECT_LIST", "Select list"), + ("FILE", "File"), + ], + max_length=20, + ), + ), + migrations.AlterField( + model_name="holiday", + name="info", + field=models.TextField(blank=True, max_length=2000, verbose_name="Comments"), + ), + migrations.AlterField( + model_name="holiday", + name="kind", + field=models.CharField( + choices=[("H", "Holiday"), ("X", "Extra Availability")], + default="H", + help_text="Defines the kind of availability. Either Holiday or Extra Availability.", + max_length=1, + ), + ), + migrations.AlterField( + model_name="inconsistentfield", + name="inconsistent_subject", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, to="web.InconsistentSubject", verbose_name="Invalid fields" + ), + ), + migrations.AlterField( + model_name="inconsistentfield", + name="name", + field=models.CharField(max_length=255, verbose_name="Field name"), + ), + migrations.AlterField( + model_name="inconsistentfield", + name="redcap_value", + field=models.CharField(max_length=255, verbose_name="RED Cap value"), + ), + migrations.AlterField( + model_name="inconsistentfield", + name="smash_value", + field=models.CharField(max_length=255, verbose_name="Smash value"), + ), + migrations.AlterField( + model_name="inconsistentsubject", + name="redcap_url", + field=models.CharField(blank=True, max_length=255, null=True, verbose_name="URL to RED Cap subject"), + ), + migrations.AlterField( + model_name="inconsistentsubject", + name="subject", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.StudySubject", + verbose_name="Subject", + ), + ), + migrations.AlterField( + model_name="language", + name="image", + field=models.ImageField(upload_to=""), + ), + migrations.AlterField( + model_name="language", + name="locale", + field=models.CharField( + choices=[ + ("af_ZA", "af_ZA"), + ("am_ET", "am_ET"), + ("ar_AE", "ar_AE"), + ("ar_BH", "ar_BH"), + ("ar_DZ", "ar_DZ"), + ("ar_EG", "ar_EG"), + ("ar_IQ", "ar_IQ"), + ("ar_JO", "ar_JO"), + ("ar_KW", "ar_KW"), + ("ar_LB", "ar_LB"), + ("ar_LY", "ar_LY"), + ("ar_MA", "ar_MA"), + ("ar_OM", "ar_OM"), + ("ar_QA", "ar_QA"), + ("ar_SA", "ar_SA"), + ("ar_SY", "ar_SY"), + ("ar_TN", "ar_TN"), + ("ar_YE", "ar_YE"), + ("arn_CL", "arn_CL"), + ("as_IN", "as_IN"), + ("az_AZ", "az_AZ"), + ("az_AZ", "az_AZ"), + ("ba_RU", "ba_RU"), + ("be_BY", "be_BY"), + ("bg_BG", "bg_BG"), + ("bn_IN", "bn_IN"), + ("bo_BT", "bo_BT"), + ("bo_CN", "bo_CN"), + ("br_FR", "br_FR"), + ("bs_BA", "bs_BA"), + ("bs_BA", "bs_BA"), + ("ca_ES", "ca_ES"), + ("co_FR", "co_FR"), + ("cs_CZ", "cs_CZ"), + ("cy_GB", "cy_GB"), + ("da_DK", "da_DK"), + ("de_AT", "de_AT"), + ("de_CH", "de_CH"), + ("de_DE", "de_DE"), + ("de_LI", "de_LI"), + ("de_LU", "de_LU"), + ("div_MV", "div_MV"), + ("dsb_DE", "dsb_DE"), + ("el_GR", "el_GR"), + ("en_AU", "en_AU"), + ("en_BZ", "en_BZ"), + ("en_CA", "en_CA"), + ("en_CB", "en_CB"), + ("en_GB", "en_GB"), + ("en_IE", "en_IE"), + ("en_IN", "en_IN"), + ("en_IN", "en_IN"), + ("en_JA", "en_JA"), + ("en_MY", "en_MY"), + ("en_NZ", "en_NZ"), + ("en_PH", "en_PH"), + ("en_TT", "en_TT"), + ("en_US", "en_US"), + ("en_ZA", "en_ZA"), + ("en_ZW", "en_ZW"), + ("es_AR", "es_AR"), + ("es_BO", "es_BO"), + ("es_CL", "es_CL"), + ("es_CO", "es_CO"), + ("es_CR", "es_CR"), + ("es_DO", "es_DO"), + ("es_EC", "es_EC"), + ("es_ES", "es_ES"), + ("es_ES", "es_ES"), + ("es_GT", "es_GT"), + ("es_HN", "es_HN"), + ("es_MX", "es_MX"), + ("es_NI", "es_NI"), + ("es_PA", "es_PA"), + ("es_PE", "es_PE"), + ("es_PR", "es_PR"), + ("es_PY", "es_PY"), + ("es_SV", "es_SV"), + ("es_UR", "es_UR"), + ("es_US", "es_US"), + ("es_VE", "es_VE"), + ("et_EE", "et_EE"), + ("eu_ES", "eu_ES"), + ("fa_IR", "fa_IR"), + ("fi_FI", "fi_FI"), + ("fil_PH", "fil_PH"), + ("fo_FO", "fo_FO"), + ("fr_BE", "fr_BE"), + ("fr_CA", "fr_CA"), + ("fr_CH", "fr_CH"), + ("fr_FR", "fr_FR"), + ("fr_LU", "fr_LU"), + ("fr_MC", "fr_MC"), + ("fy_NL", "fy_NL"), + ("ga_IE", "ga_IE"), + ("gbz_AF", "gbz_AF"), + ("gl_ES", "gl_ES"), + ("gsw_FR", "gsw_FR"), + ("gu_IN", "gu_IN"), + ("ha_NG", "ha_NG"), + ("he_IL", "he_IL"), + ("hi_IN", "hi_IN"), + ("hr_BA", "hr_BA"), + ("hr_HR", "hr_HR"), + ("hu_HU", "hu_HU"), + ("hy_AM", "hy_AM"), + ("id_ID", "id_ID"), + ("ii_CN", "ii_CN"), + ("is_IS", "is_IS"), + ("it_CH", "it_CH"), + ("it_IT", "it_IT"), + ("iu_CA", "iu_CA"), + ("iu_CA", "iu_CA"), + ("ja_JP", "ja_JP"), + ("ka_GE", "ka_GE"), + ("kh_KH", "kh_KH"), + ("kk_KZ", "kk_KZ"), + ("kl_GL", "kl_GL"), + ("kn_IN", "kn_IN"), + ("ko_KR", "ko_KR"), + ("kok_IN", "kok_IN"), + ("ky_KG", "ky_KG"), + ("lb_LU", "lb_LU"), + ("lo_LA", "lo_LA"), + ("lt_LT", "lt_LT"), + ("lv_LV", "lv_LV"), + ("mi_NZ", "mi_NZ"), + ("mk_MK", "mk_MK"), + ("ml_IN", "ml_IN"), + ("mn_CN", "mn_CN"), + ("mn_MN", "mn_MN"), + ("moh_CA", "moh_CA"), + ("mr_IN", "mr_IN"), + ("ms_BN", "ms_BN"), + ("ms_MY", "ms_MY"), + ("mt_MT", "mt_MT"), + ("nb_NO", "nb_NO"), + ("ne_NP", "ne_NP"), + ("nl_BE", "nl_BE"), + ("nl_NL", "nl_NL"), + ("nn_NO", "nn_NO"), + ("ns_ZA", "ns_ZA"), + ("oc_FR", "oc_FR"), + ("or_IN", "or_IN"), + ("pa_IN", "pa_IN"), + ("pl_PL", "pl_PL"), + ("ps_AF", "ps_AF"), + ("pt_BR", "pt_BR"), + ("pt_PT", "pt_PT"), + ("qut_GT", "qut_GT"), + ("quz_BO", "quz_BO"), + ("quz_EC", "quz_EC"), + ("quz_PE", "quz_PE"), + ("rm_CH", "rm_CH"), + ("ro_RO", "ro_RO"), + ("ru_RU", "ru_RU"), + ("rw_RW", "rw_RW"), + ("sa_IN", "sa_IN"), + ("sah_RU", "sah_RU"), + ("se_FI", "se_FI"), + ("se_NO", "se_NO"), + ("se_SE", "se_SE"), + ("si_LK", "si_LK"), + ("sk_SK", "sk_SK"), + ("sl_SI", "sl_SI"), + ("sma_NO", "sma_NO"), + ("sma_SE", "sma_SE"), + ("smj_NO", "smj_NO"), + ("smj_SE", "smj_SE"), + ("smn_FI", "smn_FI"), + ("sms_FI", "sms_FI"), + ("sq_AL", "sq_AL"), + ("sr_BA", "sr_BA"), + ("sr_BA", "sr_BA"), + ("sr_SP", "sr_SP"), + ("sr_SP", "sr_SP"), + ("sv_FI", "sv_FI"), + ("sv_SE", "sv_SE"), + ("sw_KE", "sw_KE"), + ("syr_SY", "syr_SY"), + ("ta_IN", "ta_IN"), + ("te_IN", "te_IN"), + ("tg_TJ", "tg_TJ"), + ("th_TH", "th_TH"), + ("tk_TM", "tk_TM"), + ("tmz_DZ", "tmz_DZ"), + ("tn_ZA", "tn_ZA"), + ("tr_TR", "tr_TR"), + ("tt_RU", "tt_RU"), + ("ug_CN", "ug_CN"), + ("uk_UA", "uk_UA"), + ("ur_IN", "ur_IN"), + ("ur_PK", "ur_PK"), + ("uz_UZ", "uz_UZ"), + ("uz_UZ", "uz_UZ"), + ("vi_VN", "vi_VN"), + ("wen_DE", "wen_DE"), + ("wo_SN", "wo_SN"), + ("xh_ZA", "xh_ZA"), + ("yo_NG", "yo_NG"), + ("zh_CHS", "zh_CHS"), + ("zh_CHT", "zh_CHT"), + ("zh_CN", "zh_CN"), + ("zh_HK", "zh_HK"), + ("zh_MO", "zh_MO"), + ("zh_SG", "zh_SG"), + ("zh_TW", "zh_TW"), + ("zu_ZA", "zu_ZA"), + ], + default="fr_FR", + max_length=10, + ), + ), + migrations.AlterField( + model_name="language", + name="windows_locale_name", + field=models.CharField( + choices=[ + ("af_ZA", "af_ZA"), + ("am_ET", "am_ET"), + ("ar_AE", "ar_AE"), + ("ar_BH", "ar_BH"), + ("ar_DZ", "ar_DZ"), + ("ar_EG", "ar_EG"), + ("ar_IQ", "ar_IQ"), + ("ar_JO", "ar_JO"), + ("ar_KW", "ar_KW"), + ("ar_LB", "ar_LB"), + ("ar_LY", "ar_LY"), + ("ar_MA", "ar_MA"), + ("ar_OM", "ar_OM"), + ("ar_QA", "ar_QA"), + ("ar_SA", "ar_SA"), + ("ar_SY", "ar_SY"), + ("ar_TN", "ar_TN"), + ("ar_YE", "ar_YE"), + ("arn_CL", "arn_CL"), + ("as_IN", "as_IN"), + ("az_AZ", "az_AZ"), + ("az_AZ", "az_AZ"), + ("ba_RU", "ba_RU"), + ("be_BY", "be_BY"), + ("bg_BG", "bg_BG"), + ("bn_IN", "bn_IN"), + ("bo_BT", "bo_BT"), + ("bo_CN", "bo_CN"), + ("br_FR", "br_FR"), + ("bs_BA", "bs_BA"), + ("bs_BA", "bs_BA"), + ("ca_ES", "ca_ES"), + ("co_FR", "co_FR"), + ("cs_CZ", "cs_CZ"), + ("cy_GB", "cy_GB"), + ("da_DK", "da_DK"), + ("de_AT", "de_AT"), + ("de_CH", "de_CH"), + ("de_DE", "de_DE"), + ("de_LI", "de_LI"), + ("de_LU", "de_LU"), + ("div_MV", "div_MV"), + ("dsb_DE", "dsb_DE"), + ("el_GR", "el_GR"), + ("en_AU", "en_AU"), + ("en_BZ", "en_BZ"), + ("en_CA", "en_CA"), + ("en_CB", "en_CB"), + ("en_GB", "en_GB"), + ("en_IE", "en_IE"), + ("en_IN", "en_IN"), + ("en_IN", "en_IN"), + ("en_JA", "en_JA"), + ("en_MY", "en_MY"), + ("en_NZ", "en_NZ"), + ("en_PH", "en_PH"), + ("en_TT", "en_TT"), + ("en_US", "en_US"), + ("en_ZA", "en_ZA"), + ("en_ZW", "en_ZW"), + ("es_AR", "es_AR"), + ("es_BO", "es_BO"), + ("es_CL", "es_CL"), + ("es_CO", "es_CO"), + ("es_CR", "es_CR"), + ("es_DO", "es_DO"), + ("es_EC", "es_EC"), + ("es_ES", "es_ES"), + ("es_ES", "es_ES"), + ("es_GT", "es_GT"), + ("es_HN", "es_HN"), + ("es_MX", "es_MX"), + ("es_NI", "es_NI"), + ("es_PA", "es_PA"), + ("es_PE", "es_PE"), + ("es_PR", "es_PR"), + ("es_PY", "es_PY"), + ("es_SV", "es_SV"), + ("es_UR", "es_UR"), + ("es_US", "es_US"), + ("es_VE", "es_VE"), + ("et_EE", "et_EE"), + ("eu_ES", "eu_ES"), + ("fa_IR", "fa_IR"), + ("fi_FI", "fi_FI"), + ("fil_PH", "fil_PH"), + ("fo_FO", "fo_FO"), + ("fr_BE", "fr_BE"), + ("fr_CA", "fr_CA"), + ("fr_CH", "fr_CH"), + ("fr_FR", "fr_FR"), + ("fr_LU", "fr_LU"), + ("fr_MC", "fr_MC"), + ("fy_NL", "fy_NL"), + ("ga_IE", "ga_IE"), + ("gbz_AF", "gbz_AF"), + ("gl_ES", "gl_ES"), + ("gsw_FR", "gsw_FR"), + ("gu_IN", "gu_IN"), + ("ha_NG", "ha_NG"), + ("he_IL", "he_IL"), + ("hi_IN", "hi_IN"), + ("hr_BA", "hr_BA"), + ("hr_HR", "hr_HR"), + ("hu_HU", "hu_HU"), + ("hy_AM", "hy_AM"), + ("id_ID", "id_ID"), + ("ii_CN", "ii_CN"), + ("is_IS", "is_IS"), + ("it_CH", "it_CH"), + ("it_IT", "it_IT"), + ("iu_CA", "iu_CA"), + ("iu_CA", "iu_CA"), + ("ja_JP", "ja_JP"), + ("ka_GE", "ka_GE"), + ("kh_KH", "kh_KH"), + ("kk_KZ", "kk_KZ"), + ("kl_GL", "kl_GL"), + ("kn_IN", "kn_IN"), + ("ko_KR", "ko_KR"), + ("kok_IN", "kok_IN"), + ("ky_KG", "ky_KG"), + ("lb_LU", "lb_LU"), + ("lo_LA", "lo_LA"), + ("lt_LT", "lt_LT"), + ("lv_LV", "lv_LV"), + ("mi_NZ", "mi_NZ"), + ("mk_MK", "mk_MK"), + ("ml_IN", "ml_IN"), + ("mn_CN", "mn_CN"), + ("mn_MN", "mn_MN"), + ("moh_CA", "moh_CA"), + ("mr_IN", "mr_IN"), + ("ms_BN", "ms_BN"), + ("ms_MY", "ms_MY"), + ("mt_MT", "mt_MT"), + ("nb_NO", "nb_NO"), + ("ne_NP", "ne_NP"), + ("nl_BE", "nl_BE"), + ("nl_NL", "nl_NL"), + ("nn_NO", "nn_NO"), + ("ns_ZA", "ns_ZA"), + ("oc_FR", "oc_FR"), + ("or_IN", "or_IN"), + ("pa_IN", "pa_IN"), + ("pl_PL", "pl_PL"), + ("ps_AF", "ps_AF"), + ("pt_BR", "pt_BR"), + ("pt_PT", "pt_PT"), + ("qut_GT", "qut_GT"), + ("quz_BO", "quz_BO"), + ("quz_EC", "quz_EC"), + ("quz_PE", "quz_PE"), + ("rm_CH", "rm_CH"), + ("ro_RO", "ro_RO"), + ("ru_RU", "ru_RU"), + ("rw_RW", "rw_RW"), + ("sa_IN", "sa_IN"), + ("sah_RU", "sah_RU"), + ("se_FI", "se_FI"), + ("se_NO", "se_NO"), + ("se_SE", "se_SE"), + ("si_LK", "si_LK"), + ("sk_SK", "sk_SK"), + ("sl_SI", "sl_SI"), + ("sma_NO", "sma_NO"), + ("sma_SE", "sma_SE"), + ("smj_NO", "smj_NO"), + ("smj_SE", "smj_SE"), + ("smn_FI", "smn_FI"), + ("sms_FI", "sms_FI"), + ("sq_AL", "sq_AL"), + ("sr_BA", "sr_BA"), + ("sr_BA", "sr_BA"), + ("sr_SP", "sr_SP"), + ("sr_SP", "sr_SP"), + ("sv_FI", "sv_FI"), + ("sv_SE", "sv_SE"), + ("sw_KE", "sw_KE"), + ("syr_SY", "syr_SY"), + ("ta_IN", "ta_IN"), + ("te_IN", "te_IN"), + ("tg_TJ", "tg_TJ"), + ("th_TH", "th_TH"), + ("tk_TM", "tk_TM"), + ("tmz_DZ", "tmz_DZ"), + ("tn_ZA", "tn_ZA"), + ("tr_TR", "tr_TR"), + ("tt_RU", "tt_RU"), + ("ug_CN", "ug_CN"), + ("uk_UA", "uk_UA"), + ("ur_IN", "ur_IN"), + ("ur_PK", "ur_PK"), + ("uz_UZ", "uz_UZ"), + ("uz_UZ", "uz_UZ"), + ("vi_VN", "vi_VN"), + ("wen_DE", "wen_DE"), + ("wo_SN", "wo_SN"), + ("xh_ZA", "xh_ZA"), + ("yo_NG", "yo_NG"), + ("zh_CHS", "zh_CHS"), + ("zh_CHT", "zh_CHT"), + ("zh_CN", "zh_CN"), + ("zh_HK", "zh_HK"), + ("zh_MO", "zh_MO"), + ("zh_SG", "zh_SG"), + ("zh_TW", "zh_TW"), + ("zu_ZA", "zu_ZA"), + ], + default="French", + max_length=10, + ), + ), + migrations.AlterField( + model_name="location", + name="color", + field=models.CharField(blank=True, default="", max_length=20, verbose_name="Calendar appointment color"), + ), + migrations.AlterField( + model_name="mailtemplate", + name="context", + field=models.CharField( + choices=[("A", "Appointment"), ("S", "Subject"), ("V", "Visit"), ("C", "Voucher")], max_length=1 + ), + ), + migrations.AlterField( + model_name="mailtemplate", + name="template_file", + field=models.FileField(upload_to="templates/"), + ), + migrations.AlterField( + model_name="missingsubject", + name="ignore", + field=models.BooleanField(default=False, verbose_name="Ignore missing subject"), + ), + migrations.AlterField( + model_name="missingsubject", + name="redcap_id", + field=models.CharField(blank=True, max_length=255, null=True, verbose_name="RED Cap id"), + ), + migrations.AlterField( + model_name="missingsubject", + name="redcap_url", + field=models.CharField(blank=True, max_length=255, null=True, verbose_name="URL to RED Cap subject"), + ), + migrations.AlterField( + model_name="missingsubject", + name="subject", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.StudySubject", + verbose_name="Subject", + ), + ), + migrations.AlterField( + model_name="provenance", + name="modification_author", + field=models.ForeignKey( + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.Worker", + verbose_name="Worker who modified the row", + ), + ), + migrations.AlterField( + model_name="provenance", + name="modification_date", + field=models.DateTimeField(auto_now_add=True, verbose_name="Modified on"), + ), + migrations.AlterField( + model_name="provenance", + name="modification_description", + field=models.CharField(max_length=20480, verbose_name="Description"), + ), + migrations.AlterField( + model_name="provenance", + name="modified_field", + field=models.CharField(blank="", max_length=1024, verbose_name="Modified field"), + ), + migrations.AlterField( + model_name="provenance", + name="new_value", + field=models.CharField(blank=True, max_length=2048, null=True, verbose_name="New Value"), ), migrations.AlterField( - model_name='provenance', - name='previous_value', - field=models.CharField(blank=True, max_length=2048, null=True, verbose_name='Previous Value'), + model_name="provenance", + name="previous_value", + field=models.CharField(blank=True, max_length=2048, null=True, verbose_name="Previous Value"), ), migrations.AlterField( - model_name='study', - name='auto_create_follow_up', - field=models.BooleanField(default=True, verbose_name='Auto create follow up visit'), + model_name="study", + name="auto_create_follow_up", + field=models.BooleanField(default=True, verbose_name="Auto create follow up visit"), ), migrations.AlterField( - model_name='study', - name='default_delta_time_for_control_follow_up', - field=models.IntegerField(default=4, help_text='Time difference between visits used to automatically create follow up visits', validators=[django.core.validators.MinValueValidator(1)], verbose_name='Time difference between control visits'), + model_name="study", + name="default_delta_time_for_control_follow_up", + field=models.IntegerField( + default=4, + help_text="Time difference between visits used to automatically create follow up visits", + validators=[django.core.validators.MinValueValidator(1)], + verbose_name="Time difference between control visits", + ), ), migrations.AlterField( - model_name='study', - name='default_delta_time_for_follow_up_units', - field=models.CharField(choices=[('years', 'Years'), ('days', 'Days')], default='years', help_text='Units for the number of days between visits for both patients and controls', max_length=10, verbose_name='Units for the follow up incrementals'), + model_name="study", + name="default_delta_time_for_follow_up_units", + field=models.CharField( + choices=[("years", "Years"), ("days", "Days")], + default="years", + help_text="Units for the number of days between visits for both patients and controls", + max_length=10, + verbose_name="Units for the follow up incrementals", + ), ), migrations.AlterField( - model_name='study', - name='default_delta_time_for_patient_follow_up', - field=models.IntegerField(default=1, help_text='Time difference between visits used to automatically create follow up visits', validators=[django.core.validators.MinValueValidator(1)], verbose_name='Time difference between patient visits'), + model_name="study", + name="default_delta_time_for_patient_follow_up", + field=models.IntegerField( + default=1, + help_text="Time difference between visits used to automatically create follow up visits", + validators=[django.core.validators.MinValueValidator(1)], + verbose_name="Time difference between patient visits", + ), ), migrations.AlterField( - model_name='study', - name='default_visit_duration_in_months', - field=models.IntegerField(default=6, help_text='Duration of the visit, this is, the time interval, in months, when the appointments may take place', validators=[django.core.validators.MinValueValidator(1)], verbose_name='Duration of the visits in months'), + model_name="study", + name="default_visit_duration_in_months", + field=models.IntegerField( + default=6, + help_text="Duration of the visit, this is, the time interval," + + " in months, when the appointments may take place", + validators=[django.core.validators.MinValueValidator(1)], + verbose_name="Duration of the visits in months", + ), ), migrations.AlterField( - model_name='study', - name='default_voucher_expiration_in_months', - field=models.IntegerField(default=3, validators=[django.core.validators.MinValueValidator(1)], verbose_name='Duration of the vouchers in months'), + model_name="study", + name="default_voucher_expiration_in_months", + field=models.IntegerField( + default=3, + validators=[django.core.validators.MinValueValidator(1)], + verbose_name="Duration of the vouchers in months", + ), ), migrations.AlterField( - model_name='study', - name='name', - field=models.CharField(max_length=255, verbose_name='Name'), + model_name="study", + name="name", + field=models.CharField(max_length=255, verbose_name="Name"), ), migrations.AlterField( - model_name='study', - name='nd_number_study_subject_regex', - field=models.CharField(default='^ND\\d{4}$', help_text='Defines the regex to check the ID used for each study subject. Keep in mind that this regex should be valid for all previous study subjects in the database.', max_length=255, verbose_name='Study Subject ND Number Regex'), + model_name="study", + name="nd_number_study_subject_regex", + field=models.CharField( + default="^ND\\d{4}$", + help_text="Defines the regex to check the ID used for each study subject." + + "Keep in mind that this regex should be valid for all previous study subjects in the database.", + max_length=255, + verbose_name="Study Subject ND Number Regex", + ), ), migrations.AlterField( - model_name='study', - name='redcap_first_visit_number', - field=models.IntegerField(default=1, verbose_name='Number of the first visit in redcap system'), + model_name="study", + name="redcap_first_visit_number", + field=models.IntegerField(default=1, verbose_name="Number of the first visit in redcap system"), ), migrations.AlterField( - model_name='study', - name='sample_mail_statistics', - field=models.BooleanField(default=False, verbose_name='Email with sample collections should use statistics'), + model_name="study", + name="sample_mail_statistics", + field=models.BooleanField( + default=False, verbose_name="Email with sample collections should use statistics" + ), ), migrations.AlterField( - model_name='study', - name='visits_to_show_in_subject_list', - field=models.IntegerField(default=5, validators=[django.core.validators.MaxValueValidator(100), django.core.validators.MinValueValidator(1)], verbose_name='Number of visits to show in the subject list'), + model_name="study", + name="visits_to_show_in_subject_list", + field=models.IntegerField( + default=5, + validators=[django.core.validators.MaxValueValidator(100), django.core.validators.MinValueValidator(1)], + verbose_name="Number of visits to show in the subject list", + ), ), migrations.AlterField( - model_name='studycolumns', - name='brain_donation_agreement', - field=models.BooleanField(default=False, verbose_name='Brain donation agreement'), + model_name="studycolumns", + name="brain_donation_agreement", + field=models.BooleanField(default=False, verbose_name="Brain donation agreement"), ), migrations.AlterField( - model_name='studycolumns', - name='comments', - field=models.BooleanField(default=True, verbose_name='Comments'), + model_name="studycolumns", + name="comments", + field=models.BooleanField(default=True, verbose_name="Comments"), ), migrations.AlterField( - model_name='studycolumns', - name='datetime_contact_reminder', - field=models.BooleanField(default=True, verbose_name='Please make a contact on'), + model_name="studycolumns", + name="datetime_contact_reminder", + field=models.BooleanField(default=True, verbose_name="Please make a contact on"), ), migrations.AlterField( - model_name='studycolumns', - name='default_location', - field=models.BooleanField(default=True, verbose_name='Default appointment location'), + model_name="studycolumns", + name="default_location", + field=models.BooleanField(default=True, verbose_name="Default appointment location"), ), migrations.AlterField( - model_name='studycolumns', - name='diagnosis', - field=models.BooleanField(default=True, verbose_name='Diagnosis'), + model_name="studycolumns", + name="diagnosis", + field=models.BooleanField(default=True, verbose_name="Diagnosis"), ), migrations.AlterField( - model_name='studycolumns', - name='endpoint_reached', - field=models.BooleanField(default=True, verbose_name='Endpoint reached'), + model_name="studycolumns", + name="endpoint_reached", + field=models.BooleanField(default=True, verbose_name="Endpoint reached"), ), migrations.AlterField( - model_name='studycolumns', - name='excluded', - field=models.BooleanField(default=False, verbose_name='Excluded'), + model_name="studycolumns", + name="excluded", + field=models.BooleanField(default=False, verbose_name="Excluded"), ), migrations.AlterField( - model_name='studycolumns', - name='flying_team', - field=models.BooleanField(default=True, verbose_name='Default flying team location (if applicable)'), + model_name="studycolumns", + name="flying_team", + field=models.BooleanField(default=True, verbose_name="Default flying team location (if applicable)"), ), migrations.AlterField( - model_name='studycolumns', - name='health_partner', - field=models.BooleanField(default=False, verbose_name='Health partner'), + model_name="studycolumns", + name="health_partner", + field=models.BooleanField(default=False, verbose_name="Health partner"), ), migrations.AlterField( - model_name='studycolumns', - name='health_partner_feedback_agreement', - field=models.BooleanField(default=False, verbose_name='Agrees to give information to referral'), + model_name="studycolumns", + name="health_partner_feedback_agreement", + field=models.BooleanField(default=False, verbose_name="Agrees to give information to referral"), ), migrations.AlterField( - model_name='studycolumns', - name='information_sent', - field=models.BooleanField(default=True, verbose_name='Information sent'), + model_name="studycolumns", + name="information_sent", + field=models.BooleanField(default=True, verbose_name="Information sent"), ), migrations.AlterField( - model_name='studycolumns', - name='mpower_id', - field=models.BooleanField(default=True, verbose_name='MPower ID'), + model_name="studycolumns", + name="mpower_id", + field=models.BooleanField(default=True, verbose_name="MPower ID"), ), migrations.AlterField( - model_name='studycolumns', - name='nd_number', - field=models.BooleanField(default=True, verbose_name='ND number'), + model_name="studycolumns", + name="nd_number", + field=models.BooleanField(default=True, verbose_name="ND number"), ), migrations.AlterField( - model_name='studycolumns', - name='pd_in_family', - field=models.BooleanField(default=True, verbose_name='PD in family'), + model_name="studycolumns", + name="pd_in_family", + field=models.BooleanField(default=True, verbose_name="PD in family"), ), migrations.AlterField( - model_name='studycolumns', - name='postponed', - field=models.BooleanField(default=True, verbose_name='Postponed'), + model_name="studycolumns", + name="postponed", + field=models.BooleanField(default=True, verbose_name="Postponed"), ), migrations.AlterField( - model_name='studycolumns', - name='previously_in_study', - field=models.BooleanField(default=False, verbose_name='Previously in PDP study'), + model_name="studycolumns", + name="previously_in_study", + field=models.BooleanField(default=False, verbose_name="Previously in PDP study"), ), migrations.AlterField( - model_name='studycolumns', - name='referral', - field=models.BooleanField(default=True, verbose_name='Referred by'), + model_name="studycolumns", + name="referral", + field=models.BooleanField(default=True, verbose_name="Referred by"), ), migrations.AlterField( - model_name='studycolumns', - name='referral_letter', - field=models.BooleanField(default=False, verbose_name='Referral letter'), + model_name="studycolumns", + name="referral_letter", + field=models.BooleanField(default=False, verbose_name="Referral letter"), ), migrations.AlterField( - model_name='studycolumns', - name='resign_reason', - field=models.BooleanField(default=True, verbose_name='Endpoint reached comments'), + model_name="studycolumns", + name="resign_reason", + field=models.BooleanField(default=True, verbose_name="Endpoint reached comments"), ), migrations.AlterField( - model_name='studycolumns', - name='resigned', - field=models.BooleanField(default=True, verbose_name='Resigned'), + model_name="studycolumns", + name="resigned", + field=models.BooleanField(default=True, verbose_name="Resigned"), ), migrations.AlterField( - model_name='studycolumns', - name='screening', - field=models.BooleanField(default=False, verbose_name='Screening'), + model_name="studycolumns", + name="screening", + field=models.BooleanField(default=False, verbose_name="Screening"), ), migrations.AlterField( - model_name='studycolumns', - name='screening_number', - field=models.BooleanField(default=True, verbose_name='Screening number'), + model_name="studycolumns", + name="screening_number", + field=models.BooleanField(default=True, verbose_name="Screening number"), ), migrations.AlterField( - model_name='studycolumns', - name='type', - field=models.BooleanField(default=True, verbose_name='Type'), + model_name="studycolumns", + name="type", + field=models.BooleanField(default=True, verbose_name="Type"), ), migrations.AlterField( - model_name='studycolumns', - name='virus_test_1', - field=models.BooleanField(default=False, verbose_name='Visit 1 virus results'), + model_name="studycolumns", + name="virus_test_1", + field=models.BooleanField(default=False, verbose_name="Visit 1 virus results"), ), migrations.AlterField( - model_name='studycolumns', - name='virus_test_1_collection_date', - field=models.BooleanField(default=False, verbose_name='Visit 1 virus collection date'), + model_name="studycolumns", + name="virus_test_1_collection_date", + field=models.BooleanField(default=False, verbose_name="Visit 1 virus collection date"), ), migrations.AlterField( - model_name='studycolumns', - name='virus_test_1_iga_status', - field=models.BooleanField(default=False, verbose_name='Visit 1 virus IgA status'), + model_name="studycolumns", + name="virus_test_1_iga_status", + field=models.BooleanField(default=False, verbose_name="Visit 1 virus IgA status"), ), migrations.AlterField( - model_name='studycolumns', - name='virus_test_1_igg_status', - field=models.BooleanField(default=False, verbose_name='Visit 1 virus IgG status'), + model_name="studycolumns", + name="virus_test_1_igg_status", + field=models.BooleanField(default=False, verbose_name="Visit 1 virus IgG status"), ), migrations.AlterField( - model_name='studycolumns', - name='virus_test_1_updated', - field=models.BooleanField(default=False, verbose_name='Visit 1 virus results date'), + model_name="studycolumns", + name="virus_test_1_updated", + field=models.BooleanField(default=False, verbose_name="Visit 1 virus results date"), ), migrations.AlterField( - model_name='studycolumns', - name='virus_test_2', - field=models.BooleanField(default=False, verbose_name='Visit 2 virus results'), + model_name="studycolumns", + name="virus_test_2", + field=models.BooleanField(default=False, verbose_name="Visit 2 virus results"), ), migrations.AlterField( - model_name='studycolumns', - name='virus_test_2_collection_date', - field=models.BooleanField(default=False, verbose_name='Visit 2 virus collection date'), + model_name="studycolumns", + name="virus_test_2_collection_date", + field=models.BooleanField(default=False, verbose_name="Visit 2 virus collection date"), ), migrations.AlterField( - model_name='studycolumns', - name='virus_test_2_iga_status', - field=models.BooleanField(default=False, verbose_name='Visit 2 virus IgA status'), + model_name="studycolumns", + name="virus_test_2_iga_status", + field=models.BooleanField(default=False, verbose_name="Visit 2 virus IgA status"), ), migrations.AlterField( - model_name='studycolumns', - name='virus_test_2_igg_status', - field=models.BooleanField(default=False, verbose_name='Visit 2 virus IgG status'), + model_name="studycolumns", + name="virus_test_2_igg_status", + field=models.BooleanField(default=False, verbose_name="Visit 2 virus IgG status"), ), migrations.AlterField( - model_name='studycolumns', - name='virus_test_2_updated', - field=models.BooleanField(default=False, verbose_name='Visit 2 virus results date'), + model_name="studycolumns", + name="virus_test_2_updated", + field=models.BooleanField(default=False, verbose_name="Visit 2 virus results date"), ), migrations.AlterField( - model_name='studycolumns', - name='virus_test_3', - field=models.BooleanField(default=False, verbose_name='Visit 3 virus results'), + model_name="studycolumns", + name="virus_test_3", + field=models.BooleanField(default=False, verbose_name="Visit 3 virus results"), ), migrations.AlterField( - model_name='studycolumns', - name='virus_test_3_collection_date', - field=models.BooleanField(default=False, verbose_name='Visit 3 virus collection date'), + model_name="studycolumns", + name="virus_test_3_collection_date", + field=models.BooleanField(default=False, verbose_name="Visit 3 virus collection date"), ), migrations.AlterField( - model_name='studycolumns', - name='virus_test_3_iga_status', - field=models.BooleanField(default=False, verbose_name='Visit 3 virus IgA status'), + model_name="studycolumns", + name="virus_test_3_iga_status", + field=models.BooleanField(default=False, verbose_name="Visit 3 virus IgA status"), ), migrations.AlterField( - model_name='studycolumns', - name='virus_test_3_igg_status', - field=models.BooleanField(default=False, verbose_name='Visit 3 virus IgG status'), + model_name="studycolumns", + name="virus_test_3_igg_status", + field=models.BooleanField(default=False, verbose_name="Visit 3 virus IgG status"), ), migrations.AlterField( - model_name='studycolumns', - name='virus_test_3_updated', - field=models.BooleanField(default=False, verbose_name='Visit 3 virus results date'), + model_name="studycolumns", + name="virus_test_3_updated", + field=models.BooleanField(default=False, verbose_name="Visit 3 virus results date"), ), migrations.AlterField( - model_name='studycolumns', - name='virus_test_4', - field=models.BooleanField(default=False, verbose_name='Visit 4 virus results'), + model_name="studycolumns", + name="virus_test_4", + field=models.BooleanField(default=False, verbose_name="Visit 4 virus results"), ), migrations.AlterField( - model_name='studycolumns', - name='virus_test_4_collection_date', - field=models.BooleanField(default=False, verbose_name='Visit 4 virus collection date'), + model_name="studycolumns", + name="virus_test_4_collection_date", + field=models.BooleanField(default=False, verbose_name="Visit 4 virus collection date"), ), migrations.AlterField( - model_name='studycolumns', - name='virus_test_4_iga_status', - field=models.BooleanField(default=False, verbose_name='Visit 4 virus IgA status'), + model_name="studycolumns", + name="virus_test_4_iga_status", + field=models.BooleanField(default=False, verbose_name="Visit 4 virus IgA status"), ), migrations.AlterField( - model_name='studycolumns', - name='virus_test_4_igg_status', - field=models.BooleanField(default=False, verbose_name='Visit 4 virus IgG status'), + model_name="studycolumns", + name="virus_test_4_igg_status", + field=models.BooleanField(default=False, verbose_name="Visit 4 virus IgG status"), ), migrations.AlterField( - model_name='studycolumns', - name='virus_test_4_updated', - field=models.BooleanField(default=False, verbose_name='Visit 4 virus results date'), + model_name="studycolumns", + name="virus_test_4_updated", + field=models.BooleanField(default=False, verbose_name="Visit 4 virus results date"), ), migrations.AlterField( - model_name='studycolumns', - name='virus_test_5', - field=models.BooleanField(default=False, verbose_name='Visit 5 virus results'), + model_name="studycolumns", + name="virus_test_5", + field=models.BooleanField(default=False, verbose_name="Visit 5 virus results"), ), migrations.AlterField( - model_name='studycolumns', - name='virus_test_5_collection_date', - field=models.BooleanField(default=False, verbose_name='Visit 5 virus collection date'), + model_name="studycolumns", + name="virus_test_5_collection_date", + field=models.BooleanField(default=False, verbose_name="Visit 5 virus collection date"), ), migrations.AlterField( - model_name='studycolumns', - name='virus_test_5_iga_status', - field=models.BooleanField(default=False, verbose_name='Visit 5 virus IgA status'), + model_name="studycolumns", + name="virus_test_5_iga_status", + field=models.BooleanField(default=False, verbose_name="Visit 5 virus IgA status"), ), migrations.AlterField( - model_name='studycolumns', - name='virus_test_5_igg_status', - field=models.BooleanField(default=False, verbose_name='Visit 5 virus IgG status'), + model_name="studycolumns", + name="virus_test_5_igg_status", + field=models.BooleanField(default=False, verbose_name="Visit 5 virus IgG status"), ), migrations.AlterField( - model_name='studycolumns', - name='virus_test_5_updated', - field=models.BooleanField(default=False, verbose_name='Visit 5 virus results date'), + model_name="studycolumns", + name="virus_test_5_updated", + field=models.BooleanField(default=False, verbose_name="Visit 5 virus results date"), ), migrations.AlterField( - model_name='studycolumns', - name='voucher_types', - field=models.BooleanField(default=False, verbose_name='Voucher types'), + model_name="studycolumns", + name="voucher_types", + field=models.BooleanField(default=False, verbose_name="Voucher types"), ), migrations.AlterField( - model_name='studycolumns', - name='vouchers', - field=models.BooleanField(default=False, verbose_name='Vouchers'), + model_name="studycolumns", + name="vouchers", + field=models.BooleanField(default=False, verbose_name="Vouchers"), ), migrations.AlterField( - model_name='studycolumns', - name='year_of_diagnosis', - field=models.BooleanField(default=True, verbose_name='Year of diagnosis (YYYY)'), + model_name="studycolumns", + name="year_of_diagnosis", + field=models.BooleanField(default=True, verbose_name="Year of diagnosis (YYYY)"), ), migrations.AlterField( - model_name='studynotificationparameters', - name='approaching_visits_for_mail_contact_visible', - field=models.BooleanField(default=True, verbose_name='post mail for approaching visits'), + model_name="studynotificationparameters", + name="approaching_visits_for_mail_contact_visible", + field=models.BooleanField(default=True, verbose_name="post mail for approaching visits"), ), migrations.AlterField( - model_name='studynotificationparameters', - name='approaching_visits_without_appointments_visible', - field=models.BooleanField(default=True, verbose_name='approaching visits'), + model_name="studynotificationparameters", + name="approaching_visits_without_appointments_visible", + field=models.BooleanField(default=True, verbose_name="approaching visits"), ), migrations.AlterField( - model_name='studynotificationparameters', - name='exceeded_visits_visible', - field=models.BooleanField(default=True, verbose_name='exceeded visit time'), + model_name="studynotificationparameters", + name="exceeded_visits_visible", + field=models.BooleanField(default=True, verbose_name="exceeded visit time"), ), migrations.AlterField( - model_name='studynotificationparameters', - name='inconsistent_redcap_subject_visible', - field=models.BooleanField(default=True, verbose_name='inconsistent RED Cap subject'), + model_name="studynotificationparameters", + name="inconsistent_redcap_subject_visible", + field=models.BooleanField(default=True, verbose_name="inconsistent RED Cap subject"), ), migrations.AlterField( - model_name='studynotificationparameters', - name='missing_redcap_subject_visible', - field=models.BooleanField(default=True, verbose_name='missing RED Cap subject'), + model_name="studynotificationparameters", + name="missing_redcap_subject_visible", + field=models.BooleanField(default=True, verbose_name="missing RED Cap subject"), ), migrations.AlterField( - model_name='studynotificationparameters', - name='subject_no_visits_visible', - field=models.BooleanField(default=True, verbose_name='subject without visit'), + model_name="studynotificationparameters", + name="subject_no_visits_visible", + field=models.BooleanField(default=True, verbose_name="subject without visit"), ), migrations.AlterField( - model_name='studynotificationparameters', - name='subject_require_contact_visible', - field=models.BooleanField(default=True, verbose_name='subject required contact'), + model_name="studynotificationparameters", + name="subject_require_contact_visible", + field=models.BooleanField(default=True, verbose_name="subject required contact"), ), migrations.AlterField( - model_name='studynotificationparameters', - name='subject_voucher_expiry_visible', - field=models.BooleanField(default=False, verbose_name='subject vouchers almost expired'), + model_name="studynotificationparameters", + name="subject_voucher_expiry_visible", + field=models.BooleanField(default=False, verbose_name="subject vouchers almost expired"), ), migrations.AlterField( - model_name='studynotificationparameters', - name='unfinished_appointments_visible', - field=models.BooleanField(default=True, verbose_name='unfinished appointments'), + model_name="studynotificationparameters", + name="unfinished_appointments_visible", + field=models.BooleanField(default=True, verbose_name="unfinished appointments"), ), migrations.AlterField( - model_name='studynotificationparameters', - name='unfinished_visits_visible', - field=models.BooleanField(default=True, verbose_name='unfinished visits'), + model_name="studynotificationparameters", + name="unfinished_visits_visible", + field=models.BooleanField(default=True, verbose_name="unfinished visits"), ), migrations.AlterField( - model_name='studynotificationparameters', - name='visits_with_missing_appointments_visible', - field=models.BooleanField(default=True, verbose_name='visits with missing appointments'), + model_name="studynotificationparameters", + name="visits_with_missing_appointments_visible", + field=models.BooleanField(default=True, verbose_name="visits with missing appointments"), ), migrations.AlterField( - model_name='studyredcapcolumns', - name='date_born', - field=models.BooleanField(default=True, verbose_name='Date of birth'), + model_name="studyredcapcolumns", + name="date_born", + field=models.BooleanField(default=True, verbose_name="Date of birth"), ), migrations.AlterField( - model_name='studyredcapcolumns', - name='dead', - field=models.BooleanField(default=True, verbose_name='Dead'), + model_name="studyredcapcolumns", + name="dead", + field=models.BooleanField(default=True, verbose_name="Dead"), ), migrations.AlterField( - model_name='studyredcapcolumns', - name='languages', - field=models.BooleanField(default=True, verbose_name='Languages'), + model_name="studyredcapcolumns", + name="languages", + field=models.BooleanField(default=True, verbose_name="Languages"), ), migrations.AlterField( - model_name='studyredcapcolumns', - name='mpower_id', - field=models.BooleanField(default=True, verbose_name='MPower ID'), + model_name="studyredcapcolumns", + name="mpower_id", + field=models.BooleanField(default=True, verbose_name="MPower ID"), ), migrations.AlterField( - model_name='studyredcapcolumns', - name='sex', - field=models.BooleanField(default=True, verbose_name='Sex'), + model_name="studyredcapcolumns", + name="sex", + field=models.BooleanField(default=True, verbose_name="Sex"), ), migrations.AlterField( - model_name='studysubject', - name='brain_donation_agreement', - field=models.BooleanField(default=False, verbose_name='Brain donation agreement'), + model_name="studysubject", + name="brain_donation_agreement", + field=models.BooleanField(default=False, verbose_name="Brain donation agreement"), ), migrations.AlterField( - model_name='studysubject', - name='date_added', - field=models.DateField(auto_now_add=True, verbose_name='Added on'), + model_name="studysubject", + name="date_added", + field=models.DateField(auto_now_add=True, verbose_name="Added on"), ), migrations.AlterField( - model_name='studysubject', - name='datetime_contact_reminder', - field=models.DateTimeField(blank=True, null=True, verbose_name='Please make a contact on'), + model_name="studysubject", + name="datetime_contact_reminder", + field=models.DateTimeField(blank=True, null=True, verbose_name="Please make a contact on"), ), migrations.AlterField( - model_name='studysubject', - name='default_location', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='web.Location', verbose_name='Default appointment location'), + model_name="studysubject", + name="default_location", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.Location", + verbose_name="Default appointment location", + ), ), migrations.AlterField( - model_name='studysubject', - name='diagnosis', - field=models.CharField(blank=True, max_length=1024, null=True, verbose_name='Diagnosis'), + model_name="studysubject", + name="diagnosis", + field=models.CharField(blank=True, max_length=1024, null=True, verbose_name="Diagnosis"), ), migrations.AlterField( - model_name='studysubject', - name='endpoint_reached', - field=models.BooleanField(default=False, verbose_name='Endpoint Reached'), + model_name="studysubject", + name="endpoint_reached", + field=models.BooleanField(default=False, verbose_name="Endpoint Reached"), ), migrations.AlterField( - model_name='studysubject', - name='endpoint_reached_reason', - field=models.TextField(blank=True, max_length=2000, verbose_name='Endpoint reached comments'), + model_name="studysubject", + name="endpoint_reached_reason", + field=models.TextField(blank=True, max_length=2000, verbose_name="Endpoint reached comments"), ), migrations.AlterField( - model_name='studysubject', - name='exclude_reason', - field=models.TextField(blank=True, max_length=2000, verbose_name='Exclude reason'), + model_name="studysubject", + name="exclude_reason", + field=models.TextField(blank=True, max_length=2000, verbose_name="Exclude reason"), ), migrations.AlterField( - model_name='studysubject', - name='excluded', - field=models.BooleanField(default=False, verbose_name='Excluded'), + model_name="studysubject", + name="excluded", + field=models.BooleanField(default=False, verbose_name="Excluded"), ), migrations.AlterField( - model_name='studysubject', - name='flying_team', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='web.FlyingTeam', verbose_name='Default flying team location (if applicable)'), + model_name="studysubject", + name="flying_team", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.FlyingTeam", + verbose_name="Default flying team location (if applicable)", + ), ), migrations.AlterField( - model_name='studysubject', - name='health_partner', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='web.Worker', verbose_name='Health partner'), + model_name="studysubject", + name="health_partner", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.Worker", + verbose_name="Health partner", + ), ), migrations.AlterField( - model_name='studysubject', - name='health_partner_feedback_agreement', - field=models.BooleanField(default=False, verbose_name='Agrees to give information to referral'), + model_name="studysubject", + name="health_partner_feedback_agreement", + field=models.BooleanField(default=False, verbose_name="Agrees to give information to referral"), ), migrations.AlterField( - model_name='studysubject', - name='information_sent', - field=models.BooleanField(default=False, verbose_name='Information sent'), + model_name="studysubject", + name="information_sent", + field=models.BooleanField(default=False, verbose_name="Information sent"), ), migrations.AlterField( - model_name='studysubject', - name='nd_number', - field=models.CharField(blank=True, max_length=25, verbose_name='ND number'), + model_name="studysubject", + name="nd_number", + field=models.CharField(blank=True, max_length=25, verbose_name="ND number"), ), migrations.AlterField( - model_name='studysubject', - name='pd_in_family', - field=models.NullBooleanField(default=None, verbose_name='PD in family'), + model_name="studysubject", + name="pd_in_family", + field=models.NullBooleanField(default=None, verbose_name="PD in family"), ), migrations.AlterField( - model_name='studysubject', - name='previously_in_study', - field=models.BooleanField(default=False, verbose_name='Previously in PDP study'), + model_name="studysubject", + name="previously_in_study", + field=models.BooleanField(default=False, verbose_name="Previously in PDP study"), ), migrations.AlterField( - model_name='studysubject', - name='referral_letter', - field=models.FileField(blank=True, null=True, storage=django.core.files.storage.FileSystemStorage(location='~/tmp/upload'), upload_to='referral_letters', verbose_name='Referral letter'), + model_name="studysubject", + name="referral_letter", + field=models.FileField( + blank=True, + null=True, + storage=django.core.files.storage.FileSystemStorage(location="~/tmp/upload"), + upload_to="referral_letters", + verbose_name="Referral letter", + ), ), migrations.AlterField( - model_name='studysubject', - name='resign_reason', - field=models.TextField(blank=True, max_length=2000, verbose_name='Resign reason'), + model_name="studysubject", + name="resign_reason", + field=models.TextField(blank=True, max_length=2000, verbose_name="Resign reason"), ), migrations.AlterField( - model_name='studysubject', - name='resigned', - field=models.BooleanField(default=False, verbose_name='Resigned'), + model_name="studysubject", + name="resigned", + field=models.BooleanField(default=False, verbose_name="Resigned"), ), migrations.AlterField( - model_name='studysubject', - name='screening', - field=models.CharField(blank=True, max_length=1024, null=True, verbose_name='Screening'), + model_name="studysubject", + name="screening", + field=models.CharField(blank=True, max_length=1024, null=True, verbose_name="Screening"), ), migrations.AlterField( - model_name='studysubject', - name='screening_number', - field=models.CharField(blank=True, max_length=50, null=True, verbose_name='Screening number'), + model_name="studysubject", + name="screening_number", + field=models.CharField(blank=True, max_length=50, null=True, verbose_name="Screening number"), ), migrations.AlterField( - model_name='studysubject', - name='study', - field=models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='web.Study', verbose_name='Study'), + model_name="studysubject", + name="study", + field=models.ForeignKey( + editable=False, on_delete=django.db.models.deletion.CASCADE, to="web.Study", verbose_name="Study" + ), ), migrations.AlterField( - model_name='studysubject', - name='subject', - field=models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='web.Subject', verbose_name='Subject'), + model_name="studysubject", + name="subject", + field=models.ForeignKey( + editable=False, on_delete=django.db.models.deletion.CASCADE, to="web.Subject", verbose_name="Subject" + ), ), migrations.AlterField( - model_name='studysubject', - name='type', - field=models.CharField(blank=True, choices=[('C', 'CONTROL'), ('P', 'PATIENT')], max_length=1, null=True, verbose_name='Type'), + model_name="studysubject", + name="type", + field=models.CharField( + blank=True, choices=[("C", "CONTROL"), ("P", "PATIENT")], max_length=1, null=True, verbose_name="Type" + ), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_1', - field=models.NullBooleanField(choices=[(True, 'Yes'), (False, 'No'), (None, 'N/A')], default=None, verbose_name='Visit 1 virus result'), + model_name="studysubject", + name="virus_test_1", + field=models.NullBooleanField( + choices=[(True, "Yes"), (False, "No"), (None, "N/A")], default=None, verbose_name="Visit 1 virus result" + ), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_1_collection_date', - field=models.DateField(blank=True, null=True, verbose_name='Visit 1 virus collection date'), + model_name="studysubject", + name="virus_test_1_collection_date", + field=models.DateField(blank=True, null=True, verbose_name="Visit 1 virus collection date"), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_1_iga_status', - field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Visit 1 IgA status'), + model_name="studysubject", + name="virus_test_1_iga_status", + field=models.CharField(blank=True, max_length=255, null=True, verbose_name="Visit 1 IgA status"), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_1_igg_status', - field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Visit 1 IgG status'), + model_name="studysubject", + name="virus_test_1_igg_status", + field=models.CharField(blank=True, max_length=255, null=True, verbose_name="Visit 1 IgG status"), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_1_updated', - field=models.DateField(blank=True, null=True, verbose_name='Visit 1 virus result date'), + model_name="studysubject", + name="virus_test_1_updated", + field=models.DateField(blank=True, null=True, verbose_name="Visit 1 virus result date"), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_2', - field=models.NullBooleanField(choices=[(True, 'Yes'), (False, 'No'), (None, 'N/A')], default=None, verbose_name='Visit 2 virus result'), + model_name="studysubject", + name="virus_test_2", + field=models.NullBooleanField( + choices=[(True, "Yes"), (False, "No"), (None, "N/A")], default=None, verbose_name="Visit 2 virus result" + ), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_2_collection_date', - field=models.DateField(blank=True, null=True, verbose_name='Visit 2 virus collection date'), + model_name="studysubject", + name="virus_test_2_collection_date", + field=models.DateField(blank=True, null=True, verbose_name="Visit 2 virus collection date"), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_2_iga_status', - field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Visit 2 IgA status'), + model_name="studysubject", + name="virus_test_2_iga_status", + field=models.CharField(blank=True, max_length=255, null=True, verbose_name="Visit 2 IgA status"), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_2_igg_status', - field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Visit 2 IgG status'), + model_name="studysubject", + name="virus_test_2_igg_status", + field=models.CharField(blank=True, max_length=255, null=True, verbose_name="Visit 2 IgG status"), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_2_updated', - field=models.DateField(blank=True, null=True, verbose_name='Visit 2 virus result date'), + model_name="studysubject", + name="virus_test_2_updated", + field=models.DateField(blank=True, null=True, verbose_name="Visit 2 virus result date"), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_3', - field=models.NullBooleanField(choices=[(True, 'Yes'), (False, 'No'), (None, 'N/A')], default=None, verbose_name='Visit 3 virus result'), + model_name="studysubject", + name="virus_test_3", + field=models.NullBooleanField( + choices=[(True, "Yes"), (False, "No"), (None, "N/A")], default=None, verbose_name="Visit 3 virus result" + ), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_3_collection_date', - field=models.DateField(blank=True, null=True, verbose_name='Visit 3 virus collection date'), + model_name="studysubject", + name="virus_test_3_collection_date", + field=models.DateField(blank=True, null=True, verbose_name="Visit 3 virus collection date"), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_3_iga_status', - field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Visit 3 IgA status'), + model_name="studysubject", + name="virus_test_3_iga_status", + field=models.CharField(blank=True, max_length=255, null=True, verbose_name="Visit 3 IgA status"), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_3_igg_status', - field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Visit 3 IgG status'), + model_name="studysubject", + name="virus_test_3_igg_status", + field=models.CharField(blank=True, max_length=255, null=True, verbose_name="Visit 3 IgG status"), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_3_updated', - field=models.DateField(blank=True, null=True, verbose_name='Visit 3 virus result date'), + model_name="studysubject", + name="virus_test_3_updated", + field=models.DateField(blank=True, null=True, verbose_name="Visit 3 virus result date"), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_4', - field=models.NullBooleanField(choices=[(True, 'Yes'), (False, 'No'), (None, 'N/A')], default=None, verbose_name='Visit 4 virus result'), + model_name="studysubject", + name="virus_test_4", + field=models.NullBooleanField( + choices=[(True, "Yes"), (False, "No"), (None, "N/A")], default=None, verbose_name="Visit 4 virus result" + ), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_4_collection_date', - field=models.DateField(blank=True, null=True, verbose_name='Visit 4 virus collection date'), + model_name="studysubject", + name="virus_test_4_collection_date", + field=models.DateField(blank=True, null=True, verbose_name="Visit 4 virus collection date"), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_4_iga_status', - field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Visit 4 IgA status'), + model_name="studysubject", + name="virus_test_4_iga_status", + field=models.CharField(blank=True, max_length=255, null=True, verbose_name="Visit 4 IgA status"), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_4_igg_status', - field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Visit 4 IgG status'), + model_name="studysubject", + name="virus_test_4_igg_status", + field=models.CharField(blank=True, max_length=255, null=True, verbose_name="Visit 4 IgG status"), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_4_updated', - field=models.DateField(blank=True, null=True, verbose_name='Visit 4 virus result date'), + model_name="studysubject", + name="virus_test_4_updated", + field=models.DateField(blank=True, null=True, verbose_name="Visit 4 virus result date"), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_5', - field=models.NullBooleanField(choices=[(True, 'Yes'), (False, 'No'), (None, 'N/A')], default=None, verbose_name='Visit 5 virus result'), + model_name="studysubject", + name="virus_test_5", + field=models.NullBooleanField( + choices=[(True, "Yes"), (False, "No"), (None, "N/A")], default=None, verbose_name="Visit 5 virus result" + ), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_5_collection_date', - field=models.DateField(blank=True, null=True, verbose_name='Visit 5 virus collection date'), + model_name="studysubject", + name="virus_test_5_collection_date", + field=models.DateField(blank=True, null=True, verbose_name="Visit 5 virus collection date"), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_5_iga_status', - field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Visit 5 IgA status'), + model_name="studysubject", + name="virus_test_5_iga_status", + field=models.CharField(blank=True, max_length=255, null=True, verbose_name="Visit 5 IgA status"), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_5_igg_status', - field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Visit 5 IgG status'), + model_name="studysubject", + name="virus_test_5_igg_status", + field=models.CharField(blank=True, max_length=255, null=True, verbose_name="Visit 5 IgG status"), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_5_updated', - field=models.DateField(blank=True, null=True, verbose_name='Visit 5 virus result date'), + model_name="studysubject", + name="virus_test_5_updated", + field=models.DateField(blank=True, null=True, verbose_name="Visit 5 virus result date"), ), migrations.AlterField( - model_name='studysubject', - name='voucher_types', - field=models.ManyToManyField(blank=True, to='web.VoucherType', verbose_name='Voucher types'), + model_name="studysubject", + name="voucher_types", + field=models.ManyToManyField(blank=True, to="web.VoucherType", verbose_name="Voucher types"), ), migrations.AlterField( - model_name='studysubject', - name='year_of_diagnosis', - field=models.IntegerField(blank=True, null=True, verbose_name='Year of diagnosis (YYYY)'), + model_name="studysubject", + name="year_of_diagnosis", + field=models.IntegerField(blank=True, null=True, verbose_name="Year of diagnosis (YYYY)"), ), migrations.AlterField( - model_name='studysubjectlist', - name='last_contact_attempt', - field=models.BooleanField(default=False, verbose_name='Last contact attempt'), + model_name="studysubjectlist", + name="last_contact_attempt", + field=models.BooleanField(default=False, verbose_name="Last contact attempt"), ), migrations.AlterField( - model_name='studysubjectlist', - name='type', - field=models.CharField(blank=True, choices=[('GENERIC', 'Generic subject list'), ('NO_VISIT', 'Subjects without visit'), ('REQUIRE_CONTACT', 'Subjects required contact'), ('VOUCHER_EXPIRY', 'Subject with vouchers to be expired soon')], max_length=50, null=True, verbose_name='Type of list'), + model_name="studysubjectlist", + name="type", + field=models.CharField( + blank=True, + choices=[ + ("GENERIC", "Generic subject list"), + ("NO_VISIT", "Subjects without visit"), + ("REQUIRE_CONTACT", "Subjects required contact"), + ("VOUCHER_EXPIRY", "Subject with vouchers to be expired soon"), + ], + max_length=50, + null=True, + verbose_name="Type of list", + ), ), migrations.AlterField( - model_name='studysubjectlist', - name='visits', - field=models.BooleanField(default=True, verbose_name='Visits summary'), + model_name="studysubjectlist", + name="visits", + field=models.BooleanField(default=True, verbose_name="Visits summary"), ), migrations.AlterField( - model_name='studyvisitlist', - name='type', - field=models.CharField(choices=[('GENERIC', 'Generic visit list'), ('EXCEEDED_TIME', 'Exceeded visit time'), ('UNFINISHED', 'Unfinished visits'), ('MISSING_APPOINTMENTS', 'Visits with missing appointments'), ('APPROACHING_WITHOUT_APPOINTMENTS', 'Approaching visits'), ('APPROACHING_FOR_MAIL_CONTACT', 'Post mail for approaching visits')], max_length=50, verbose_name='Type of list'), + model_name="studyvisitlist", + name="type", + field=models.CharField( + choices=[ + ("GENERIC", "Generic visit list"), + ("EXCEEDED_TIME", "Exceeded visit time"), + ("UNFINISHED", "Unfinished visits"), + ("MISSING_APPOINTMENTS", "Visits with missing appointments"), + ("APPROACHING_WITHOUT_APPOINTMENTS", "Approaching visits"), + ("APPROACHING_FOR_MAIL_CONTACT", "Post mail for approaching visits"), + ], + max_length=50, + verbose_name="Type of list", + ), ), migrations.AlterField( - model_name='studyvisitlist', - name='visible_appointment_types_done', - field=models.BooleanField(default=False, verbose_name='Done appointments'), + model_name="studyvisitlist", + name="visible_appointment_types_done", + field=models.BooleanField(default=False, verbose_name="Done appointments"), ), migrations.AlterField( - model_name='studyvisitlist', - name='visible_appointment_types_in_progress', - field=models.BooleanField(default=False, verbose_name='Appointments in progress'), + model_name="studyvisitlist", + name="visible_appointment_types_in_progress", + field=models.BooleanField(default=False, verbose_name="Appointments in progress"), ), migrations.AlterField( - model_name='studyvisitlist', - name='visible_appointment_types_missing', - field=models.BooleanField(default=False, verbose_name='Missing appointments'), + model_name="studyvisitlist", + name="visible_appointment_types_missing", + field=models.BooleanField(default=False, verbose_name="Missing appointments"), ), migrations.AlterField( - model_name='subject', - name='address', - field=models.CharField(blank=True, max_length=255, verbose_name='Address'), + model_name="subject", + name="address", + field=models.CharField(blank=True, max_length=255, verbose_name="Address"), ), migrations.AlterField( - model_name='subject', - name='city', - field=models.CharField(blank=True, max_length=50, verbose_name='City'), + model_name="subject", + name="city", + field=models.CharField(blank=True, max_length=50, verbose_name="City"), ), migrations.AlterField( - model_name='subject', - name='country', - field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='web.Country', verbose_name='Country'), + model_name="subject", + name="country", + field=models.ForeignKey( + default=1, on_delete=django.db.models.deletion.CASCADE, to="web.Country", verbose_name="Country" + ), ), migrations.AlterField( - model_name='subject', - name='date_born', - field=models.DateField(blank=True, null=True, verbose_name='Date of birth (YYYY-MM-DD)'), + model_name="subject", + name="date_born", + field=models.DateField(blank=True, null=True, verbose_name="Date of birth (YYYY-MM-DD)"), ), migrations.AlterField( - model_name='subject', - name='dead', - field=models.BooleanField(default=False, verbose_name='Deceased'), + model_name="subject", + name="dead", + field=models.BooleanField(default=False, verbose_name="Deceased"), ), migrations.AlterField( - model_name='subject', - name='default_written_communication_language', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='subjects_written_communication', to='web.Language', verbose_name='Default language for document generation'), + model_name="subject", + name="default_written_communication_language", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="subjects_written_communication", + to="web.Language", + verbose_name="Default language for document generation", + ), ), migrations.AlterField( - model_name='subject', - name='email', - field=models.EmailField(blank=True, max_length=254, null=True, verbose_name='E-mail'), + model_name="subject", + name="email", + field=models.EmailField(blank=True, max_length=254, null=True, verbose_name="E-mail"), ), migrations.AlterField( - model_name='subject', - name='first_name', - field=models.CharField(max_length=50, verbose_name='First name'), + model_name="subject", + name="first_name", + field=models.CharField(max_length=50, verbose_name="First name"), ), migrations.AlterField( - model_name='subject', - name='languages', - field=models.ManyToManyField(blank=True, to='web.Language', verbose_name='Known languages'), + model_name="subject", + name="languages", + field=models.ManyToManyField(blank=True, to="web.Language", verbose_name="Known languages"), ), migrations.AlterField( - model_name='subject', - name='last_name', - field=models.CharField(max_length=50, verbose_name='Last name'), + model_name="subject", + name="last_name", + field=models.CharField(max_length=50, verbose_name="Last name"), ), migrations.AlterField( - model_name='subject', - name='next_of_keen_address', - field=models.TextField(blank=True, max_length=2000, verbose_name='Next of keen address'), + model_name="subject", + name="next_of_keen_address", + field=models.TextField(blank=True, max_length=2000, verbose_name="Next of keen address"), ), migrations.AlterField( - model_name='subject', - name='next_of_keen_name', - field=models.CharField(blank=True, max_length=255, verbose_name='Next of keen'), + model_name="subject", + name="next_of_keen_name", + field=models.CharField(blank=True, max_length=255, verbose_name="Next of keen"), ), migrations.AlterField( - model_name='subject', - name='next_of_keen_phone', - field=models.CharField(blank=True, max_length=50, verbose_name='Next of keen phone'), + model_name="subject", + name="next_of_keen_phone", + field=models.CharField(blank=True, max_length=50, verbose_name="Next of keen phone"), ), migrations.AlterField( - model_name='subject', - name='phone_number', - field=models.CharField(blank=True, max_length=64, null=True, verbose_name='Phone number'), + model_name="subject", + name="phone_number", + field=models.CharField(blank=True, max_length=64, null=True, verbose_name="Phone number"), ), migrations.AlterField( - model_name='subject', - name='phone_number_2', - field=models.CharField(blank=True, max_length=64, null=True, verbose_name='Phone number 2'), + model_name="subject", + name="phone_number_2", + field=models.CharField(blank=True, max_length=64, null=True, verbose_name="Phone number 2"), ), migrations.AlterField( - model_name='subject', - name='phone_number_3', - field=models.CharField(blank=True, max_length=64, null=True, verbose_name='Phone number 3'), + model_name="subject", + name="phone_number_3", + field=models.CharField(blank=True, max_length=64, null=True, verbose_name="Phone number 3"), ), migrations.AlterField( - model_name='subject', - name='postal_code', - field=models.CharField(blank=True, max_length=7, verbose_name='Postal code'), + model_name="subject", + name="postal_code", + field=models.CharField(blank=True, max_length=7, verbose_name="Postal code"), ), migrations.AlterField( - model_name='subject', - name='sex', - field=models.CharField(choices=[('M', 'Male'), ('F', 'Female')], max_length=1, verbose_name='Sex'), + model_name="subject", + name="sex", + field=models.CharField(choices=[("M", "Male"), ("F", "Female")], max_length=1, verbose_name="Sex"), ), migrations.AlterField( - model_name='subject', - name='social_security_number', - field=models.CharField(blank=True, max_length=50, verbose_name='Social security number'), + model_name="subject", + name="social_security_number", + field=models.CharField(blank=True, max_length=50, verbose_name="Social security number"), ), migrations.AlterField( - model_name='subjectcolumns', - name='address', - field=models.BooleanField(default=False, max_length=1, verbose_name='Address'), + model_name="subjectcolumns", + name="address", + field=models.BooleanField(default=False, max_length=1, verbose_name="Address"), ), migrations.AlterField( - model_name='subjectcolumns', - name='city', - field=models.BooleanField(default=False, max_length=1, verbose_name='City'), + model_name="subjectcolumns", + name="city", + field=models.BooleanField(default=False, max_length=1, verbose_name="City"), ), migrations.AlterField( - model_name='subjectcolumns', - name='country', - field=models.BooleanField(default=False, max_length=1, verbose_name='Country'), + model_name="subjectcolumns", + name="country", + field=models.BooleanField(default=False, max_length=1, verbose_name="Country"), ), migrations.AlterField( - model_name='subjectcolumns', - name='date_born', - field=models.BooleanField(default=False, max_length=1, verbose_name='Date of birth'), + model_name="subjectcolumns", + name="date_born", + field=models.BooleanField(default=False, max_length=1, verbose_name="Date of birth"), ), migrations.AlterField( - model_name='subjectcolumns', - name='dead', - field=models.BooleanField(default=True, max_length=1, verbose_name='Deceased'), + model_name="subjectcolumns", + name="dead", + field=models.BooleanField(default=True, max_length=1, verbose_name="Deceased"), ), migrations.AlterField( - model_name='subjectcolumns', - name='default_written_communication_language', - field=models.BooleanField(default=False, max_length=1, verbose_name='Default language for document generation'), + model_name="subjectcolumns", + name="default_written_communication_language", + field=models.BooleanField( + default=False, max_length=1, verbose_name="Default language for document generation" + ), ), migrations.AlterField( - model_name='subjectcolumns', - name='email', - field=models.BooleanField(default=False, max_length=1, verbose_name='E-mail'), + model_name="subjectcolumns", + name="email", + field=models.BooleanField(default=False, max_length=1, verbose_name="E-mail"), ), migrations.AlterField( - model_name='subjectcolumns', - name='first_name', - field=models.BooleanField(default=True, max_length=1, verbose_name='First name'), + model_name="subjectcolumns", + name="first_name", + field=models.BooleanField(default=True, max_length=1, verbose_name="First name"), ), migrations.AlterField( - model_name='subjectcolumns', - name='languages', - field=models.BooleanField(default=False, max_length=1, verbose_name='Known languages'), + model_name="subjectcolumns", + name="languages", + field=models.BooleanField(default=False, max_length=1, verbose_name="Known languages"), ), migrations.AlterField( - model_name='subjectcolumns', - name='last_name', - field=models.BooleanField(default=True, max_length=1, verbose_name='Last name'), + model_name="subjectcolumns", + name="last_name", + field=models.BooleanField(default=True, max_length=1, verbose_name="Last name"), ), migrations.AlterField( - model_name='subjectcolumns', - name='next_of_keen_address', - field=models.BooleanField(default=False, max_length=1, verbose_name='Next of kin address'), + model_name="subjectcolumns", + name="next_of_keen_address", + field=models.BooleanField(default=False, max_length=1, verbose_name="Next of kin address"), ), migrations.AlterField( - model_name='subjectcolumns', - name='next_of_keen_name', - field=models.BooleanField(default=False, max_length=1, verbose_name='Next of kin'), + model_name="subjectcolumns", + name="next_of_keen_name", + field=models.BooleanField(default=False, max_length=1, verbose_name="Next of kin"), ), migrations.AlterField( - model_name='subjectcolumns', - name='next_of_keen_phone', - field=models.BooleanField(default=False, max_length=1, verbose_name='Next of kin phone'), + model_name="subjectcolumns", + name="next_of_keen_phone", + field=models.BooleanField(default=False, max_length=1, verbose_name="Next of kin phone"), ), migrations.AlterField( - model_name='subjectcolumns', - name='phone_number', - field=models.BooleanField(default=False, max_length=1, verbose_name='Phone number'), + model_name="subjectcolumns", + name="phone_number", + field=models.BooleanField(default=False, max_length=1, verbose_name="Phone number"), ), migrations.AlterField( - model_name='subjectcolumns', - name='phone_number_2', - field=models.BooleanField(default=False, max_length=1, verbose_name='Phone number 2'), + model_name="subjectcolumns", + name="phone_number_2", + field=models.BooleanField(default=False, max_length=1, verbose_name="Phone number 2"), ), migrations.AlterField( - model_name='subjectcolumns', - name='phone_number_3', - field=models.BooleanField(default=False, max_length=1, verbose_name='Phone number 3'), + model_name="subjectcolumns", + name="phone_number_3", + field=models.BooleanField(default=False, max_length=1, verbose_name="Phone number 3"), ), migrations.AlterField( - model_name='subjectcolumns', - name='postal_code', - field=models.BooleanField(default=False, max_length=1, verbose_name='Postal code'), + model_name="subjectcolumns", + name="postal_code", + field=models.BooleanField(default=False, max_length=1, verbose_name="Postal code"), ), migrations.AlterField( - model_name='subjectcolumns', - name='sex', - field=models.BooleanField(default=False, max_length=1, verbose_name='Sex'), + model_name="subjectcolumns", + name="sex", + field=models.BooleanField(default=False, max_length=1, verbose_name="Sex"), ), migrations.AlterField( - model_name='subjectcolumns', - name='social_security_number', - field=models.BooleanField(default=False, verbose_name='Social security_number'), + model_name="subjectcolumns", + name="social_security_number", + field=models.BooleanField(default=False, verbose_name="Social security_number"), ), migrations.AlterField( - model_name='visit', - name='visit_number', - field=models.IntegerField(default=1, verbose_name='Visit number'), + model_name="visit", + name="visit_number", + field=models.IntegerField(default=1, verbose_name="Visit number"), ), migrations.AlterField( - model_name='visitcolumns', - name='datetime_begin', - field=models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, verbose_name='Visit starts date'), + model_name="visitcolumns", + name="datetime_begin", + field=models.BooleanField( + choices=[(True, "Yes"), (False, "No")], default=True, verbose_name="Visit starts date" + ), ), migrations.AlterField( - model_name='visitcolumns', - name='datetime_end', - field=models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, verbose_name='Visit ends date'), + model_name="visitcolumns", + name="datetime_end", + field=models.BooleanField( + choices=[(True, "Yes"), (False, "No")], default=True, verbose_name="Visit ends date" + ), ), migrations.AlterField( - model_name='visitcolumns', - name='is_finished', - field=models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, verbose_name='Is finished'), + model_name="visitcolumns", + name="is_finished", + field=models.BooleanField(choices=[(True, "Yes"), (False, "No")], default=True, verbose_name="Is finished"), ), migrations.AlterField( - model_name='visitcolumns', - name='post_mail_sent', - field=models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, verbose_name='Post mail sent'), + model_name="visitcolumns", + name="post_mail_sent", + field=models.BooleanField( + choices=[(True, "Yes"), (False, "No")], default=True, verbose_name="Post mail sent" + ), ), migrations.AlterField( - model_name='visitcolumns', - name='visible_appointment_types', - field=models.BooleanField(default=False, verbose_name='All appointments'), + model_name="visitcolumns", + name="visible_appointment_types", + field=models.BooleanField(default=False, verbose_name="All appointments"), ), migrations.AlterField( - model_name='visitcolumns', - name='visit_number', - field=models.BooleanField(choices=[(True, 'Yes'), (False, 'No')], default=True, verbose_name='Visit number'), + model_name="visitcolumns", + name="visit_number", + field=models.BooleanField( + choices=[(True, "Yes"), (False, "No")], default=True, verbose_name="Visit number" + ), ), migrations.AlterField( - model_name='voucher', - name='activity_type', - field=models.CharField(blank=True, default='', max_length=40, verbose_name='Activity type'), + model_name="voucher", + name="activity_type", + field=models.CharField(blank=True, default="", max_length=40, verbose_name="Activity type"), ), migrations.AlterField( - model_name='voucher', - name='expiry_date', - field=models.DateField(verbose_name='Expiry date'), + model_name="voucher", + name="expiry_date", + field=models.DateField(verbose_name="Expiry date"), ), migrations.AlterField( - model_name='voucher', - name='feedback', - field=models.TextField(blank=True, max_length=2000, verbose_name='Feedback'), + model_name="voucher", + name="feedback", + field=models.TextField(blank=True, max_length=2000, verbose_name="Feedback"), ), migrations.AlterField( - model_name='voucher', - name='hours', - field=models.IntegerField(default=0, verbose_name='Hours'), + model_name="voucher", + name="hours", + field=models.IntegerField(default=0, verbose_name="Hours"), ), migrations.AlterField( - model_name='voucher', - name='issue_date', - field=models.DateField(verbose_name='Issue date'), + model_name="voucher", + name="issue_date", + field=models.DateField(verbose_name="Issue date"), ), migrations.AlterField( - model_name='voucher', - name='issue_worker', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='issued_vouchers', to='web.Worker', verbose_name='Issued by'), + model_name="voucher", + name="issue_worker", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="issued_vouchers", + to="web.Worker", + verbose_name="Issued by", + ), ), migrations.AlterField( - model_name='voucher', - name='number', - field=models.CharField(max_length=50, unique=True, verbose_name='Number'), + model_name="voucher", + name="number", + field=models.CharField(max_length=50, unique=True, verbose_name="Number"), ), migrations.AlterField( - model_name='voucher', - name='status', - field=models.CharField(choices=[('NEW', 'New'), ('IN_USE', 'In use'), ('USED', 'Used'), ('EXPIRED', 'Expired'), ('REMOVED', 'Removed')], default='NEW', max_length=20, verbose_name='Status'), + model_name="voucher", + name="status", + field=models.CharField( + choices=[ + ("NEW", "New"), + ("IN_USE", "In use"), + ("USED", "Used"), + ("EXPIRED", "Expired"), + ("REMOVED", "Removed"), + ], + default="NEW", + max_length=20, + verbose_name="Status", + ), ), migrations.AlterField( - model_name='voucherpartnersession', - name='date', - field=models.DateTimeField(verbose_name='Issue date'), + model_name="voucherpartnersession", + name="date", + field=models.DateTimeField(verbose_name="Issue date"), ), migrations.AlterField( - model_name='voucherpartnersession', - name='length', - field=models.IntegerField(verbose_name='Length (minutes)'), + model_name="voucherpartnersession", + name="length", + field=models.IntegerField(verbose_name="Length (minutes)"), ), migrations.AlterField( - model_name='vouchertype', - name='code', - field=models.CharField(max_length=20, verbose_name='Code'), + model_name="vouchertype", + name="code", + field=models.CharField(max_length=20, verbose_name="Code"), ), migrations.AlterField( - model_name='vouchertype', - name='description', - field=models.CharField(blank=True, max_length=1024, verbose_name='Description'), + model_name="vouchertype", + name="description", + field=models.CharField(blank=True, max_length=1024, verbose_name="Description"), ), migrations.AlterField( - model_name='vouchertypeprice', - name='end_date', - field=models.DateField(verbose_name='End date'), + model_name="vouchertypeprice", + name="end_date", + field=models.DateField(verbose_name="End date"), ), migrations.AlterField( - model_name='vouchertypeprice', - name='price', - field=models.DecimalField(decimal_places=2, max_digits=6, verbose_name='Price'), + model_name="vouchertypeprice", + name="price", + field=models.DecimalField(decimal_places=2, max_digits=6, verbose_name="Price"), ), migrations.AlterField( - model_name='vouchertypeprice', - name='start_date', - field=models.DateField(verbose_name='Start date'), + model_name="vouchertypeprice", + name="start_date", + field=models.DateField(verbose_name="Start date"), ), migrations.AlterField( - model_name='worker', - name='address', - field=models.CharField(blank=True, max_length=255, verbose_name='Address'), + model_name="worker", + name="address", + field=models.CharField(blank=True, max_length=255, verbose_name="Address"), ), migrations.AlterField( - model_name='worker', - name='city', - field=models.CharField(blank=True, max_length=50, verbose_name='City'), + model_name="worker", + name="city", + field=models.CharField(blank=True, max_length=50, verbose_name="City"), ), migrations.AlterField( - model_name='worker', - name='comment', - field=models.TextField(blank=True, max_length=1024, null=True, verbose_name='Comment'), + model_name="worker", + name="comment", + field=models.TextField(blank=True, max_length=1024, null=True, verbose_name="Comment"), ), migrations.AlterField( - model_name='worker', - name='country', - field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='web.Country', verbose_name='Country'), + model_name="worker", + name="country", + field=models.ForeignKey( + default=1, on_delete=django.db.models.deletion.CASCADE, to="web.Country", verbose_name="Country" + ), ), migrations.AlterField( - model_name='worker', - name='email', - field=models.EmailField(blank=True, max_length=254, verbose_name='E-mail'), + model_name="worker", + name="email", + field=models.EmailField(blank=True, max_length=254, verbose_name="E-mail"), ), migrations.AlterField( - model_name='worker', - name='fax_number', - field=models.CharField(blank=True, max_length=20, verbose_name='Fax number'), + model_name="worker", + name="fax_number", + field=models.CharField(blank=True, max_length=20, verbose_name="Fax number"), ), migrations.AlterField( - model_name='worker', - name='first_name', - field=models.CharField(blank=True, max_length=50, verbose_name='First name'), + model_name="worker", + name="first_name", + field=models.CharField(blank=True, max_length=50, verbose_name="First name"), ), migrations.AlterField( - model_name='worker', - name='languages', - field=models.ManyToManyField(blank=True, to='web.Language', verbose_name='Known languages'), + model_name="worker", + name="languages", + field=models.ManyToManyField(blank=True, to="web.Language", verbose_name="Known languages"), ), migrations.AlterField( - model_name='worker', - name='last_name', - field=models.CharField(blank=True, max_length=50, verbose_name='Last name'), + model_name="worker", + name="last_name", + field=models.CharField(blank=True, max_length=50, verbose_name="Last name"), ), migrations.AlterField( - model_name='worker', - name='locations', - field=models.ManyToManyField(blank=True, to='web.Location', verbose_name='Locations'), + model_name="worker", + name="locations", + field=models.ManyToManyField(blank=True, to="web.Location", verbose_name="Locations"), ), migrations.AlterField( - model_name='worker', - name='name', - field=models.CharField(blank=True, default='', max_length=50, verbose_name='Name'), + model_name="worker", + name="name", + field=models.CharField(blank=True, default="", max_length=50, verbose_name="Name"), ), migrations.AlterField( - model_name='worker', - name='phone_number', - field=models.CharField(blank=True, max_length=20, verbose_name='Phone number'), + model_name="worker", + name="phone_number", + field=models.CharField(blank=True, max_length=20, verbose_name="Phone number"), ), migrations.AlterField( - model_name='worker', - name='phone_number_2', - field=models.CharField(blank=True, max_length=20, verbose_name='Phone number 2'), + model_name="worker", + name="phone_number_2", + field=models.CharField(blank=True, max_length=20, verbose_name="Phone number 2"), ), migrations.AlterField( - model_name='worker', - name='postal_code', - field=models.CharField(blank=True, max_length=7, verbose_name='Postal code'), + model_name="worker", + name="postal_code", + field=models.CharField(blank=True, max_length=7, verbose_name="Postal code"), ), migrations.AlterField( - model_name='worker', - name='specialization', - field=models.CharField(blank=True, max_length=20, verbose_name='Specialization'), + model_name="worker", + name="specialization", + field=models.CharField(blank=True, max_length=20, verbose_name="Specialization"), ), migrations.AlterField( - model_name='worker', - name='unit', - field=models.CharField(blank=True, max_length=50, verbose_name='Unit'), + model_name="worker", + name="unit", + field=models.CharField(blank=True, max_length=50, verbose_name="Unit"), ), migrations.AlterField( - model_name='worker', - name='voucher_partner_code', - field=models.CharField(blank=True, max_length=10, verbose_name='Code'), + model_name="worker", + name="voucher_partner_code", + field=models.CharField(blank=True, max_length=10, verbose_name="Code"), ), migrations.AlterField( - model_name='worker', - name='voucher_types', - field=models.ManyToManyField(blank=True, to='web.VoucherType', verbose_name='Voucher types'), + model_name="worker", + name="voucher_types", + field=models.ManyToManyField(blank=True, to="web.VoucherType", verbose_name="Voucher types"), ), migrations.AlterField( - model_name='workerstudyrole', - name='name', - field=models.CharField(choices=[('DOCTOR', 'Doctor'), ('NURSE', 'Nurse'), ('PSYCHOLOGIST', 'Psychologist'), ('TECHNICIAN', 'Technician'), ('SECRETARY', 'Secretary'), ('PROJECT MANAGER', 'Project Manager')], max_length=20, verbose_name='Role'), + model_name="workerstudyrole", + name="name", + field=models.CharField( + choices=[ + ("DOCTOR", "Doctor"), + ("NURSE", "Nurse"), + ("PSYCHOLOGIST", "Psychologist"), + ("TECHNICIAN", "Technician"), + ("SECRETARY", "Secretary"), + ("PROJECT MANAGER", "Project Manager"), + ], + max_length=20, + verbose_name="Role", + ), ), migrations.AlterField( - model_name='workerstudyrole', - name='permissions', - field=models.ManyToManyField(blank=True, to='auth.Permission', verbose_name='Worker Study Permissions'), + model_name="workerstudyrole", + name="permissions", + field=models.ManyToManyField(blank=True, to="auth.Permission", verbose_name="Worker Study Permissions"), ), ] diff --git a/smash/web/migrations/0180_auto_20201120_1554.py b/smash/web/migrations/0180_auto_20201120_1554.py index 12474a8aebcbd8176fa2562489f2d82d17742dc9..ec3bfcb2137046afcf23d3c8a540cac2b4ad32ad 100644 --- a/smash/web/migrations/0180_auto_20201120_1554.py +++ b/smash/web/migrations/0180_auto_20201120_1554.py @@ -5,46 +5,51 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ - ('web', '0179_merge_20201117_1048'), + ("web", "0179_merge_20201117_1048"), ] operations = [ migrations.AddField( - model_name='privacynotice', - name='summary', - field=models.CharField(default='description', max_length=255, verbose_name='Summary'), + model_name="privacynotice", + name="summary", + field=models.CharField(default="description", max_length=255, verbose_name="Summary"), preserve_default=False, ), migrations.AddField( - model_name='study', - name='acceptance_of_study_privacy_notice_required', - field=models.BooleanField(default=False, verbose_name='Is privacy notice acceptance required?'), + model_name="study", + name="acceptance_of_study_privacy_notice_required", + field=models.BooleanField(default=False, verbose_name="Is privacy notice acceptance required?"), ), migrations.AlterField( - model_name='privacynotice', - name='created_at', - field=models.DateTimeField(auto_now_add=True, verbose_name='Created at'), + model_name="privacynotice", + name="created_at", + field=models.DateTimeField(auto_now_add=True, verbose_name="Created at"), ), migrations.AlterField( - model_name='privacynotice', - name='document', - field=models.FileField(upload_to='privacy_notices/', verbose_name='Study Privacy Notice file'), + model_name="privacynotice", + name="document", + field=models.FileField(upload_to="privacy_notices/", verbose_name="Study Privacy Notice file"), ), migrations.AlterField( - model_name='privacynotice', - name='name', - field=models.CharField(max_length=255, verbose_name='Name'), + model_name="privacynotice", + name="name", + field=models.CharField(max_length=255, verbose_name="Name"), ), migrations.AlterField( - model_name='privacynotice', - name='updated_at', - field=models.DateTimeField(auto_now=True, verbose_name='Updated at'), + model_name="privacynotice", + name="updated_at", + field=models.DateTimeField(auto_now=True, verbose_name="Updated at"), ), migrations.AlterField( - model_name='studysubject', - name='referral_letter', - field=models.FileField(blank=True, null=True, storage=django.core.files.storage.FileSystemStorage(location='/tmp/upload'), upload_to='referral_letters', verbose_name='Referral letter'), + model_name="studysubject", + name="referral_letter", + field=models.FileField( + blank=True, + null=True, + storage=django.core.files.storage.FileSystemStorage(location="/tmp/upload"), + upload_to="referral_letters", + verbose_name="Referral letter", + ), ), ] diff --git a/smash/web/migrations/0184_visitimportdata.py b/smash/web/migrations/0184_visitimportdata.py index 4354c4d94bfc91db56e29903b9bfe60bd30dacea..366d3b1b119aca08bc3aa38559257340bdd4aa3f 100644 --- a/smash/web/migrations/0184_visitimportdata.py +++ b/smash/web/migrations/0184_visitimportdata.py @@ -5,63 +5,153 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0183_auto_20201126_1154'), + ("web", "0183_auto_20201126_1154"), ] operations = [ migrations.CreateModel( - name='EtlData', + name="EtlData", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('filename', models.CharField(blank=True, default='', max_length=128, verbose_name='File used for automatic import')), - ('run_at_times', models.CharField(blank=True, default='', max_length=1024, verbose_name='At what time automatic import should run')), - ('csv_delimiter', models.CharField(blank=False, default=',', max_length=1, verbose_name='CSV delimiter')), - ('date_format', models.CharField(blank=False, default='%Y-%m-%d', max_length=20, verbose_name='Date format')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ( + "filename", + models.CharField( + blank=True, default="", max_length=128, verbose_name="File used for automatic import" + ), + ), + ( + "run_at_times", + models.CharField( + blank=True, default="", max_length=1024, verbose_name="At what time automatic import should run" + ), + ), + ( + "csv_delimiter", + models.CharField(blank=False, default=",", max_length=1, verbose_name="CSV delimiter"), + ), + ( + "date_format", + models.CharField(blank=False, default="%Y-%m-%d", max_length=20, verbose_name="Date format"), + ), ], ), migrations.CreateModel( - name='VisitImportData', + name="VisitImportData", fields=[ - ('etldata_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='web.EtlData')), - ('subject_id_column_name', models.CharField(default='donor_id', max_length=128, verbose_name='Subject id column name')), - ('visit_date_column_name', models.CharField(default='dateofvisit', max_length=128, verbose_name='Visit date column name')), - ('location_column_name', models.CharField(default='adressofvisit', max_length=128, verbose_name='Location column name')), - ('visit_number_column_name', models.CharField(default='visit_id', max_length=128, verbose_name='Visit number column name')), - ('appointment_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='web.AppointmentType', verbose_name='Default appointment type')), + ( + "etldata_ptr", + models.OneToOneField( + auto_created=True, + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + serialize=False, + to="web.EtlData", + ), + ), + ( + "subject_id_column_name", + models.CharField(default="donor_id", max_length=128, verbose_name="Subject id column name"), + ), + ( + "visit_date_column_name", + models.CharField(default="dateofvisit", max_length=128, verbose_name="Visit date column name"), + ), + ( + "location_column_name", + models.CharField(default="adressofvisit", max_length=128, verbose_name="Location column name"), + ), + ( + "visit_number_column_name", + models.CharField(default="visit_id", max_length=128, verbose_name="Visit number column name"), + ), + ( + "appointment_type", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.AppointmentType", + verbose_name="Default appointment type", + ), + ), ], - bases=('web.etldata',), + bases=("web.etldata",), ), migrations.AddField( - model_name='etldata', - name='import_worker', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='web.Worker', verbose_name='Worker used by importer'), + model_name="etldata", + name="import_worker", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="web.Worker", + verbose_name="Worker used by importer", + ), ), migrations.AddField( - model_name='etldata', - name='study', - field=models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='web.Study', verbose_name='Study'), + model_name="etldata", + name="study", + field=models.ForeignKey( + editable=False, on_delete=django.db.models.deletion.CASCADE, to="web.Study", verbose_name="Study" + ), ), migrations.CreateModel( - name='SubjectImportData', + name="SubjectImportData", fields=[ - ('etldata_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='web.EtlData')), - ('country', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='web.Country', verbose_name='Default country')), - ('location', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='web.Location', verbose_name='Default location')), + ( + "etldata_ptr", + models.OneToOneField( + auto_created=True, + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + serialize=False, + to="web.EtlData", + ), + ), + ( + "country", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to="web.Country", + verbose_name="Default country", + ), + ), + ( + "location", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to="web.Location", + verbose_name="Default location", + ), + ), ], - bases=('web.etldata',), + bases=("web.etldata",), ), migrations.CreateModel( - name='EtlColumnMapping', + name="EtlColumnMapping", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('table_name', models.CharField(blank=True, default='', max_length=128)), - ('column_name', models.CharField(blank=True, default='', max_length=128)), - ('csv_column_name', models.CharField(blank=True, default='', max_length=1024)), - ('enabled', models.BooleanField(default=True)), - ('etl_data', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, related_name='column_mappings', to='web.EtlData', verbose_name='Importer')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("table_name", models.CharField(blank=True, default="", max_length=128)), + ("column_name", models.CharField(blank=True, default="", max_length=128)), + ("csv_column_name", models.CharField(blank=True, default="", max_length=1024)), + ("enabled", models.BooleanField(default=True)), + ( + "etl_data", + models.ForeignKey( + editable=False, + on_delete=django.db.models.deletion.CASCADE, + related_name="column_mappings", + to="web.EtlData", + verbose_name="Importer", + ), + ), ], ), - ] diff --git a/smash/web/migrations/0186_auto_20201127_1003.py b/smash/web/migrations/0186_auto_20201127_1003.py index 4828b280b4f13a86f37c9de9d59732e9610f936a..f84c5c8cab84bbf78a2428c79c97d2a9583f19c3 100644 --- a/smash/web/migrations/0186_auto_20201127_1003.py +++ b/smash/web/migrations/0186_auto_20201127_1003.py @@ -4,40 +4,64 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ - ('web', '0185_visitimportdata_migration'), + ("web", "0185_visitimportdata_migration"), ] operations = [ migrations.AlterField( - model_name='studysubject', - name='pd_in_family', - field=models.BooleanField(default=None, null=True, verbose_name='PD in family'), + model_name="studysubject", + name="pd_in_family", + field=models.BooleanField(default=None, null=True, verbose_name="PD in family"), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_1', - field=models.BooleanField(choices=[(True, 'Yes'), (False, 'No'), (None, 'N/A')], default=None, null=True, verbose_name='Visit 1 virus result'), + model_name="studysubject", + name="virus_test_1", + field=models.BooleanField( + choices=[(True, "Yes"), (False, "No"), (None, "N/A")], + default=None, + null=True, + verbose_name="Visit 1 virus result", + ), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_2', - field=models.BooleanField(choices=[(True, 'Yes'), (False, 'No'), (None, 'N/A')], default=None, null=True, verbose_name='Visit 2 virus result'), + model_name="studysubject", + name="virus_test_2", + field=models.BooleanField( + choices=[(True, "Yes"), (False, "No"), (None, "N/A")], + default=None, + null=True, + verbose_name="Visit 2 virus result", + ), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_3', - field=models.BooleanField(choices=[(True, 'Yes'), (False, 'No'), (None, 'N/A')], default=None, null=True, verbose_name='Visit 3 virus result'), + model_name="studysubject", + name="virus_test_3", + field=models.BooleanField( + choices=[(True, "Yes"), (False, "No"), (None, "N/A")], + default=None, + null=True, + verbose_name="Visit 3 virus result", + ), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_4', - field=models.BooleanField(choices=[(True, 'Yes'), (False, 'No'), (None, 'N/A')], default=None, null=True, verbose_name='Visit 4 virus result'), + model_name="studysubject", + name="virus_test_4", + field=models.BooleanField( + choices=[(True, "Yes"), (False, "No"), (None, "N/A")], + default=None, + null=True, + verbose_name="Visit 4 virus result", + ), ), migrations.AlterField( - model_name='studysubject', - name='virus_test_5', - field=models.BooleanField(choices=[(True, 'Yes'), (False, 'No'), (None, 'N/A')], default=None, null=True, verbose_name='Visit 5 virus result'), + model_name="studysubject", + name="virus_test_5", + field=models.BooleanField( + choices=[(True, "Yes"), (False, "No"), (None, "N/A")], + default=None, + null=True, + verbose_name="Visit 5 virus result", + ), ), ] diff --git a/smash/web/migrations/0187_auto_20201130_1224.py b/smash/web/migrations/0187_auto_20201130_1224.py index 44d54c081f27749d1966a997b44f0149cb3117ab..aa769589d536c79093c994292fbea77421de4d49 100644 --- a/smash/web/migrations/0187_auto_20201130_1224.py +++ b/smash/web/migrations/0187_auto_20201130_1224.py @@ -5,40 +5,68 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0186_auto_20201127_1003'), + ("web", "0186_auto_20201127_1003"), ] operations = [ migrations.AlterField( - model_name='studysubjectlist', - name='study', - field=models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='web.study'), + model_name="studysubjectlist", + name="study", + field=models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to="web.study"), ), migrations.AlterField( - model_name='studysubjectlist', - name='type', - field=models.CharField(blank=True, choices=[('GENERIC', 'Generic subject list'), ('NO_VISIT', 'Subjects without visit'), ('REQUIRE_CONTACT', 'Subjects required contact'), ('VOUCHER_EXPIRY', 'Subject with vouchers to be expired soon')], editable=False, max_length=50, null=True, verbose_name='Type of list'), + model_name="studysubjectlist", + name="type", + field=models.CharField( + blank=True, + choices=[ + ("GENERIC", "Generic subject list"), + ("NO_VISIT", "Subjects without visit"), + ("REQUIRE_CONTACT", "Subjects required contact"), + ("VOUCHER_EXPIRY", "Subject with vouchers to be expired soon"), + ], + editable=False, + max_length=50, + null=True, + verbose_name="Type of list", + ), ), migrations.AlterField( - model_name='studysubjectlist', - name='visible_subject_columns', - field=models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='web.subjectcolumns'), + model_name="studysubjectlist", + name="visible_subject_columns", + field=models.ForeignKey( + editable=False, on_delete=django.db.models.deletion.CASCADE, to="web.subjectcolumns" + ), ), migrations.AlterField( - model_name='studysubjectlist', - name='visible_subject_study_columns', - field=models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='web.studycolumns'), + model_name="studysubjectlist", + name="visible_subject_study_columns", + field=models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to="web.studycolumns"), ), migrations.CreateModel( - name='CustomStudySubjectVisibility', + name="CustomStudySubjectVisibility", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('visible', models.BooleanField(default=False)), - ('study_subject_field', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='web.customstudysubjectfield', verbose_name='Custom Field')), - ('visible_subject_study_columns', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='web.studycolumns', verbose_name='List of visible columns')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("visible", models.BooleanField(default=False)), + ( + "study_subject_field", + models.ForeignKey( + editable=False, + on_delete=django.db.models.deletion.CASCADE, + to="web.customstudysubjectfield", + verbose_name="Custom Field", + ), + ), + ( + "visible_subject_study_columns", + models.ForeignKey( + editable=False, + on_delete=django.db.models.deletion.CASCADE, + to="web.studycolumns", + verbose_name="List of visible columns", + ), + ), ], ), - ] diff --git a/smash/web/migrations/0190_remove_study_related_fields.py b/smash/web/migrations/0190_remove_study_related_fields.py index 6b7207d114ab7b1b9bf259b7fa120c5091d46d2f..069fb23ab9d8a42c21f1a7b54343cabeb834437b 100644 --- a/smash/web/migrations/0190_remove_study_related_fields.py +++ b/smash/web/migrations/0190_remove_study_related_fields.py @@ -2,8 +2,14 @@ from django.db import migrations # noinspection PyUnusedLocal -from web.models.constants import CUSTOM_FIELD_TYPE_TEXT, GLOBAL_STUDY_ID, CUSTOM_FIELD_TYPE_BOOLEAN, \ - CUSTOM_FIELD_TYPE_INTEGER, CUSTOM_FIELD_TYPE_SELECT_LIST, CUSTOM_FIELD_TYPE_DATE +from web.models.constants import ( + CUSTOM_FIELD_TYPE_TEXT, + GLOBAL_STUDY_ID, + CUSTOM_FIELD_TYPE_BOOLEAN, + CUSTOM_FIELD_TYPE_INTEGER, + CUSTOM_FIELD_TYPE_SELECT_LIST, + CUSTOM_FIELD_TYPE_DATE, +) def create_custom_fields(apps, schema_editor): @@ -15,251 +21,363 @@ def create_custom_fields(apps, schema_editor): # noinspection PyPep8Naming CustomStudySubjectValue = apps.get_model("web", "CustomStudySubjectValue") - mpower_field = CustomStudySubjectField.objects.create(name="MPower ID", type=CUSTOM_FIELD_TYPE_TEXT, - study_id=GLOBAL_STUDY_ID, unique=True) - screening_field = CustomStudySubjectField.objects.create(name="Screening", type=CUSTOM_FIELD_TYPE_TEXT, - study_id=GLOBAL_STUDY_ID) - diagnosis_field = CustomStudySubjectField.objects.create(name="Diagnosis", type=CUSTOM_FIELD_TYPE_TEXT, - study_id=GLOBAL_STUDY_ID) - previously_in_study_field = CustomStudySubjectField.objects.create(name="Previously in PDP study", - type=CUSTOM_FIELD_TYPE_BOOLEAN, - study_id=GLOBAL_STUDY_ID) - pd_in_family_field = CustomStudySubjectField.objects.create(name="PD in family", - type=CUSTOM_FIELD_TYPE_BOOLEAN, - study_id=GLOBAL_STUDY_ID) - brain_donation_agreement_field = CustomStudySubjectField.objects.create(name="Brain donation agreement", - type=CUSTOM_FIELD_TYPE_BOOLEAN, - study_id=GLOBAL_STUDY_ID) - year_of_diagnosis_field = CustomStudySubjectField.objects.create(name="Year of diagnosis", - type=CUSTOM_FIELD_TYPE_INTEGER, - study_id=GLOBAL_STUDY_ID) + mpower_field = CustomStudySubjectField.objects.create( + name="MPower ID", type=CUSTOM_FIELD_TYPE_TEXT, study_id=GLOBAL_STUDY_ID, unique=True + ) + screening_field = CustomStudySubjectField.objects.create( + name="Screening", type=CUSTOM_FIELD_TYPE_TEXT, study_id=GLOBAL_STUDY_ID + ) + diagnosis_field = CustomStudySubjectField.objects.create( + name="Diagnosis", type=CUSTOM_FIELD_TYPE_TEXT, study_id=GLOBAL_STUDY_ID + ) + previously_in_study_field = CustomStudySubjectField.objects.create( + name="Previously in PDP study", type=CUSTOM_FIELD_TYPE_BOOLEAN, study_id=GLOBAL_STUDY_ID + ) + pd_in_family_field = CustomStudySubjectField.objects.create( + name="PD in family", type=CUSTOM_FIELD_TYPE_BOOLEAN, study_id=GLOBAL_STUDY_ID + ) + brain_donation_agreement_field = CustomStudySubjectField.objects.create( + name="Brain donation agreement", type=CUSTOM_FIELD_TYPE_BOOLEAN, study_id=GLOBAL_STUDY_ID + ) + year_of_diagnosis_field = CustomStudySubjectField.objects.create( + name="Year of diagnosis", type=CUSTOM_FIELD_TYPE_INTEGER, study_id=GLOBAL_STUDY_ID + ) - virus_test_1_result_field = CustomStudySubjectField.objects.create(name="Virus 0 RT-PCR", - type=CUSTOM_FIELD_TYPE_SELECT_LIST, - study_id=GLOBAL_STUDY_ID, - possible_values="N/A;Positive;Negative;Inconclusive", - default_value="N/A", - readonly=True) - virus_test_2_result_field = CustomStudySubjectField.objects.create(name="Virus 1 RT-PCR", - type=CUSTOM_FIELD_TYPE_SELECT_LIST, - study_id=GLOBAL_STUDY_ID, - possible_values="N/A;Positive;Negative;Inconclusive", - default_value="N/A", - readonly=True) - virus_test_3_result_field = CustomStudySubjectField.objects.create(name="Virus 2 RT-PCR", - type=CUSTOM_FIELD_TYPE_SELECT_LIST, - study_id=GLOBAL_STUDY_ID, - possible_values="N/A;Positive;Negative;Inconclusive", - default_value="N/A", - readonly=True) - virus_test_4_result_field = CustomStudySubjectField.objects.create(name="Virus 3 RT-PCR", - type=CUSTOM_FIELD_TYPE_SELECT_LIST, - study_id=GLOBAL_STUDY_ID, - possible_values="N/A;Positive;Negative;Inconclusive", - default_value="N/A", - readonly=True) - virus_test_5_result_field = CustomStudySubjectField.objects.create(name="Virus 4 RT-PCR", - type=CUSTOM_FIELD_TYPE_SELECT_LIST, - study_id=GLOBAL_STUDY_ID, - possible_values="N/A;Positive;Negative;Inconclusive", - default_value="N/A", - readonly=True) - virus_test_1_updated_field = CustomStudySubjectField.objects.create(name="Visit 0 RT-PCR update date", - type=CUSTOM_FIELD_TYPE_DATE, - study_id=GLOBAL_STUDY_ID, - default_value="", - readonly=True) - virus_test_2_updated_field = CustomStudySubjectField.objects.create(name="Visit 1 RT-PCR update date", - type=CUSTOM_FIELD_TYPE_DATE, - study_id=GLOBAL_STUDY_ID, - default_value="", - readonly=True) - virus_test_3_updated_field = CustomStudySubjectField.objects.create(name="Visit 2 RT-PCR update date", - type=CUSTOM_FIELD_TYPE_DATE, - study_id=GLOBAL_STUDY_ID, - default_value="", - readonly=True) - virus_test_4_updated_field = CustomStudySubjectField.objects.create(name="Visit 3 RT-PCR update date", - type=CUSTOM_FIELD_TYPE_DATE, - study_id=GLOBAL_STUDY_ID, - default_value="", - readonly=True) - virus_test_5_updated_field = CustomStudySubjectField.objects.create(name="Visit 4 RT-PCR update date", - type=CUSTOM_FIELD_TYPE_DATE, - study_id=GLOBAL_STUDY_ID, - default_value="", - readonly=True) + virus_test_1_result_field = CustomStudySubjectField.objects.create( + name="Virus 0 RT-PCR", + type=CUSTOM_FIELD_TYPE_SELECT_LIST, + study_id=GLOBAL_STUDY_ID, + possible_values="N/A;Positive;Negative;Inconclusive", + default_value="N/A", + readonly=True, + ) + virus_test_2_result_field = CustomStudySubjectField.objects.create( + name="Virus 1 RT-PCR", + type=CUSTOM_FIELD_TYPE_SELECT_LIST, + study_id=GLOBAL_STUDY_ID, + possible_values="N/A;Positive;Negative;Inconclusive", + default_value="N/A", + readonly=True, + ) + virus_test_3_result_field = CustomStudySubjectField.objects.create( + name="Virus 2 RT-PCR", + type=CUSTOM_FIELD_TYPE_SELECT_LIST, + study_id=GLOBAL_STUDY_ID, + possible_values="N/A;Positive;Negative;Inconclusive", + default_value="N/A", + readonly=True, + ) + virus_test_4_result_field = CustomStudySubjectField.objects.create( + name="Virus 3 RT-PCR", + type=CUSTOM_FIELD_TYPE_SELECT_LIST, + study_id=GLOBAL_STUDY_ID, + possible_values="N/A;Positive;Negative;Inconclusive", + default_value="N/A", + readonly=True, + ) + virus_test_5_result_field = CustomStudySubjectField.objects.create( + name="Virus 4 RT-PCR", + type=CUSTOM_FIELD_TYPE_SELECT_LIST, + study_id=GLOBAL_STUDY_ID, + possible_values="N/A;Positive;Negative;Inconclusive", + default_value="N/A", + readonly=True, + ) + virus_test_1_updated_field = CustomStudySubjectField.objects.create( + name="Visit 0 RT-PCR update date", + type=CUSTOM_FIELD_TYPE_DATE, + study_id=GLOBAL_STUDY_ID, + default_value="", + readonly=True, + ) + virus_test_2_updated_field = CustomStudySubjectField.objects.create( + name="Visit 1 RT-PCR update date", + type=CUSTOM_FIELD_TYPE_DATE, + study_id=GLOBAL_STUDY_ID, + default_value="", + readonly=True, + ) + virus_test_3_updated_field = CustomStudySubjectField.objects.create( + name="Visit 2 RT-PCR update date", + type=CUSTOM_FIELD_TYPE_DATE, + study_id=GLOBAL_STUDY_ID, + default_value="", + readonly=True, + ) + virus_test_4_updated_field = CustomStudySubjectField.objects.create( + name="Visit 3 RT-PCR update date", + type=CUSTOM_FIELD_TYPE_DATE, + study_id=GLOBAL_STUDY_ID, + default_value="", + readonly=True, + ) + virus_test_5_updated_field = CustomStudySubjectField.objects.create( + name="Visit 4 RT-PCR update date", + type=CUSTOM_FIELD_TYPE_DATE, + study_id=GLOBAL_STUDY_ID, + default_value="", + readonly=True, + ) virus_test_1_collection_date_field = CustomStudySubjectField.objects.create( name="Visit 0 RT-PCR collection date", type=CUSTOM_FIELD_TYPE_DATE, study_id=GLOBAL_STUDY_ID, default_value="", - readonly=True) + readonly=True, + ) virus_test_2_collection_date_field = CustomStudySubjectField.objects.create( name="Visit 1 RT-PCR collection date", type=CUSTOM_FIELD_TYPE_DATE, study_id=GLOBAL_STUDY_ID, default_value="", - readonly=True) + readonly=True, + ) virus_test_3_collection_date_field = CustomStudySubjectField.objects.create( name="Visit 2 RT-PCR collection date", type=CUSTOM_FIELD_TYPE_DATE, study_id=GLOBAL_STUDY_ID, default_value="", - readonly=True) + readonly=True, + ) virus_test_4_collection_date_field = CustomStudySubjectField.objects.create( name="Visit 3 RT-PCR collection date", type=CUSTOM_FIELD_TYPE_DATE, study_id=GLOBAL_STUDY_ID, default_value="", - readonly=True) + readonly=True, + ) virus_test_5_collection_date_field = CustomStudySubjectField.objects.create( name="Visit 4 RT-PCR collection date", type=CUSTOM_FIELD_TYPE_DATE, study_id=GLOBAL_STUDY_ID, default_value="", - readonly=True) + readonly=True, + ) virus_test_1_iga_status_field = CustomStudySubjectField.objects.create( name="Visit 0 IgA Status", type=CUSTOM_FIELD_TYPE_SELECT_LIST, study_id=GLOBAL_STUDY_ID, possible_values="N/A;Positive;Negative;Borderline", default_value="N/A", - readonly=True) + readonly=True, + ) virus_test_2_iga_status_field = CustomStudySubjectField.objects.create( name="Visit 1 IgA Status", type=CUSTOM_FIELD_TYPE_SELECT_LIST, study_id=GLOBAL_STUDY_ID, possible_values="N/A;Positive;Negative;Borderline", default_value="N/A", - readonly=True) + readonly=True, + ) virus_test_3_iga_status_field = CustomStudySubjectField.objects.create( name="Visit 2 IgA Status", type=CUSTOM_FIELD_TYPE_SELECT_LIST, study_id=GLOBAL_STUDY_ID, possible_values="N/A;Positive;Negative;Borderline", default_value="N/A", - readonly=True) + readonly=True, + ) virus_test_4_iga_status_field = CustomStudySubjectField.objects.create( name="Visit 3 IgA Status", type=CUSTOM_FIELD_TYPE_SELECT_LIST, study_id=GLOBAL_STUDY_ID, possible_values="N/A;Positive;Negative;Borderline", default_value="N/A", - readonly=True) + readonly=True, + ) virus_test_5_iga_status_field = CustomStudySubjectField.objects.create( name="Visit 4 IgA Status", type=CUSTOM_FIELD_TYPE_SELECT_LIST, study_id=GLOBAL_STUDY_ID, possible_values="N/A;Positive;Negative;Borderline", default_value="N/A", - readonly=True) + readonly=True, + ) virus_test_1_igg_status_field = CustomStudySubjectField.objects.create( name="Visit 0 IgG Status", type=CUSTOM_FIELD_TYPE_SELECT_LIST, study_id=GLOBAL_STUDY_ID, possible_values="N/A;Positive;Negative;Borderline", default_value="N/A", - readonly=True) + readonly=True, + ) virus_test_2_igg_status_field = CustomStudySubjectField.objects.create( name="Visit 1 IgG Status", type=CUSTOM_FIELD_TYPE_SELECT_LIST, study_id=GLOBAL_STUDY_ID, possible_values="N/A;Positive;Negative;Borderline", default_value="N/A", - readonly=True) + readonly=True, + ) virus_test_3_igg_status_field = CustomStudySubjectField.objects.create( name="Visit 2 IgG Status", type=CUSTOM_FIELD_TYPE_SELECT_LIST, study_id=GLOBAL_STUDY_ID, possible_values="N/A;Positive;Negative;Borderline", default_value="N/A", - readonly=True) + readonly=True, + ) virus_test_4_igg_status_field = CustomStudySubjectField.objects.create( name="Visit 3 IgG Status", type=CUSTOM_FIELD_TYPE_SELECT_LIST, study_id=GLOBAL_STUDY_ID, possible_values="N/A;Positive;Negative;Borderline", default_value="N/A", - readonly=True) + readonly=True, + ) virus_test_5_igg_status_field = CustomStudySubjectField.objects.create( name="Visit 4 IgG Status", type=CUSTOM_FIELD_TYPE_SELECT_LIST, study_id=GLOBAL_STUDY_ID, possible_values="N/A;Positive;Negative;Borderline", default_value="N/A", - readonly=True) + readonly=True, + ) for subject in StudySubject.objects.all(): - CustomStudySubjectValue.objects.create(study_subject_field=mpower_field, value=subject.mpower_id, - study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=screening_field, value=subject.screening, - study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=diagnosis_field, value=subject.diagnosis, - study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=previously_in_study_field, - value=subject.previously_in_study, study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=brain_donation_agreement_field, - value=subject.brain_donation_agreement, study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=pd_in_family_field, - value=subject.pd_in_family, study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=year_of_diagnosis_field, - value=subject.year_of_diagnosis, study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=virus_test_1_result_field, - value=subject.virus_test_1_result, study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=virus_test_2_result_field, - value=subject.virus_test_2_result, study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=virus_test_3_result_field, - value=subject.virus_test_3_result, study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=virus_test_4_result_field, - value=subject.virus_test_4_result, study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=virus_test_5_result_field, - value=subject.virus_test_5_result, study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=virus_test_1_updated_field, - value=subject.virus_test_1_updated, study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=virus_test_2_updated_field, - value=subject.virus_test_2_updated, study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=virus_test_3_updated_field, - value=subject.virus_test_3_updated, study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=virus_test_4_updated_field, - value=subject.virus_test_4_updated, study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=virus_test_5_updated_field, - value=subject.virus_test_5_updated, study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=virus_test_1_collection_date_field, - value=subject.virus_test_1_collection_date, study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=virus_test_2_collection_date_field, - value=subject.virus_test_2_collection_date, study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=virus_test_3_collection_date_field, - value=subject.virus_test_3_collection_date, study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=virus_test_4_collection_date_field, - value=subject.virus_test_4_collection_date, study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=virus_test_5_collection_date_field, - value=subject.virus_test_5_collection_date, study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=virus_test_1_iga_status_field, - value=subject.virus_test_1_iga_status, study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=virus_test_2_iga_status_field, - value=subject.virus_test_2_iga_status, study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=virus_test_3_iga_status_field, - value=subject.virus_test_3_iga_status, study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=virus_test_4_iga_status_field, - value=subject.virus_test_4_iga_status, study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=virus_test_5_iga_status_field, - value=subject.virus_test_5_iga_status, study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=virus_test_1_igg_status_field, - value=subject.virus_test_1_igg_status, study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=virus_test_2_igg_status_field, - value=subject.virus_test_2_igg_status, study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=virus_test_3_igg_status_field, - value=subject.virus_test_3_igg_status, study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=virus_test_4_igg_status_field, - value=subject.virus_test_4_igg_status, study_subject=subject) - CustomStudySubjectValue.objects.create(study_subject_field=virus_test_5_igg_status_field, - value=subject.virus_test_5_igg_status, study_subject=subject) + CustomStudySubjectValue.objects.create( + study_subject_field=mpower_field, value=subject.mpower_id, study_subject=subject + ) + CustomStudySubjectValue.objects.create( + study_subject_field=screening_field, value=subject.screening, study_subject=subject + ) + CustomStudySubjectValue.objects.create( + study_subject_field=diagnosis_field, value=subject.diagnosis, study_subject=subject + ) + CustomStudySubjectValue.objects.create( + study_subject_field=previously_in_study_field, value=subject.previously_in_study, study_subject=subject + ) + CustomStudySubjectValue.objects.create( + study_subject_field=brain_donation_agreement_field, + value=subject.brain_donation_agreement, + study_subject=subject, + ) + CustomStudySubjectValue.objects.create( + study_subject_field=pd_in_family_field, value=subject.pd_in_family, study_subject=subject + ) + CustomStudySubjectValue.objects.create( + study_subject_field=year_of_diagnosis_field, value=subject.year_of_diagnosis, study_subject=subject + ) + CustomStudySubjectValue.objects.create( + study_subject_field=virus_test_1_result_field, value=subject.virus_test_1_result, study_subject=subject + ) + CustomStudySubjectValue.objects.create( + study_subject_field=virus_test_2_result_field, value=subject.virus_test_2_result, study_subject=subject + ) + CustomStudySubjectValue.objects.create( + study_subject_field=virus_test_3_result_field, value=subject.virus_test_3_result, study_subject=subject + ) + CustomStudySubjectValue.objects.create( + study_subject_field=virus_test_4_result_field, value=subject.virus_test_4_result, study_subject=subject + ) + CustomStudySubjectValue.objects.create( + study_subject_field=virus_test_5_result_field, value=subject.virus_test_5_result, study_subject=subject + ) + CustomStudySubjectValue.objects.create( + study_subject_field=virus_test_1_updated_field, + value=subject.virus_test_1_updated, + study_subject=subject, + ) + CustomStudySubjectValue.objects.create( + study_subject_field=virus_test_2_updated_field, + value=subject.virus_test_2_updated, + study_subject=subject, + ) + CustomStudySubjectValue.objects.create( + study_subject_field=virus_test_3_updated_field, + value=subject.virus_test_3_updated, + study_subject=subject, + ) + CustomStudySubjectValue.objects.create( + study_subject_field=virus_test_4_updated_field, + value=subject.virus_test_4_updated, + study_subject=subject, + ) + CustomStudySubjectValue.objects.create( + study_subject_field=virus_test_5_updated_field, + value=subject.virus_test_5_updated, + study_subject=subject, + ) + CustomStudySubjectValue.objects.create( + study_subject_field=virus_test_1_collection_date_field, + value=subject.virus_test_1_collection_date, + study_subject=subject, + ) + CustomStudySubjectValue.objects.create( + study_subject_field=virus_test_2_collection_date_field, + value=subject.virus_test_2_collection_date, + study_subject=subject, + ) + CustomStudySubjectValue.objects.create( + study_subject_field=virus_test_3_collection_date_field, + value=subject.virus_test_3_collection_date, + study_subject=subject, + ) + CustomStudySubjectValue.objects.create( + study_subject_field=virus_test_4_collection_date_field, + value=subject.virus_test_4_collection_date, + study_subject=subject, + ) + CustomStudySubjectValue.objects.create( + study_subject_field=virus_test_5_collection_date_field, + value=subject.virus_test_5_collection_date, + study_subject=subject, + ) + CustomStudySubjectValue.objects.create( + study_subject_field=virus_test_1_iga_status_field, + value=subject.virus_test_1_iga_status, + study_subject=subject, + ) + CustomStudySubjectValue.objects.create( + study_subject_field=virus_test_2_iga_status_field, + value=subject.virus_test_2_iga_status, + study_subject=subject, + ) + CustomStudySubjectValue.objects.create( + study_subject_field=virus_test_3_iga_status_field, + value=subject.virus_test_3_iga_status, + study_subject=subject, + ) + CustomStudySubjectValue.objects.create( + study_subject_field=virus_test_4_iga_status_field, + value=subject.virus_test_4_iga_status, + study_subject=subject, + ) + CustomStudySubjectValue.objects.create( + study_subject_field=virus_test_5_iga_status_field, + value=subject.virus_test_5_iga_status, + study_subject=subject, + ) + CustomStudySubjectValue.objects.create( + study_subject_field=virus_test_1_igg_status_field, + value=subject.virus_test_1_igg_status, + study_subject=subject, + ) + CustomStudySubjectValue.objects.create( + study_subject_field=virus_test_2_igg_status_field, + value=subject.virus_test_2_igg_status, + study_subject=subject, + ) + CustomStudySubjectValue.objects.create( + study_subject_field=virus_test_3_igg_status_field, + value=subject.virus_test_3_igg_status, + study_subject=subject, + ) + CustomStudySubjectValue.objects.create( + study_subject_field=virus_test_4_igg_status_field, + value=subject.virus_test_4_igg_status, + study_subject=subject, + ) + CustomStudySubjectValue.objects.create( + study_subject_field=virus_test_5_igg_status_field, + value=subject.virus_test_5_igg_status, + study_subject=subject, + ) class Migration(migrations.Migration): dependencies = [ - ('web', '0189_remove_studysubject_virus_test_1'), + ("web", "0189_remove_studysubject_virus_test_1"), ] operations = [ diff --git a/smash/web/migrations/0193_subjecttype.py b/smash/web/migrations/0193_subjecttype.py index e40c3859edf8ad2d6d917621d3c9be75d7f8ed1f..b6d41e4e811b34f7f5ec205578ea185d8866b586 100644 --- a/smash/web/migrations/0193_subjecttype.py +++ b/smash/web/migrations/0193_subjecttype.py @@ -6,29 +6,56 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0192_auto_20210224_1703'), + ("web", "0192_auto_20210224_1703"), ] operations = [ migrations.CreateModel( - name='SubjectType', + name="SubjectType", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=50, verbose_name='Name')), - ('screening_number_prefix', models.CharField(max_length=5)), - ('follow_up_delta_time', models.IntegerField(default=1, help_text='Time difference between visits used to automatically create follow up visits', null=True, validators=[django.core.validators.MinValueValidator(1)], verbose_name='Time difference between subject visits')), - ('follow_up_delta_units', models.CharField(choices=[('years', 'Years'), ('days', 'Days')], default='years', help_text='Units for the number of days between visits', max_length=10, verbose_name='Units for the follow up time difference')), - ('study', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='web.study')), - ('auto_create_follow_up', models.BooleanField(default=True, verbose_name='Auto create follow up visit')), + ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("name", models.CharField(max_length=50, verbose_name="Name")), + ("screening_number_prefix", models.CharField(max_length=5)), + ( + "follow_up_delta_time", + models.IntegerField( + default=1, + help_text="Time difference between visits used to automatically create follow up visits", + null=True, + validators=[django.core.validators.MinValueValidator(1)], + verbose_name="Time difference between subject visits", + ), + ), + ( + "follow_up_delta_units", + models.CharField( + choices=[("years", "Years"), ("days", "Days")], + default="years", + help_text="Units for the number of days between visits", + max_length=10, + verbose_name="Units for the follow up time difference", + ), + ), + ( + "study", + models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to="web.study"), + ), + ( + "auto_create_follow_up", + models.BooleanField(default=True, verbose_name="Auto create follow up visit"), + ), ], ), migrations.AddField( - model_name='studysubject', - name='new_type', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, - to='web.subjecttype', verbose_name='Type', - blank=False, null=True) + model_name="studysubject", + name="new_type", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to="web.subjecttype", + verbose_name="Type", + blank=False, + null=True, + ), ), ] diff --git a/smash/web/migrations/0195_migrate_subject_type_to_new_structure.py b/smash/web/migrations/0195_migrate_subject_type_to_new_structure.py index 5f8a33285606d21646e395dc16d38d41d1f7ca03..c43ceb5f1549e034bbb99e5b2b9809dd1d99dcac 100644 --- a/smash/web/migrations/0195_migrate_subject_type_to_new_structure.py +++ b/smash/web/migrations/0195_migrate_subject_type_to_new_structure.py @@ -6,38 +6,40 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('web', '0194_migrate_subject_type_to_new_structure'), + ("web", "0194_migrate_subject_type_to_new_structure"), ] operations = [ migrations.RemoveField( - model_name='studysubject', - name='type', + model_name="studysubject", + name="type", ), migrations.RenameField( - model_name='studysubject', - old_name='new_type', - new_name='type', + model_name="studysubject", + old_name="new_type", + new_name="type", ), migrations.RemoveField( - model_name='study', - name='default_delta_time_for_control_follow_up', + model_name="study", + name="default_delta_time_for_control_follow_up", ), migrations.RemoveField( - model_name='study', - name='default_delta_time_for_follow_up_units', + model_name="study", + name="default_delta_time_for_follow_up_units", ), migrations.RemoveField( - model_name='study', - name='default_delta_time_for_patient_follow_up', + model_name="study", + name="default_delta_time_for_patient_follow_up", ), migrations.RemoveField( - model_name='study', - name='auto_create_follow_up', + model_name="study", + name="auto_create_follow_up", ), migrations.AlterField( - model_name='studysubject', - name='type', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.subjecttype', verbose_name='Type', null=False), + model_name="studysubject", + name="type", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, to="web.subjecttype", verbose_name="Type", null=False + ), ), ] diff --git a/smash/web/migrations/0201_auto_20211014_1151.py b/smash/web/migrations/0201_auto_20211014_1151.py index 111635cab0ac6aadfa6fdb5ceb2814c797728311..92d28bef7b28a6d9bd0dbda884367277b4d98204 100644 --- a/smash/web/migrations/0201_auto_20211014_1151.py +++ b/smash/web/migrations/0201_auto_20211014_1151.py @@ -4,15 +4,19 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ - ('web', '0200_merge_20211013_0638'), + ("web", "0200_merge_20211013_0638"), ] operations = [ migrations.AlterField( - model_name='worker', - name='locations', - field=models.ManyToManyField(blank=True, help_text='Locations where user can perform tasks: see appointments, be assigned to appointments', to='web.Location', verbose_name='Locations'), + model_name="worker", + name="locations", + field=models.ManyToManyField( + blank=True, + help_text="Locations where user can perform tasks: see appointments, be assigned to appointments", + to="web.Location", + verbose_name="Locations", + ), ), ] diff --git a/smash/web/migrations/0201_studysubject_visit_used_to_compute_followup_date.py b/smash/web/migrations/0201_studysubject_visit_used_to_compute_followup_date.py index d1624256e4e8f65fe2f8ad5e92ad8b846a74716b..e9e9eec0872116c86dd13ac7092f8a2edbed489d 100644 --- a/smash/web/migrations/0201_studysubject_visit_used_to_compute_followup_date.py +++ b/smash/web/migrations/0201_studysubject_visit_used_to_compute_followup_date.py @@ -5,15 +5,16 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0200_merge_20211013_0638'), + ("web", "0200_merge_20211013_0638"), ] operations = [ migrations.AddField( - model_name='studysubject', - name='visit_used_to_compute_followup_date', - field=models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to='web.visit'), + model_name="studysubject", + name="visit_used_to_compute_followup_date", + field=models.ForeignKey( + editable=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to="web.visit" + ), ), ] diff --git a/smash/web/migrations/0205_auto_20211025_0954.py b/smash/web/migrations/0205_auto_20211025_0954.py index b6d39800e9969d604aeaa2cd82a3cf0e9bd3ffa9..6de1cf759af6bfeb14cda70b1f166afe8203a1ee 100644 --- a/smash/web/migrations/0205_auto_20211025_0954.py +++ b/smash/web/migrations/0205_auto_20211025_0954.py @@ -5,30 +5,50 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0204_merge_20211020_0805'), + ("web", "0204_merge_20211020_0805"), ] operations = [ migrations.AlterField( - model_name='appointment', - name='flying_team', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='web.flyingteam', verbose_name='Flying team (if applicable)'), + model_name="appointment", + name="flying_team", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.PROTECT, + to="web.flyingteam", + verbose_name="Flying team (if applicable)", + ), ), migrations.AlterField( - model_name='appointment', - name='location', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='web.location', verbose_name='Location'), + model_name="appointment", + name="location", + field=models.ForeignKey( + on_delete=django.db.models.deletion.PROTECT, to="web.location", verbose_name="Location" + ), ), migrations.AlterField( - model_name='appointment', - name='room', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='web.room', verbose_name='Room ID'), + model_name="appointment", + name="room", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.PROTECT, + to="web.room", + verbose_name="Room ID", + ), ), migrations.AlterField( - model_name='subject', - name='default_written_communication_language', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='subjects_written_communication', to='web.language', verbose_name='Default language for document generation'), + model_name="subject", + name="default_written_communication_language", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="subjects_written_communication", + to="web.language", + verbose_name="Default language for document generation", + ), ), ] diff --git a/smash/web/migrations/0206_auto_20220204_1440.py b/smash/web/migrations/0206_auto_20220204_1440.py index 368e48a65ecf4908ef913746970b0f74b9f24a48..f6cd425912fb777916afae7438799423f6539e6b 100644 --- a/smash/web/migrations/0206_auto_20220204_1440.py +++ b/smash/web/migrations/0206_auto_20220204_1440.py @@ -5,15 +5,21 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0205_auto_20211025_0954'), + ("web", "0205_auto_20211025_0954"), ] operations = [ migrations.AlterField( - model_name='subjectimportdata', - name='country', - field=models.ForeignKey(blank=True, limit_choices_to=models.Q(_negated=True, name='---'), null=True, on_delete=django.db.models.deletion.SET_NULL, to='web.country', verbose_name='Default country'), + model_name="subjectimportdata", + name="country", + field=models.ForeignKey( + blank=True, + limit_choices_to=models.Q(_negated=True, name="---"), + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to="web.country", + verbose_name="Default country", + ), ), ] diff --git a/smash/web/migrations/0207_auto_20220204_1404.py b/smash/web/migrations/0207_auto_20220204_1404.py index 1af094afe5dca8686043dc25a915e157afdb62e7..1fd6ecb5d02adb5e29fd769ab1300c041cc6aa6e 100644 --- a/smash/web/migrations/0207_auto_20220204_1404.py +++ b/smash/web/migrations/0207_auto_20220204_1404.py @@ -5,40 +5,65 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0206_location_removed'), + ("web", "0206_location_removed"), ] operations = [ migrations.AddField( - model_name='room', - name='removed', + model_name="room", + name="removed", field=models.BooleanField(default=False, editable=False), ), migrations.AlterField( - model_name='appointment', - name='location', - field=models.ForeignKey(limit_choices_to={'removed': False}, on_delete=django.db.models.deletion.PROTECT, to='web.location', verbose_name='Location'), + model_name="appointment", + name="location", + field=models.ForeignKey( + limit_choices_to={"removed": False}, + on_delete=django.db.models.deletion.PROTECT, + to="web.location", + verbose_name="Location", + ), ), migrations.AlterField( - model_name='studysubject', - name='default_location', - field=models.ForeignKey(blank=True, limit_choices_to={'removed': False}, null=True, on_delete=django.db.models.deletion.SET_NULL, to='web.location', verbose_name='Default appointment location'), + model_name="studysubject", + name="default_location", + field=models.ForeignKey( + blank=True, + limit_choices_to={"removed": False}, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to="web.location", + verbose_name="Default appointment location", + ), ), migrations.AlterField( - model_name='studysubject', - name='flying_team', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='web.flyingteam', verbose_name='Default flying team location (if applicable)'), + model_name="studysubject", + name="flying_team", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to="web.flyingteam", + verbose_name="Default flying team location (if applicable)", + ), ), migrations.AlterField( - model_name='studysubject', - name='type', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='web.subjecttype', verbose_name='Type'), + model_name="studysubject", + name="type", + field=models.ForeignKey( + on_delete=django.db.models.deletion.PROTECT, to="web.subjecttype", verbose_name="Type" + ), ), migrations.AlterField( - model_name='worker', - name='locations', - field=models.ManyToManyField(blank=True, help_text='Locations where user can perform tasks: see appointments, be assigned to appointments', limit_choices_to={'removed': False}, to='web.Location', verbose_name='Locations'), + model_name="worker", + name="locations", + field=models.ManyToManyField( + blank=True, + help_text="Locations where user can perform tasks: see appointments, be assigned to appointments", + limit_choices_to={"removed": False}, + to="web.Location", + verbose_name="Locations", + ), ), ] diff --git a/smash/web/migrations/0208_auto_20220204_1442.py b/smash/web/migrations/0208_auto_20220204_1442.py index 44f78ddf1f2a643bbef82b09aee9bc42e90bbae3..6d1f1d3f865d0fd9f696b2699c8040c3a8898890 100644 --- a/smash/web/migrations/0208_auto_20220204_1442.py +++ b/smash/web/migrations/0208_auto_20220204_1442.py @@ -5,15 +5,21 @@ import django.db.models.deletion class Migration(migrations.Migration): - dependencies = [ - ('web', '0207_auto_20220204_1404'), + ("web", "0207_auto_20220204_1404"), ] operations = [ migrations.AlterField( - model_name='appointment', - name='room', - field=models.ForeignKey(blank=True, limit_choices_to={'removed': False}, null=True, on_delete=django.db.models.deletion.PROTECT, to='web.room', verbose_name='Room ID'), + model_name="appointment", + name="room", + field=models.ForeignKey( + blank=True, + limit_choices_to={"removed": False}, + null=True, + on_delete=django.db.models.deletion.PROTECT, + to="web.room", + verbose_name="Room ID", + ), ), ] diff --git a/smash/web/migrations/0210_auto_20220331_1150.py b/smash/web/migrations/0210_auto_20220331_1150.py index f866aafe6d239a7f38427da3340eb59cd024a7c1..875510e7a69856209fbbef78e2b6c5445f8082ba 100644 --- a/smash/web/migrations/0210_auto_20220331_1150.py +++ b/smash/web/migrations/0210_auto_20220331_1150.py @@ -18,19 +18,24 @@ class Migration(migrations.Migration): migrations.AddField( model_name='subjectimportdata', name='import_worker', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='web.worker', verbose_name='Worker used by importer'), + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, + to='web.worker', verbose_name='Worker used by importer'), ), migrations.AddField( model_name='visitimportdata', name='import_worker', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='web.worker', verbose_name='Worker used by importer'), + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, + to='web.worker', verbose_name='Worker used by importer'), ), migrations.CreateModel( name='SubjectExportData', fields=[ - ('etldata_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='web.etldata')), - ('collection_delimiter', models.CharField(default=';', max_length=1, verbose_name='delimiter used to separate multiple values in single cell')), - ('export_object_as_id', models.BooleanField(default=True, verbose_name='Should references to objects be exported as id')), + ('etldata_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, + parent_link=True, primary_key=True, serialize=False, to='web.etldata')), + ('collection_delimiter', models.CharField(default=';', max_length=1, + verbose_name='delimiter used to separate multiple values in single cell')), + ('export_object_as_id', models.BooleanField(default=True, + verbose_name='Should references to objects be exported as id')), ], options={ 'abstract': False, @@ -40,10 +45,14 @@ class Migration(migrations.Migration): migrations.CreateModel( name='VisitExportData', fields=[ - ('etldata_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='web.etldata')), - ('collection_delimiter', models.CharField(default=';', max_length=1, verbose_name='delimiter used to separate multiple values in single cell')), - ('export_object_as_id', models.BooleanField(default=True, verbose_name='Should references to objects be exported as id')), - ('subject_id_column_name', models.CharField(default='donor_id', max_length=128, verbose_name='Subject id column name')), + ('etldata_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, + parent_link=True, primary_key=True, serialize=False, to='web.etldata')), + ('collection_delimiter', models.CharField(default=';', max_length=1, + verbose_name='delimiter used to separate multiple values in single cell')), + ('export_object_as_id', models.BooleanField(default=True, + verbose_name='Should references to objects be exported as id')), + ('subject_id_column_name', models.CharField(default='donor_id', + max_length=128, verbose_name='Subject id column name')), ], options={ 'abstract': False, diff --git a/smash/web/models/mail_template.py b/smash/web/models/mail_template.py index decb5b1cd7e0f88d8608175b618c688a1d39a861..f28b4080657091197d361bdeb3b76df1aa9c24be 100644 --- a/smash/web/models/mail_template.py +++ b/smash/web/models/mail_template.py @@ -9,9 +9,15 @@ from django.db import models from web.docx_helper import process_file from web.models import Appointment, Visit, StudySubject, Worker, Voucher -from web.models.constants import MAIL_TEMPLATE_CONTEXT_CHOICES, MAIL_TEMPLATE_CONTEXT_APPOINTMENT, \ - MAIL_TEMPLATE_CONTEXT_SUBJECT, MAIL_TEMPLATE_CONTEXT_VISIT, MAIL_TEMPLATE_CONTEXT_VOUCHER, DEFAULT_LOCALE_NAME, \ - GLOBAL_STUDY_ID +from web.models.constants import ( + MAIL_TEMPLATE_CONTEXT_CHOICES, + MAIL_TEMPLATE_CONTEXT_APPOINTMENT, + MAIL_TEMPLATE_CONTEXT_SUBJECT, + MAIL_TEMPLATE_CONTEXT_VISIT, + MAIL_TEMPLATE_CONTEXT_VOUCHER, + DEFAULT_LOCALE_NAME, + GLOBAL_STUDY_ID, +) from web.models.custom_data import CustomStudySubjectField DATE_FORMAT_FULL = "%A %d %B %Y" @@ -48,17 +54,23 @@ def date_to_str(date: datetime, date_format: str) -> str: def get_field_id(field: CustomStudySubjectField) -> str: - return "##S_C_" + re.sub('[^0-9a-zA-Z]+', '_', field.name).upper() + "##" + return "##S_C_" + re.sub("[^0-9a-zA-Z]+", "_", field.name).upper() + "##" def get_mails_template_generic_tags(): return [ - ("##DATE_FULL##", "Current date when the mail will be generated (long format)", - get_formatted_time(DATE_FORMAT_FULL)), - ("##DATE_SHORT##", "Current date when the mail will be generated (short format)", - get_formatted_time(DATE_FORMAT_SHORT)), + ( + "##DATE_FULL##", + "Current date when the mail will be generated (long format)", + get_formatted_time(DATE_FORMAT_FULL), + ), + ( + "##DATE_SHORT##", + "Current date when the mail will be generated (short format)", + get_formatted_time(DATE_FORMAT_SHORT), + ), ("##WORKER##", "The full name of the currently logged in user", ""), - ("##WORKER_EMAIL##", "Email address of the currently logged in user", "") + ("##WORKER_EMAIL##", "Email address of the currently logged in user", ""), ] @@ -74,18 +86,15 @@ def get_mails_template_subject_tags(): ("##S_SEX##", "Subject's gender", "Male/Female"), ("##S_TYPE##", "Subject's type", "CONTROL/PATIENT"), ("##S_DATE_BORN##", "Subject's date of birth", get_formatted_time(DATE_FORMAT_SHORT)), - ("##S_EMAIL##", "Subject's email address", ""), ("##S_PHONE_NUMBER##", "Subject's phone number", ""), ("##S_PHONE_NUMBER_2##", "Subject's second phone number", ""), ("##S_PHONE_NUMBER_3##", "Subject's third phone number", ""), ("##S_MAIL_LANGUAGE##", "Subject's preferred language for written communication", ""), ("##S_KNOWN_LANGUAGES##", "List of languages known by the subject", "comma separated"), - ("##S_SCREENING_NUMBER##", "Subject's screening number", ""), ("##S_ND_NUMBER##", "Subject's ND number", ""), ("##S_DATE_ADDED##", "Subject's date of creation", get_formatted_time(DATE_FORMAT_SHORT)), - ("##S_HEALTH_PARTNER_NAME##", "Name of the health partner", ""), ("##S_HEALTH_PARTNER_ADDRESS##", "Address of the health partner", ""), ("##S_HEALTH_PARTNER_ZIP_CODE##", "Zip code of the health partner", ""), @@ -113,34 +122,35 @@ def get_mails_template_appointment_tags(): ("##A_TIME##", "Appointment's time", get_formatted_time(DATE_FORMAT_TIME)), ("##A_FLYING_TEAM##", "Appointment's flying team location", ""), ("##A_LOCATION##", "Appointment's location", "value can be 'Flying Team'"), - ("##A_LOCATION_OR_FLYINGTEAM##", "Appointment's real location", - "if flying team then returns flying team exact location, otherwise returns location name"), + ( + "##A_LOCATION_OR_FLYINGTEAM##", + "Appointment's real location", + "if flying team then returns flying team exact location, otherwise returns location name", + ), ("##A_STATUS##", "Appointment's status", ""), ("##A_WORKER##", "Worker conducting the assessment", "first_name last_name"), ("##A_WORKER_PHONE##", "Phone number of the worker conducting the assessment", ""), ("##A_WORKER_EMAIL##", "Email address of the worker conducting the assessment", ""), - ("##A_ROOM##", "Appointment's room", 'room_number address city'), - ("##A_LENGTH##", "Appointment's duration", 'integer, value in minutes'), + ("##A_ROOM##", "Appointment's room", "room_number address city"), + ("##A_LENGTH##", "Appointment's duration", "integer, value in minutes"), ("##A_TYPES##", "Appointment's types", "comma separated"), ] def get_mails_template_voucher_tags(): return [ - ("##C_NUMBER##", "Number", ''), - ("##C_PATIENT_NAME##", "Voucher Partner name", ''), - ("##C_VOUCHER_TYPE##", "Voucher type", ''), - + ("##C_NUMBER##", "Number", ""), + ("##C_PATIENT_NAME##", "Voucher Partner name", ""), + ("##C_VOUCHER_TYPE##", "Voucher type", ""), ("##C_ISSUE_DATE_SHORT##", "Issue date", get_formatted_time(DATE_FORMAT_SHORT)), ("##C_EXPIRY_START_SHORT##", "Expiry date", get_formatted_time(DATE_FORMAT_SHORT)), - - ("##C_PARTNER_NAME##", "Voucher Partner name", ''), - ("##C_PARTNER_ADDRESS##", "Voucher Partner address", ''), - ("##C_PARTNER_CITY##", "Voucher Partner city", ''), - ("##C_PARTNER_POSTAL_CODE##", "Voucher Partner postal code", ''), - ("##C_PARTNER_COUNTRY##", "Voucher Partner country", ''), - ("##C_PARTNER_PHONE##", "Voucher Partner phone", ''), - ("##C_HOURS##", "Hours", ''), + ("##C_PARTNER_NAME##", "Voucher Partner name", ""), + ("##C_PARTNER_ADDRESS##", "Voucher Partner address", ""), + ("##C_PARTNER_CITY##", "Voucher Partner city", ""), + ("##C_PARTNER_POSTAL_CODE##", "Voucher Partner postal code", ""), + ("##C_PARTNER_COUNTRY##", "Voucher Partner country", ""), + ("##C_PARTNER_PHONE##", "Voucher Partner phone", ""), + ("##C_HOURS##", "Hours", ""), ] @@ -148,7 +158,7 @@ class MailTemplate(models.Model): name = models.CharField(max_length=255) context = models.CharField(max_length=1, choices=MAIL_TEMPLATE_CONTEXT_CHOICES) language = models.ForeignKey("web.Language", on_delete=models.CASCADE, blank=True, null=True) - template_file = models.FileField(upload_to='templates/') + template_file = models.FileField(upload_to="templates/") @staticmethod def get_appointment_mail_templates(languages): @@ -220,21 +230,21 @@ class MailTemplate(models.Model): locale_name = DEFAULT_LOCALE_NAME else: locale_name = self.language.locale - if platform.system() == 'Windows': + if platform.system() == "Windows": locale_name = self.language.windows_locale_name return locale_name @staticmethod def get_generic_replacements(worker): current_datetime = datetime.datetime.now() - email = '' + email = "" if worker is not None: email = worker.email return { "##DATE_FULL##": current_datetime.strftime(DATE_FORMAT_FULL), "##DATE_SHORT##": current_datetime.strftime(DATE_FORMAT_SHORT), "##WORKER##": str(worker), - "##WORKER_EMAIL##": email + "##WORKER_EMAIL##": email, } @staticmethod @@ -263,11 +273,11 @@ class MailTemplate(models.Model): "##A_LOCATION##": appointment.location.name, "##A_LOCATION_OR_FLYINGTEAM##": str(appointment.flying_team) or appointment.location.name, "##A_WORKER##": str(appointment.worker_assigned), - '##A_WORKER_PHONE##': worker_phone_number, - '##A_WORKER_EMAIL##': worker_email_address, + "##A_WORKER_PHONE##": worker_phone_number, + "##A_WORKER_EMAIL##": worker_email_address, "##A_ROOM##": str(appointment.room), "##A_LENGTH##": str(appointment.length), - "##A_TYPES##": ", ".join([a.description for a in appointment.appointment_types.all()]) + "##A_TYPES##": ", ".join([a.description for a in appointment.appointment_types.all()]), } @staticmethod @@ -293,13 +303,13 @@ class MailTemplate(models.Model): "##S_ADDRESS##": study_subject.subject.address, "##S_CITY##": study_subject.subject.city, "##S_COUNTRY##": str(study_subject.subject.country), - "##S_DIAGNOSIS_YEAR##": str(study_subject.get_custom_field_value('Year of diagnosis')), + "##S_DIAGNOSIS_YEAR##": str(study_subject.get_custom_field_value("Year of diagnosis")), "##S_DATE_ADDED##": date_to_str(study_subject.date_added, DATE_FORMAT_SHORT), "##S_DATE_BORN##": date_born, - "##S_DIAGNOSIS##": str(study_subject.get_custom_field_value('Diagnosis')), + "##S_DIAGNOSIS##": str(study_subject.get_custom_field_value("Diagnosis")), "##S_EMAIL##": str(study_subject.subject.email), "##S_SEX##": study_subject.subject.get_sex_display(), - "##S_MPOWER_ID##": str(study_subject.get_custom_field_value('MPower ID')), + "##S_MPOWER_ID##": str(study_subject.get_custom_field_value("MPower ID")), "##S_ND_NUMBER##": study_subject.nd_number, "##S_PHONE_NUMBER##": str(study_subject.subject.phone_number), "##S_PHONE_NUMBER_2##": str(study_subject.subject.phone_number_2), @@ -307,8 +317,8 @@ class MailTemplate(models.Model): "##S_POST_CODE##": study_subject.subject.postal_code, "##S_SCREENING_NUMBER##": study_subject.screening_number, "##S_TYPE##": study_subject.type.name, - '##S_MAIL_LANGUAGE##': str(study_subject.subject.default_written_communication_language), - '##S_KNOWN_LANGUAGES##': ", ".join([lang.name for lang in study_subject.subject.languages.all()]) + "##S_MAIL_LANGUAGE##": str(study_subject.subject.default_written_communication_language), + "##S_KNOWN_LANGUAGES##": ", ".join([lang.name for lang in study_subject.subject.languages.all()]), } if study_subject.health_partner is not None: result["##S_HEALTH_PARTNER_NAME##"] = str(study_subject.health_partner.name) @@ -330,15 +340,16 @@ class MailTemplate(models.Model): def get_voucher_replacements(voucher: Voucher): if voucher is not None: voucher_type = voucher.voucher_type.description - if voucher.activity_type != '': - voucher_type += ' (' + voucher.activity_type + ")" + if voucher.activity_type != "": + voucher_type += " (" + voucher.activity_type + ")" return { "##C_NUMBER##": voucher.number, - "##C_PATIENT_NAME##": f'{voucher.study_subject.subject.first_name} {voucher.study_subject.subject.last_name}', + "##C_PATIENT_NAME##": f"{voucher.study_subject.subject.first_name}" + + f" {voucher.study_subject.subject.last_name}", "##C_VOUCHER_TYPE##": voucher_type, "##C_ISSUE_DATE_SHORT##": voucher.issue_date.strftime(DATE_FORMAT_SHORT), "##C_EXPIRY_START_SHORT##": voucher.expiry_date.strftime(DATE_FORMAT_SHORT), - "##C_PARTNER_NAME##": voucher.usage_partner.first_name + ' ' + voucher.usage_partner.last_name, + "##C_PARTNER_NAME##": voucher.usage_partner.first_name + " " + voucher.usage_partner.last_name, "##C_PARTNER_ADDRESS##": voucher.usage_partner.address, "##C_PARTNER_POSTAL_CODE##": voucher.usage_partner.postal_code, "##C_PARTNER_CITY##": voucher.usage_partner.city, diff --git a/smash/web/views/appointment.py b/smash/web/views/appointment.py index d078f89ac3713f3aa9b3d8f0d8670d070dc5c568..d4a80dabb6bc09cc689b197ec099a23834f820f6 100644 --- a/smash/web/views/appointment.py +++ b/smash/web/views/appointment.py @@ -11,8 +11,11 @@ from django.views.generic import DeleteView from web.decorators import PermissionDecorator from web.forms import AppointmentEditForm, AppointmentAddForm, SubjectEditForm, StudySubjectEditForm -from web.models.appointment_list import APPOINTMENT_LIST_APPROACHING, APPOINTMENT_LIST_GENERIC, \ - APPOINTMENT_LIST_UNFINISHED +from web.models.appointment_list import ( + APPOINTMENT_LIST_APPROACHING, + APPOINTMENT_LIST_GENERIC, + APPOINTMENT_LIST_UNFINISHED, +) from web.models.constants import GLOBAL_STUDY_ID from .view_utils import WrappedView, wrap_response from ..models import Appointment, StudySubject, MailTemplate, Visit, Study, Provenance, Worker @@ -22,18 +25,12 @@ logger = logging.getLogger(__name__) @never_cache # https://docs.djangoproject.com/en/1.8/topics/cache/#controlling-cache-using-other-headers def appointments(request): - context = { - 'approaching_list': APPOINTMENT_LIST_APPROACHING, - 'full_list': APPOINTMENT_LIST_GENERIC - } + context = {"approaching_list": APPOINTMENT_LIST_APPROACHING, "full_list": APPOINTMENT_LIST_GENERIC} return wrap_response(request, "appointments/index.html", context) def unfinished_appointments(request): - context = { - 'list_type': APPOINTMENT_LIST_UNFINISHED, - 'list_description': 'List of unfinished appointments' - } + context = {"list_type": APPOINTMENT_LIST_UNFINISHED, "list_description": "List of unfinished appointments"} return wrap_response(request, "appointments/list.html", context) @@ -46,32 +43,41 @@ def appointment_add(request: HttpRequest, visit_id: int = None) -> HttpResponse: visit_end = visit.datetime_end.strftime("%Y-%m-%d") if visit.is_finished: messages.error(request, "Appointment cannot be added because the visit is finished") - return redirect('web.views.subject_visit_details', subject_id=visit.subject.id) + return redirect("web.views.subject_visit_details", subject_id=visit.subject.id) if not visit.subject.can_schedule(): - messages.error(request, - f"Appointment cannot be added because the subject status is: {visit.subject.status}") - return redirect('web.views.subject_visit_details', subject_id=visit.subject.id) + messages.error( + request, f"Appointment cannot be added because the subject status is: {visit.subject.status}" + ) + return redirect("web.views.subject_visit_details", subject_id=visit.subject.id) else: visit_start = datetime.datetime.today().strftime("%Y-%m-%d") visit_end = datetime.datetime.today().strftime("%Y-%m-%d") - if request.method == 'POST': + if request.method == "POST": form = AppointmentAddForm(request.POST, request.FILES, user=request.user, visit=visit) if form.is_valid(): form.instance.visit_id = visit_id form.save() if visit_id is None: - return redirect('web.views.appointments') + return redirect("web.views.appointments") else: - return redirect('web.views.visit_details', visit_id) + return redirect("web.views.visit_details", visit_id) else: - messages.add_message(request, messages.ERROR, f'{form.non_field_errors()}') + messages.add_message(request, messages.ERROR, f"{form.non_field_errors()}") else: form = AppointmentAddForm(user=request.user, visit=visit) - return wrap_response(request, 'appointments/add.html', - {'form': form, 'visitID': visit_id, 'isGeneral': visit_id is None, - 'visit_start': visit_start, 'visit_end': visit_end, - 'full_list': APPOINTMENT_LIST_GENERIC}) + return wrap_response( + request, + "appointments/add.html", + { + "form": form, + "visitID": visit_id, + "isGeneral": visit_id is None, + "visit_start": visit_start, + "visit_end": visit_end, + "full_list": APPOINTMENT_LIST_GENERIC, + }, + ) def appointment_edit(request, appointment_id: int): @@ -83,23 +89,26 @@ def appointment_edit(request, appointment_id: int): if the_appointment.visit is not None and the_appointment.visit.subject is not None: if not the_appointment.visit.subject.can_schedule(): - messages.error(request, f"Appointment cannot be edited because the subject status is: {the_appointment.visit.subject.status}") - return redirect('web.views.subject_visit_details', subject_id=the_appointment.visit.subject.id) - - if request.method == 'POST': - appointment_form = AppointmentEditForm(request.POST, - request.FILES, - instance=the_appointment, - user=request.user, - prefix="appointment") + messages.error( + request, + f"Appointment cannot be edited because the subject status is: {the_appointment.visit.subject.status}", + ) + return redirect("web.views.subject_visit_details", subject_id=the_appointment.visit.subject.id) + + if request.method == "POST": + appointment_form = AppointmentEditForm( + request.POST, request.FILES, instance=the_appointment, user=request.user, prefix="appointment" + ) is_valid_form = True if the_appointment.visit is not None: - study_subject_form = StudySubjectEditForm(request.POST, instance=the_appointment.visit.subject, - prefix="study-subject") + study_subject_form = StudySubjectEditForm( + request.POST, instance=the_appointment.visit.subject, prefix="study-subject" + ) if not study_subject_form.is_valid(): is_valid_form = False - subject_form = SubjectEditForm(request.POST, instance=the_appointment.visit.subject.subject, - prefix="subject") + subject_form = SubjectEditForm( + request.POST, instance=the_appointment.visit.subject.subject, prefix="subject" + ) if not subject_form.is_valid(): is_valid_form = False @@ -109,9 +118,13 @@ def appointment_edit(request, appointment_id: int): adjust_date = False if the_appointment.visit is not None: - if the_appointment.visit.visit_number == 1 and \ - Appointment.objects.filter(visit=the_appointment.visit, - status=Appointment.APPOINTMENT_STATUS_FINISHED).count() == 0: + if ( + the_appointment.visit.visit_number == 1 + and Appointment.objects.filter( + visit=the_appointment.visit, status=Appointment.APPOINTMENT_STATUS_FINISHED + ).count() + == 0 + ): adjust_date = True if is_valid_form: @@ -134,23 +147,22 @@ def appointment_edit(request, appointment_id: int): the_appointment.visit.save() messages.success(request, "Modifications saved") - if '_continue' in request.POST: - return redirect('web.views.appointment_edit', the_appointment.id) - if 'from_visit' in request.GET: - return redirect('web.views.visit_details', the_appointment.visit.id) + if "_continue" in request.POST: + return redirect("web.views.appointment_edit", the_appointment.id) + if "from_visit" in request.GET: + return redirect("web.views.visit_details", the_appointment.visit.id) else: - return redirect('web.views.appointments') + return redirect("web.views.appointments") else: - messages.add_message(request, messages.ERROR, 'Invalid data. Please fix data and try again.') + messages.add_message(request, messages.ERROR, "Invalid data. Please fix data and try again.") else: appointment_form = AppointmentEditForm(instance=the_appointment, user=request.user, prefix="appointment") if the_appointment.visit is not None: study_subject_form = StudySubjectEditForm(instance=the_appointment.visit.subject, prefix="study-subject") - subject_form = SubjectEditForm(instance=the_appointment.visit.subject.subject, - prefix="subject") - contact_attempts = the_appointment.visit.subject.contactattempt_set.order_by('-datetime_when').all() + subject_form = SubjectEditForm(instance=the_appointment.visit.subject.subject, prefix="subject") + contact_attempts = the_appointment.visit.subject.contactattempt_set.order_by("-datetime_when").all() languages = [] if the_appointment.visit is not None: @@ -158,40 +170,45 @@ def appointment_edit(request, appointment_id: int): if subject.default_written_communication_language: languages.append(subject.default_written_communication_language) languages.extend(subject.languages.all()) - return wrap_response(request, 'appointments/edit.html', { - 'appointment_form': appointment_form, - 'study_subject_form': study_subject_form, - 'subject_form': subject_form, - 'appointment': the_appointment, - 'contact_attempts': contact_attempts, - 'mail_templates': MailTemplate.get_appointment_mail_templates(languages) - }) + return wrap_response( + request, + "appointments/edit.html", + { + "appointment_form": appointment_form, + "study_subject_form": study_subject_form, + "subject_form": subject_form, + "appointment": the_appointment, + "contact_attempts": contact_attempts, + "mail_templates": MailTemplate.get_appointment_mail_templates(languages), + }, + ) class AppointmentDeleteView(DeleteView, WrappedView): model = Appointment - success_url = reverse_lazy('web.views.appointments') - template_name = 'appointments/confirm_delete.html' + success_url = reverse_lazy("web.views.appointments") + template_name = "appointments/confirm_delete.html" def delete(self, request, *args, **kwargs): appointment = self.get_object() if appointment.status != Appointment.APPOINTMENT_STATUS_SCHEDULED: messages.error(request, "Appointment cannot be deleted because is already finished") - return redirect('web.views.appointment_edit', appointment_id=appointment.id) + return redirect("web.views.appointment_edit", appointment_id=appointment.id) else: messages.success(request, "Appointment deleted") worker = Worker.get_by_user(request.user) - p = Provenance(modified_table=Appointment._meta.db_table, - modified_table_id=appointment.id, - modification_author=worker, - previous_value='', - new_value='', - modification_description='Appointment deleted', - modified_field='', - ) + p = Provenance( + modified_table=Appointment._meta.db_table, + modified_table_id=appointment.id, + modification_author=worker, + previous_value="", + new_value="", + modification_description="Appointment deleted", + modified_field="", + ) p.save() return super().delete(request, *args, **kwargs) - @PermissionDecorator('delete_appointment', 'configuration') + @PermissionDecorator("delete_appointment", "configuration") def dispatch(self, *args, **kwargs): return super().dispatch(*args, **kwargs) diff --git a/smash/web/views/subject.py b/smash/web/views/subject.py index 1ee93323a1b76dc30a9e2da4dbc4f405ee235c73..aca4e1342862c98c20f80caf68d318a7610a2997 100644 --- a/smash/web/views/subject.py +++ b/smash/web/views/subject.py @@ -14,8 +14,13 @@ from .view_utils import WrappedView, wrap_response from ..forms import VisitDetailForm, SubjectAddForm, SubjectEditForm, StudySubjectAddForm, StudySubjectEditForm from ..models import StudySubject, MailTemplate, Worker, Study, Provenance, Subject from ..models.constants import GLOBAL_STUDY_ID, FILE_STORAGE -from ..models.study_subject_list import SUBJECT_LIST_GENERIC, SUBJECT_LIST_NO_VISIT, SUBJECT_LIST_REQUIRE_CONTACT, \ - SUBJECT_LIST_VOUCHER_EXPIRY, SUBJECT_LIST_CHOICES +from ..models.study_subject_list import ( + SUBJECT_LIST_GENERIC, + SUBJECT_LIST_NO_VISIT, + SUBJECT_LIST_REQUIRE_CONTACT, + SUBJECT_LIST_VOUCHER_EXPIRY, + SUBJECT_LIST_CHOICES, +) from ..utils import get_client_ip logger = logging.getLogger(__name__) @@ -23,93 +28,95 @@ logger = logging.getLogger(__name__) def subject_list(request, subject_list_type): context = { - 'list_type': subject_list_type, - 'worker': Worker.get_by_user(request.user), - 'list_description': SUBJECT_LIST_CHOICES[subject_list_type], - 'study_id': GLOBAL_STUDY_ID, + "list_type": subject_list_type, + "worker": Worker.get_by_user(request.user), + "list_description": SUBJECT_LIST_CHOICES[subject_list_type], + "study_id": GLOBAL_STUDY_ID, } - return wrap_response(request, 'subjects/index.html', context) + return wrap_response(request, "subjects/index.html", context) def subjects(request): return subject_list(request, SUBJECT_LIST_GENERIC) -@PermissionDecorator('add_subject', 'subject') +@PermissionDecorator("add_subject", "subject") def subject_add(request, study_id): study = get_object_or_404(Study, id=study_id) - if request.method == 'POST': - study_subject_form = StudySubjectAddForm(request.POST, request.FILES, prefix="study_subject", user=request.user, - study=study) + if request.method == "POST": + study_subject_form = StudySubjectAddForm( + request.POST, request.FILES, prefix="study_subject", user=request.user, study=study + ) subject_form = SubjectAddForm(request.POST, request.FILES, prefix="subject") if study_subject_form.is_valid() and subject_form.is_valid(): subject = subject_form.save() study_subject_form.instance.subject_id = subject.id study_subject = study_subject_form.save() persist_custom_file_fields(request, study_subject) - messages.add_message(request, messages.SUCCESS, 'Subject created') - return redirect('web.views.subject_edit', subject_id=study_subject_form.instance.id) + messages.add_message(request, messages.SUCCESS, "Subject created") + return redirect("web.views.subject_edit", subject_id=study_subject_form.instance.id) else: - messages.add_message(request, messages.ERROR, 'Invalid data. Please fix data and try again.') + messages.add_message(request, messages.ERROR, "Invalid data. Please fix data and try again.") else: study_subject_form = StudySubjectAddForm(user=request.user, prefix="study_subject", study=study) subject_form = SubjectAddForm(prefix="subject") - return wrap_response(request, 'subjects/add.html', - {'study_subject_form': study_subject_form, 'subject_form': subject_form}) + return wrap_response( + request, "subjects/add.html", {"study_subject_form": study_subject_form, "subject_form": subject_form} + ) # delete subject (from all studies!) class SubjectDeleteView(DeleteView, WrappedView): model = Subject - success_url = reverse_lazy('web.views.subjects') - template_name = 'subjects/confirm_delete.html' + success_url = reverse_lazy("web.views.subjects") + template_name = "subjects/confirm_delete.html" def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) deletable_objects, model_count, protected = get_deleted_objects([self.object]) - context['deletable_objects'] = deletable_objects - context['model_count'] = dict(model_count).items() - context['protected'] = protected + context["deletable_objects"] = deletable_objects + context["model_count"] = dict(model_count).items() + context["protected"] = protected return context - @PermissionDecorator('delete_subject', 'subject') + @PermissionDecorator("delete_subject", "subject") def delete(self, request, *args, **kwargs): messages.success(request, "Subject deleted") try: return super().delete(request, *args, **kwargs) except BaseException: - message = 'There was a problem when deleting the subject. Contact system administrator.' + message = "There was a problem when deleting the subject. Contact system administrator." messages.add_message(request, messages.ERROR, message) logger.exception(message) - return redirect('web.views.subjects') + return redirect("web.views.subjects") # delete subject from study class StudySubjectDeleteView(DeleteView, WrappedView): model = StudySubject - success_url = reverse_lazy('web.views.subjects') - template_name = 'subjects/confirm_delete_study_subject.html' + success_url = reverse_lazy("web.views.subjects") + template_name = "subjects/confirm_delete_study_subject.html" def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) deletable_objects, model_count, protected = get_deleted_objects([self.object]) - context['deletable_objects'] = deletable_objects - context['model_count'] = dict(model_count).items() - context['protected'] = protected + context["deletable_objects"] = deletable_objects + context["model_count"] = dict(model_count).items() + context["protected"] = protected return context - @PermissionDecorator('delete_studysubject', 'studysubject') + @PermissionDecorator("delete_studysubject", "studysubject") def delete(self, request, *args, **kwargs): messages.success(request, "Study Subject deleted") try: return super().delete(request, *args, **kwargs) except BaseException: - message = 'There was a problem when deleting the Study Subject. Contact system administrator.' + message = "There was a problem when deleting the Study Subject. Contact system administrator." messages.add_message(request, messages.ERROR, message) logger.exception(message) - return redirect('web.views.subjects') + return redirect("web.views.subjects") def subject_no_visits(request): @@ -126,82 +133,99 @@ def subject_require_contact(request): def subject_edit(request, subject_id): study_subject = get_object_or_404(StudySubject, id=subject_id) - contact_attempts = study_subject.contactattempt_set.order_by('-datetime_when').all() + contact_attempts = study_subject.contactattempt_set.order_by("-datetime_when").all() was_dead = study_subject.subject.dead was_resigned = study_subject.resigned old_type = study_subject.type endpoint_was_reached = study_subject.endpoint_reached ip = get_client_ip(request) - if request.method == 'POST': - study_subject_form = StudySubjectEditForm(request.POST, request.FILES, instance=study_subject, - was_resigned=was_resigned, prefix="study_subject", - endpoint_was_reached=endpoint_was_reached) - subject_form = SubjectEditForm(request.POST, request.FILES, instance=study_subject.subject, - was_dead=was_dead, prefix="subject" - ) + if request.method == "POST": + study_subject_form = StudySubjectEditForm( + request.POST, + request.FILES, + instance=study_subject, + was_resigned=was_resigned, + prefix="study_subject", + endpoint_was_reached=endpoint_was_reached, + ) + subject_form = SubjectEditForm( + request.POST, request.FILES, instance=study_subject.subject, was_dead=was_dead, prefix="subject" + ) if study_subject_form.is_valid() and subject_form.is_valid(): study_subject_form.save() subject_form.save() persist_custom_file_fields(request, study_subject) - if 'type' in study_subject_form.changed_data and old_type != study_subject_form.cleaned_data['type']: + if "type" in study_subject_form.changed_data and old_type != study_subject_form.cleaned_data["type"]: worker = Worker.get_by_user(request.user) old_value = old_type.name new_value = None - if study_subject_form.cleaned_data['type'] is not None: - new_value = study_subject_form.cleaned_data['type'].name - p = Provenance(modified_table=StudySubject._meta.db_table, - modified_table_id=study_subject.id, - modification_author=worker, - previous_value=old_type, - new_value=study_subject_form.cleaned_data['type'], - modification_description=f'Worker "{worker}" changed study subject "{study_subject.subject}" from "{old_type}" to "{new_value}"', - modified_field='type', - request_path=request.path, - request_ip_addr=ip - ) + if study_subject_form.cleaned_data["type"] is not None: + new_value = study_subject_form.cleaned_data["type"].name + p = Provenance( + modified_table=StudySubject._meta.db_table, + modified_table_id=study_subject.id, + modification_author=worker, + previous_value=old_type, + new_value=study_subject_form.cleaned_data["type"], + modification_description=f'Worker "{worker}" changed study subject' + f'"{study_subject.subject}" from "{old_type}" to "{new_value}"', + modified_field="type", + request_path=request.path, + request_ip_addr=ip, + ) p.save() # check if subject was marked as dead or resigned - if subject_form.cleaned_data['dead'] and not was_dead: + if subject_form.cleaned_data["dead"] and not was_dead: worker = Worker.get_by_user(request.user) - p = Provenance(modified_table=Subject._meta.db_table, - modified_table_id=study_subject.subject.id, - modification_author=worker, - previous_value=was_dead, - new_value=True, - modification_description=f'Worker "{worker}" marks subject "{study_subject.subject}" as dead', - modified_field='dead', - request_path=request.path, - request_ip_addr=ip - ) + p = Provenance( + modified_table=Subject._meta.db_table, + modified_table_id=study_subject.subject.id, + modification_author=worker, + previous_value=was_dead, + new_value=True, + modification_description=f'Worker "{worker}" marks subject "{study_subject.subject}" as dead', + modified_field="dead", + request_path=request.path, + request_ip_addr=ip, + ) study_subject.subject.mark_as_dead() p.save() - if study_subject.study.columns.resigned and \ - study_subject_form.cleaned_data['resigned'] and not was_resigned: + if ( + study_subject.study.columns.resigned + and study_subject_form.cleaned_data["resigned"] + and not was_resigned + ): worker = Worker.get_by_user(request.user) - p = Provenance(modified_table=StudySubject._meta.db_table, - modified_table_id=study_subject.id, - modification_author=worker, - previous_value=was_resigned, - new_value=True, - modification_description=f'Worker "{worker}" marks study subject "{study_subject.nd_number}" as resigned ' - f'from study "{study_subject.study}"', - modified_field='resigned', - request_path=request.path, - request_ip_addr=ip - ) + p = Provenance( + modified_table=StudySubject._meta.db_table, + modified_table_id=study_subject.id, + modification_author=worker, + previous_value=was_resigned, + new_value=True, + modification_description=f'Worker "{worker}" marks study subject' + f' "{study_subject.nd_number}" as resigned ' + f'from study "{study_subject.study}"', + modified_field="resigned", + request_path=request.path, + request_ip_addr=ip, + ) study_subject.mark_as_resigned() p.save() messages.success(request, "Modifications saved") - if '_continue' in request.POST: - return redirect('web.views.subject_edit', subject_id=study_subject.id) - return redirect('web.views.subjects') + if "_continue" in request.POST: + return redirect("web.views.subject_edit", subject_id=study_subject.id) + return redirect("web.views.subjects") else: - messages.add_message(request, messages.ERROR, 'Invalid data. Please fix data and try again.') + messages.add_message(request, messages.ERROR, "Invalid data. Please fix data and try again.") else: - study_subject_form = StudySubjectEditForm(instance=study_subject, was_resigned=was_resigned, - prefix="study_subject", endpoint_was_reached=endpoint_was_reached) + study_subject_form = StudySubjectEditForm( + instance=study_subject, + was_resigned=was_resigned, + prefix="study_subject", + endpoint_was_reached=endpoint_was_reached, + ) subject_form = SubjectEditForm(instance=study_subject.subject, was_dead=was_dead, prefix="subject") languages = [] @@ -209,23 +233,26 @@ def subject_edit(request, subject_id): languages.append(study_subject.subject.default_written_communication_language) languages.extend(study_subject.subject.languages.all()) - return wrap_response(request, 'subjects/edit.html', { - 'n_studies': Study.objects.count(), - 'study_subject_form': study_subject_form, - 'subject_form': subject_form, - 'study_subject': study_subject, - 'contact_attempts': contact_attempts, - 'mail_templates': MailTemplate.get_subject_mail_templates(languages) - }) + return wrap_response( + request, + "subjects/edit.html", + { + "n_studies": Study.objects.count(), + "study_subject_form": study_subject_form, + "subject_form": subject_form, + "study_subject": study_subject, + "contact_attempts": contact_attempts, + "mail_templates": MailTemplate.get_subject_mail_templates(languages), + }, + ) def persist_custom_file_fields(request, study_subject): for key in request.FILES: - if key.startswith('study_subject-custom_field-'): - file_folder = key.replace('study_subject-', '') + if key.startswith("study_subject-custom_field-"): + file_folder = key.replace("study_subject-", "") field_id = int(file_folder.replace("custom_field-", "")) - file = FILE_STORAGE.save(name=file_folder + "/" + request.FILES[key].name, - content=request.FILES[key]) + file = FILE_STORAGE.save(name=file_folder + "/" + request.FILES[key].name, content=request.FILES[key]) study_subject.set_custom_data_value(CustomStudySubjectField.objects.get(pk=field_id), file) @@ -236,11 +263,11 @@ def subject_visit_details(request: HttpRequest, subject_id: int) -> HttpResponse allow_add_visit = True for visit in visits: data = { - 'visit_form': VisitDetailForm(instance=visit), - 'appointments': visit.appointment_set.all(), - 'finished': visit.is_finished, - 'visit_id': visit.id, - 'visit_number': visit.visit_number + "visit_form": VisitDetailForm(instance=visit), + "appointments": visit.appointment_set.all(), + "finished": visit.is_finished, + "visit_id": visit.id, + "visit_number": visit.visit_number, } visits_data.append(data) if not visit.is_finished: @@ -248,5 +275,8 @@ def subject_visit_details(request: HttpRequest, subject_id: int) -> HttpResponse if not study_subject_to_be_viewed.can_schedule(): allow_add_visit = False - return wrap_response(request, 'subjects/visit_details.html', - {'display': visits_data, "id": subject_id, "allow_add_visit": allow_add_visit}) + return wrap_response( + request, + "subjects/visit_details.html", + {"display": visits_data, "id": subject_id, "allow_add_visit": allow_add_visit}, + )