Exemple #1
0
def update(id, values, session=None):
    if not session:
        session = get_session()
    with session.begin():
        user_ref = get(id, session)
        user_ref.update(values)
        user_ref.save(session=session)
Exemple #2
0
def get(id, tenant, session=None):
    if not session:
        session = get_session()
    result = session.query(models.Group).filter_by(id=id, \
            tenant_id=tenant).first()

    return result
Exemple #3
0
def update(id, tenant_id, values, session=None):
    if not session:
        session = get_session()
    with session.begin():
        tenant_ref = get(id, tenant_id, session)
        tenant_ref.update(values)
        tenant_ref.save(session=session)
Exemple #4
0
def get(id, session=None):
    if not session:
        session = get_session()
    #TODO(Ziad): finish cleaning up model
    #    result = session.query(models.User).options(joinedload('groups')).\
    #              options(joinedload('tenants')).filter_by(id=id).first()
    result = session.query(models.User).filter_by(id=id).first()
    return result
Exemple #5
0
def get_all_baseurls(tenant_id, session=None):
    if not session:
        session = get_session()
    tba = aliased(models.TenantBaseURLAssociation)
    baseUrls = aliased(models.BaseUrls)
    return session.query(baseUrls).join((tba,
        tba.baseURLs_id == baseUrls.id)).\
            filter(tba.tenant_id == tenant_id).all()
Exemple #6
0
def is_empty(id, session=None):
    if not session:
        session = get_session()
    a_user = session.query(models.UserGroupAssociation).filter_by(
        group_id=id).first()
    if a_user != None:
        return False
    return True
Exemple #7
0
def user_groups_get_all(user_id, session=None):
    if not session:
        session = get_session()
    uga = aliased(models.UserGroupAssociation)
    group = aliased(models.Group)
    return session.query(group, uga).\
                            join((uga, uga.group_id == group.id)).\
                            filter(uga.user_id == user_id).order_by(
                            group.id).all()
Exemple #8
0
 def save(self, session=None):
     """Save this object."""
     
     if not session:
         from keystone.db.sqlalchemy import get_session
         session = get_session()
     session.add(self)
     try:
         session.flush()
     except IntegrityError:
         raise
Exemple #9
0
def get_page(marker, limit, session=None):
    if not session:
        session = get_session()

    if marker:
        return session.query(models.BaseUrls).filter("id>:marker").params(\
                marker='%s' % marker).order_by(\
                models.BaseUrls.id.desc()).limit(limit).all()
    else:
        return session.query(models.BaseUrls).order_by(\
                            models.BaseUrls.id.desc()).limit(limit).all()
Exemple #10
0
def users_get_page(marker, limit, session=None):
    if not session:
        session = get_session()
    user = aliased(models.User)
    if marker:
        return session.query(user).\
                            filter("id>=:marker").params(
                            marker='%s' % marker).order_by(
                            "id").limit(limit).all()
    else:
        return session.query(user).\
                            order_by("id").limit(limit).all()
Exemple #11
0
def get_page(tenantId, marker, limit, session=None):
    if not session:
        session = get_session()

    if marker:
        return session.query(models.Group).filter("id>:marker").params(\
                marker='%s' % marker).filter_by(\
                tenant_id=tenantId).order_by(\
                models.Group.id.desc()).limit(limit).all()
    else:
        return session.query(models.Group).filter_by(tenant_id=tenantId)\
                        .order_by(models.Group.id.desc()).limit(limit).all()
Exemple #12
0
def get_by_user_get_page_markers(user_id, marker, limit, session=None):
    if not session:
        session = get_session()
    uga = aliased(models.UserGroupAssociation)
    group = aliased(models.Group)
    first, _firstassoc = session.query(group, uga).\
                        join((uga, uga.group_id == group.id)).\
                        filter(uga.user_id == user_id).\
                        order_by(group.id).first()
    last, _lastassoc = session.query(group, uga).\
                        join((uga, uga.group_id == group.id)).\
                        filter(uga.user_id == user_id).\
                        order_by(group.id.desc()).first()
    if first is None:
        return (None, None)
    if marker is None:
        marker = first.id
    next = session.query(group, uga).join(
                            (uga, uga.group_id == group.id)).\
                            filter(uga.user_id == user_id).\
                            filter("id>=:marker").params(
                            marker='%s' % marker).order_by(
                            group.id).limit(int(limit)).all()

    prev = session.query(group, uga).join(
                            (uga, uga.group_id == group.id)).\
                            filter(uga.user_id == user_id).\
                            filter("id < :marker").params(
                            marker='%s' % marker).order_by(
                            group.id).limit(int(limit) + 1).all()
    next_len = len(next)
    prev_len = len(prev)

    if next_len == 0:
        next = last
    else:
        for t, _a in next:
            next = t
    if prev_len == 0:
        prev = first
    else:
        for t, _a in prev:
            prev = t
    if first.id == marker:
        prev = None
    else:
        prev = prev.id
    if marker == last.id:
        next = None
    else:
        next = next.id
    return (prev, next)
Exemple #13
0
def ref_get_page(marker, limit, user_id, session=None):
    if not session:
        session = get_session()

    if marker:
        return session.query(models.UserRoleAssociation).\
                filter("id>:marker").params(\
                marker='%s' % marker).filter_by(user_id=user_id).order_by(\
                models.UserRoleAssociation.id.desc()).limit(limit).all()
    else:
        return session.query(models.UserRoleAssociation).\
                filter_by(user_id=user_id).order_by(\
                models.UserRoleAssociation.id.desc()).limit(limit).all()
Exemple #14
0
def ref_get_by_tenant_get_page(tenant_id, marker, limit,
                                        session=None):
    if not session:
        session = get_session()
    if marker:
        return session.query(models.TenantBaseURLAssociation).\
            filter(models.TenantBaseURLAssociation.tenant_id == tenant_id).\
            filter("id >= :marker").params(
            marker='%s' % marker).order_by(
            models.TenantBaseURLAssociation.id).limit(limit).all()
    else:
        return session.query(models.TenantBaseURLAssociation).\
            filter(models.TenantBaseURLAssociation.tenant_id == tenant_id).\
            order_by(models.TenantBaseURLAssociation.id).limit(limit).all()
Exemple #15
0
def is_empty(id, session=None):
    if not session:
        session = get_session()
    a_user = session.query(models.UserRoleAssociation).filter_by(\
        tenant_id=id).first()
    if a_user != None:
        return False
    a_group = session.query(models.Group).filter_by(tenant_id=id).first()
    if a_group != None:
        return False
    a_user = session.query(models.User).filter_by(tenant_id=id).first()
    if a_user != None:
        return False
    return True
Exemple #16
0
def tenants_for_user_get_page(user, marker, limit, session=None):
    if not session:
        session = get_session()
    ura = aliased(models.UserRoleAssociation)
    tenant = aliased(models.Tenant)
    q1 = session.query(tenant).join((ura, ura.tenant_id == tenant.id)).\
        filter(ura.user_id == user.id)
    q2 = session.query(tenant).filter(tenant.id == user.tenant_id)
    q3 = q1.union(q2)
    if marker:
        return q3.filter("tenant.id>:marker").params(\
                marker='%s' % marker).order_by(\
                tenant.id.desc()).limit(limit).all()
    else:
        return q3.order_by(tenant.id.desc()).limit(limit).all()
Exemple #17
0
def ref_get_by_tenant_get_page_markers(tenant_id, marker, limit,
                                                session=None):
    if not session:
        session = get_session()
    tba = aliased(models.TenantBaseURLAssociation)
    first = session.query(tba).\
                    filter(tba.tenant_id == tenant_id).\
                    order_by(tba.id).first()
    last = session.query(tba).\
                filter(tba.tenant_id == tenant_id).\
                order_by(tba.id.desc()).first()
    if first is None:
        return (None, None)
    if marker is None:
        marker = first.id
    next = session.query(tba).\
                filter(tba.tenant_id == tenant_id).\
                filter("id>=:marker").params(
                marker='%s' % marker).order_by(
                tba.id).limit(int(limit)).all()

    prev = session.query(tba).\
                    filter(tba.tenant_id == tenant_id).\
                    filter("id < :marker").params(
                    marker='%s' % marker).order_by(
                    tba.id).limit(int(limit) + 1).all()
    next_len = len(next)
    prev_len = len(prev)

    if next_len == 0:
        next = last
    else:
        for t in next:
            next = t
    if prev_len == 0:
        prev = first
    else:
        for t in prev:
            prev = t
    if first.id == marker:
        prev = None
    else:
        prev = prev.id
    if marker == last.id:
        next = None
    else:
        next = next.id
    return (prev, next)
Exemple #18
0
def get_by_tenant(id, tenant_id, session=None):
    if not session:
        session = get_session()
    # Most common use case: user lives in tenant
    user = session.query(models.User).\
                    filter_by(id=id, tenant_id=tenant_id).first()
    if user:
        return user

    # Find user through grants to this tenant
    user_tenant = session.query(models.UserRoleAssociation).filter_by(\
        tenant_id=tenant_id, user_id=id).first()
    if user_tenant:
        return get(id, session)
    else:
        return None
Exemple #19
0
def get_by_user_get_page(user_id, marker, limit, session=None):
    if not session:
        session = get_session()
    uga = aliased(models.UserGroupAssociation)
    group = aliased(models.Group)
    if marker:
        return session.query(group, uga).join(\
                            (uga, uga.group_id == group.id)).\
                            filter(uga.user_id == user_id).\
                            filter("id>=:marker").params(
                            marker='%s' % marker).order_by(
                            group.id).limit(limit).all()
    else:
        return session.query(group, uga).\
                            join((uga, uga.group_id == group.id)).\
                            filter(uga.user_id == user_id).order_by(
                            group.id).limit(limit).all()
Exemple #20
0
def delete_tenant_user(id, tenant_id, session=None):
    if not session:
        session = get_session()
    with session.begin():
        users_tenant_ref = users_get_by_tenant(id, tenant_id, session)
        if users_tenant_ref is not None:
            for user_tenant_ref in users_tenant_ref:
                session.delete(user_tenant_ref)

        user_group_ref = get_group_by_tenant(tenant_id, session)

        if user_group_ref is not None:
            for user_group in user_group_ref:
                get_users = session.query(models.UserGroupAssociation)\
                                .filter_by(user_id=id,
                                        group_id=user_group.id).all()
                for group_user in get_users:
                    session.delete(group_user)
Exemple #21
0
def users_tenant_group_get_page_markers(group_id, marker, limit, session=None):
    if not session:
        session = get_session()
    uga = aliased(models.UserGroupAssociation)
    user = aliased(models.User)
    first = session.query(models.User).order_by(\
                        models.User.id).first()
    last = session.query(models.User).order_by(\
                        models.User.id.desc()).first()
    if first is None:
        return (None, None)
    if marker is None:
        marker = first.id
    next = session.query(user).join(
                            (uga, uga.user_id == user.id)).\
                            filter(uga.group_id == group_id).\
                            filter("id > :marker").params(\
                            marker='%s' % marker).order_by(\
                            user.id).limit(limit).all()
    prev = session.query(user).join(\
                            (uga, uga.user_id == user.id)).\
                            filter(uga.group_id == group_id).\
                            filter("id < :marker").params(\
                            marker='%s' % marker).order_by(\
                            user.id.desc()).limit(int(limit)).all()
    if len(next) == 0:
        next = last
    else:
        for t in next:
            next = t
    if len(prev) == 0:
        prev = first
    else:
        for t in prev:
            prev = t
    if prev.id == marker:
        prev = None
    else:
        prev = prev.id
    if next.id == last.id:
        next = None
    else:
        next = next.id
    return (prev, next)
Exemple #22
0
def users_get_page_markers(marker, limit, \
        session=None):
    if not session:
        session = get_session()
    user = aliased(models.User)
    first = session.query(user).\
                    order_by(user.id).first()
    last = session.query(user).\
                        order_by(user.id.desc()).first()
    if first is None:
        return (None, None)
    if marker is None:
        marker = first.id
    next = session.query(user).\
                    filter("id > :marker").params(\
                    marker='%s' % marker).order_by(user.id).\
                    limit(int(limit)).all()
    prev = session.query(user).\
                    filter("id < :marker").params(
                    marker='%s' % marker).order_by(
                    user.id.desc()).limit(int(limit)).all()
    next_len = len(next)
    prev_len = len(prev)

    if next_len == 0:
        next = last
    else:
        for t in next:
            next = t
    if prev_len == 0:
        prev = first
    else:
        for t in prev:
            prev = t
    if first.id == marker:
        prev = None
    else:
        prev = prev.id
    if marker == last.id:
        next = None
    else:
        next = next.id
    return (prev, next)
Exemple #23
0
def tenants_for_user_get_page_markers(user, marker, limit, session=None):
    if not session:
        session = get_session()
    ura = aliased(models.UserRoleAssociation)
    tenant = aliased(models.Tenant)
    q1 = session.query(tenant).join((ura, ura.tenant_id == tenant.id)).\
        filter(ura.user_id == user.id)
    q2 = session.query(tenant).filter(tenant.id == user.tenant_id)
    q3 = q1.union(q2)

    first = q3.order_by(\
                        tenant.id).first()
    last = q3.order_by(\
                        tenant.id.desc()).first()
    if first is None:
        return (None, None)
    if marker is None:
        marker = first.id
    next = q3.filter(tenant.id > marker).order_by(\
                    tenant.id).limit(limit).all()
    prev = q3.filter(tenant.id > marker).order_by(\
                    tenant.id.desc()).limit(int(limit)).all()
    if len(next) == 0:
        next = last
    else:
        for t in next:
            next = t
    if len(prev) == 0:
        prev = first
    else:
        for t in prev:
            prev = t
    if prev.id == marker:
        prev = None
    else:
        prev = prev.id
    if next.id == last.id:
        next = None
    else:
        next = next.id
    return (prev, next)
Exemple #24
0
def get_page_markers(tenantId, marker, limit, session=None):
    if not session:
        session = get_session()
    first = session.query(models.Group).filter_by(\
            tenant_id=tenantId).order_by(\
            models.Group.id).first()
    last = session.query(models.Group).filter_by(\
            tenant_id=tenantId).order_by(\
            models.Group.id.desc()).first()

    if first is None:
        return (None, None)
    if marker is None:
        marker = first.id
    next = session.query(models.Group).filter("id > :marker").params(\
                    marker='%s' % marker).filter_by(\
                    tenant_id=tenantId).order_by(\
                    models.Group.id).limit(limit).all()
    prev = session.query(models.Group).filter("id < :marker").params(\
                    marker='%s' % marker).filter_by(\
                    tenant_id=tenantId).order_by(\
                    models.Group.id.desc()).limit(int(limit)).all()
    if len(next) == 0:
        next = last
    else:
        for t in next:
            next = t
    if len(prev) == 0:
        prev = first
    else:
        for t in prev:
            prev = t
    if prev.id == marker:
        prev = None
    else:
        prev = prev.id
    if next.id == last.id:
        next = None
    else:
        next = next.id
    return (prev, next)
Exemple #25
0
def get_all(session=None):
    if not session:
        session = get_session()
    return session.query(models.BaseUrls).all()
Exemple #26
0
def get(id, session=None):
    if not session:
        session = get_session()
    result = session.query(models.BaseUrls).filter_by(id=id).first()
    return result
Exemple #27
0
def ref_delete(id, session=None):
    if not session:
        session = get_session()
    with session.begin():
        baseurls_ref = ref_get(id, session)
        session.delete(baseurls_ref)
Exemple #28
0
def ref_get_by_tenant(tenant_id, session=None):
    if not session:
        session = get_session()
    result = session.query(models.TenantBaseURLAssociation).\
                    filter_by(tenant_id=tenant_id).first()
    return result
Exemple #29
0
def get_all(session=None):
    if not session:
        session = get_session()
    return session.query(models.Token).all()
Exemple #30
0
def get_for_user_by_tenant(user_id, tenant_id, session=None):
    if not session:
        session = get_session()
    result = session.query(models.Token).filter_by(
        user_id=user_id, tenant_id=tenant_id).order_by("expires desc").first()
    return result