forked from rc/aircox
		
	fix bug for schedules set to "one week or two"; sections.List: avoid to call self.get_object_list if possible + add prepare_object_list
This commit is contained in:
		@ -238,7 +238,6 @@ class List(Section):
 | 
			
		||||
    * truncate: number of words to keep in content (0 = full content)
 | 
			
		||||
    """
 | 
			
		||||
    template_name = 'aircox/cms/list.html'
 | 
			
		||||
    base_template = 'aircox/cms/section.html'
 | 
			
		||||
 | 
			
		||||
    object_list = None
 | 
			
		||||
    url = None
 | 
			
		||||
@ -265,19 +264,45 @@ class List(Section):
 | 
			
		||||
    def get_object_list(self):
 | 
			
		||||
        return self.object_list
 | 
			
		||||
 | 
			
		||||
    def get_context_data(self, request, object=None, *args, **kwargs):
 | 
			
		||||
    def prepare_object_list(self, object_list):
 | 
			
		||||
        """
 | 
			
		||||
        Prepare objects before context is sent to the template renderer.
 | 
			
		||||
        Return the object_list that is prepared.
 | 
			
		||||
 | 
			
		||||
        Remember: since we are in a rendering process, the items should
 | 
			
		||||
        not be saved.
 | 
			
		||||
        """
 | 
			
		||||
        return object_list
 | 
			
		||||
 | 
			
		||||
    def get_context_data(self, request, object=None, object_list=None,
 | 
			
		||||
                            *args, **kwargs):
 | 
			
		||||
        """
 | 
			
		||||
        Return a context that is passed to the template at rendering, with
 | 
			
		||||
        the following values:
 | 
			
		||||
        - `list`: a reference to self, that contain values used for rendering
 | 
			
		||||
        - `object_list`: a list of object that can be rendered, either
 | 
			
		||||
            instances of Post or ListItem.
 | 
			
		||||
 | 
			
		||||
        If object_list is not given, call `get_object_list` to retrieve it.
 | 
			
		||||
        Prepare the object_list using `self.prepare_object_list`.
 | 
			
		||||
 | 
			
		||||
        Set `request`, `object`, `object_list` and `kwargs` in self.
 | 
			
		||||
        """
 | 
			
		||||
        if request: self.request = request
 | 
			
		||||
        if object: self.object = object
 | 
			
		||||
        if kwargs: self.kwargs = kwargs
 | 
			
		||||
 | 
			
		||||
        object_list = self.object_list or self.get_object_list()
 | 
			
		||||
        if not object_list and not self.message_empty:
 | 
			
		||||
            return
 | 
			
		||||
        if object_list is None:
 | 
			
		||||
            object_list = self.object_list or self.get_object_list()
 | 
			
		||||
            if not object_list and not self.message_empty:
 | 
			
		||||
                return
 | 
			
		||||
        self.object_list = object_list
 | 
			
		||||
 | 
			
		||||
        if object_list:
 | 
			
		||||
            object_list = self.prepare_object_list(object_list)
 | 
			
		||||
 | 
			
		||||
        context = super().get_context_data(request, object, *args, **kwargs)
 | 
			
		||||
        context.update({
 | 
			
		||||
            'base_template': self.base_template,
 | 
			
		||||
            'list': self,
 | 
			
		||||
            'object_list': object_list[:self.paginate_by]
 | 
			
		||||
                           if object_list and self.paginate_by else
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										12
									
								
								cms/views.py
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								cms/views.py
									
									
									
									
									
								
							@ -42,7 +42,7 @@ class BaseView:
 | 
			
		||||
            self.sections = sections
 | 
			
		||||
        super().__init__(*args, **kwargs)
 | 
			
		||||
 | 
			
		||||
    def __is_single(self):
 | 
			
		||||
    def __section_is_single(self):
 | 
			
		||||
        return not issubclass(type(self.sections), list)
 | 
			
		||||
 | 
			
		||||
    def add_css_class(self, css_class):
 | 
			
		||||
@ -64,10 +64,13 @@ class BaseView:
 | 
			
		||||
 | 
			
		||||
        # update from sections
 | 
			
		||||
        if self.sections:
 | 
			
		||||
            if self.__is_single():
 | 
			
		||||
            if self.__section_is_single():
 | 
			
		||||
                self.template_name = self.sections.template_name
 | 
			
		||||
                context.update(self.sections.get_context_data(
 | 
			
		||||
                    self.request, **self.kwargs
 | 
			
		||||
                    self.request,
 | 
			
		||||
                    object_list = hasattr(self, 'object_list') and \
 | 
			
		||||
                                    self.object_list,
 | 
			
		||||
                    **self.kwargs
 | 
			
		||||
                ) or {})
 | 
			
		||||
            else:
 | 
			
		||||
                if not self.template_name:
 | 
			
		||||
@ -143,6 +146,7 @@ class PostListView(BaseView, ListView):
 | 
			
		||||
        return super().dispatch(request, *args, **kwargs)
 | 
			
		||||
 | 
			
		||||
    def get_queryset(self):
 | 
			
		||||
        print('get_query_set')
 | 
			
		||||
        if self.route:
 | 
			
		||||
            qs = self.route.get_queryset(self.model, self.request,
 | 
			
		||||
                                         **self.kwargs)
 | 
			
		||||
@ -183,13 +187,13 @@ class PostListView(BaseView, ListView):
 | 
			
		||||
        self.add_css_class('list')
 | 
			
		||||
 | 
			
		||||
        context = super().get_context_data(**kwargs)
 | 
			
		||||
        # context.update(BaseView.get_context_data(self, **kwargs))
 | 
			
		||||
 | 
			
		||||
        if not context.get('title') and self.route:
 | 
			
		||||
            context['title'] = self.route.get_title(
 | 
			
		||||
                self.model, self.request, **self.kwargs
 | 
			
		||||
            )
 | 
			
		||||
 | 
			
		||||
        print([post.title for post in context.get('object_list')])
 | 
			
		||||
        context['list'] = self.list
 | 
			
		||||
        return context
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user