예제 #1
0
def transition_handler(event):
    """Handle Assignment transition events."""
    event_name = event.event_name
    if not event_name.startswith('assignment.workflow'):
        return

    handlers = {
        'assignment.workflow.submit': assignment_submit,
        'assignment.workflow.perm_reject': assignment_perm_reject,
        'assignment.workflow.complete': assignment_complete,
        'assignment.workflow.self_assign': assignment_self_assign,
        'assignment.workflow.assign_pool': assignment_self_assign,
        'assignment.workflow.scheduling_issues': assignment_scheduling_issues,
        'assignment.workflow.cancel': assignment_cancel,
        'assignment.workflow.reject': assignment_reject,
        'assignment.workflow.upload': assignment_upload,
        'assignment.workflow.invalidate_assets': assignment_invalidate_assets,
        'assignment.workflow.return_to_qa': assignment_return_to_qa,
        'assignment.workflow.refuse': assignment_refuse,
        'assignment.workflow.remove_schedule': assignment_remove_schedule,
        'assignment.workflow.reschedule': assignment_reschedule,
        'assignment.workflow.schedule': assignment_schedule,
        'assignment.workflow.approve': assignment_approve,
        'assignment.workflow.retract_rejection': assignment_retract_rejection
    }
    handler = handlers.get(event_name, None)
    if handler:
        handler(event)
    cache_manager.refresh(event.obj)
예제 #2
0
def transition_handler(event):
    """Handle LeadOrder transition events."""
    event_name = event.event_name
    if not event_name.startswith('leadorder.workflow'):
        return
    handlers = {
        'leadorder.workflow.cancel': order_subscribers.order_cancel,
        'leadorder.workflow.perm_refuse': order_subscribers.order_perm_refuse,
        'leadorder.workflow.remove_schedule':
        order_subscribers.order_remove_schedule,
        'leadorder.workflow.refuse': order_subscribers.order_refuse,
        'leadorder.workflow.new_shoot':
        order_subscribers.order_new_shoot_or_reshoot,
        'leadorder.workflow.reshoot':
        order_subscribers.order_new_shoot_or_reshoot,
        'leadorder.workflow.unassign':
        order_subscribers.order_unassign_reassign,
        'leadorder.workflow.reassign':
        order_subscribers.order_unassign_reassign,
    }
    handler = handlers.get(event_name, None)
    if handler:
        handler(event)

    cache_manager.refresh(event.obj)
예제 #3
0
def order_created_handler(event):
    """Handle Order created event."""
    order = event.obj
    request = event.request
    project = order.project
    # First set price and price_currency based on the project
    price = request.validated.get('price') or project.price
    order.price = price
    order.actual_order_price = price
    price_currency = project.price_currency
    order.price_currency = price_currency
    if not order.asset_types:
        order.asset_types = project.asset_types[:1]

    add_roles = ('customer_users', 'project_managers')
    apply_local_roles_from_parent(order, project, add_roles)
    location = request.validated.get('location', None)
    if not order.location and location:
        # force this because sometimes the obj.id is not available before the flush
        order.location = location

    # submit the order
    order.workflow.submit()
    create_new_assignment_from_order(order, request)
    cache_manager.refresh(order)
예제 #4
0
def project_updated_handler(event):
    """Handle Project updated event."""
    project = event.obj
    cache_manager.refresh(project)
예제 #5
0
def assignment_after_update(mapper, connection, target):
    """Invalidate Assignment cache after instance update."""
    cache_manager.refresh(target)
    cache_manager.refresh(target.order)
예제 #6
0
def assignment_updated_handler(event):
    """Handle Assignment updated event."""
    assignment = event.obj
    cache_manager.refresh(assignment)
    cache_manager.refresh(assignment.order)
예제 #7
0
def comment_created_handler(event):
    """Handle Comment created event."""
    comment = event.obj
    cache_manager.refresh(comment)
    if comment.entity:
        cache_manager.refresh(comment.entity)
예제 #8
0
def order_after_update(mapper, connection, target):
    """Invalidate Order cache after instance update."""
    cache_manager.refresh(target)
    for assignment in target.assignments:
        cache_manager.refresh(assignment)
예제 #9
0
def leadorder_updated_handler(event):
    """Handle LeadOrder updated event."""
    leadorder = event.obj
    cache_manager.refresh(leadorder)
예제 #10
0
def order_updated_handler(event):
    """Handle Order updated event."""
    order = event.obj
    cache_manager.refresh(order)