Changeset 367 in main


Ignore:
Timestamp:
10/03/11 16:27:53 (8 years ago)
Author:
pcosquer
Message:

check if the user can see and object
Some checks are not implemented, they will come later

Location:
trunk/openPLM
Files:
6 edited

Legend:

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

    r350 r367  
    331331    if hasattr(selected_object, "check_permission"): 
    332332        ctx["is_owner"] = selected_object.check_permission("owner", False) 
     333    if hasattr(selected_object, "check_readable"): 
     334        ctx["is_readable"] = selected_object.check_readable(False) 
     335    else: 
     336        ctx["is_readable"] = True 
    333337    return selected_object, ctx 
    334338 
  • trunk/openPLM/plmapp/controllers/document.py

    r334 r367  
    210210 
    211211        if isinstance(part, PLMObjectController): 
     212            part.check_readable() 
    212213            part = part.object 
     214        else: 
     215            if not (isinstance(part, models.PLMObject) and hasattr(part, "part")): 
     216                raise ValueError("%s is not a part" % part) 
     217            type(self)(part, self._user).check_readable() 
    213218        self.documentpartlink_document.create(part=part) 
    214219        self._save_histo(models.DocumentPartLink.ACTION_NAME, 
  • trunk/openPLM/plmapp/controllers/part.py

    r334 r367  
    6464        if child.id == self.object.id: 
    6565            raise ValueError("Can not add child: child is current object") 
     66        type(self)(child, self._user).check_readable() 
    6667        parents = (p.link.parent.pk for p in self.get_parents(-1)) 
    6768        if child.pk in parents: 
     
    260261        self.check_permission("owner") 
    261262        if isinstance(document, PLMObjectController): 
     263            document.check_readable() 
    262264            document = document.object 
     265        else: 
     266            type(self)(document, self._user).check_readable() 
    263267        self.documentpartlink_part.create(document=document) 
    264268        self._save_histo(models.DocumentPartLink.ACTION_NAME, 
  • trunk/openPLM/plmapp/controllers/plmobject.py

    r366 r367  
    403403        return super(PLMObjectController, self).check_permission(role, raise_) 
    404404 
     405    def check_readable(self, raise_=True): 
     406        if not self.is_editable: 
     407            return True 
     408        if bool(self.group.user_set.filter(id=self._user.id)): 
     409            return True 
     410        if raise_: 
     411            raise PermissionError("You can not see this object.") 
     412        return False 
     413 
  • trunk/openPLM/plmapp/views/ajax.py

    r318 r367  
    208208        if form.is_valid(): 
    209209            attached = get_obj_from_form(form, request.user) 
    210              
    211             if hasattr(plmobject, "is_document_attached"): 
    212                 data["can_attach"] = not (hasattr(attached, "part") or \ 
    213                                  plmobject.is_document_attached(attached)) 
    214             elif hasattr(plmobject, "is_part_attached"): 
    215                 data["can_attach"] = not (hasattr(attached, "document") or \ 
    216                                           plmobject.is_part_attached(attached)) 
    217     return data 
    218  
     210            if attached.check_readable(False): 
     211                if hasattr(plmobject, "is_document_attached"): 
     212                    data["can_attach"] = not (hasattr(attached, "part") or \ 
     213                                     plmobject.is_document_attached(attached)) 
     214                elif hasattr(plmobject, "is_part_attached"): 
     215                    data["can_attach"] = not (hasattr(attached, "document") or \ 
     216                                     plmobject.is_part_attached(attached)) 
     217    return data 
     218 
  • trunk/openPLM/templates/MiddleDisplayObject.htm

    r339 r367  
    1717        </div> 
    1818        <div id="ActiveArea"> 
    19         {% if object_menu and not navigate_bool %} 
    20                 <ul id="MenuList"> 
    21                 {% for menu_item in object_menu %} 
    22                                 {% ifequal menu_item current_page%} 
    23                                 <li class="CurrentPage"> 
    24                                 {%else%} 
    25                                 <li> 
    26                                 {%endifequal%} 
    27                         <a href="{{obj.plmobject_url}}{{menu_item}}/"> 
    28                         {% filter upper %}{% trans menu_item %}{% endfilter%} 
    29                                 </a> 
    30                                 </li> 
    31                     {% endfor %} 
    32                     <li style="width:100%"></li> 
    33             </ul> 
     19        {% if is_readable %} 
     20            {% if object_menu and not navigate_bool %} 
     21                <ul id="MenuList"> 
     22                    {% for menu_item in object_menu %} 
     23                        {% ifequal menu_item current_page%} 
     24                        <li class="CurrentPage"> 
     25                        {%else%} 
     26                        <li> 
     27                        {%endifequal%} 
     28                            <a href="{{obj.plmobject_url}}{{menu_item}}/"> 
     29                            {% filter upper %}{% trans menu_item %}{% endfilter%} 
     30                            </a> 
     31                        </li> 
     32                    {% endfor %} 
     33                    <li style="width:100%"></li> 
     34                </ul> 
     35            {% endif %} 
     36            {% block content %}{% endblock %}    
     37        {% else %} 
     38            <p>{% trans "You are not allowed to see this object" %}</p> 
    3439        {% endif %} 
    35                 {% block content %}{% endblock %}        
    3640        </div> 
    3741{% endblock %} 
Note: See TracChangeset for help on using the changeset viewer.