Skip to content

Commit

Permalink
update for changes from edc-listboard
Browse files Browse the repository at this point in the history
  • Loading branch information
erikvw committed Dec 19, 2023
1 parent d1cd06f commit 31310ac
Show file tree
Hide file tree
Showing 5 changed files with 102 additions and 74 deletions.
71 changes: 39 additions & 32 deletions edc_adverse_event/view_mixins/ae/ae_listboard_view_mixin.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
from __future__ import annotations

from typing import TYPE_CHECKING

from django.apps import apps as django_apps
from django.core.exceptions import ObjectDoesNotExist
from django.utils.html import format_html
Expand All @@ -16,6 +20,9 @@
from ...pdf_reports import AePdfReport
from ...utils import get_ae_model

if TYPE_CHECKING:
from django.db.models import Q, QuerySet


class ActionItemModelWrapper(BaseActionItemModelWrapper):
ae_initial_model_wrapper = AeInitialModelWrapper
Expand Down Expand Up @@ -88,51 +95,38 @@ class AeListboardViewMixin(
"user_modified",
]

@property
def ae_initial_model_cls(self):
return get_ae_model("aeinitial")

def get(self, request, *args, **kwargs):
response = None
if request.GET.get("pdf"):
response = self.print_pdf_report(
action_identifier=self.request.GET.get("pdf"), request=request
)
return response or super().get(request, *args, **kwargs)
return super().get(request, *args, **kwargs)

def print_pdf_report(self, action_identifier=None, request=None):
try:
ae_initial_obj = self.ae_initial_model_cls.objects.get(
action_identifier=action_identifier
)
except ObjectDoesNotExist:
pass
else:
pdf_report = self.get_pdf_report(
ae_initial=ae_initial_obj,
subject_identifier=ae_initial_obj.subject_identifier,
user=self.request.user,
action_identifier=self.request.GET.get("pdf"),
request=request,
)
return pdf_report.render_to_response()
return None
return response or super().get(request, *args, **kwargs)

def get_context_data(self, **kwargs) -> dict:
kwargs.update(
{
"AE_INITIAL_ACTION": AE_INITIAL_ACTION,
"utc_date": get_utcnow().date(),
**self.add_url_to_context(new_key="ae_home_url", existing_key=self.home_url),
}
AE_INITIAL_ACTION=AE_INITIAL_ACTION,
utc_date=get_utcnow().date(),
**self.add_url_to_context(new_key="ae_home_url", existing_key=self.home_url),
)
return super().get_context_data(**kwargs)

def get_queryset_filter_options(self, request, *args, **kwargs):
options = super().get_queryset_filter_options(request, *args, **kwargs)
def get_queryset_filter_options(self, request, *args, **kwargs) -> tuple[Q, dict]:
q_object, options = super().get_queryset_filter_options(request, *args, **kwargs)
options.update(
action_type__name__in=self.action_type_names, status__in=[NEW, OPEN, CLOSED]
action_type__name__in=self.action_type_names,
status__in=[NEW, OPEN, CLOSED],
)
if kwargs.get("subject_identifier"):
options.update({"subject_identifier": kwargs.get("subject_identifier")})
return options
return q_object, options

def get_updated_queryset(self, queryset):
def get_updated_queryset(self, queryset) -> QuerySet:
pks = []
for obj in queryset:
try:
Expand All @@ -141,9 +135,22 @@ def get_updated_queryset(self, queryset):
pks.append(obj.pk)
return queryset.exclude(pk__in=pks)

@property
def ae_initial_model_cls(self):
return get_ae_model("aeinitial")
def print_pdf_report(self, action_identifier=None, request=None):
try:
ae_initial_obj = self.ae_initial_model_cls.objects.get(
action_identifier=action_identifier
)
except ObjectDoesNotExist:
pass
else:
pdf_report = self.get_pdf_report(
ae_initial=ae_initial_obj,
subject_identifier=ae_initial_obj.subject_identifier,
user=self.request.user,
request=request,
)
return pdf_report.render_to_response()
return None

def get_pdf_report(self, **kwargs) -> AePdfReport:
pdf_report_cls = getattr(self.ae_initial_model_cls, "pdf_report_cls", None)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
from __future__ import annotations

from typing import TYPE_CHECKING

from django.core.exceptions import ObjectDoesNotExist
from django.utils.html import format_html
from edc_action_item.model_wrappers import (
Expand All @@ -15,6 +19,9 @@
from ...pdf_reports import DeathPdfReport
from ...utils import get_adverse_event_app_label, get_ae_model

if TYPE_CHECKING:
from django.db.models import Q


class DeathReportModelWrapper(BaseDeathReportModelWrapper):
next_url_name = "death_report_listboard_url"
Expand All @@ -29,7 +36,7 @@ def __init__(self, model_obj=None, **kwargs):
super().__init__(model_obj=model_obj, **kwargs)

@property
def death_report(self):
def death_report(self) -> DeathReportModelWrapper:
return DeathReportModelWrapper(model_obj=self.object.reference_obj)


Expand Down Expand Up @@ -82,23 +89,6 @@ def get(self, request, *args, **kwargs):
return response
return super().get(request, *args, **kwargs)

def print_pdf_report(self, action_identifier=None, request=None):
try:
death_report_obj = self.death_report_model_cls.objects.get(
action_identifier=action_identifier
)
except ObjectDoesNotExist:
pass
else:
pdf_report = self.get_pdf_report(
death_report=death_report_obj,
subject_identifier=death_report_obj.subject_identifier,
user=self.request.user,
request=request,
)
return pdf_report.render_to_response()
return None

def get_context_data(self, **kwargs) -> dict:
kwargs.update(
{
Expand All @@ -112,19 +102,37 @@ def get_context_data(self, **kwargs) -> dict:
)
return kwargs

def get_queryset_filter_options(self, request, *args, **kwargs):
options = super().get_queryset_filter_options(request, *args, **kwargs)
def get_queryset_filter_options(self, request, *args, **kwargs) -> tuple[Q, dict]:
q_object, options = super().get_queryset_filter_options(request, *args, **kwargs)
options.update(
action_type__name__in=self.action_type_names, status__in=[NEW, OPEN, CLOSED]
action_type__name__in=self.action_type_names,
status__in=[NEW, OPEN, CLOSED],
)
if kwargs.get("subject_identifier"):
options.update({"subject_identifier": kwargs.get("subject_identifier")})
return options
return q_object, options

@property
def death_report_model_cls(self):
return get_ae_model("deathreport")

def print_pdf_report(self, action_identifier=None, request=None):
try:
death_report_obj = self.death_report_model_cls.objects.get(
action_identifier=action_identifier
)
except ObjectDoesNotExist:
pass
else:
pdf_report = self.get_pdf_report(
death_report=death_report_obj,
subject_identifier=death_report_obj.subject_identifier,
user=self.request.user,
request=request,
)
return pdf_report.render_to_response()
return None

def get_pdf_report(self, **kwargs) -> DeathPdfReport:
pdf_report_cls = getattr(self.death_report_model_cls, "pdf_report_cls", None)
if not pdf_report_cls:
Expand Down
22 changes: 15 additions & 7 deletions edc_adverse_event/view_mixins/tmg/tmg_ae_listboard_view_mixin.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
from __future__ import annotations

from typing import TYPE_CHECKING

from django.core.exceptions import ObjectDoesNotExist
from edc_constants.constants import CLOSED, NEW, OPEN
from edc_dashboard.view_mixins import EdcViewMixin
Expand All @@ -12,6 +16,9 @@
from ...model_wrappers import TmgActionItemModelWrapper
from ...utils import get_adverse_event_app_label

if TYPE_CHECKING:
from django.db.models import Q


class TmgAeListboardViewMixin(
NavbarViewMixin,
Expand Down Expand Up @@ -53,14 +60,15 @@ def get_context_data(self, **kwargs):
context["utc_date"] = get_utcnow().date()
return context

def get_queryset_filter_options(self, request, *args, **kwargs):
options = super().get_queryset_filter_options(request, *args, **kwargs)
def get_queryset_filter_options(self, request, *args, **kwargs) -> tuple[Q, dict]:
q_object, options = super().get_queryset_filter_options(request, *args, **kwargs)
options.update(
action_type__name__in=self.action_type_names, status__in=[NEW, OPEN, CLOSED]
action_type__name__in=self.action_type_names,
status__in=[NEW, OPEN, CLOSED],
)
if kwargs.get("subject_identifier"):
options.update({"subject_identifier": kwargs.get("subject_identifier")})
return options
return q_object, options

def update_wrapped_instance(self, model_wrapper):
model_wrapper.has_reference_obj_permissions = True
Expand Down Expand Up @@ -105,7 +113,7 @@ def get_context_data(self, **kwargs):
context["status"] = self.status
return context

def get_queryset_filter_options(self, request, *args, **kwargs):
options = super().get_queryset_filter_options(request, *args, **kwargs)
def get_queryset_filter_options(self, request, *args, **kwargs) -> tuple[Q, dict]:
q_object, options = super().get_queryset_filter_options(request, *args, **kwargs)
options.update({"status": self.status})
return options
return q_object, options
16 changes: 7 additions & 9 deletions edc_adverse_event/views/tmg/death_listboard_view.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from __future__ import annotations

import re

from django.db.models import Q
Expand Down Expand Up @@ -52,14 +54,10 @@ def get_context_data(self, **kwargs):
context.update({"q": self.kwargs.get("subject_identifier")})
return context

def get_queryset_filter_options(self, request, *args, **kwargs):
options = super().get_queryset_filter_options(request, *args, **kwargs)
def get_queryset_filter_options(self, request, *args, **kwargs) -> tuple[Q, dict]:
q_object, options = super().get_queryset_filter_options(request, *args, **kwargs)
if self.search_term and re.match("^[A-Z]+$", self.search_term):
q_object |= Q(first_name__exact=self.search_term)
if kwargs.get("subject_identifier"):
options.update({"subject_identifier": kwargs.get("subject_identifier")})
return options

def extra_search_options(self, search_term):
q = Q()
if re.match("^[A-Z]+$", search_term):
q = Q(first_name__exact=search_term)
return [q]
return q_object, options
15 changes: 11 additions & 4 deletions edc_adverse_event/views/tmg/summary_listboard_view.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
from __future__ import annotations

from typing import TYPE_CHECKING

from django.core.exceptions import ObjectDoesNotExist
from edc_dashboard.view_mixins import EdcViewMixin
from edc_listboard.view_mixins import ListboardFilterViewMixin, SearchFormViewMixin
Expand All @@ -15,6 +19,9 @@
from ...model_wrappers import TmgActionItemModelWrapper as BaseTmgActionItemModelWrapper
from ...utils import get_adverse_event_app_label

if TYPE_CHECKING:
from django.db.models import Q


class TmgActionItemModelWrapper(BaseTmgActionItemModelWrapper):
next_url_name = "tmg_summary_listboard_url"
Expand Down Expand Up @@ -63,12 +70,12 @@ def get_context_data(self, **kwargs):
context["utc_date"] = get_utcnow().date()
return context

def get_queryset_filter_options(self, request, *args, **kwargs):
options = super().get_queryset_filter_options(request, *args, **kwargs)
def get_queryset_filter_options(self, request, *args, **kwargs) -> tuple[Q, dict]:
q_object, options = super().get_queryset_filter_options(request, *args, **kwargs)
options.update({"action_type__name__in": self.action_type_names})
return options
return q_object, options

def update_wrapped_instance(self, model_wrapper):
def update_wrapped_instance(self, model_wrapper) -> TmgActionItemModelWrapper:
model_wrapper.has_reference_obj_permissions = True
model_wrapper.has_parent_reference_obj_permissions = True
model_wrapper.has_related_reference_obj_permissions = True
Expand Down

0 comments on commit 31310ac

Please sign in to comment.