Changeset 379 in main


Ignore:
Timestamp:
10/06/11 14:44:04 (8 years ago)
Author:
pcosquer
Message:

navigate: fix can_add_part and add two properties: is_part and is_document

Location:
trunk/openPLM/plmapp
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/openPLM/plmapp/controllers/base.py

    r356 r379  
    129129 
    130130    def __init__(self, obj, user): 
    131         self.object = obj 
    132         self.form_instance = obj 
    133131        self._user = user 
    134132        # variable to store attribute changes 
     
    136134        # cache for permissions (dict(role->bool))  
    137135        self.__permissions = {} 
     136        self.object = obj 
    138137 
    139138    def __setattr__(self, attr, value): 
  • trunk/openPLM/plmapp/controllers/document.py

    r370 r379  
    248248    def check_attach_part(self, part): 
    249249        self.check_permission("owner") 
     250        if not (hasattr(part, "is_part") and part.is_part): 
     251            raise TypeError("%s is not a part" % part) 
     252 
    250253        if isinstance(part, PLMObjectController): 
    251254            part.check_readable() 
    252255            part = part.object 
    253256        else: 
    254             if not (isinstance(part, models.PLMObject) and hasattr(part, "part")): 
    255                 raise TypeError("%s is not a part" % part) 
    256257            get_controller(part.type)(part, self._user).check_readable() 
    257258        if self.is_part_attached(part): 
  • trunk/openPLM/plmapp/controllers/part.py

    r370 r379  
    6060        self.check_permission("owner") 
    6161        self.check_editable() 
    62         if not hasattr(child, "part"): 
    63             raise ValueError("Can not add child: not a Part") 
     62        if not child.is_part: 
     63            raise TypeError("Can not add child: not a Part") 
    6464        # check if child is not a parent 
    6565        if child.id == self.object.id: 
     
    314314    def check_attach_document(self, document): 
    315315        self.check_permission("owner") 
     316        if not hasattr(document, "is_document") or not document.is_document: 
     317            raise TypeError("%s is not a document" % document) 
     318 
    316319        if isinstance(document, PLMObjectController): 
    317320            document.check_readable() 
    318321            document = document.object 
    319322        else: 
    320             if not (isinstance(document, models.PLMObject) and \ 
    321                     hasattr(document, "document")): 
    322                 raise TypeError("%s is not a document" % document) 
    323323            get_controller(document.type)(document, self._user).check_readable() 
    324324            type(self)(document, self._user).check_readable() 
  • trunk/openPLM/plmapp/models.py

    r371 r379  
    478478                            lifecycle=self.lifecycle).rank 
    479479        return level_to_sign_str(rank - 1)  
     480    
     481    @property 
     482    def is_part(self): 
     483        if self.type in get_all_plmobjects(): 
     484            return issubclass(get_all_plmobjects()[self.type], Part) 
     485        return False 
     486 
     487    @property 
     488    def is_document(self): 
     489        if self.type in get_all_plmobjects(): 
     490            return issubclass(get_all_plmobjects()[self.type], Document) 
     491        return False 
    480492     
    481493    @property 
     
    567579        return True 
    568580 
     581    @property 
     582    def is_part(self): 
     583        return True 
     584     
     585    @property 
     586    def is_document(self): 
     587        return False 
    569588 
    570589def _get_all_subclasses(base, d): 
     
    700719        items.extend([ugettext_noop("parts"), ugettext_noop("files")]) 
    701720        return items 
     721 
     722    @property 
     723    def is_part(self): 
     724        return False 
     725     
     726    @property 
     727    def is_document(self): 
     728        return True 
    702729 
    703730 
  • trunk/openPLM/plmapp/navigate.py

    r374 r379  
    261261            self.graph.add_edge("User%d" % obj.id, part_doc_id, 
    262262                    part_doc_item.role.replace("_", "\\n")) 
    263             if hasattr(part_doc_item.plmobject, 'document'): 
     263            if part_doc_item.plmobject.is_document: 
    264264                part_doc = DocumentController(part_doc_item.plmobject.document, None) 
    265265            else: 
  • trunk/openPLM/plmapp/tests/controllers/document.py

    r376 r379  
    218218    def test_attach_to_part_error4(self): 
    219219        obj = self.CONTROLLER.create("ob", self.TYPE, "a", self.user, self.DATA) 
    220         self.assertRaises(ValueError, self.controller.attach_to_part, obj) 
     220        self.assertRaises(TypeError, self.controller.attach_to_part, obj) 
    221221     
    222222    def test_detach_part(self): 
  • trunk/openPLM/plmapp/tests/controllers/part.py

    r376 r379  
    106106            doc = PLMObjectController.create("e", "PLMObject", "1", self.user) 
    107107            self.controller.add_child(doc, 10, 15) 
    108         self.assertRaises(ValueError, fail) 
     108        self.assertRaises(TypeError, fail) 
    109109 
    110110    def test_add_child_error6(self): 
  • trunk/openPLM/plmapp/views/ajax.py

    r369 r379  
    156156    part = get_obj_by_id(part_id, request.user) 
    157157    data = {"can_add" : False} 
    158     if hasattr(part, "part") and request.GET: 
     158    if part.is_part and request.GET: 
    159159        form = forms.AddRelPartForm(request.GET) 
    160160        if form.is_valid(): 
  • trunk/openPLM/plmapp/views/main.py

    r371 r379  
    695695            return HttpResponseRedirect(obj.plmobject_url) 
    696696    else: 
    697         modification_form = get_modification_form(cls, instance=obj.form_instance) 
     697        modification_form = get_modification_form(cls, instance=obj.object) 
    698698     
    699699    ctx.update({'modification_form': modification_form, 
Note: See TracChangeset for help on using the changeset viewer.