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},
+    )