[CMF-checkins] CVS: CMF - DefaultWorkflow.py:1.3

Ken Manheimer klm@digicool.com
Mon, 21 May 2001 18:56:32 -0400 (EDT)


Update of /cvs-repository/CMF/CMFDefault
In directory korak.digicool.com:/tmp/cvs-serv4274

Modified Files:
	DefaultWorkflow.py 
Log Message:
.doActionFor(): Enabled someone with review privilege to retract items
they don't own.

Also, elaborated the messages for most actions, to clarify the reason
for the rejection.  (XXX WorkflowException should probably be raised,
but i'm not sure what all depends on the current, simpler type.  If it
*is* changed, the exception should be made available to python
scripts.)



--- Updated File DefaultWorkflow.py in package CMF --
--- DefaultWorkflow.py	2001/04/08 19:18:17	1.2
+++ DefaultWorkflow.py	2001/05/21 22:56:32	1.3
@@ -243,28 +243,32 @@
         tool = aq_parent(aq_inner(self))
 
         if action == 'submit':
-            if not allow_request or review_state != 'private':
-                raise 'Unauthorized'
+            if not allow_request:
+                raise 'Unauthorized', 'Not authorized'
+            elif review_state != 'private':
+                raise 'Unauthorized', 'Already in submit state'
             self.setReviewStateOf(ob, 'pending', action, comment)
 
         elif action == 'retract':
-            if not allow_request or review_state == 'private':
-                raise 'Unauthorized'
+            if not allow_request:
+                raise 'Unauthorized', 'Not authorized'
+            elif review_state == 'private':
+                raise 'Unauthorized', 'Already private'
             content_creator = ob.Creator()
             pm = getToolByName(self, 'portal_membership')
             current_user = pm.getAuthenticatedMember().getUserName()
-            if content_creator != current_user:
-                raise 'Unauthorized'
+            if (content_creator != current_user) and not allow_review:
+                raise 'Unauthorized', 'Not creator or reviewer'
             self.setReviewStateOf(ob, 'private', action, comment)
 
         elif action == 'publish':
             if not allow_review:
-                raise 'Unauthorized'
+                raise 'Unauthorized', 'Not authorized'
             self.setReviewStateOf(ob, 'published', action, comment)
 
         elif action == 'reject':
             if not allow_review:
-                raise 'Unauthorized'
+                raise 'Unauthorized', 'Not authorized'
             self.setReviewStateOf(ob, 'private', action, comment)
 
     security.declarePrivate('isInfoSupported')
@@ -371,6 +375,7 @@
             owner_modify = 0
             reviewer_view = 1
         # Modify role to permission mappings directly.
+
         modifyPermissionMappings(ob,
             {'View': {'Anonymous': anon_view,
                       'Reviewer': reviewer_view},