# NewId Generator Ema refactoring
* introduces BaseNewIdentifierGeneratorView class * refactors new identifier generator view for ema
This commit is contained in:
parent
bb71c0fcc8
commit
a44d8658d4
@ -10,7 +10,8 @@ from django.urls import path
|
|||||||
from ema.views.action import NewEmaActionView, EditEmaActionView, RemoveEmaActionView
|
from ema.views.action import NewEmaActionView, EditEmaActionView, RemoveEmaActionView
|
||||||
from ema.views.deadline import NewEmaDeadlineView, EditEmaDeadlineView, RemoveEmaDeadlineView
|
from ema.views.deadline import NewEmaDeadlineView, EditEmaDeadlineView, RemoveEmaDeadlineView
|
||||||
from ema.views.document import NewEmaDocumentView, EditEmaDocumentView, RemoveEmaDocumentView, GetEmaDocumentView
|
from ema.views.document import NewEmaDocumentView, EditEmaDocumentView, RemoveEmaDocumentView, GetEmaDocumentView
|
||||||
from ema.views.ema import new_view, new_id_view, detail_view, edit_view, remove_view, EmaIndexView
|
from ema.views.ema import new_view, detail_view, edit_view, remove_view, EmaIndexView, \
|
||||||
|
EmaIdentifierGeneratorView
|
||||||
from ema.views.log import EmaLogView
|
from ema.views.log import EmaLogView
|
||||||
from ema.views.record import EmaRecordView
|
from ema.views.record import EmaRecordView
|
||||||
from ema.views.report import report_view
|
from ema.views.report import report_view
|
||||||
@ -22,7 +23,7 @@ app_name = "ema"
|
|||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path("", EmaIndexView.as_view(), name="index"),
|
path("", EmaIndexView.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", EmaIdentifierGeneratorView.as_view(), name="new-id"),
|
||||||
path("<id>", detail_view, name="detail"),
|
path("<id>", detail_view, name="detail"),
|
||||||
path('<id>/log', EmaLogView.as_view(), name='log'),
|
path('<id>/log', EmaLogView.as_view(), name='log'),
|
||||||
path('<id>/edit', edit_view, name='edit'),
|
path('<id>/edit', edit_view, name='edit'),
|
||||||
|
|||||||
@ -24,8 +24,8 @@ from konova.forms.modals import RemoveModalForm
|
|||||||
from konova.settings import DEFAULT_GROUP, ZB_GROUP, ETS_GROUP
|
from konova.settings import DEFAULT_GROUP, ZB_GROUP, ETS_GROUP
|
||||||
from konova.sub_settings.context_settings import TAB_TITLE_IDENTIFIER
|
from konova.sub_settings.context_settings import TAB_TITLE_IDENTIFIER
|
||||||
from konova.utils.message_templates import RECORDED_BLOCKS_EDIT, IDENTIFIER_REPLACED, FORM_INVALID, \
|
from konova.utils.message_templates import RECORDED_BLOCKS_EDIT, IDENTIFIER_REPLACED, FORM_INVALID, \
|
||||||
DO_NOT_FORGET_TO_SHARE, GEOMETRY_SIMPLIFIED, GEOMETRIES_IGNORED_TEMPLATE
|
DO_NOT_FORGET_TO_SHARE, GEOMETRY_SIMPLIFIED, GEOMETRIES_IGNORED_TEMPLATE, MISSING_GROUP_PERMISSION
|
||||||
from konova.views.base import BaseIndexView
|
from konova.views.base import BaseIndexView, BaseIdentifierGeneratorView
|
||||||
|
|
||||||
|
|
||||||
class EmaIndexView(LoginRequiredMixin, BaseIndexView):
|
class EmaIndexView(LoginRequiredMixin, BaseIndexView):
|
||||||
@ -96,23 +96,15 @@ def new_view(request: HttpRequest):
|
|||||||
return render(request, template, context)
|
return render(request, template, context)
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
class EmaIdentifierGeneratorView(LoginRequiredMixin, BaseIdentifierGeneratorView):
|
||||||
@conservation_office_group_required
|
_MODEL_CLS = Ema
|
||||||
def new_id_view(request: HttpRequest):
|
|
||||||
""" JSON endpoint
|
|
||||||
|
|
||||||
Provides fetching of free identifiers for e.g. AJAX calls
|
def dispatch(self, request, *args, **kwargs):
|
||||||
|
is_ets = request.user.is_ets_user()
|
||||||
"""
|
if not is_ets:
|
||||||
tmp = Ema()
|
messages.info(request, MISSING_GROUP_PERMISSION)
|
||||||
identifier = tmp.generate_new_identifier()
|
return redirect(reverse("ema:index"))
|
||||||
while Ema.objects.filter(identifier=identifier).exists():
|
return super().dispatch(request, *args, **kwargs)
|
||||||
identifier = tmp.generate_new_identifier()
|
|
||||||
return JsonResponse(
|
|
||||||
data={
|
|
||||||
"gen_data": identifier
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
|
|||||||
@ -5,7 +5,7 @@ Created on: 15.10.25
|
|||||||
"""
|
"""
|
||||||
from abc import abstractmethod
|
from abc import abstractmethod
|
||||||
|
|
||||||
from django.http import HttpRequest
|
from django.http import HttpRequest, JsonResponse
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from django.views import View
|
from django.views import View
|
||||||
|
|
||||||
@ -45,3 +45,25 @@ class BaseIndexView(View):
|
|||||||
@abstractmethod
|
@abstractmethod
|
||||||
def _get_queryset(self):
|
def _get_queryset(self):
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
class BaseIdentifierGeneratorView(View):
|
||||||
|
_MODEL_CLS = None
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
abstract = True
|
||||||
|
|
||||||
|
def dispatch(self, request, *args, **kwargs):
|
||||||
|
request = check_user_is_in_any_group(request)
|
||||||
|
return super().dispatch(request, *args, **kwargs)
|
||||||
|
|
||||||
|
def get(self, request: HttpRequest):
|
||||||
|
tmp_obj = self._MODEL_CLS()
|
||||||
|
identifier = tmp_obj.generate_new_identifier()
|
||||||
|
while self._MODEL_CLS.objects.filter(identifier=identifier).exists():
|
||||||
|
identifier = tmp_obj.generate_new_identifier()
|
||||||
|
return JsonResponse(
|
||||||
|
data={
|
||||||
|
"gen_data": identifier
|
||||||
|
}
|
||||||
|
)
|
||||||
Loading…
x
Reference in New Issue
Block a user