diff --git a/r2/example.ini b/r2/example.ini index fce94df7e..b2b808f6a 100644 --- a/r2/example.ini +++ b/r2/example.ini @@ -400,7 +400,6 @@ hardcache_db = main db_table_link = thing db_table_account = thing db_table_message = thing -db_table_savehide = relation, account, link db_table_comment = thing db_table_subreddit = thing db_table_srmember = relation, subreddit, account @@ -428,7 +427,6 @@ db_table_promocampaign = thing db_servers_link = main, main db_servers_account = main db_servers_message = main -db_servers_savehide = main db_servers_comment = comment db_servers_subreddit = comment db_servers_srmember = comment diff --git a/r2/r2/controllers/api.py b/r2/r2/controllers/api.py index ab59009c1..13a482499 100755 --- a/r2/r2/controllers/api.py +++ b/r2/r2/controllers/api.py @@ -455,7 +455,7 @@ class ApiController(RedditController, OAuth2ResourceController): queries.queue_vote(c.user, l, True, ip, cheater=c.cheater) if save: - r = l._save(c.user) + l._save(c.user) #set the ratelimiter if should_ratelimit: @@ -1261,7 +1261,7 @@ class ApiController(RedditController, OAuth2ResourceController): admintools.spam(thing, False, True, c.user.name) # auto-hide links that are reported elif isinstance(thing, Link): - r = thing._hide(c.user) + thing._hide(c.user) # TODO: be nice to be able to remove comments that are reported # from a user's inbox so they don't have to look at them. elif isinstance(thing, Comment): @@ -2384,7 +2384,7 @@ class ApiController(RedditController, OAuth2ResourceController): """ if not thing: return if isinstance(thing, Comment) and not c.user.gold: return - r = thing._save(c.user) + thing._save(c.user) @require_oauth2_scope("save") @noresponse(VUser(), @@ -2400,7 +2400,7 @@ class ApiController(RedditController, OAuth2ResourceController): """ if not thing: return - r = thing._unsave(c.user) + thing._unsave(c.user) def collapse_handler(self, things, collapse): if not things: @@ -2500,7 +2500,7 @@ class ApiController(RedditController, OAuth2ResourceController): """ if not thing: return - r = thing._hide(c.user) + thing._hide(c.user) @noresponse(VUser(), VModhash(), @@ -2513,7 +2513,7 @@ class ApiController(RedditController, OAuth2ResourceController): """ if not thing: return - r = thing._unhide(c.user) + thing._unhide(c.user) @validatedForm(VUser(), @@ -2667,7 +2667,7 @@ class ApiController(RedditController, OAuth2ResourceController): cheater=c.cheater) elif action == 'save': link = max(links, key = lambda x: x._score) - r = link._save(c.user) + link._save(c.user) return self.redirect("/static/css_%sd.png" % action) return self.redirect("/static/css_submit.png") diff --git a/r2/r2/lib/migrate/migrate.py b/r2/r2/lib/migrate/migrate.py index 09451488e..13598a80f 100644 --- a/r2/r2/lib/migrate/migrate.py +++ b/r2/r2/lib/migrate/migrate.py @@ -254,27 +254,6 @@ def port_cassavotes(): cv._commit(write_consistency_level=CL.ONE) -def port_cassasaves(after_id=None, estimate=12489897): - from r2.models import SaveHide, CassandraSave - from r2.lib.db.operators import desc - from r2.lib.db.tdb_cassandra import CL - from r2.lib.utils import fetch_things2, to36, progress - - q = SaveHide._query( - SaveHide.c._name == 'save', - sort=desc('_date'), - data=False, - eager_load=False) - - if after_id is not None: - q._after(SaveHide._byID(after_id)) - - for sh in progress(fetch_things2(q), estimate=estimate): - - csh = CassandraSave(thing1_id = to36(sh._thing1_id), - thing2_id = to36(sh._thing2_id), - date = sh._date) - csh._commit(write_consistency_level = CL.ONE) def port_cassaurls(after_id=None, estimate=15231317): from r2.models import Link, LinksByUrl @@ -320,22 +299,6 @@ def port_deleted_links(after_id=None): query = get_deleted_links(link.author_id) m.insert(query, [link]) -def port_cassahides(): - from r2.models import SaveHide, CassandraHide - from r2.lib.db.tdb_cassandra import CL - from r2.lib.db.operators import desc - from r2.lib.utils import fetch_things2, timeago, progress - - q = SaveHide._query(SaveHide.c._date > timeago('1 week'), - SaveHide.c._name == 'hide', - sort=desc('_date')) - q = fetch_things2(q) - q = progress(q, estimate=1953374) - - for sh in q: - CassandraHide._hide(sh._thing1, sh._thing2, - write_consistency_level=CL.ONE) - def convert_query_cache_to_json(): import cPickle from r2.models.query_cache import json, UserQueryCache diff --git a/r2/r2/models/link.py b/r2/r2/models/link.py index 058325b6a..ff407146d 100755 --- a/r2/r2/models/link.py +++ b/r2/r2/models/link.py @@ -172,49 +172,27 @@ class Link(Thing, Printable): admintools.spam(l, banner='banned user') return l - @classmethod - def _somethinged(cls, rel, user, link, name): - return rel._fast_query(tup(user), tup(link), name=name, - thing_data=True, timestamp_optimize=True) - - def _something(self, rel, user, somethinged, name): - try: - saved = rel(user, self, name=name) - saved._commit() - except CreationError, e: - return somethinged(user, self)[(user, self, name)] - - return saved - - def _unsomething(self, user, somethinged, name): - saved = somethinged(user, self)[(user, self, name)] - if saved: - saved._delete() - return saved - @classmethod def _saved(cls, user, link): - return cls._somethinged(SaveHide, user, link, 'save') + saved = LinkSavesByAccount.fast_query(user, [link]) + return (user, link) in saved def _save(self, user): LinkSavesByAccount._save(user, self) - return self._something(SaveHide, user, self._saved, 'save') def _unsave(self, user): LinkSavesByAccount._unsave(user, self) - return self._unsomething(user, self._saved, 'save') @classmethod def _hidden(cls, user, link): - return cls._somethinged(SaveHide, user, link, 'hide') + hidden = LinkSavesByAccount.fast_query(user, [link]) + return (user, link) in hidden def _hide(self, user): LinkHidesByAccount._hide(user, self) - return self._something(SaveHide, user, self._hidden, 'hide') def _unhide(self, user): LinkHidesByAccount._unhide(user, self) - return self._unsomething(user, self._hidden, 'hide') def link_domain(self): if self.is_self: @@ -1535,7 +1513,6 @@ class Message(Thing, Printable): def keep_item(self, wrapped): return True -class SaveHide(Relation(Account, Link)): pass class GildedCommentsByAccount(tdb_cassandra.DenormalizedRelation): _use_db = True