Changeset 12089 for main/waeup.ikoba/trunk/src/waeup/ikoba/customers
- Timestamp:
- 28 Nov 2014, 21:35:09 (10 years ago)
- Location:
- main/waeup.ikoba/trunk/src/waeup/ikoba/customers
- Files:
-
- 2 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
main/waeup.ikoba/trunk/src/waeup/ikoba/customers/batching.py
r12057 r12089 45 45 ICustomerDocument) 46 46 from waeup.ikoba.customers.workflow import ( 47 IMPORTABLE_STATES, IMPORTABLE_TRANSITIONS) 47 IMPORTABLE_REGISTRATION_STATES, IMPORTABLE_REGISTRATION_TRANSITIONS, 48 IMPORTABLE_APPLICATION_STATES, IMPORTABLE_APPLICATION_TRANSITIONS) 48 49 from waeup.ikoba.utils.batching import BatchProcessor 49 50 … … 256 257 row, self.factory_name, mode=mode) 257 258 if 'transition' in row: 258 if row['transition'] not in IMPORTABLE_ TRANSITIONS:259 if row['transition'] not in IMPORTABLE_REGISTRATION_TRANSITIONS: 259 260 if row['transition'] not in (IGNORE_MARKER, ''): 260 261 errs.append(('transition', 'not allowed')) 261 262 if 'state' in row: 262 if row['state'] not in IMPORTABLE_ STATES:263 if row['state'] not in IMPORTABLE_REGISTRATION_STATES: 263 264 if row['state'] not in (IGNORE_MARKER, ''): 264 265 errs.append(('state', 'not allowed')) -
main/waeup.ikoba/trunk/src/waeup/ikoba/customers/browser.py
r12088 r12089 35 35 from waeup.ikoba.interfaces import ( 36 36 IContactForm, IObjectHistory, IIkobaObject, IIkobaUtils, 37 IPasswordValidator, IUserAccount) 37 IPasswordValidator, IUserAccount, 38 VERIFIED, REJECTED, EXPIRED) 38 39 from waeup.ikoba.browser.layout import ( 39 40 IkobaPage, IkobaEditFormPage, IkobaAddFormPage, IkobaDisplayFormPage, … … 46 47 from waeup.ikoba.browser.interfaces import ICaptchaManager 47 48 from waeup.ikoba.mandates.mandate import PasswordMandate 48 from waeup.ikoba.documents.workflow import VERIFIED, REJECTED, OUTDATED49 49 from waeup.ikoba.utils.helpers import get_current_principal, to_timezone, now 50 50 from waeup.ikoba.customers.interfaces import ( … … 754 754 return True 755 755 return (self.request.principal.user_type == 'customer' and \ 756 document.state in (VERIFIED, REJECTED, OUTDATED))756 document.state in (VERIFIED, REJECTED, EXPIRED)) 757 757 758 758 @property -
main/waeup.ikoba/trunk/src/waeup/ikoba/customers/interfaces.py
r12057 r12089 265 265 266 266 class ICustomerDocument(IDocument): 267 """A customer document .268 269 """ 270 271 #is_editable = Attribute('Document editable by customer')272 #translated_class_name = Attribute('Translatable class name')267 """A customer document object. 268 269 """ 270 271 is_editable = Attribute('Document editable by customer') 272 translated_class_name = Attribute('Translatable class name') 273 273 274 274 … … 277 277 278 278 """ 279 280 # Customer application interfaces 281 282 class IApplicationsContainer(IIkobaObject): 283 """A container for customer aplication objects. 284 285 """ 286 287 def addApplication(application): 288 """Add an application object. 289 """ 290 291 292 class IApplication(IIkobaObject): 293 """A customer application. 294 295 """ 296 application_id = Attribute('Application Identifier') 297 history = Attribute('Object history, a list of messages') 298 state = Attribute('Returns the application state') 299 translated_state = Attribute( 300 'Returns a translated, more verbose appliction state') 301 class_name = Attribute('Name of the application class') 302 formatted_transition_date = Attribute('Last transition formatted date string') 303 304 title = schema.TextLine( 305 title = _(u'Application Title'), 306 required = True, 307 ) 308 309 last_transition_date = schema.Datetime( 310 title = _(u'Last Transition Date'), 311 required = False, 312 readonly = False, 313 ) -
main/waeup.ikoba/trunk/src/waeup/ikoba/customers/utils.py
r12088 r12089 266 266 ) 267 267 268 def generate_application_id(): 269 new_id = grok.getSite().unique_application_id 270 return new_id 271 268 272 class CustomersUtils(grok.GlobalUtility): 269 273 """A collection of methods subject to customization. … … 283 287 APPMANAGE_CUSTOMER_STATES = DOCMANAGE_CUSTOMER_STATES 284 288 285 APPMANAGE_APPLICATION_STATES = ( CREATED,)289 APPMANAGE_APPLICATION_STATES = () 286 290 287 291 SKIP_UPLOAD_VIEWLETS = () … … 292 296 REQUESTED: _('requested'), 293 297 APPROVED: _('approved'), 298 } 299 300 301 TRANSLATED_APPLICATION_STATES = { 294 302 } 295 303 -
main/waeup.ikoba/trunk/src/waeup/ikoba/customers/workflow.py
r11997 r12089 1 ## $Id : batching.py 11891 2014-10-28 20:02:45Z henrik$1 ## $Id$ 2 2 ## 3 3 ## Copyright (C) 2014 Uli Fouquet & Henrik Bettermann … … 25 25 from waeup.ikoba.interfaces import ( 26 26 IObjectHistory, IIkobaWorkflowInfo, IIkobaUtils, 27 STARTED, CREATED, REQUESTED, APPROVED) 27 STARTED, CREATED, REQUESTED, APPROVED, 28 SUBMITTED, VERIFIED, REJECTED, EXPIRED) 28 29 from waeup.ikoba.interfaces import MessageFactory as _ 29 30 from waeup.ikoba.workflow import IkobaWorkflow, IkobaWorkflowInfo 30 from waeup.ikoba.customers.interfaces import ICustomer, ICustomersUtils 31 from waeup.ikoba.customers.interfaces import ( 32 ICustomer, ICustomersUtils, 33 IApplication) 31 34 from waeup.ikoba.utils.helpers import get_current_principal 32 33 34 IMPORTABLE_STATES = (STARTED, REQUESTED, APPROVED) 35 from waeup.ikoba.documents.workflow import VERIFICATION_TRANSITIONS 36 37 # Customer workflow 38 39 IMPORTABLE_REGISTRATION_STATES = (STARTED, REQUESTED, APPROVED) 35 40 36 41 REGISTRATION_TRANSITIONS = ( … … 96 101 97 102 98 IMPORTABLE_ TRANSITIONS = [i.transition_id for i in REGISTRATION_TRANSITIONS]103 IMPORTABLE_REGISTRATION_TRANSITIONS = [i.transition_id for i in REGISTRATION_TRANSITIONS] 99 104 100 105 registration_workflow = IkobaWorkflow(REGISTRATION_TRANSITIONS) … … 136 141 pass 137 142 return 143 144 # Application workflow (the same as verification workflow) 145 146 IMPORTABLE_APPLICATION_STATES = (CREATED, SUBMITTED, APPROVED, REJECTED, EXPIRED) 147 148 APPLICATION_TRANSITIONS = ( 149 Transition( 150 transition_id = 'create', 151 title = _('Create application record'), 152 source = None, 153 condition = NullCondition, 154 msg = _('Application record created'), 155 destination = CREATED), 156 157 Transition( 158 transition_id = 'submit', 159 title = _('Submit for approval'), 160 msg = _('Submitted for approval'), 161 source = CREATED, 162 destination = SUBMITTED), 163 164 Transition( 165 transition_id = 'approve', 166 title = _('Approve'), 167 msg = _('Approved'), 168 source = SUBMITTED, 169 destination = APPROVED), 170 171 Transition( 172 transition_id = 'reject', 173 title = _('Reject'), 174 msg = _('REJECTED'), 175 source = SUBMITTED, 176 destination = REJECTED), 177 178 Transition( 179 transition_id = 'reset1', 180 title = _('Reset to initial state'), 181 msg = _('Reset to initial state'), 182 source = REJECTED, 183 destination = CREATED), 184 185 Transition( 186 transition_id = 'reset2', 187 title = _('Reset to initial state'), 188 msg = _('Reset to initial state'), 189 source = APPROVED, 190 destination = CREATED), 191 192 Transition( 193 transition_id = 'reset3', 194 title = _('Reset to initial state'), 195 msg = _('Reset to initial state'), 196 source = SUBMITTED, 197 destination = CREATED), 198 199 Transition( 200 transition_id = 'expire', 201 title = _('Set to expired'), 202 msg = _('Set to expired'), 203 source = APPROVED, 204 destination = EXPIRED), 205 206 Transition( 207 transition_id = 'reset4', 208 title = _('Reset to initial state'), 209 msg = _('Reset to initial state'), 210 source = EXPIRED, 211 destination = CREATED), 212 ) 213 214 215 IMPORTABLE_APPLICATION_TRANSITIONS = [ 216 i.transition_id for i in REGISTRATION_TRANSITIONS] 217 218 application_workflow = IkobaWorkflow(APPLICATION_TRANSITIONS) 219 220 class ApplicationWorkflowState(WorkflowState, grok.Adapter): 221 """An adapter to adapt Application objects to workflow states. 222 """ 223 grok.context(IApplication) 224 grok.provides(IWorkflowState) 225 226 state_key = 'wf.application.state' 227 state_id = 'wf.application.id' 228 229 class ApplicationWorkflowInfo(IkobaWorkflowInfo, grok.Adapter): 230 """Adapter to adapt Application objects to workflow info objects. 231 """ 232 grok.context(IApplication) 233 grok.provides(IIkobaWorkflowInfo) 234 235 def __init__(self, context): 236 self.context = context 237 self.wf = application_workflow 238 239 @grok.subscribe(IApplication, IWorkflowTransitionEvent) 240 def handle_document_transition_event(obj, event): 241 """Append message to application history and log file and update 242 last_transition_date when transition happened. 243 """ 244 msg = event.transition.user_data['msg'] 245 history = IObjectHistory(obj) 246 history.addMessage(msg) 247 obj.last_transition_date = datetime.utcnow() 248 try: 249 customers_container = grok.getSite()['customers'] 250 customers_container.logger.info('%s - %s' % (obj.customer_id,msg)) 251 except (TypeError, AttributeError): 252 pass 253 return
Note: See TracChangeset for help on using the changeset viewer.