Changeset 1190 in main


Ignore:
Timestamp:
06/07/12 12:01:23 (7 years ago)
Author:
zali
Message:

Templates groups/object and browse : pagination display 5 pages and the first or the last page

Location:
trunk/openPLM
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/openPLM/plmapp/tests/views.py

    r1186 r1190  
    21532153        response = self.get(self.group_url + "objects/", page="objects") 
    21542154        objects = response.context["objects"] 
    2155         self.assertEqual([self.part_controller.plmobject_ptr], list(objects)) 
     2155        self.assertEqual([self.part_controller.plmobject_ptr], list(objects.object_list)) 
    21562156        # create a new group 
    21572157        group = m.GroupInfo(name="grp2", owner=self.user, creator=self.user, 
     
    21642164        response = self.get(self.group_url + "objects/", page="objects") 
    21652165        objects = response.context["objects"] 
    2166         self.assertEqual([self.part_controller.plmobject_ptr], list(objects)) 
     2166        self.assertEqual([self.part_controller.plmobject_ptr], list(objects.object_list)) 
    21672167         
    21682168    def test_history(self): 
  • trunk/openPLM/plmapp/views/main.py

    r1189 r1190  
    18011801     
    18021802    obj, ctx = get_generic_data(request, "Group", obj_ref) 
    1803     ctx["objects"] = obj.plmobject_group.order_by("type", "reference", "revision") 
     1803     
     1804    #ctx["objects"] = obj.plmobject_group.order_by("type", "reference", "revision") 
     1805    objects = obj.plmobject_group.order_by("type", "reference", "revision") 
     1806 
     1807    display_pagination(request.GET,ctx, objects,"object") 
     1808 
    18041809    ctx['current_page'] = 'objects' 
    18051810    return r2r("groups/objects.html", ctx, request) 
     
    19641969        return super(OpenPLMSearchView, self).__call__(request) 
    19651970 
     1971def get_pages_num(total_pages, current_page,ctx): 
     1972    page = int(current_page) 
     1973    total = int(total_pages) 
     1974    if total < 5: 
     1975        ctx["pages"] = range(1,total) 
     1976    else: 
     1977        if page < total-1: 
     1978            if page > 2: 
     1979                ctx["pages"] = range(page-2, page+3) 
     1980            else: 
     1981                ctx["pages"] = range (1,6) 
     1982        else: 
     1983            ctx["pages"] = range(total-4, total+1) 
     1984 
     1985def display_pagination(r_GET,ctx, object_list, type="object"): 
     1986    sort = r_GET.get("sort", "recently-added") 
     1987    if sort== "name" : 
     1988        sort_critera = "username" if type == "user" else "name" 
     1989    else: 
     1990        sort_critera = "-date_joined" if type == "user" else "-ctime" 
     1991    object_list = object_list.order_by(sort_critera) 
     1992  
     1993    paginator = Paginator(object_list, 24) # Show 24 objects per page 
     1994  
     1995    page = r_GET.get('page', 1) 
     1996    get_pages_num(paginator.num_pages, page,ctx) 
     1997    try: 
     1998        objects = paginator.page(page) 
     1999    except PageNotAnInteger: 
     2000        # If page is not an integer, deliver first page. 
     2001         objects = paginator.page(1) 
     2002    except EmptyPage: 
     2003        # If page is out of range (e.g. 9999), deliver last page of results. 
     2004         objects = paginator.page(paginator.num_pages) 
     2005    ctx["thumbnails"] = {} 
     2006    ctx["num_files"] = {} 
     2007 
     2008    if type in ("object", "document"): 
     2009         ids = objects.object_list.values_list("id", flat=True) 
     2010         thumbnails = models.DocumentFile.objects.filter(deprecated=False, 
     2011                 document__in=ids, thumbnail__isnull=False) 
     2012         ctx["thumbnails"].update(dict(thumbnails.values_list("document", "thumbnail"))) 
     2013         num_files = dict.fromkeys(ids, 0) 
     2014         for doc_id in models.DocumentFile.objects.filter(deprecated=False, 
     2015                 document__in=ids).values_list("document", flat=True): 
     2016             num_files[doc_id] += 1 
     2017         ctx["num_files"] = num_files 
     2018    ctx.update({ 
     2019         "objects" : objects, 
     2020         "sort" : sort, 
     2021    }) 
     2022 
     2023 
    19662024@secure_required 
    19672025def browse(request, type="object"): 
     
    20042062        object_list = cls.objects.filter(published=True) 
    20052063 
    2006          
    2007     sort = request.GET.get("sort", "recently-added") 
    2008     if sort == "name": 
    2009         sort_critera = "username" if type == "user" else "name" 
    2010     else: 
    2011         sort_critera = "-date_joined" if type == "user" else "-ctime" 
    2012     object_list = object_list.order_by(sort_critera) 
    2013  
    2014     paginator = Paginator(object_list, 24) # Show 24 objects per page 
    2015  
    2016     page = request.GET.get('page', 1) 
    2017     try: 
    2018         objects = paginator.page(page) 
    2019     except PageNotAnInteger: 
    2020         # If page is not an integer, deliver first page. 
    2021         objects = paginator.page(1) 
    2022     except EmptyPage: 
    2023         # If page is out of range (e.g. 9999), deliver last page of results. 
    2024         objects = paginator.page(paginator.num_pages) 
    2025     ctx["thumbnails"] = {} 
    2026     ctx["num_files"] = {} 
    2027  
    2028     if type in ("object", "document"): 
    2029         ids = objects.object_list.values_list("id", flat=True) 
    2030         thumbnails = models.DocumentFile.objects.filter(deprecated=False, 
    2031                 document__in=ids, thumbnail__isnull=False) 
    2032         ctx["thumbnails"].update(dict(thumbnails.values_list("document", "thumbnail"))) 
    2033         num_files = dict.fromkeys(ids, 0) 
    2034         for doc_id in models.DocumentFile.objects.filter(deprecated=False, 
    2035                 document__in=ids).values_list("document", flat=True): 
    2036             num_files[doc_id] += 1 
    2037         ctx["num_files"] = num_files 
     2064    display_pagination(request.GET,ctx, object_list, type=type) 
     2065     
    20382066    ctx.update({ 
    2039         "objects" : objects, 
    20402067        "object_type" : _("Browse"), 
    20412068        "type" : type, 
    2042         "sort" : sort, 
    20432069    }) 
    20442070    return r2r("browse.html", ctx, request) 
  • trunk/openPLM/templates/browse.html

    r1184 r1190  
    115115            <div class="pagination"> 
    116116                <span class="step-links"> 
    117                     {% if objects.has_previous %} 
    118                         <a href="{% add_get page='1'%}">{% trans "First page" %}</a> 
    119                         — 
    120                         <a href="{% add_get page=objects.previous_page_number %}">{% trans "previous" %}</a> 
     117                    {% if objects.has_previous and 1 not in pages %} 
     118 
     119                        <a href="{% add_get page='1'%}"> 
     120                        {% if objects.number > 4 %} 
     121                            {% trans "First page" %}</a> — 
     122                        {% else %} 
     123                            1</a> 
     124                        {% endif %} 
     125 
    121126                    {% endif %} 
    122127 
    123                     <span class="current"> 
    124                         {% blocktrans with objects.number as page and objects.paginator.num_pages as num_pages %} 
    125                             Page {{ page }} of {{ num_pages }}. 
    126                         {% endblocktrans %} 
    127                     </span> 
     128                    {% for page in pages %} 
     129                        <a  
     130                        {% if page = objects.number %} 
     131                            style="font-weight:bold"> 
     132                        {% else %} 
     133                            href="{% add_get page=page %}"> 
     134                        {% endif %} 
     135                        {{page}}</a> 
     136                    {% endfor %} 
    128137 
    129                     {% if objects.has_next %} 
    130                         <a href="{% add_get page=objects.next_page_number %}">{% trans "next" %}</a> 
     138                    {% if objects.has_next  and objects.paginator.num_pages not in pages %} 
     139                        {% if objects.paginator.num_pages|add:'-1' not in pages %} 
    131140                        — 
    132141                        <a href="{% add_get page=objects.paginator.num_pages %}">{% trans "last page" %}</a> 
     142                        {% else %} 
     143                        <a href="{% add_get page=objects.paginator.num_pages %}">{{objects.paginator.num_pages}}</a> 
     144                        {% endif %} 
    133145 
    134146                    {% endif %} 
  • trunk/openPLM/templates/groups/objects.html

    r808 r1190  
    22{% load i18n plmapp_tags %} 
    33 
     4{% block content %} 
     5    <div> 
     6        <span id="numresults"> 
     7        {% blocktrans with objects.start_index as start and objects.end_index as end and objects.paginator.count as total %} 
     8           Objects : {{start}} - {{end}} on {{total}} 
     9        {% endblocktrans %} 
     10        </span>  
     11    </div> 
     12        <div> 
     13        {% for object in objects.object_list %} 
     14            {% if object.is_part %} 
     15                {% include "parts/identity_card.html" %} 
     16            {% else %} 
     17                {% include "documents/identity_card.html" %} 
     18            {% endif %} 
     19         {% endfor %} 
     20        <div> 
     21        <div class="pagination"> 
     22        <span class="step-links"> 
     23        {% if objects.has_previous and 1 not in pages %} 
    424 
    5 {% block content %} 
    6         <table class="Content"> 
    7             {% for object in objects %} 
    8             <tr class="Content"> 
    9                 <td class="Content"> 
    10                     {{ object.type }} 
    11                 </td> 
    12                  
    13                 <td class="Content"> 
    14                     <a href="{{ object.plmobject_url }}">{{object.reference}}</a> 
    15                 </td> 
    16                 <td class="Content"> 
    17                     {{ object.revision }} 
    18                 </td> 
    19                     </tr> 
    20             {% endfor %} 
    21         </table> 
     25            <a href="{% add_get page='1'%}"> 
     26            {% if objects.number > 4 %} 
     27                {% trans "First page" %}</a> — 
     28            {% else %} 
     29                1</a> 
     30            {% endif %} 
     31 
     32        {% endif %} 
     33 
     34        {% for page in pages %} 
     35            <a  
     36            {% if page = objects.number %} 
     37                style="font-weight:bold"> 
     38            {% else %} 
     39                href="{% add_get page=page %}"> 
     40            {% endif %} 
     41            {{page}}</a> 
     42        {% endfor %} 
     43 
     44        {% if objects.has_next  and objects.paginator.num_pages not in pages %} 
     45            {% if objects.paginator.num_pages|add:'-1' not in pages %} 
     46            — 
     47            <a href="{% add_get page=objects.paginator.num_pages %}">{% trans "last page" %}</a> 
     48            {% else %} 
     49            <a href="{% add_get page=objects.paginator.num_pages %}">{{objects.paginator.num_pages}}</a> 
     50            {% endif %} 
     51 
     52        {% endif %} 
     53        </span> 
     54    </div> 
    2255{% endblock %} 
    2356 
Note: See TracChangeset for help on using the changeset viewer.