Exemplo n.º 1
0
def db_associate_context_receivers(session, context, receiver_ids):
    """
    Transaction for associating receivers to a context

    :param session: An ORM session
    :param context: The context on which associate the specified receivers
    :param receiver_ids: A list of receivers ids to be associated to the context
    """
    db_del(session, models.ReceiverContext,
           models.ReceiverContext.context_id == context.id)

    if not receiver_ids:
        return

    if not session.query(models.Context).filter(
            models.Context.id == context.id, models.Context.tid
            == models.User.tid, models.User.id.in_(receiver_ids)).count():
        raise errors.InputValidationError()

    for i, receiver_id in enumerate(receiver_ids):
        session.add(
            models.ReceiverContext({
                'context_id': context.id,
                'receiver_id': receiver_id,
                'order': i
            }))
Exemplo n.º 2
0
def db_associate_context_receivers(store, context, receivers_ids):
    store.find(models.ReceiverContext,
               models.ReceiverContext.context_id == context.id).remove()

    for receiver_id in receivers_ids:
        store.add(
            models.ReceiverContext({
                'context_id': context.id,
                'receiver_id': receiver_id
            }))
Exemplo n.º 3
0
def db_associate_context_receivers(session, tid, context, receiver_ids):
    session.query(models.ReceiverContext).filter(models.ReceiverContext.context_id == context.id).delete(synchronize_session='fetch')

    if not receiver_ids:
        return

    if not session.query(models.Context).filter(models.Context.id == context.id,
                                                models.Context.tid == models.User.tid,
                                                models.User.id.in_(receiver_ids)).count:
        raise errors.InputValidationError()

    for i, receiver_id in enumerate(receiver_ids):
        session.add(models.ReceiverContext({'context_id': context.id,
                                            'receiver_id': receiver_id,
                                            'presentation_order': i}))