Ignore:
Timestamp:
19 Jun 2011, 22:44:54 (13 years ago)
Author:
uli
Message:

Rollback several commits. Funny, nobody noticed that important tests were gone for half a week.

Location:
main/waeup.sirp/trunk/src/waeup/sirp/accesscodes
Files:
1 edited
5 copied

Legend:

Unmodified
Added
Removed
  • main/waeup.sirp/trunk/src/waeup/sirp/accesscodes/accesscodes.py

    r6387 r6408  
    394394    return code
    395395
    396 def _fire_transition(info, arg, toward=False):
     396def fire_transition(access_code, arg, toward=False):
     397    """Fire workflow transition for access code.
     398
     399    The access code instance is looked up via `access_code` (a string
     400    like ``APP-1-12345678``).
     401
     402    `arg` tells what kind of transition to trigger. This will be a
     403    transition id like ``'use'`` or ``'init'``, or some transition
     404    target like :var:`waeup.sirp.accesscodes.workflow.INITIALIZED`.
     405
     406    If `toward` is ``False`` (the default) you have to pass a
     407    transition id as `arg`, otherwise you must give a transition
     408    target.
     409
     410    :func:`fire_transition` might raise exceptions depending on the
     411    reason why the requested transition cannot be performed.
     412
     413    The following exceptions can occur during processing:
     414
     415    :exc:`KeyError`:
     416      signals not existent access code, batch or site.
     417
     418    :exc:`ValueError`:
     419      signals illegal format of `access_code` string. The regular format is
     420      ``APP-N-XXXXXXXX``.
     421
     422    :exc:`hurry.workflow.interfaces.InvalidTransitionError`:
     423      the transition requested cannot be performed because the workflow
     424      rules forbid it.
     425
     426    :exc:`Unauthorized`:
     427      the current user is not allowed to perform the requested transition.
     428
     429    """
    397430    try:
    398         if toward:
    399             info.fireTransitionToward(arg)
    400         else:
    401             info.fireTransition(arg)
    402     except InvalidTransitionError:
    403         return False
     431        batch_id, ac_id = access_code.rsplit('-', 1)
     432    except ValueError:
     433        raise ValueError(
     434            'Invalid access code format: %s (use: APP-N-XXXXXXXX)' % (
     435                access_code,))
     436    try:
     437        ac = grok.getSite()['accesscodes'][batch_id].getAccessCode(access_code)
     438    except TypeError:
     439        raise KeyError(
     440            'No site available for looking up accesscodes')
     441    info = IWorkflowInfo(ac)
     442    if toward:
     443        info.fireTransitionToward(arg)
     444    else:
     445        info.fireTransition(arg)
    404446    return True
    405447
     
    407449    """Invalidate AccessCode denoted by string ``access_code``.
    408450
    409     The access code that belongs to the passed string must exist.
    410 
    411451    Fires an appropriate transition to perform the task.
    412452
    413     Returns ``True`` if the ac was invalidated, ``False`` else.
     453    See :func:`fire_transition` for possible exceptions and their
     454    meanings.
    414455    """
    415456    ac = get_access_code(access_code)
     
    423464    """Disable AccessCode denoted by string ``access_code``.
    424465
    425     The access code that belongs to the passed string must exist.
    426 
    427466    Fires an appropriate transition to perform the task.
    428467
    429     Returns ``True`` if the ac was disabled, ``False`` else.
    430     """
    431     ac = get_access_code(access_code)
    432     info = IWorkflowInfo(ac)
    433     return _fire_transition(info, DISABLED, toward=True)
     468    See :func:`fire_transition` for possible exceptions and their
     469    meanings.
     470    """
     471    return fire_transition(access_code, DISABLED, toward=True)
    434472
    435473def reenable_accesscode(access_code):
    436474    """Reenable AccessCode denoted by string ``access_code``.
    437475
    438     The access code that belongs to the passed string must exist.
    439 
    440476    Fires an appropriate transition to perform the task.
    441477
    442     Returns ``True`` if the ac was reenabled, ``False`` else.
    443     """
    444     ac = get_access_code(access_code)
    445     info = IWorkflowInfo(ac)
    446     return _fire_transition(info, 'reenable')
     478    See :func:`fire_transition` for possible exceptions and their
     479    meanings.
     480    """
     481    return fire_transition(access_code, 'reenable')
Note: See TracChangeset for help on using the changeset viewer.