# Detail View
* introduces BaseDetailView * refactors detail views for EIV, KOM, OEK, EMA from function based to class based * refactors already class based HomeView to inherit from new BaseView
This commit is contained in:
@@ -27,6 +27,7 @@ from konova.utils.message_templates import DATA_CHECKED_PREVIOUSLY_TEMPLATE, REC
|
||||
CHECK_STATE_RESET, FORM_INVALID, IDENTIFIER_REPLACED, DO_NOT_FORGET_TO_SHARE, GEOMETRY_SIMPLIFIED, \
|
||||
GEOMETRIES_IGNORED_TEMPLATE
|
||||
from konova.views.base import BaseIndexView, BaseIdentifierGeneratorView
|
||||
from konova.views.detail import BaseDetailView
|
||||
|
||||
|
||||
class InterventionIndexView(LoginRequiredMixin, BaseIndexView):
|
||||
@@ -105,78 +106,59 @@ class InterventionIdentifierGeneratorView(LoginRequiredMixin, BaseIdentifierGene
|
||||
_REDIRECT_URL = "intervention:index"
|
||||
|
||||
|
||||
@login_required
|
||||
@any_group_check
|
||||
@uuid_required
|
||||
def detail_view(request: HttpRequest, id: str):
|
||||
""" Renders a detail view for viewing an intervention's data
|
||||
class InterventionDetailView(BaseDetailView):
|
||||
_MODEL_CLS = Intervention
|
||||
_TEMPLATE = "intervention/detail/view.html"
|
||||
|
||||
Args:
|
||||
request (HttpRequest): The incoming request
|
||||
id (str): The intervention's id
|
||||
def _get_object(self, id: str):
|
||||
""" Returns the intervention
|
||||
|
||||
Returns:
|
||||
Args:
|
||||
id (str): The intervention's id
|
||||
|
||||
"""
|
||||
template = "intervention/detail/view.html"
|
||||
|
||||
# Fetch data, filter out deleted related data
|
||||
intervention = get_object_or_404(
|
||||
Intervention.objects.select_related(
|
||||
"geometry",
|
||||
"legal",
|
||||
"responsible",
|
||||
).prefetch_related(
|
||||
"legal__revocations",
|
||||
),
|
||||
id=id,
|
||||
deleted=None
|
||||
)
|
||||
compensations = intervention.compensations.filter(
|
||||
deleted=None,
|
||||
)
|
||||
_user = request.user
|
||||
is_data_shared = intervention.is_shared_with(user=_user)
|
||||
|
||||
geom_form = SimpleGeomForm(
|
||||
instance=intervention,
|
||||
)
|
||||
last_checked = intervention.get_last_checked_action()
|
||||
last_checked_tooltip = ""
|
||||
if last_checked:
|
||||
last_checked_tooltip = DATA_CHECKED_PREVIOUSLY_TEMPLATE.format(
|
||||
last_checked.get_timestamp_str_formatted(),
|
||||
last_checked.user
|
||||
Returns:
|
||||
obj (Intervention): The intervention
|
||||
"""
|
||||
# Fetch data, filter out deleted related data
|
||||
obj = get_object_or_404(
|
||||
self._MODEL_CLS.objects.select_related(
|
||||
"geometry",
|
||||
"legal",
|
||||
"responsible",
|
||||
).prefetch_related(
|
||||
"legal__revocations",
|
||||
),
|
||||
id=id,
|
||||
deleted=None
|
||||
)
|
||||
return obj
|
||||
|
||||
has_payment_without_document = intervention.payments.exists() and not intervention.get_documents()[1].exists()
|
||||
def _get_detail_context(self, obj: Intervention):
|
||||
""" Generate object specific detail context for view
|
||||
|
||||
requesting_user_is_only_shared_user = intervention.is_only_shared_with(_user)
|
||||
if requesting_user_is_only_shared_user:
|
||||
messages.info(
|
||||
request,
|
||||
DO_NOT_FORGET_TO_SHARE
|
||||
)
|
||||
Args:
|
||||
obj (): The record
|
||||
|
||||
context = {
|
||||
"obj": intervention,
|
||||
"last_checked": last_checked,
|
||||
"last_checked_tooltip": last_checked_tooltip,
|
||||
"compensations": compensations,
|
||||
"is_entry_shared": is_data_shared,
|
||||
"geom_form": geom_form,
|
||||
"is_default_member": _user.in_group(DEFAULT_GROUP),
|
||||
"is_zb_member": _user.in_group(ZB_GROUP),
|
||||
"is_ets_member": _user.in_group(ETS_GROUP),
|
||||
"LANIS_LINK": intervention.get_LANIS_link(),
|
||||
"has_payment_without_document": has_payment_without_document,
|
||||
TAB_TITLE_IDENTIFIER: f"{intervention.identifier} - {intervention.title}",
|
||||
}
|
||||
Returns:
|
||||
|
||||
request = intervention.set_status_messages(request)
|
||||
"""
|
||||
compensations = obj.compensations.filter(deleted=None)
|
||||
last_checked = obj.get_last_checked_action()
|
||||
last_checked_tooltip = ""
|
||||
if last_checked:
|
||||
last_checked_tooltip = DATA_CHECKED_PREVIOUSLY_TEMPLATE.format(
|
||||
last_checked.get_timestamp_str_formatted(),
|
||||
last_checked.user
|
||||
)
|
||||
|
||||
context = BaseContext(request, context).context
|
||||
return render(request, template, context)
|
||||
has_payment_without_document = obj.payments.exists() and not obj.get_documents()[1].exists()
|
||||
context = {
|
||||
"last_checked": last_checked,
|
||||
"last_checked_tooltip": last_checked_tooltip,
|
||||
"compensations": compensations,
|
||||
"has_payment_without_document": has_payment_without_document,
|
||||
}
|
||||
return context
|
||||
|
||||
|
||||
@login_required
|
||||
|
||||
Reference in New Issue
Block a user