# Identifier Generator View refactoring
* refactors identifier generator view for interventions * simplifies same view for ema
This commit is contained in:
parent
a44d8658d4
commit
c597e1934b
@ -98,13 +98,10 @@ def new_view(request: HttpRequest):
|
||||
|
||||
class EmaIdentifierGeneratorView(LoginRequiredMixin, BaseIdentifierGeneratorView):
|
||||
_MODEL_CLS = Ema
|
||||
_REDIRECT_URL_NAME = "ema:index"
|
||||
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
is_ets = request.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)
|
||||
def _user_has_permission(self, user):
|
||||
return user.is_ets_user()
|
||||
|
||||
|
||||
@login_required
|
||||
|
||||
@ -14,8 +14,8 @@ from intervention.views.deduction import NewInterventionDeductionView, EditInter
|
||||
RemoveInterventionDeductionView
|
||||
from intervention.views.document import NewInterventionDocumentView, GetInterventionDocumentView, \
|
||||
RemoveInterventionDocumentView, EditInterventionDocumentView
|
||||
from intervention.views.intervention import new_view, new_id_view, detail_view, edit_view, remove_view, \
|
||||
InterventionIndexView
|
||||
from intervention.views.intervention import new_view, detail_view, edit_view, remove_view, \
|
||||
InterventionIndexView, InterventionIdentifierGeneratorView
|
||||
from intervention.views.log import InterventionLogView
|
||||
from intervention.views.record import InterventionRecordView
|
||||
from intervention.views.report import report_view
|
||||
@ -28,7 +28,7 @@ app_name = "intervention"
|
||||
urlpatterns = [
|
||||
path("", InterventionIndexView.as_view(), name="index"),
|
||||
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>/log', InterventionLogView.as_view(), name='log'),
|
||||
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, \
|
||||
CHECK_STATE_RESET, FORM_INVALID, IDENTIFIER_REPLACED, DO_NOT_FORGET_TO_SHARE, GEOMETRY_SIMPLIFIED, \
|
||||
GEOMETRIES_IGNORED_TEMPLATE
|
||||
from konova.views.base import BaseIndexView
|
||||
from konova.views.base import BaseIndexView, BaseIdentifierGeneratorView
|
||||
|
||||
|
||||
class InterventionIndexView(LoginRequiredMixin, BaseIndexView):
|
||||
@ -100,23 +100,12 @@ def new_view(request: HttpRequest):
|
||||
return render(request, template, context)
|
||||
|
||||
|
||||
@login_required
|
||||
@default_group_required
|
||||
def new_id_view(request: HttpRequest):
|
||||
""" JSON endpoint
|
||||
class InterventionIdentifierGeneratorView(LoginRequiredMixin, BaseIdentifierGeneratorView):
|
||||
_MODEL_CLS = Intervention
|
||||
_REDIRECT_URL_NAME = "intervention:index"
|
||||
|
||||
Provides fetching of free identifiers for e.g. AJAX calls
|
||||
|
||||
"""
|
||||
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
|
||||
}
|
||||
)
|
||||
def _user_has_permission(self, user):
|
||||
return user.is_default_user()
|
||||
|
||||
|
||||
@login_required
|
||||
|
||||
@ -5,13 +5,16 @@ Created on: 15.10.25
|
||||
"""
|
||||
from abc import abstractmethod
|
||||
|
||||
from django.contrib import messages
|
||||
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 konova.contexts import BaseContext
|
||||
from konova.sub_settings.context_settings import TAB_TITLE_IDENTIFIER
|
||||
from konova.utils.general import check_user_is_in_any_group
|
||||
from konova.utils.message_templates import MISSING_GROUP_PERMISSION
|
||||
|
||||
|
||||
class BaseIndexView(View):
|
||||
@ -49,12 +52,15 @@ class BaseIndexView(View):
|
||||
|
||||
class BaseIdentifierGeneratorView(View):
|
||||
_MODEL_CLS = None
|
||||
_REDIRECT_URL_NAME: str = "home"
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
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)
|
||||
|
||||
def get(self, request: HttpRequest):
|
||||
@ -66,4 +72,15 @@ class BaseIdentifierGeneratorView(View):
|
||||
data={
|
||||
"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