kopia lustrzana https://github.com/wagtail/wagtail
				
				
				
			Convert page type usage view to a class-based view
							rodzic
							
								
									ce5a8a33eb
								
							
						
					
					
						commit
						aa81dfd6fe
					
				| 
						 | 
				
			
			@ -34,7 +34,7 @@ urlpatterns = [
 | 
			
		|||
    ),
 | 
			
		||||
    path(
 | 
			
		||||
        "usage/<slug:content_type_app_name>/<slug:content_type_model_name>/",
 | 
			
		||||
        usage.content_type_use,
 | 
			
		||||
        usage.ContentTypeUseView.as_view(),
 | 
			
		||||
        name="type_use",
 | 
			
		||||
    ),
 | 
			
		||||
    path("<int:page_id>/usage/", usage.UsageView.as_view(), name="usage"),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,40 +3,42 @@ from django.core.exceptions import PermissionDenied
 | 
			
		|||
from django.core.paginator import Paginator
 | 
			
		||||
from django.http import Http404
 | 
			
		||||
from django.template.response import TemplateResponse
 | 
			
		||||
from django.views.generic import View
 | 
			
		||||
 | 
			
		||||
from wagtail.admin.views import generic
 | 
			
		||||
from wagtail.models import Page
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def content_type_use(request, content_type_app_name, content_type_model_name):
 | 
			
		||||
    try:
 | 
			
		||||
        content_type = ContentType.objects.get_by_natural_key(
 | 
			
		||||
            content_type_app_name, content_type_model_name
 | 
			
		||||
class ContentTypeUseView(View):
 | 
			
		||||
    def get(self, request, content_type_app_name, content_type_model_name):
 | 
			
		||||
        try:
 | 
			
		||||
            content_type = ContentType.objects.get_by_natural_key(
 | 
			
		||||
                content_type_app_name, content_type_model_name
 | 
			
		||||
            )
 | 
			
		||||
        except ContentType.DoesNotExist:
 | 
			
		||||
            raise Http404
 | 
			
		||||
 | 
			
		||||
        page_class = content_type.model_class()
 | 
			
		||||
 | 
			
		||||
        # page_class must be a Page type and not some other random model
 | 
			
		||||
        if not issubclass(page_class, Page):
 | 
			
		||||
            raise Http404
 | 
			
		||||
 | 
			
		||||
        pages = page_class.objects.all().specific(defer=True)
 | 
			
		||||
 | 
			
		||||
        paginator = Paginator(pages, per_page=10)
 | 
			
		||||
        pages = paginator.get_page(request.GET.get("p"))
 | 
			
		||||
 | 
			
		||||
        return TemplateResponse(
 | 
			
		||||
            request,
 | 
			
		||||
            "wagtailadmin/pages/content_type_use.html",
 | 
			
		||||
            {
 | 
			
		||||
                "pages": pages,
 | 
			
		||||
                "app_name": content_type_app_name,
 | 
			
		||||
                "content_type": content_type,
 | 
			
		||||
                "page_class": page_class,
 | 
			
		||||
            },
 | 
			
		||||
        )
 | 
			
		||||
    except ContentType.DoesNotExist:
 | 
			
		||||
        raise Http404
 | 
			
		||||
 | 
			
		||||
    page_class = content_type.model_class()
 | 
			
		||||
 | 
			
		||||
    # page_class must be a Page type and not some other random model
 | 
			
		||||
    if not issubclass(page_class, Page):
 | 
			
		||||
        raise Http404
 | 
			
		||||
 | 
			
		||||
    pages = page_class.objects.all().specific(defer=True)
 | 
			
		||||
 | 
			
		||||
    paginator = Paginator(pages, per_page=10)
 | 
			
		||||
    pages = paginator.get_page(request.GET.get("p"))
 | 
			
		||||
 | 
			
		||||
    return TemplateResponse(
 | 
			
		||||
        request,
 | 
			
		||||
        "wagtailadmin/pages/content_type_use.html",
 | 
			
		||||
        {
 | 
			
		||||
            "pages": pages,
 | 
			
		||||
            "app_name": content_type_app_name,
 | 
			
		||||
            "content_type": content_type,
 | 
			
		||||
            "page_class": page_class,
 | 
			
		||||
        },
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class UsageView(generic.UsageView):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Ładowanie…
	
		Reference in New Issue