예제 #1
0
파일: auth.py 프로젝트: jordancode/phil
    def get_auth_for_user(self, user_id, auth_classes=None):

        where_clause = And([("user_id", "=", "%s")])
        vals = [user_id]

        qb = SQLQueryBuilder.select("auth_lookup", backtick=False)

        if auth_classes is not None:
            if isinstance(auth_classes, type):
                auth_classes = [auth_classes]

            esses = []
            for auth_class in auth_classes:
                auth_type = self._class_to_type_id(auth_class)

                vals.append(auth_type)
                esses.append("%s")

            where_clause.append(
                ("provider_type", "IN", "(" + ",".join(esses) + ")"))

        qb = qb.where(where_clause)
        rows = MySQL.get(user_id).query(qb.build(), vals)
        rows = self._filter_deleted(rows)

        return [self._row_to_model(row) for row in rows]
예제 #2
0
    def _get_list(self,
                  table_name,
                  id,
                  id_name,
                  sort_by="sort_index",
                  count=None,
                  offset=None,
                  has_permissions=None,
                  missing_permissions=None,
                  sort=SORT_HI_TO_LO):

        where_clause = And([(id_name, "=", "%s"), ("deleted", "=", "0")],
                           backtick=False)

        if has_permissions:
            where_clause.append(
                ("`permission`|" + str(has_permissions), "=", "`permission`"))

        if missing_permissions:
            where_clause.append(("`permission`&" + str(missing_permissions),
                                 "=", "`permission`"))

        if offset and sort_by:
            if SORT_HI_TO_LO:
                comp = "<"
            else:
                comp = ">"
            where_clause.append((sort_by, comp, offset))

        query_builder = (SQLQueryBuilder.select(table_name).where(
            where_clause).limit(count))

        if sort_by:
            query_builder.order_by(sort_by, sort)

        try:
            ret = MySQL.get(id).query(query_builder.build(), [id])
        except BadIdError:
            raise framework.models.data_access_object.RowNotFoundException()

        return ret