Exemple #1
0
def set_unread(messages, to, unread, mutator=None):
    # Maintain backwards compatability
    messages = tup(messages)

    if not mutator:
        m = CachedQueryMutator()
    else:
        m = mutator

    if isinstance(to, Subreddit):
        for i in ModeratorInbox.set_unread(messages, unread):
            q = get_unread_subreddit_messages(i._thing1_id)
            if unread:
                m.insert(q, [i])
            else:
                m.delete(q, [i])
    else:
        # All messages should be of the same type
        # (asserted by Inbox.set_unread)
        for i in Inbox.set_unread(messages, unread, to=to):
            query = None
            if isinstance(messages[0], Comment):
                if i._name == "inbox":
                    query = get_unread_comments(i._thing1_id)
                elif i._name == "selfreply":
                    query = get_unread_selfreply(i._thing1_id)
            elif isinstance(messages[0], Message):
                query = get_unread_messages(i._thing1_id)
            assert query is not None

            if unread:
                m.insert(query, [i])
            else:
                m.delete(query, [i])

    if not mutator:
        m.send()
Exemple #2
0
def set_unread(messages, to, unread, mutator=None):
    # Maintain backwards compatability
    messages = tup(messages)

    if not mutator:
        m = CachedQueryMutator()
    else:
        m = mutator

    if isinstance(to, Subreddit):
        for i in ModeratorInbox.set_unread(messages, unread):
            q = get_unread_subreddit_messages(i._thing1_id)
            if unread:
                m.insert(q, [i])
            else:
                m.delete(q, [i])
    else:
        # All messages should be of the same type
        # (asserted by Inbox.set_unread)
        for i in Inbox.set_unread(messages, unread, to=to):
            query = None
            if isinstance(messages[0], Comment):
                if i._name == "inbox":
                    query = get_unread_comments(i._thing1_id)
                elif i._name == "selfreply":
                    query = get_unread_selfreply(i._thing1_id)
            elif isinstance(messages[0], Message):
                query = get_unread_messages(i._thing1_id)
            assert query is not None

            if unread:
                m.insert(query, [i])
            else:
                m.delete(query, [i])

    if not mutator:
        m.send()
Exemple #3
0
def del_or_ban(things, why):
    query_cache_inserts = []
    query_cache_deletes = []

    by_srid, srs = _by_srid(things)
    if not by_srid:
        return

    for sr_id, sr_things in by_srid.iteritems():
        sr = srs[sr_id]
        links = [x for x in sr_things if isinstance(x, Link)]
        comments = [x for x in sr_things if isinstance(x, Comment)]

        if links:
            results = [
                get_links(sr, 'hot', 'all'),
                get_links(sr, 'new', 'all')
            ]
            for sort in time_filtered_sorts:
                for time in db_times.keys():
                    results.append(get_links(sr, sort, time))
            add_queries(results, delete_items=links)

            if why == "ban":
                query_cache_inserts.append([get_spam_links(sr), links])
                filtered = [l for l in links if was_spam_filtered(l)]
                not_filtered = [l for l in links if not was_spam_filtered(l)]
                query_cache_inserts.append(
                    [get_spam_filtered_links(sr), filtered])
                query_cache_deletes.append(
                    [get_spam_filtered_links(sr), not_filtered])
            if why == "del":
                query_cache_deletes.append([get_spam_links(sr), links])
                query_cache_deletes.append(
                    [get_spam_filtered_links(sr), links])
            query_cache_deletes.append([get_reported_links(sr), links])

        if comments:
            if why == "ban":
                query_cache_inserts.append([get_spam_comments(sr), comments])
                filtered = [c for c in comments if was_spam_filtered(c)]
                not_filtered = [
                    c for c in comments if not was_spam_filtered(c)
                ]
                query_cache_inserts.append(
                    [get_spam_filtered_comments(sr), filtered])
                query_cache_deletes.append(
                    [get_spam_filtered_comments(sr), not_filtered])
            if why == "del":
                query_cache_deletes.append([get_spam_comments(sr), comments])
                query_cache_deletes.append(
                    [get_spam_filtered_comments(sr), comments])
            query_cache_deletes.append([get_reported_comments(sr), comments])

    by_author, authors = _by_author(things)

    for author_id, a_things in by_author.iteritems():
        author = authors[author_id]
        links = [x for x in a_things if isinstance(x, Link)]
        comments = [x for x in a_things if isinstance(x, Comment)]

        if links and why == "del":
            results = [
                get_submitted(author, 'hot', 'all'),
                get_submitted(author, 'new', 'all')
            ]
            for sort in time_filtered_sorts:
                for time in db_times.keys():
                    results.append(get_submitted(author, sort, time))
            add_queries(results, delete_items=links)
            query_cache_inserts.append([get_deleted_links(author_id), links])

        if comments and why == "del":
            results = [
                get_comments(author, 'hot', 'all'),
                get_comments(author, 'new', 'all')
            ]
            for sort in time_filtered_sorts:
                for time in db_times.keys():
                    results.append(get_comments(author, sort, time))
            add_queries(results, delete_items=comments)
            query_cache_inserts.append(
                [get_deleted_comments(author_id), comments])

    with CachedQueryMutator() as m:
        for q, inserts in query_cache_inserts:
            m.insert(q, inserts)
        for q, deletes in query_cache_deletes:
            m.delete(q, deletes)

    changed(things)
import datetime

from pylons import g

from r2.lib.db.queries import get_gilded_comments, get_all_gilded_comments
from r2.lib.utils import Storage
from r2.models import GildingsByDay, Thing, Comment
from r2.models.query_cache import CachedQueryMutator


date = datetime.datetime.now(g.tz)
earliest_date = datetime.datetime(2012, 10, 01, tzinfo=g.tz)

already_seen = set()

with CachedQueryMutator() as m:
    while date > earliest_date:
        gildings = GildingsByDay.get_gildings(date)
        fullnames = [x["thing"] for x in gildings]
        things = Thing._by_fullname(fullnames, data=True, return_dict=False)
        comments = {t._fullname: t for t in things if isinstance(t, Comment)}

        for gilding in gildings:
            fullname = gilding["thing"]
            if fullname in comments and fullname not in already_seen:
                thing = gilding["thing"] = comments[fullname]
                gilding_object = Storage(gilding)
                m.insert(get_gilded_comments(thing.sr_id), [gilding_object])
                m.insert(get_all_gilded_comments(), [gilding_object])
                already_seen.add(fullname)
        date -= datetime.timedelta(days=1)
Exemple #5
0
def new_report(thing):
    with CachedQueryMutator() as m:
        if isinstance(thing, Link):
            m.insert(get_reported_links(thing.sr_id), [thing])
        elif isinstance(thing, Comment):
            m.insert(get_reported_comments(thing.sr_id), [thing])