WIP: 490_View_refactoring #491
@ -98,13 +98,10 @@ def new_view(request: HttpRequest):
|
|||||||
|
|
||||||
class EmaIdentifierGeneratorView(LoginRequiredMixin, BaseIdentifierGeneratorView):
|
class EmaIdentifierGeneratorView(LoginRequiredMixin, BaseIdentifierGeneratorView):
|
||||||
_MODEL_CLS = Ema
|
_MODEL_CLS = Ema
|
||||||
|
_REDIRECT_URL_NAME = "ema:index"
|
||||||
|
|
||||||
def dispatch(self, request, *args, **kwargs):
|
def _user_has_permission(self, user):
|
||||||
is_ets = request.user.is_ets_user()
|
return user.is_ets_user()
|
||||||
if not is_ets:
|
|
||||||
messages.info(request, MISSING_GROUP_PERMISSION)
|
|
||||||
return redirect(reverse("ema:index"))
|
|
||||||
return super().dispatch(request, *args, **kwargs)
|
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
|
|||||||
@ -14,8 +14,8 @@ from intervention.views.deduction import NewInterventionDeductionView, EditInter
|
|||||||
RemoveInterventionDeductionView
|
RemoveInterventionDeductionView
|
||||||
from intervention.views.document import NewInterventionDocumentView, GetInterventionDocumentView, \
|
from intervention.views.document import NewInterventionDocumentView, GetInterventionDocumentView, \
|
||||||
RemoveInterventionDocumentView, EditInterventionDocumentView
|
RemoveInterventionDocumentView, EditInterventionDocumentView
|
||||||
from intervention.views.intervention import new_view, new_id_view, detail_view, edit_view, remove_view, \
|
from intervention.views.intervention import new_view, detail_view, edit_view, remove_view, \
|
||||||
InterventionIndexView
|
InterventionIndexView, InterventionIdentifierGeneratorView
|
||||||
from intervention.views.log import InterventionLogView
|
from intervention.views.log import InterventionLogView
|
||||||
from intervention.views.record import InterventionRecordView
|
from intervention.views.record import InterventionRecordView
|
||||||
from intervention.views.report import report_view
|
from intervention.views.report import report_view
|
||||||
@ -28,7 +28,7 @@ app_name = "intervention"
|
|||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path("", InterventionIndexView.as_view(), name="index"),
|
path("", InterventionIndexView.as_view(), name="index"),
|
||||||
path('new/', new_view, name='new'),
|
path('new/', new_view, name='new'),
|
||||||
path('new/id', new_id_view, name='new-id'),
|
path('new/id', InterventionIdentifierGeneratorView.as_view(), name='new-id'),
|
||||||
path('<id>', detail_view, name='detail'),
|
path('<id>', detail_view, name='detail'),
|
||||||
path('<id>/log', InterventionLogView.as_view(), name='log'),
|
path('<id>/log', InterventionLogView.as_view(), name='log'),
|
||||||
path('<id>/edit', edit_view, name='edit'),
|
path('<id>/edit', edit_view, name='edit'),
|
||||||
|
|||||||
@ -26,7 +26,7 @@ from konova.sub_settings.context_settings import TAB_TITLE_IDENTIFIER
|
|||||||
from konova.utils.message_templates import DATA_CHECKED_PREVIOUSLY_TEMPLATE, RECORDED_BLOCKS_EDIT, \
|
from konova.utils.message_templates import DATA_CHECKED_PREVIOUSLY_TEMPLATE, RECORDED_BLOCKS_EDIT, \
|
||||||
CHECK_STATE_RESET, FORM_INVALID, IDENTIFIER_REPLACED, DO_NOT_FORGET_TO_SHARE, GEOMETRY_SIMPLIFIED, \
|
CHECK_STATE_RESET, FORM_INVALID, IDENTIFIER_REPLACED, DO_NOT_FORGET_TO_SHARE, GEOMETRY_SIMPLIFIED, \
|
||||||
GEOMETRIES_IGNORED_TEMPLATE
|
GEOMETRIES_IGNORED_TEMPLATE
|
||||||
from konova.views.base import BaseIndexView
|
from konova.views.base import BaseIndexView, BaseIdentifierGeneratorView
|
||||||
|
|
||||||
|
|
||||||
class InterventionIndexView(LoginRequiredMixin, BaseIndexView):
|
class InterventionIndexView(LoginRequiredMixin, BaseIndexView):
|
||||||
@ -100,23 +100,12 @@ def new_view(request: HttpRequest):
|
|||||||
return render(request, template, context)
|
return render(request, template, context)
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
class InterventionIdentifierGeneratorView(LoginRequiredMixin, BaseIdentifierGeneratorView):
|
||||||
@default_group_required
|
_MODEL_CLS = Intervention
|
||||||
def new_id_view(request: HttpRequest):
|
_REDIRECT_URL_NAME = "intervention:index"
|
||||||
""" JSON endpoint
|
|
||||||
|
|
||||||
Provides fetching of free identifiers for e.g. AJAX calls
|
def _user_has_permission(self, user):
|
||||||
|
return user.is_default_user()
|
||||||
"""
|
|
||||||
tmp_intervention = Intervention()
|
|
||||||
identifier = tmp_intervention.generate_new_identifier()
|
|
||||||
while Intervention.objects.filter(identifier=identifier).exists():
|
|
||||||
identifier = tmp_intervention.generate_new_identifier()
|
|
||||||
return JsonResponse(
|
|
||||||
data={
|
|
||||||
"gen_data": identifier
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
|
|||||||
@ -5,13 +5,16 @@ Created on: 15.10.25
|
|||||||
"""
|
"""
|
||||||
from abc import abstractmethod
|
from abc import abstractmethod
|
||||||
|
|
||||||
|
from django.contrib import messages
|
||||||
from django.http import HttpRequest, JsonResponse
|
from django.http import HttpRequest, JsonResponse
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render, redirect
|
||||||
|
from django.urls import reverse
|
||||||
from django.views import View
|
from django.views import View
|
||||||
|
|
||||||
from konova.contexts import BaseContext
|
from konova.contexts import BaseContext
|
||||||
from konova.sub_settings.context_settings import TAB_TITLE_IDENTIFIER
|
from konova.sub_settings.context_settings import TAB_TITLE_IDENTIFIER
|
||||||
from konova.utils.general import check_user_is_in_any_group
|
from konova.utils.general import check_user_is_in_any_group
|
||||||
|
from konova.utils.message_templates import MISSING_GROUP_PERMISSION
|
||||||
|
|
||||||
|
|
||||||
class BaseIndexView(View):
|
class BaseIndexView(View):
|
||||||
@ -49,12 +52,15 @@ class BaseIndexView(View):
|
|||||||
|
|
||||||
class BaseIdentifierGeneratorView(View):
|
class BaseIdentifierGeneratorView(View):
|
||||||
_MODEL_CLS = None
|
_MODEL_CLS = None
|
||||||
|
_REDIRECT_URL_NAME: str = "home"
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
||||||
|
|
||||||
def dispatch(self, request, *args, **kwargs):
|
def dispatch(self, request, *args, **kwargs):
|
||||||
request = check_user_is_in_any_group(request)
|
if not self._user_has_permission(request.user):
|
||||||
|
messages.info(request, MISSING_GROUP_PERMISSION)
|
||||||
|
return redirect(reverse(self._REDIRECT_URL_NAME))
|
||||||
return super().dispatch(request, *args, **kwargs)
|
return super().dispatch(request, *args, **kwargs)
|
||||||
|
|
||||||
def get(self, request: HttpRequest):
|
def get(self, request: HttpRequest):
|
||||||
@ -66,4 +72,15 @@ class BaseIdentifierGeneratorView(View):
|
|||||||
data={
|
data={
|
||||||
"gen_data": identifier
|
"gen_data": identifier
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def _user_has_permission(self, user):
|
||||||
|
""" Has to be implemented in inheriting classes!
|
||||||
|
|
||||||
|
Args:
|
||||||
|
user ():
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
"""
|
||||||
|
raise NotImplementedError
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user