o a@sddlmZddlmZmZddlmZddlmZddl m Z ddl m Z mZmZGddde ZGd d d eeZGd d d eZGd ddeeZdS))ImproperlyConfigured) InvalidPage Paginator)QuerySet)Http404)gettext) ContextMixinTemplateResponseMixinViewcseZdZdZdZdZdZdZdZdZ e Z dZ dZ ddZdd Zd d Zd d Z  dddZddZddZddZddfdd ZZS)MultipleObjectMixinz0A mixin for views manipulating multiple objects.TNrpagecCsz|jdur|j}t|tr|}n|jdur|jj}n tdd|jji| }|r;t|t r6|f}|j |}|S)z Return the list of items for this view. The return value must be an iterable and may be an instance of `QuerySet` in which case `QuerySet` specific behavior will be enabled. Nzj%(cls)s is missing a QuerySet. Define %(cls)s.model, %(cls)s.queryset, or override %(cls)s.get_queryset().cls) queryset isinstancerallmodel_default_managerr __class____name__ get_orderingstrorder_by)selfrorderingr;/usr/lib/python3/dist-packages/django/views/generic/list.py get_querysets&     z MultipleObjectMixin.get_querysetcC|jS)zrrr8r<r?rr:r)rrrr7r9r&r'r(rCrH __classcell__rrrJrr s,  r c@seZdZdZddZdS) BaseListViewz-A base view for displaying a list of objects.cOsv||_|}|s2||jdur t|jdr |j }n|j }|r2ttdd|jj i| }| |S)Nexistsu9Empty list and “%(class_name)s.allow_empty” is False. class_name) rr2r(r9r@rPrr1rrrHrender_to_response)rr,argsr*r>is_emptyrIrrrr+s  zBaseListView.getN)rrKrLrMr+rrrrrOs rOcs$eZdZdZdZfddZZS)#MultipleObjectTemplateResponseMixinz9Mixin for responding with a template and list of objects._listcsvzt}Wn tyg}Ynwt|jdr-|jjj}|d|j|j |j f|S|s9tdd|j j i|S)z Return a list of template names to be used for the request. Must return a list. May not be called if render_to_response is overridden. rz %s/%s%s.htmlzg%(cls)s requires either a 'template_name' attribute or a get_queryset() method that returns a QuerySet.r ) rGget_template_namesrr@r2rrAappend app_labelrBtemplate_name_suffixrr)rnamesoptsrJrrrWs"  z6MultipleObjectTemplateResponseMixin.get_template_names)rrKrLrMrZrWrNrrrJrrUsrUc@seZdZdZdS)ListViewz Render some list of objects, set by `self.model` or `self.queryset`. `self.queryset` can actually be any iterable of items, not just a queryset. N)rrKrLrMrrrrr]sr]N)django.core.exceptionsrdjango.core.paginatorrrdjango.db.modelsr django.httprdjango.utils.translationrr1django.views.generic.baserr r r rOrUr]rrrrs    !