Changeset 858 in main for trunk/openPLM/plmapp/navigate.py


Ignore:
Timestamp:
03/07/12 17:26:39 (10 years ago)
Author:
pcosquer
Message:

navigate: tests if results are groups

File:
1 edited

Legend:

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

    r833 r858  
    3434from collections import defaultdict 
    3535 
    36 from django.contrib.auth.models import User 
     36from django.contrib.auth.models import User, Group 
    3737from django.template.loader import render_to_string 
    3838from django.utils.html import linebreaks 
     
    130130        # a PLMObject and an user may have the same id, so we add a variable 
    131131        # which tells if results contains users 
    132         self.users_result = False 
     132        self.users_result = self.groups_result = False 
    133133        if results: 
    134134            self.users_result = hasattr(results[0], "username") 
     135            self.groups_result = isinstance(results[0], Group) 
     136        self.plmobjects_result = not (self.groups_result or self.users_result) 
    135137        options = ("child", "parents", "doc", "owner", "signer", 
    136138                   "notified", "part", "owned", "to_sign", 
     
    199201        
    200202    def _create_child_edges(self, obj, *args): 
    201         if self.options[OSR] and self.users_result: 
     203        if self.options[OSR] and not self.plmobjects_result: 
    202204            return 
    203205        for child_l in obj.get_children(max_level=-1, related=("child",)): 
     
    214216     
    215217    def _create_parents_edges(self, obj, *args): 
    216         if self.options[OSR] and self.users_result: 
     218        if self.options[OSR] and not self.plmobjects_result: 
    217219            return 
    218220        for parent_l in obj.get_parents(max_level=-1, related=("parent",)): 
     
    229231    
    230232    def _create_part_edges(self, obj, *args): 
    231         if self.options[OSR] and self.users_result: 
     233        if self.options[OSR] and not self.plmobjects_result: 
    232234            return 
    233235        if isinstance(obj, GroupController): 
     
    250252     
    251253    def _create_doc_edges(self, obj, obj_id=None, *args): 
    252         if self.options[OSR] and self.users_result: 
     254        if self.options[OSR] and not self.plmobjects_result: 
    253255            return 
    254256        if isinstance(obj, GroupController): 
     
    289291 
    290292    def _create_object_edges(self, obj, role): 
    291         if self.options[OSR] and self.users_result: 
     293        if self.options[OSR] and not self.plmobjects_result: 
    292294            return 
    293295        node = "User%d" % obj.id 
     
    361363        # now that all parts have been added, we can add the documents 
    362364        if self.options["doc"]: 
    363             if isinstance(self.object, GroupController): 
    364                 self._create_doc_edges(self.object, None) 
    365             links = models.DocumentPartLink.objects.\ 
    366                     filter(part__in=self._part_to_node.keys()) 
    367             for link in links.select_related("document"): 
    368                 if self.options[OSR] and link.document_id not in self.results: 
    369                     continue 
    370                  
    371                 self.edges.add((link.part_id, link.document_id, " ")) 
    372                 self._set_node_attributes(link.document) 
     365            if not (self.options[OSR] and not self.plmobjects_result): 
     366                if isinstance(self.object, GroupController): 
     367                    self._create_doc_edges(self.object, None) 
     368                links = models.DocumentPartLink.objects.\ 
     369                        filter(part__in=self._part_to_node.keys()) 
     370                for link in links.select_related("document"): 
     371                    if self.options[OSR] and link.document_id not in self.results: 
     372                        continue 
     373                     
     374                    self.edges.add((link.part_id, link.document_id, " ")) 
     375                    self._set_node_attributes(link.document) 
    373376 
    374377        elif not isinstance(self.object, UserController): 
    375             ids = self.options["doc_parts"].intersection(self._part_to_node.keys())  
    376             links = models.DocumentPartLink.objects.filter(part__in=ids) 
    377             for link in links.select_related("document"): 
    378                 if self.options[OSR] and link.document_id not in self.results: 
    379                     continue 
    380                  
    381                 self.edges.add((link.part_id, link.document_id, " ")) 
    382                 self._set_node_attributes(link.document) 
     378            if not (self.options[OSR] and not self.plmobjects_result): 
     379                ids = self.options["doc_parts"].intersection(self._part_to_node.keys())  
     380                links = models.DocumentPartLink.objects.filter(part__in=ids) 
     381                for link in links.select_related("document"): 
     382                    if self.options[OSR] and link.document_id not in self.results: 
     383                        continue 
     384                     
     385                    self.edges.add((link.part_id, link.document_id, " ")) 
     386                    self._set_node_attributes(link.document) 
    383387 
    384388        # treats the parts to see if they have an attached document 
Note: See TracChangeset for help on using the changeset viewer.