Changeset 6927
- Timestamp:
- 23 Oct 2011, 18:30:07 (13 years ago)
- Location:
- main/waeup.sirp/trunk/src/waeup/sirp
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
main/waeup.sirp/trunk/src/waeup/sirp/accesscodes/accesscode.py
r6632 r6927 67 67 self.batch_serial = batch_serial 68 68 self.random_num = random_num 69 self.owner = None 69 70 IWorkflowInfo(self).fireTransition('init') 70 71 … … 419 420 return code 420 421 421 def fire_transition(access_code, arg, toward=False, comment=None ):422 def fire_transition(access_code, arg, toward=False, comment=None, owner=None): 422 423 """Fire workflow transition for access code. 423 424 … … 437 438 history of the changed access code. You can use this to place 438 439 remarks like for which object the access code was used or similar. 440 441 If `owner` is specified, the owner attribute of the access code is checked. 442 If the owner is different :func:`fire_transition` fails and returns False. 439 443 440 444 :func:`fire_transition` might raise exceptions depending on the … … 469 473 raise KeyError( 470 474 'No site available for looking up accesscodes') 475 if owner: 476 ac_owner = getattr(ac, 'owner', None) 477 if ac_owner and ac_owner != owner: 478 return False 471 479 info = IWorkflowInfo(ac) 472 480 if toward: … … 476 484 return True 477 485 478 def invalidate_accesscode(access_code, comment=None ):486 def invalidate_accesscode(access_code, comment=None, owner=None): 479 487 """Invalidate AccessCode denoted by string ``access_code``. 480 488 … … 488 496 """ 489 497 try: 490 fire_transition(access_code, 'use', comment=comment) 491 return True 498 return fire_transition(access_code, 'use', comment=comment, owner=owner) 492 499 except: 493 500 return False -
main/waeup.sirp/trunk/src/waeup/sirp/accesscodes/interfaces.py
r6470 r6927 29 29 representation = schema.TextLine( 30 30 title = u'Complete title of access code', 31 ) 32 owner = schema.TextLine( 33 title = u'Purchaser', 31 34 ) 32 35 history = schema.Text( -
main/waeup.sirp/trunk/src/waeup/sirp/students/browser.py
r6920 r6927 1066 1066 comment = u"AC invalidated for %s" % self.context.student_id 1067 1067 # Here we know that the ac is in state initialized so we do not 1068 # expect an exception 1069 invalidate_accesscode(pin,comment) 1068 # expect an exception, but the owner might be different 1069 if not invalidate_accesscode(pin,comment,self.context.student_id): 1070 self.flash('You are not the owner of this access code.') 1071 return 1070 1072 self.context.clr_code = pin 1071 1073 IWorkflowInfo(self.context).fireTransition('start_clearance') -
main/waeup.sirp/trunk/src/waeup/sirp/students/tests/test_browser.py
r6922 r6927 124 124 datetime.now(), 'some_userid', 'CLR', 9.99, 5) 125 125 pins = pin_container[pin_container.keys()[0]].values() 126 self.clrpins = [x.representation for x in pins]127 self.existing_clr pin = self.clrpins[0]128 self.existing_clrpin 126 pins[0].owner = u'Hans Wurst' 127 self.existing_clrac = pins[0] 128 self.existing_clrpin = pins[0].representation 129 129 parts = self.existing_clrpin.split('-')[1:] 130 130 self.existing_clrseries, self.existing_clrnumber = parts … … 584 584 self.browser.getControl(name="ac_series").value = self.existing_clrseries 585 585 self.browser.getControl(name="ac_number").value = self.existing_clrnumber 586 # Owner is Hans Wurst, AC can't be invalidated 587 self.browser.getControl("Start clearance now").click() 588 self.assertMatches('...You are not the owner of this access code...', 589 self.browser.contents) 590 # Set the correct owner 591 self.existing_clrac.owner = self.student_id 586 592 self.browser.getControl("Start clearance now").click() 587 593 self.assertMatches('...Clearance process has been started...',
Note: See TracChangeset for help on using the changeset viewer.