WIP: 490_View_refactoring #491
@ -10,7 +10,8 @@ from django.urls import path
 | 
			
		||||
from ema.views.action import NewEmaActionView, EditEmaActionView, RemoveEmaActionView
 | 
			
		||||
from ema.views.deadline import NewEmaDeadlineView, EditEmaDeadlineView, RemoveEmaDeadlineView
 | 
			
		||||
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.record import EmaRecordView
 | 
			
		||||
from ema.views.report import report_view
 | 
			
		||||
@ -22,7 +23,7 @@ app_name = "ema"
 | 
			
		||||
urlpatterns = [
 | 
			
		||||
    path("", EmaIndexView.as_view(), name="index"),
 | 
			
		||||
    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>/log', EmaLogView.as_view(), name='log'),
 | 
			
		||||
    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.sub_settings.context_settings import TAB_TITLE_IDENTIFIER
 | 
			
		||||
from konova.utils.message_templates import RECORDED_BLOCKS_EDIT, IDENTIFIER_REPLACED, FORM_INVALID, \
 | 
			
		||||
    DO_NOT_FORGET_TO_SHARE, GEOMETRY_SIMPLIFIED, GEOMETRIES_IGNORED_TEMPLATE
 | 
			
		||||
from konova.views.base import BaseIndexView
 | 
			
		||||
    DO_NOT_FORGET_TO_SHARE, GEOMETRY_SIMPLIFIED, GEOMETRIES_IGNORED_TEMPLATE, MISSING_GROUP_PERMISSION
 | 
			
		||||
from konova.views.base import BaseIndexView, BaseIdentifierGeneratorView
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class EmaIndexView(LoginRequiredMixin, BaseIndexView):
 | 
			
		||||
@ -96,23 +96,15 @@ def new_view(request: HttpRequest):
 | 
			
		||||
    return render(request, template, context)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@login_required
 | 
			
		||||
@conservation_office_group_required
 | 
			
		||||
def new_id_view(request: HttpRequest):
 | 
			
		||||
    """ JSON endpoint
 | 
			
		||||
class EmaIdentifierGeneratorView(LoginRequiredMixin, BaseIdentifierGeneratorView):
 | 
			
		||||
    _MODEL_CLS = Ema
 | 
			
		||||
 | 
			
		||||
    Provides fetching of free identifiers for e.g. AJAX calls
 | 
			
		||||
 | 
			
		||||
    """
 | 
			
		||||
    tmp = Ema()
 | 
			
		||||
    identifier = tmp.generate_new_identifier()
 | 
			
		||||
    while Ema.objects.filter(identifier=identifier).exists():
 | 
			
		||||
        identifier = tmp.generate_new_identifier()
 | 
			
		||||
    return JsonResponse(
 | 
			
		||||
        data={
 | 
			
		||||
            "gen_data": identifier
 | 
			
		||||
        }
 | 
			
		||||
    )
 | 
			
		||||
    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)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@login_required
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@ Created on: 15.10.25
 | 
			
		||||
"""
 | 
			
		||||
from abc import abstractmethod
 | 
			
		||||
 | 
			
		||||
from django.http import HttpRequest
 | 
			
		||||
from django.http import HttpRequest, JsonResponse
 | 
			
		||||
from django.shortcuts import render
 | 
			
		||||
from django.views import View
 | 
			
		||||
 | 
			
		||||
@ -45,3 +45,25 @@ class BaseIndexView(View):
 | 
			
		||||
    @abstractmethod
 | 
			
		||||
    def _get_queryset(self):
 | 
			
		||||
        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