diff --git a/smash/create_dummy_data.py b/smash/db_scripts/create_dummy_data.py similarity index 98% rename from smash/create_dummy_data.py rename to smash/db_scripts/create_dummy_data.py index a5f80b4669999cfcd5842ed6b844af6367ad7dfe..5f9482d80aa2aeaaa34050963f2809dcfe6f1d28 100644 --- a/smash/create_dummy_data.py +++ b/smash/db_scripts/create_dummy_data.py @@ -1,3 +1,6 @@ +# coding=utf-8 +import os, sys +sys.path.append(sys.path.append(os.path.join(os.path.dirname(__file__), '..'))) #run script as it was on parent folder from django.conf import settings from django.core.files import File # you need this somewhere import urllib @@ -5,7 +8,6 @@ from django.core.files.uploadedfile import SimpleUploadedFile import django import datetime from django.utils import timezone -import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "smash.settings") django.setup() from django.contrib.auth.models import User @@ -18,13 +20,12 @@ from web.models.constants import REDCAP_TOKEN_CONFIGURATION_TYPE, REDCAP_BASE_UR from web.models.constants import MAIL_TEMPLATE_CONTEXT_APPOINTMENT, MAIL_TEMPLATE_CONTEXT_VISIT, \ MAIL_TEMPLATE_CONTEXT_SUBJECT, MAIL_TEMPLATE_CONTEXT_VOUCHER from web.models.worker_study_role import ROLE_CHOICES_PROJECT_MANAGER, ROLE_CHOICES_SECRETARY, ROLE_CHOICES_DOCTOR, WORKER_VOUCHER_PARTNER, ROLE_CHOICES_TECHNICIAN, ROLE_CHOICES_PSYCHOLOGIST, ROLE_CHOICES_NURSE -from web.tests.functions import get_resource_path from collections import defaultdict import logging logger = logging.getLogger(__name__) -from web.views.notifications import get_today_midnight_date +from web.utils import get_today_midnight_date from faker.providers import BaseProvider, color from numpy.random import choice from faker import Faker @@ -100,7 +101,7 @@ class smashProvider(BaseProvider): # screening number screening_number_ctrs = defaultdict(int) # template file - template_file = get_resource_path('upcoming_appointment_FR.docx') + template_file = os.path.join(os.path.dirname(__file__), '../web/tests/data', 'upcoming_appointment_FR.docx') template_context = [MAIL_TEMPLATE_CONTEXT_APPOINTMENT, MAIL_TEMPLATE_CONTEXT_VOUCHER, MAIL_TEMPLATE_CONTEXT_VISIT, MAIL_TEMPLATE_CONTEXT_SUBJECT] # subjects @@ -717,5 +718,5 @@ if __name__ == "__main__": fake.createSmashStudySubjects() fake.createSmashAppointments() fake.createSmashWorker(first_name=u'System', last_name=u'Admin', - email=u'carlos.vega@uni.lu', name=ROLE_CHOICES_TECHNICIAN, password='smashtest007', + email=u'carlos.vega@uni.lu', role=ROLE_CHOICES_TECHNICIAN, password='smashtest007', locations=fake.getAllCreatedLocations(), languages=fake.getAllCreatedLanguages(), is_super=True) diff --git a/smash/db_scripts/fix_screening_numbers.py b/smash/db_scripts/fix_screening_numbers.py new file mode 100644 index 0000000000000000000000000000000000000000..d1960644fc8a221dbbc33957860d1c96b96bf4de --- /dev/null +++ b/smash/db_scripts/fix_screening_numbers.py @@ -0,0 +1,33 @@ +# coding=utf-8 +import django, sys, os +sys.path.append(sys.path.append(os.path.join(os.path.dirname(__file__), '..'))) #run script as it was on parent folder +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "smash.settings") +django.setup() +import pandas as pd +import logging +from web.models import StudySubject + +logging.basicConfig(handlers=[logging.FileHandler('log.txt', 'w', 'utf-8')], level=logging.DEBUG) + +if len(sys.argv) < 2: + logging.warn(u'Please, execute the program as: python {} file_path.xlsx'.format(sys.argv[0])) + sys.exit(1) +file = sys.argv[1] +if not os.path.isfile(file): + logging.warn(u'Please, execute the program with a valid file path.') + sys.exit(1) + +df = pd.read_csv(file, names=['Last Name', 'First Name', 'Screening'], encoding='utf-8') +for index, row in df.iterrows(): + s = StudySubject.objects.filter(subject__first_name=row['First Name'], subject__last_name=row['Last Name']) + if len(s) == 0: + logging.warn(u'NO RESULTS for {} {}'.format(row['First Name'], row['Last Name'])) + elif len(s) > 1: + logging.warn(u'TOO MANY RESULTS for {} {}'.format(row['First Name'], row['Last Name'])) + else: + logging.info(u'UPDATING {} {} with screening_number {} with new value: {}'.format(row['First Name'], row['Last Name'], s[0].screening_number, row['Screening'])) + s[0].screening_number = row['Screening'] + s[0].save() + s = StudySubject.objects.filter(subject__first_name=row['First Name'], subject__last_name=row['Last Name']) + logging.info(u'UPDATED {} {}. Current value: {}'.format(row['First Name'], row['Last Name'], s[0].screening_number)) + \ No newline at end of file diff --git a/smash/import_file.py b/smash/db_scripts/import_file.py similarity index 99% rename from smash/import_file.py rename to smash/db_scripts/import_file.py index 46a88a17e42a2b7f02283f2df999d25cf8209a4e..50a70f285b1b6a8dbb185560427dfc4aaf5fc1df 100644 --- a/smash/import_file.py +++ b/smash/db_scripts/import_file.py @@ -1,5 +1,6 @@ # coding=utf-8 -import os +import os, sys +sys.path.append(sys.path.append(os.path.join(os.path.dirname(__file__), '..'))) #run script as it was on parent folder import getpass import django from django.conf import settings @@ -15,7 +16,6 @@ from dateutil.relativedelta import relativedelta import re from operator import itemgetter from collections import OrderedDict, defaultdict -import sys import string from django.contrib.auth.models import User from web.models.constants import VOUCHER_STATUS_IN_USE, SUBJECT_TYPE_CHOICES_PATIENT, GLOBAL_STUDY_ID, SEX_CHOICES, SEX_CHOICES_MALE, SEX_CHOICES_FEMALE