From 487f1e8f7fb31bac587138b2804a5c86c960e083 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Wed, 6 Dec 2017 11:52:32 +0100 Subject: [PATCH] common serialize date methods extracted --- smash/web/api_views/serialization_utils.py | 16 ++++++++++++++++ smash/web/api_views/subject.py | 15 +++++++-------- smash/web/api_views/visit.py | 18 ++++-------------- 3 files changed, 27 insertions(+), 22 deletions(-) diff --git a/smash/web/api_views/serialization_utils.py b/smash/web/api_views/serialization_utils.py index 165eeac4..e1e96dbc 100644 --- a/smash/web/api_views/serialization_utils.py +++ b/smash/web/api_views/serialization_utils.py @@ -24,6 +24,22 @@ def location_to_str(location): return result +def serialize_date(date): + if date is not None: + result = date.strftime('%Y-%m-%d') + else: + result = "" + return result + + +def serialize_datetime(date): + if date is not None: + result = date.strftime('%Y-%m-%d %H:%M') + else: + result = "" + return result + + def add_column(result, name, field_name, column_list, param, columns_used_in_study=None, visible_param=None, sortable=True): add = True diff --git a/smash/web/api_views/subject.py b/smash/web/api_views/subject.py index 2d7cb49a..9d2d67b3 100644 --- a/smash/web/api_views/subject.py +++ b/smash/web/api_views/subject.py @@ -5,7 +5,8 @@ from django.db.models import Count, Case, When, Min, Max from django.db.models import Q from django.http import JsonResponse -from web.api_views.serialization_utils import bool_to_yes_no, flying_team_to_str, location_to_str, add_column +from web.api_views.serialization_utils import bool_to_yes_no, flying_team_to_str, location_to_str, add_column, \ + serialize_date, serialize_datetime from web.models import StudySubject, Visit, Appointment, Subject, SubjectColumns, StudyColumns, Study, ContactAttempt from web.models.constants import SUBJECT_TYPE_CHOICES, GLOBAL_STUDY_ID from web.models.study_subject_list import SUBJECT_LIST_GENERIC, SUBJECT_LIST_NO_VISIT, SUBJECT_LIST_REQUIRE_CONTACT, \ @@ -330,17 +331,15 @@ def serialize_subject(study_subject): status = "UPCOMING" serialized_visits.append({ "status": status, - "datetime_start": visit.datetime_begin.strftime('%Y-%m-%d'), - "datetime_end": visit.datetime_end.strftime('%Y-%m-%d'), + "datetime_start": serialize_date(visit.datetime_begin), + "datetime_end": serialize_date(visit.datetime_end), }) - contact_reminder = study_subject.datetime_contact_reminder - if contact_reminder is not None: - contact_reminder = contact_reminder.strftime('%Y-%m-%d %H:%M') + contact_reminder = serialize_datetime(study_subject.datetime_contact_reminder) contact_attempts = ContactAttempt.objects.filter(subject=study_subject).order_by("-datetime_when") if len(contact_attempts) > 0: last_contact_attempt = contact_attempts[0] - last_contact_attempt_string = last_contact_attempt.datetime_when.strftime( - '%Y-%m-%d %H:%M') + "<br/>" + str(last_contact_attempt.worker) + "<br/> Success: " + bool_to_yes_no( + last_contact_attempt_string = serialize_datetime(last_contact_attempt.datetime_when) + "<br/>" + str( + last_contact_attempt.worker) + "<br/> Success: " + bool_to_yes_no( last_contact_attempt.success) + "<br/>" + last_contact_attempt.comment else: diff --git a/smash/web/api_views/visit.py b/smash/web/api_views/visit.py index 80eef602..ba2258b9 100644 --- a/smash/web/api_views/visit.py +++ b/smash/web/api_views/visit.py @@ -4,7 +4,8 @@ from django.contrib.auth.decorators import login_required from django.db.models import Q from django.http import JsonResponse -from web.api_views.serialization_utils import bool_to_yes_no, flying_team_to_str, location_to_str, add_column +from web.api_views.serialization_utils import bool_to_yes_no, flying_team_to_str, location_to_str, add_column, \ + serialize_date from web.models import AppointmentType, Appointment from web.models import SubjectColumns from web.models import Visit, Study, VisitColumns, StudyVisitList, StudyColumns @@ -221,9 +222,6 @@ def appointment_types_to_str(appointment_types): def serialize_visit(visit): - datetime_begin = serialize_date(visit.datetime_begin) - datetime_end = serialize_date(visit.datetime_end) - appointment_types = visit.appointment_types.all() appointment_types_in_progress = AppointmentType.objects.filter(Q(appointmenttypelink__appointment__visit=visit) & Q( appointmenttypelink__appointment__status=Appointment.APPOINTMENT_STATUS_SCHEDULED)).distinct().all() @@ -239,8 +237,8 @@ def serialize_visit(visit): result = { "first_name": visit.subject.subject.first_name, "last_name": visit.subject.subject.last_name, - "datetime_begin": datetime_begin, - "datetime_end": datetime_end, + "datetime_begin": serialize_date(visit.datetime_begin), + "datetime_end": serialize_date(visit.datetime_end), "flying_team": flying_team_to_str(visit.subject.flying_team), "default_location": location_to_str(visit.subject.default_location), "is_finished": bool_to_yes_no(visit.is_finished), @@ -254,11 +252,3 @@ def serialize_visit(visit): } return result - - -def serialize_date(date): - if date is not None: - result = date.strftime('%Y-%m-%d') - else: - result = "" - return result -- GitLab