Changeset 1523 in main


Ignore:
Timestamp:
07/19/12 14:43:52 (9 years ago)
Author:
pcosquer
Message:

navigate: limit the number of nodes displayed

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/openPLM/plmapp/navigate.py

    r1522 r1523  
    4242 
    4343from openPLM.plmapp import models 
    44 from openPLM.plmapp.controllers import PLMObjectController, PartController,\ 
    45                                        GroupController 
     44from openPLM.plmapp.controllers import PLMObjectController, GroupController 
    4645from openPLM.plmapp.controllers.user import UserController 
     46 
     47 
     48#: limit of objects displayed per link category 
     49OBJECTS_LIMIT = 100 
    4750 
    4851# just a shortcut 
     
    9598        graph.set_options({'child' : True, "parents" : True }) 
    9699        graph.create_edges() 
    97         map_str, picture_url = graph.render() 
     100        nodes, edges = graph.render() 
    98101 
    99102    :param obj: root of the graph 
     
    101104    :param results: if the option *only_search_results* is set, only objects in 
    102105                    results are displayed 
    103  
    104     .. warning:: 
    105         *results* must not be a QuerySet if it contains users. 
    106106    """ 
    107107 
     
    240240            node = "Group%d" % obj.id 
    241241            parts = obj.get_attached_parts().only("type", "reference", "revision", "name") 
    242             for part in parts: 
     242            for part in parts[:OBJECTS_LIMIT]: 
    243243                if self.options[OSR] and part.id not in self.results: 
    244244                    continue 
     
    246246                self._set_node_attributes(part) 
    247247        else: 
    248             for link in obj.get_attached_parts().select_related("part").only(*_parts_attrs): 
    249                 if self.options[OSR] and link.part.id not in self.results: 
     248            for link in obj.get_attached_parts().select_related("part").only(*_parts_attrs)[:OBJECTS_LIMIT]: 
     249                if self.options[OSR] and link.part_id not in self.results: 
    250250                    continue 
    251251                # create a link part -> document: 
     
    261261            node = "Group%d" % obj.id 
    262262            docs = obj.get_attached_documents().only("type", "reference", "revision", "name") 
    263             for doc in docs: 
     263            for doc in docs[:OBJECTS_LIMIT]: 
    264264                if self.options[OSR] and doc.id not in self.results: 
    265265                    continue 
     
    269269            # obj is the part id 
    270270            links = models.DocumentPartLink.objects.filter(part__id=obj).select_related("document") 
    271             for link in links.only(*_documents_attrs): 
     271            for link in links.only(*_documents_attrs)[:OBJECTS_LIMIT]: 
    272272                if self.options[OSR] and link.document_id not in self.results: 
    273273                    continue 
     
    307307                qs = models.PLMObject.objects.filter(id__in=qs) 
    308308            links = qs.values("id", "type", "reference", "revision", "name").order_by() 
    309             for plmobject in links: 
     309            for plmobject in links[:OBJECTS_LIMIT]: 
    310310                if self.options[OSR] and plmobject["id"] not in self.results: 
    311311                    continue 
     
    320320            # signer roles 
    321321            qs = obj.plmobjectuserlink_user.filter(role__istartswith=role) 
    322             for link in qs.select_related("plmobject").only("role", *_plmobjects_attrs): 
     322            for link in qs.select_related("plmobject").only("role", *_plmobjects_attrs)[:OBJECTS_LIMIT]: 
    323323                if self.options[OSR] and link.plmobject_id not in self.results: 
    324324                    continue 
     
    475475                    if title: 
    476476                        id_ =  area.get("id") 
    477                         left, top, x2, y2 = map(int, area.get("coords").split(",")) 
     477                        left, top = map(int, area.get("coords").split(",")[:2]) 
    478478                        s = "top:%dpx;left:%dpx;" % (top, left) 
    479479                        title = linebreaks(title.replace("\\n", "\n")) 
     
    485485             
    486486            # compute css position of the div 
    487             left, top, x2, y2 = map(int, area.get("coords").split(",")) 
     487            left, top = map(int, area.get("coords").split(",")[:2]) 
    488488            style = "top:%dpx;left:%dpx;" % (top, left) 
    489489 
    490             # create a div with a title, and an <a> element 
     490            # render the div 
    491491            id_ = "Nav-%s" % area.get("id") 
    492492            ctx = data.copy() 
Note: See TracChangeset for help on using the changeset viewer.