Changeset 773 in main


Ignore:
Timestamp:
02/17/12 14:03:14 (10 years ago)
Author:
pcosquer
Message:

revision: resising a cancelled or deprecated object is now forbidden

Location:
trunk/openPLM/plmapp
Files:
2 edited

Legend:

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

    r767 r773  
    270270           rx_bad_ref.search(new_revision): 
    271271            raise RevisionError("Bad value for new_revision") 
    272         if models.RevisionLink.objects.filter(old=self.object.pk): 
    273             raise RevisionError("a revision already exists for %s" % self.object) 
     272        if self.is_cancelled or self.is_deprecated: 
     273            raise RevisionError("Object is deprecated or cancelled.") 
     274        if models.RevisionLink.objects.filter(old=self.object.pk).exists(): 
     275            raise RevisionError("A revision already exists for %s" % self.object) 
    274276        data = {} 
    275277        fields = self.get_modification_fields() + self.get_creation_fields() 
  • trunk/openPLM/plmapp/tests/controllers/plmobject.py

    r766 r773  
    167167        self.assertEqual(user, rev.owner) 
    168168 
     169    def assertOneRevision(self, ctrl): 
     170        count = models.PLMObject.objects.filter(reference=ctrl.reference).count() 
     171        self.assertEqual(1, count) 
     172 
    169173    def test_revise_error_other_group(self): 
    170174        """ 
     
    177181        self.failIf(ctrl.is_revisable()) 
    178182        self.assertRaises(exc.PermissionError, ctrl.revise, "b") 
    179         count = models.PLMObject.objects.filter(reference=controller.reference).count() 
    180         self.assertEqual(1, count) 
    181  
    182     def test_revise_error1(self): 
     183        self.assertOneRevision(controller) 
     184 
     185    def test_revise_error_empty_revision(self): 
    183186        "Revision : error : empty new revision" 
    184187        controller = self.create("Part1") 
    185188        self.assertRaises(exc.RevisionError, controller.revise, "") 
    186         count = models.PLMObject.objects.filter(reference=controller.reference).count() 
    187         self.assertEqual(1, count) 
     189        self.assertOneRevision(controller) 
    188190     
    189     def test_revise_error2(self): 
     191    def test_revise_error_same_revision(self): 
    190192        "Revision : error : same revision name" 
    191193        controller = self.create("Part1") 
    192194        self.assertRaises(exc.RevisionError, controller.revise, "a") 
    193         count = models.PLMObject.objects.filter(reference=controller.reference).count() 
    194         self.assertEqual(1, count) 
     195        self.assertOneRevision(controller) 
     196 
     197    def test_revise_error_cancelled_object(self): 
     198        """ Tests it is not possible to revise a cancelled object.""" 
     199        controller = self.create("Part1") 
     200        controller.cancel() 
     201        self.assertFalse(controller.is_revisable()) 
     202        self.assertRaises(exc.RevisionError, controller.revise, "n") 
     203        self.assertOneRevision(controller) 
     204 
     205    def test_revise_error_deprecated_object(self): 
     206        """ Tests it is not possible to revise a deprecated object.""" 
     207        controller = self.create("Part1") 
     208        controller.object.is_promotable = lambda: True 
     209        controller.promote() 
     210        controller.promote() 
     211        self.assertFalse(controller.is_revisable()) 
     212        self.assertRaises(exc.RevisionError, controller.revise, "n") 
     213        self.assertOneRevision(controller) 
    195214 
    196215    def test_promote_to_official_revision_previous_is_official(self): 
Note: See TracChangeset for help on using the changeset viewer.