- Timestamp:
- 13 Dec 2014, 10:51:17 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/waeup.ikoba/trunk/src/waeup/ikoba/documents/workflow.py
r12212 r12213 19 19 """ 20 20 import grok 21 from datetime import datetime22 21 from zope.component import getUtility 23 22 from hurry.workflow.workflow import Transition, WorkflowState, NullCondition … … 27 26 IObjectHistory, IIkobaWorkflowInfo, 28 27 SimpleIkobaVocabulary, 29 CREATED, SUBMITTED, VERIFIED, REJECTED, EXPIRED,PUBLISHED)28 CREATED, PUBLISHED) 30 29 from waeup.ikoba.interfaces import MessageFactory as _ 31 30 from waeup.ikoba.workflow import IkobaWorkflow, IkobaWorkflowInfo 32 from waeup.ikoba.utils.helpers import get_current_principal 33 from waeup.ikoba.documents.interfaces import IDocument 31 from waeup.ikoba.documents.interfaces import IPublicDocument 34 32 35 VERIFICATION_TRANSITIONS = ( 33 34 PUBLISHING_TRANSITIONS = ( 36 35 Transition( 37 36 transition_id = 'create', … … 41 40 msg = _('Document created'), 42 41 destination = CREATED), 43 44 Transition(45 transition_id = 'submit',46 title = _('Submit for verification'),47 msg = _('Submitted for verification'),48 source = CREATED,49 destination = SUBMITTED),50 51 Transition(52 transition_id = 'verify',53 title = _('Verify'),54 msg = _('Verified'),55 source = SUBMITTED,56 destination = VERIFIED),57 58 Transition(59 transition_id = 'reject',60 title = _('Reject'),61 msg = _('REJECTED'),62 source = SUBMITTED,63 destination = REJECTED),64 65 Transition(66 transition_id = 'reset1',67 title = _('Reset to initial state'),68 msg = _('Reset to initial state'),69 source = REJECTED,70 destination = CREATED),71 72 Transition(73 transition_id = 'reset2',74 title = _('Reset to initial state'),75 msg = _('Reset to initial state'),76 source = VERIFIED,77 destination = CREATED),78 79 Transition(80 transition_id = 'reset3',81 title = _('Reset to initial state'),82 msg = _('Reset to initial state'),83 source = SUBMITTED,84 destination = CREATED),85 86 Transition(87 transition_id = 'expire',88 title = _('Set to expired'),89 msg = _('Set to expired'),90 source = VERIFIED,91 destination = EXPIRED),92 93 Transition(94 transition_id = 'reset4',95 title = _('Reset to initial state'),96 msg = _('Reset to initial state'),97 source = EXPIRED,98 destination = CREATED),99 100 Transition(101 transition_id = 'publish',102 title = _('Publish'),103 msg = _('Published'),104 source = CREATED,105 destination = PUBLISHED),106 42 ) 107 43 44 publishing_workflow = IkobaWorkflow(PUBLISHING_TRANSITIONS) 108 45 109 verification_workflow = IkobaWorkflow(VERIFICATION_TRANSITIONS) 110 111 class VerificationWorkflowState(WorkflowState, grok.Adapter): 46 class PublishingWorkflowState(WorkflowState, grok.Adapter): 112 47 """An adapter to adapt Document objects to workflow states. 113 48 """ 114 grok.context(I Document)49 grok.context(IPublicDocument) 115 50 grok.provides(IWorkflowState) 116 51 117 state_key = 'wf. verification.state'118 state_id = 'wf. verification.id'52 state_key = 'wf.publishing.state' 53 state_id = 'wf.publishing.id' 119 54 120 class VerificationWorkflowInfo(IkobaWorkflowInfo, grok.Adapter): 121 """Adapter to adapt Document objects to workflow info objects. 55 56 class PublishingWorkflowInfo(IkobaWorkflowInfo, grok.Adapter): 57 """Adapter to adapt CustomerDocument objects to workflow info objects. 122 58 """ 123 grok.context(I Document)59 grok.context(IPublicDocument) 124 60 grok.provides(IIkobaWorkflowInfo) 125 61 126 62 def __init__(self, context): 127 63 self.context = context 128 self.wf = verification_workflow64 self.wf = publishing_workflow 129 65 130 @grok.subscribe(IDocument, IWorkflowTransitionEvent) 131 def handle_document_transition_event(obj, event): 66 67 @grok.subscribe(IPublicDocument, IWorkflowTransitionEvent) 68 def handle_public_document_transition_event(obj, event): 132 69 """Append message to document history and log file. 133 70 134 Undo the verification of document and raise an exception if document135 does not meet the requirements for verification.136 71 """ 137 if event.transition.destination == VERIFIED:138 verifiable, error = obj.is_verifiable139 if not verifiable:140 # Undo transition and raise an exception.141 IWorkflowState(obj).setState(event.transition.source)142 raise InvalidTransitionError(error)143 if event.transition.transition_id == 'verify':144 obj.setMD5()145 72 msg = event.transition.user_data['msg'] 146 73 history = IObjectHistory(obj) 147 74 history.addMessage(msg) 148 75 try: 149 customers_container = grok.getSite()['customers'] 150 customers_container.logger.info('%s - %s' % (obj.customer_id,msg)) 76 grok.getSite().logger.info('%s' % msg) 151 77 except (TypeError, AttributeError): 152 78 pass
Note: See TracChangeset for help on using the changeset viewer.