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

configuration structure for visible notification types

parent 59eca7f0
No related branches found
No related tags found
1 merge request!104Resolve "Notifications should be customized by study"
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2017-12-04 12:35
from __future__ import unicode_literals
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('web', '0078_auto_20171204_1040'),
]
operations = [
migrations.CreateModel(
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=b'exceeded visit time')),
('missing_redcap_subject_visible',
models.BooleanField(default=True, verbose_name=b'missing RED Cap subject')),
('inconsistent_redcap_subject_visible',
models.BooleanField(default=True, verbose_name=b'inconsistent RED Cap subject')),
('subject_require_contact_visible',
models.BooleanField(default=True, verbose_name=b'subject required contact')),
('subject_no_visits_visible', models.BooleanField(default=True, verbose_name=b'subject without visit')),
('unfinished_visits_visible', models.BooleanField(default=True, verbose_name=b'unfinished visits')),
('visits_with_missing_appointments_visible',
models.BooleanField(default=True, verbose_name=b'visits with missing appointments')),
('approaching_visits_without_appointments_visible',
models.BooleanField(default=True, verbose_name=b'approaching visits')),
('approaching_visits_for_mail_contact_visible',
models.BooleanField(default=True, verbose_name=b'post mail for approaching visits')),
('unfinished_appointments_visible',
models.BooleanField(default=True, verbose_name=b'unfinished appointments')),
],
),
migrations.RunSQL('insert into web_studynotificationparameters (exceeded_visits_visible,' +
'missing_redcap_subject_visible,' +
'inconsistent_redcap_subject_visible,' +
'subject_require_contact_visible,' +
'subject_no_visits_visible,' +
'unfinished_visits_visible,' +
'visits_with_missing_appointments_visible,' +
'approaching_visits_without_appointments_visible,' +
'approaching_visits_for_mail_contact_visible,' +
'unfinished_appointments_visible' +
') values(true, true, true, true, true, true, true, true, true, true)'),
migrations.AddField(
model_name='study',
name='notification_parameters',
field=models.OneToOneField(default=1, on_delete=django.db.models.deletion.CASCADE,
to='web.StudyNotificationParameters'),
preserve_default=False,
),
]
......@@ -10,6 +10,7 @@ from appointment_type_link import AppointmentTypeLink
from country import Country
from subject_columns import SubjectColumns
from study_columns import StudyColumns
from notification_columns import StudyNotificationParameters
from study import Study
from room import Room
from visit import Visit
......@@ -29,6 +30,6 @@ from missing_subject import MissingSubject
from inconsistent_subject import InconsistentSubject, InconsistentField
__all__ = [Study, FlyingTeam, Appointment, AppointmentType, Availability, Holiday, Item, Language, Location, Room,
Subject, StudySubject, StudySubjectList, SubjectColumns,
Subject, StudySubject, StudySubjectList, SubjectColumns, StudyNotificationParameters,
Visit, Worker, ContactAttempt, ConfigurationItem, MailTemplate, AppointmentTypeLink, MissingSubject,
InconsistentSubject, InconsistentField, Country, StudyColumns]
# coding=utf-8
from django.db import models
class StudyNotificationParameters(models.Model):
class Meta:
app_label = 'web'
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',
)
# coding=utf-8
from django.db import models
from web.models.study_columns import StudyColumns
from web.models import StudyColumns, StudyNotificationParameters
class Study(models.Model):
......@@ -14,6 +14,10 @@ class Study(models.Model):
StudyColumns,
on_delete=models.CASCADE,
)
notification_parameters = models.OneToOneField(
StudyNotificationParameters,
on_delete=models.CASCADE,
)
def __str__(self):
return "%s" % self.name
......
......@@ -4,7 +4,7 @@ import os
from django.contrib.auth.models import User
from web.models import Location, AppointmentType, StudySubject, Worker, Visit, Appointment, ConfigurationItem, \
Language, ContactAttempt, FlyingTeam, Availability, Subject, Study, StudyColumns
Language, ContactAttempt, FlyingTeam, Availability, Subject, Study, StudyColumns, StudyNotificationParameters
from web.models.constants import REDCAP_TOKEN_CONFIGURATION_TYPE, REDCAP_BASE_URL_CONFIGURATION_TYPE, \
SEX_CHOICES_MALE, SUBJECT_TYPE_CHOICES_CONTROL, CONTACT_TYPES_PHONE, \
MONDAY_AS_DAY_OF_WEEK, COUNTRY_AFGHANISTAN_ID
......@@ -48,7 +48,8 @@ def create_empty_study_columns():
def create_study(name="test"):
study_columns = StudyColumns.objects.create()
return Study.objects.create(name=name, columns=study_columns)
notification_parameters = StudyNotificationParameters.objects.create()
return Study.objects.create(name=name, columns=study_columns, notification_parameters=notification_parameters)
def create_empty_study(name="test"):
......@@ -70,7 +71,10 @@ def create_empty_study(name="test"):
resigned=False,
resign_reason=False
)
return Study.objects.create(name=name, columns=study_columns)
result = create_study()
result.columns = study_columns
result.save()
return result
def get_test_location():
......
......@@ -68,7 +68,7 @@ def get_subject_with_no_visit_notifications_count(user):
def get_visits_without_appointments_count(user):
notification = NotificationCount(
title="unfinished visits ",
title="unfinished visits",
count=len(get_unfinished_visits(user)),
style="fa fa-user-times text-yellow",
type='web.views.unfinished_visits')
......@@ -86,7 +86,7 @@ def get_visits_with_missing_appointments_count(user):
def get_approaching_visits_without_appointments_count(user):
notification = NotificationCount(
title="approaching visits ",
title="approaching visits",
count=get_approaching_visits_without_appointments(user).count(),
style="fa fa-users text-aqua",
type='web.views.approaching_visits_without_appointments')
......@@ -104,7 +104,7 @@ def get_approaching_visits_for_mail_contact_count(user):
def get_unfinished_appointments_count(user):
return NotificationCount(
title="unfinished appointments ",
title="unfinished appointments",
count=get_unfinished_appointments(user).count(),
style="fa fa-history text-yellow",
type='web.views.unfinished_appointments')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment