Esempio n. 1
0
    def _dir(self, thing, reverse):
        ors = []

        # this fun hack lets us simplify the query on /r/all
        # for postgres-9 compatibility. please remove it when
        # /r/all is precomputed.
        sorts = range(len(self._sort))
        if self._filter_primary_sort_only:
            sorts = [0]

        # for each sort add and a comparison operator
        for i in sorts:
            s = self._sort[i]

            if isinstance(s, operators.asc):
                op = operators.gt
            else:
                op = operators.lt

            if reverse:
                op = operators.gt if op == operators.lt else operators.lt

            # remember op takes lval and lval_name
            ands = [op(s.col, s.col, getattr(thing, s.col))]

            # for each sort up to the last add an equals operator
            for j in range(0, i):
                s = self._sort[j]
                ands.append(thing.c[s.col] == getattr(thing, s.col))

            ors.append(operators.and_(*ands))

        return self._filter(operators.or_(*ors))
Esempio n. 2
0
    def _dir(self, thing, reverse):
        ors = []

        # this fun hack lets us simplify the query on /r/all
        # for postgres-9 compatibility. please remove it when
        # /r/all is precomputed.
        sorts = range(len(self._sort))
        if self._filter_primary_sort_only:
            sorts = [0]

        #for each sort add and a comparison operator
        for i in sorts:
            s = self._sort[i]

            if isinstance(s, operators.asc):
                op = operators.gt
            else:
                op = operators.lt

            if reverse:
                op = operators.gt if op == operators.lt else operators.lt

            #remember op takes lval and lval_name
            ands = [op(s.col, s.col, getattr(thing, s.col))]

            #for each sort up to the last add an equals operator
            for j in range(0, i):
                s = self._sort[j]
                ands.append(thing.c[s.col] == getattr(thing, s.col))

            ors.append(operators.and_(*ands))

        return self._filter(operators.or_(*ors))
Esempio n. 3
0
def get_unmoderated_links(sr_id):
    q = Link._query(Link.c.sr_id == sr_id,
                    Link.c._spam == (True, False),
                    sort = db_sort('new'))

    # Doesn't really work because will not return Links with no verdict
    q._filter(or_(and_(Link.c._spam == True, Link.c.verdict != 'mod-removed'),
                  and_(Link.c._spam == False, Link.c.verdict != 'mod-approved')))
    return q
Esempio n. 4
0
def get_unmoderated_links(sr_id):
    q = Link._query(Link.c.sr_id == sr_id,
                    Link.c._spam == (True, False),
                    sort=db_sort('new'))

    # Doesn't really work because will not return Links with no verdict
    q._filter(
        or_(and_(Link.c._spam == True, Link.c.verdict != 'mod-removed'),
            and_(Link.c._spam == False, Link.c.verdict != 'mod-approved')))
    return q
Esempio n. 5
0
def all_users():
    q = Account._query(or_(Account.c.link_karma != 0,
                           Account.c.comment_karma != 0),
                       Account.c._spam == (True, False),
                       Account.c._deleted == (True, False),
                       sort = desc('_date'),
                       limit = 200,
                       data = True)
    users = list(q)
    while users:
        for l in users:
            yield l
        users = list(q._after(l))