Beispiel #1
0
    def __init__(self,
                 request,
                 number,
                 current_number,
                 total_number,
                 querystring_key,
                 label=None,
                 default_number=1,
                 override_path=None,
                 context=None):
        self._request = request
        self.number = number
        self.label = utils.text(number) if label is None else label
        self.querystring_key = querystring_key
        self.context = context or {}
        self.context['request'] = request

        self.is_current = number == current_number
        self.is_first = number == 1
        self.is_last = number == total_number

        self.url = utils.get_querystring_for_page(
            request,
            number,
            self.querystring_key,
            default_number=default_number)
        path = iri_to_uri(override_path or request.path)
        self.path = '{0}{1}'.format(path, self.url)
Beispiel #2
0
    def __init__(self,
                 request,
                 number,
                 current_number,
                 total_number,
                 querystring_key,
                 label=None,
                 default_number=1,
                 override_path=None,
                 context=None):
        self._request = request
        self.number = number
        self.label = force_text(number) if label is None else label
        self.querystring_key = querystring_key
        self.context = context or {}
        self.context['request'] = request

        self.is_current = number == current_number
        self.is_first = number == 1
        self.is_last = number == total_number
        if settings.USE_NEXT_PREVIOUS_LINKS:
            self.is_previous = label and number == current_number - 1
            self.is_next = label and number == current_number + 1

        self.url = utils.get_querystring_for_page(
            request,
            number,
            self.querystring_key,
            default_number=default_number)
        path = iri_to_uri(override_path or request.path)
        self.path = '{0}{1}'.format(path, self.url)
Beispiel #3
0
def show_more_info(context,
                   label=None,
                   loading=settings.LOADING,
                   class_name=None):
    data = utils.get_data_from_context(context)
    page = data['page']
    if page.has_next():
        request = context['request']
        page_number = page.next_page_number()
        querystring_key = data['querystring_key']
        querystring = utils.get_querystring_for_page(
            request,
            page_number,
            querystring_key,
            default_number=data['default_number'])
        return {
            'label': label,
            'loading': loading,
            'class_name': class_name,
            'path': iri_to_uri(data['override_path'] or request.path),
            'querystring': querystring,
            'querystring_key': querystring_key,
            'request': request,
        }
    return {}
    def __init__(
            self, request, number, current_number, total_number,
            querystring_key, label=None, default_number=1, override_path=None,
            context=None):
        self._request = request
        self.number = number
        self.label = force_text(number) if label is None else label
        self.querystring_key = querystring_key
        self.context = context or {}
        self.context['request'] = request

        self.is_current = number == current_number
        self.is_first = number == 1
        self.is_last = number == total_number
        if settings.USE_NEXT_PREVIOUS_LINKS:
            self.is_previous = label and number == current_number - 1
            self.is_next = label and number == current_number + 1

        self.url = utils.get_querystring_for_page(
            request, number,
            self.querystring_key,
            default_number=default_number
        )
        path = iri_to_uri(override_path or request.path)
        self.path = '{0}{1}'.format(path, self.url)
Beispiel #5
0
 def test_default_page(self):
     # Ensure the querystring is empty for the default page.
     request = self.factory.get('/')
     querystring = utils.get_querystring_for_page(request,
                                                  3,
                                                  'mypage',
                                                  default_number=3)
     self.assertEqual('', querystring)
Beispiel #6
0
def custom_show_more(context,
                     label=None,
                     loading=settings.LOADING,
                     class_name=None):
    """Show the link to get the next page in a Twitter-like pagination.

    Usage::

        {% show_more %}

    Alternatively you can override the label passed to the default template::

        {% show_more "even more" %}

    You can override the loading text too::

        {% show_more "even more" "working" %}

    You could pass in the extra CSS style class name as a third argument

       {% show_more "even more" "working" "class_name" %}

    Must be called after ``{% paginate objects %}``.
    """
    # This template tag could raise a PaginationError: you have to call
    # *paginate* or *lazy_paginate* before including the showmore template.
    data = utils.get_data_from_context(context)
    page = data['page']
    # show the template only if there is a next page
    if page.has_next():
        request = context['request']
        page_number = page.next_page_number()
        # Generate the querystring.
        querystring_key = data['querystring_key']
        querystring = utils.get_querystring_for_page(
            request,
            page_number,
            querystring_key,
            default_number=data['default_number'])
        return {
            'label': label,
            'loading': loading,
            'class_name': class_name,
            'path': iri_to_uri(data['override_path'] or request.path),
            'querystring': querystring,
            'querystring_key': querystring_key,
            'request': request,
        }
    # No next page, nothing to see.
    return {}
Beispiel #7
0
    def __init__(
            self, request, number, current_number, total_number,
            querystring_key, label=None, default_number=1, override_path=None):
        self._request = request
        self.number = number
        self.label = utils.text(number) if label is None else label
        self.querystring_key = querystring_key

        self.is_current = number == current_number
        self.is_first = number == 1
        self.is_last = number == total_number

        self.url = utils.get_querystring_for_page(
            request, number, self.querystring_key,
            default_number=default_number)
        path = iri_to_uri(override_path or request.path)
        self.path = '{0}{1}'.format(path, self.url)
def show_more(context, label=None, loading=settings.LOADING, class_name=None):
    """Show the link to get the next page in a Twitter-like pagination.

    Usage::

        {% show_more %}

    Alternatively you can override the label passed to the default template::

        {% show_more "even more" %}

    You can override the loading text too::

        {% show_more "even more" "working" %}

    You could pass in the extra CSS style class name as a third argument

       {% show_more "even more" "working" "class_name" %}

    Must be called after ``{% paginate objects %}``.
    """
    # This template tag could raise a PaginationError: you have to call
    # *paginate* or *lazy_paginate* before including the showmore template.
    data = utils.get_data_from_context(context)
    page = data['page']
    # show the template only if there is a next page
    if page.has_next():
        request = context['request']
        page_number = page.next_page_number()
        # Generate the querystring.
        querystring_key = data['querystring_key']
        querystring = utils.get_querystring_for_page(
            request, page_number, querystring_key,
            default_number=data['default_number'])
        return {
            'label': label,
            'loading': loading,
            'class_name': class_name,
            'path': iri_to_uri(data['override_path'] or request.path),
            'querystring': querystring,
            'querystring_key': querystring_key,
            'request': request,
        }
    # No next page, nothing to see.
    return {}
Beispiel #9
0
def show_more_custom(context,
                     label=None,
                     items_ids=None,
                     length=None,
                     items_count=None,
                     loading=settings.LOADING):
    data = utils.get_data_from_context(context)
    page = data['page']
    query = None
    if page.has_next():
        request = context['request']
        page_number = page.next_page_number()
        items_shown = 10 * (page_number - 1)
        if not page_number:
            items_shown = items_count
        # pagination = context['pagination']
        if not items_ids:
            if context.get('search_query'):
                query = context.get('search_query')
        querystring_key = data['querystring_key']
        context['override_path'] = "/catalog-sort-item/"
        context['override_path'] = "/catalog-sort-item/"
        querystring = utils.get_querystring_for_page(
            request,
            page_number,
            querystring_key,
            default_number=data['default_number'])
        return {
            'label':
            label,
            'loading':
            loading,
            'path':
            iri_to_uri(context.get('instance_path') or request.path),
            'ajax_path':
            iri_to_uri(
                context.get("override_path") or context.get('instance_path')
                or request.path),
            'querystring':
            querystring + context.get("extra_querystring", ""),
            'querystring_key':
            querystring_key,
            'request':
            request,
            'page_number':
            page_number,
            'length':
            length,
            'items_ids':
            items_ids,
            'items_count':
            items_count,
            'items_shown':
            items_shown,
            'query':
            query,
            # 'pagination': pagination ,
        }

    return {
        'length': length,
        'items_count': items_count,
        'items_shown': items_count,
        'items_ids': items_ids,
        'page': page,
    }
Beispiel #10
0
 def test_querystring_key(self):
     # The querystring key is deleted from the querystring if present.
     request = self.factory.get('/?querystring_key=mykey')
     querystring = utils.get_querystring_for_page(request, 5, 'mypage')
     self.assertEqual('?mypage=5', querystring)
Beispiel #11
0
 def test_composition(self):
     # Ensure existing querystring is correctly preserved.
     request = self.factory.get('/?mypage=1&foo=bar')
     querystring = utils.get_querystring_for_page(request, 4, 'mypage')
     self.assertIn('mypage=4', querystring)
     self.assertIn('foo=bar', querystring)
 def test_default_page(self):
     # Ensure the querystring is empty for the default page.
     request = self.factory.get('/')
     querystring = utils.get_querystring_for_page(
         request, 3, 'mypage', default_number=3)
     self.assertEqual('', querystring)
Beispiel #13
0
 def test_querystring(self):
     # Ensure the querystring is correctly generated from request.
     request = self.factory.get('/')
     querystring = utils.get_querystring_for_page(request, 2, 'mypage')
     self.assertEqual('?mypage=2', querystring)