mirror of
https://github.com/reddit-archive/reddit.git
synced 2026-01-27 15:58:06 -05:00
added the ability to disable unused (and slow) fns in UserRel
This commit is contained in:
@@ -21,7 +21,7 @@
|
||||
################################################################################
|
||||
from r2.lib.memoize import memoize, clear_memo
|
||||
|
||||
def UserRel(name, relation):
|
||||
def UserRel(name, relation, disable_ids_fn = False, disable_reverse_ids_fn = False):
|
||||
|
||||
exists_fn_name = 'is_' + name
|
||||
def userrel_exists(self, user):
|
||||
@@ -33,6 +33,14 @@ def UserRel(name, relation):
|
||||
if r:
|
||||
return r
|
||||
|
||||
update_caches_fn_name = name + 'update_' + name + '_caches'
|
||||
def update_caches(self, user):
|
||||
if not disable_ids_fn:
|
||||
getattr(self, ids_fn_name)(_update = True)
|
||||
|
||||
if not disable_reverse_ids_fn:
|
||||
getattr(self, reverse_ids_fn_name)(user, _update = True)
|
||||
|
||||
add_fn_name = 'add_' + name
|
||||
def userrel_add(self, user):
|
||||
fn = getattr(self, exists_fn_name)
|
||||
@@ -41,11 +49,7 @@ def UserRel(name, relation):
|
||||
s._commit()
|
||||
|
||||
#update caches
|
||||
clear_memo(ids_fn_name, self)
|
||||
clear_memo(reverse_ids_fn_name, user)
|
||||
|
||||
#getattr(self, ids_fn_name)(_update = True)
|
||||
#getattr(self, reverse_ids_fn_name)(user, _update = True)
|
||||
getattr(self, update_caches_fn_name)(user)
|
||||
return s
|
||||
|
||||
remove_fn_name = 'remove_' + name
|
||||
@@ -56,11 +60,7 @@ def UserRel(name, relation):
|
||||
s._delete()
|
||||
|
||||
#update caches
|
||||
clear_memo(ids_fn_name, self)
|
||||
clear_memo(reverse_ids_fn_name, user)
|
||||
|
||||
#getattr(self, ids_fn_name)(_update = True)
|
||||
#getattr(self, reverse_ids_fn_name)(user, _update = True)
|
||||
getattr(self, update_caches_fn_name)(user)
|
||||
return True
|
||||
|
||||
ids_fn_name = name + '_ids'
|
||||
@@ -81,11 +81,14 @@ def UserRel(name, relation):
|
||||
|
||||
class UR: pass
|
||||
|
||||
setattr(UR, update_caches_fn_name, update_caches)
|
||||
setattr(UR, exists_fn_name, userrel_exists)
|
||||
setattr(UR, add_fn_name, userrel_add)
|
||||
setattr(UR, remove_fn_name, userrel_remove)
|
||||
setattr(UR, ids_fn_name, userrel_ids)
|
||||
setattr(UR, reverse_ids_fn_name, reverse_ids)
|
||||
if not disable_ids_fn:
|
||||
setattr(UR, ids_fn_name, userrel_ids)
|
||||
if not disable_reverse_ids_fn:
|
||||
setattr(UR, reverse_ids_fn_name, reverse_ids)
|
||||
|
||||
return UR
|
||||
|
||||
|
||||
@@ -304,7 +304,7 @@ def register(name, password):
|
||||
return a
|
||||
|
||||
class Friend(Relation(Account, Account)): pass
|
||||
Account.__bases__ += (UserRel('friend', Friend),)
|
||||
Account.__bases__ += (UserRel('friend', Friend, disable_reverse_ids_fn = True),)
|
||||
|
||||
class DeletedUser(FakeAccount):
|
||||
@property
|
||||
|
||||
@@ -322,6 +322,9 @@ class Subreddit(Thing, Printable):
|
||||
def subscribe_defaults(cls, user):
|
||||
if not user.has_subscribed:
|
||||
for sr in Subreddit.default_srs(c.content_langs):
|
||||
#this will call reverse_subscriber_ids after every
|
||||
#addition. if it becomes a problem we should make an
|
||||
#add_multiple_subscriber fn
|
||||
if sr.add_subscriber(c.user):
|
||||
sr._incr('_ups', 1)
|
||||
user.has_subscribed = True
|
||||
@@ -574,5 +577,5 @@ Default = DefaultSR()
|
||||
class SRMember(Relation(Subreddit, Account)): pass
|
||||
Subreddit.__bases__ += (UserRel('moderator', SRMember),
|
||||
UserRel('contributor', SRMember),
|
||||
UserRel('subscriber', SRMember),
|
||||
UserRel('subscriber', SRMember, disable_ids_fn = True),
|
||||
UserRel('banned', SRMember))
|
||||
|
||||
Reference in New Issue
Block a user