Subreddit._specials.update( dict(friends=Friends, randnsfw=RandomNSFW, random=Random, mod=Mod, contrib=Contrib, all=All)) class SRMember(Relation(Subreddit, Account)): pass Subreddit.__bases__ += ( UserRel('moderator', SRMember), UserRel('moderator_invite', SRMember), UserRel('contributor', SRMember), UserRel('subscriber', SRMember, disable_ids_fn=True), UserRel('banned', SRMember), UserRel('wikibanned', SRMember), UserRel('wikicontributor', SRMember), ) class SubredditPopularityByLanguage(tdb_cassandra.View): _use_db = True _value_type = 'pickle' _connection_pool = 'main' _read_consistency_level = CL_ONE
@classmethod def flair_id_query(cls, sr, limit, after, reverse=False): extra_rules = [ cls.c._thing1_id == sr._id, cls.c._name == 'flair', ] if after: if reverse: extra_rules.append(cls.c._thing2_id < after._id) else: extra_rules.append(cls.c._thing2_id > after._id) sort = (desc if reverse else asc)('_thing2_id') return cls._query(*extra_rules, sort=sort, limit=limit) Subreddit.__bases__ += (UserRel('flair', Flair, disable_ids_fn = True, disable_reverse_ids_fn = True),) class FlairTemplate(tdb_cassandra.Thing): """A template for some flair.""" _defaults = dict(text='', css_class='', text_editable=False, ) _bool_props = ('text_editable',) _use_db = True _connection_pool = 'main'
Mod = ModSR() Contrib = ContribSR() All = AllSR() Random = RandomReddit() RandomNSFW = RandomNSFWReddit() Subreddit._specials.update( dict(friends=Friends, randnsfw=RandomNSFW, random=Random, mod=Mod, contrib=Contrib, all=All)) class SRMember(Relation(Subreddit, Account)): pass Subreddit.__bases__ += (UserRel('moderator', SRMember), UserRel('contributor', SRMember), UserRel('subscriber', SRMember, disable_ids_fn=True), UserRel('banned', SRMember)) class SubredditPopularityByLanguage(tdb_cassandra.View): _use_db = True _value_type = 'pickle' _connection_pool = 'main' _read_consistency_level = CL_ONE
@property def path(self): return '/domain/' + self.domain def __init__(self, domain): FakeSubreddit.__init__(self) self.domain = domain self.name = domain self.title = domain + ' ' + _('on lesswrong.com') def get_links(self, sort, time, link_cls=None): from r2.lib.db import queries return queries.get_domain_links(self.domain, sort, time) Sub = SubSR() Friends = FriendsSR() All = AllSR() Default = DefaultSR() class SRMember(Relation(Subreddit, Account)): pass Subreddit.__bases__ += (UserRel('moderator', SRMember), UserRel('editor', SRMember), UserRel('contributor', SRMember), UserRel('subscriber', SRMember), UserRel('banned', SRMember))
# new accounts keep the profanity filter settings until opting out a.pref_no_profanity = True a.registration_ip = registration_ip a._commit() #clear the caches Account._by_name(name, _update=True) Account._by_name(name, allow_deleted=True, _update=True) return a class Friend(Relation(Account, Account)): pass Account.__bases__ += (UserRel('friend', Friend, disable_reverse_ids_fn=True), UserRel('enemy', Friend, disable_reverse_ids_fn=False)) class DeletedUser(FakeAccount): @property def name(self): return '[deleted]' @property def _deleted(self): return True def _fullname(self): raise NotImplementedError
a.email_validated = False a.wiki_account = '__error__' a._commit() from r2.lib import emailer emailer.confirmation_email(a) if create_wiki_account: if wiki_account.valid_name(name): def send_wiki_failed_email(): emailer.wiki_failed_email(a) a.create_associated_wiki_account( password, on_request_error=send_wiki_failed_email) else: emailer.wiki_incompatible_name_email(a) # Clear memoization of both with and without deleted clear_memo('account._by_name', Account, name.lower(), True) clear_memo('account._by_name', Account, name.lower(), False) return a class Friend(Relation(Account, Account)): pass Account.__bases__ += (UserRel('friend', Friend), )
USER_FLAIR = 'USER_FLAIR' LINK_FLAIR = 'LINK_FLAIR' class Flair(Relation(Subreddit, Account)): _cache = g.thingcache @classmethod def _cache_prefix(cls): return "flair:" Subreddit.__bases__ += ( UserRel( name='flair', relation=Flair, disable_ids_fn=True, disable_reverse_ids_fn=True, ), ) class FlairTemplate(tdb_cassandra.Thing): """A template for some flair.""" _defaults = dict(text='', css_class='', text_editable=False, ) _bool_props = ('text_editable',) _use_db = True
"""All-permission granting stub for SRMember, used by FakeSubreddits.""" def __init__(self, permission_class): self.permission_class = permission_class def has_permission(self, perm): return True def get_permissions(self): return self.permission_class(all=True) def is_superuser(self): return True Subreddit.__bases__ += ( UserRel('moderator', SRMember, permission_class=ModeratorPermissionSet), UserRel('moderator_invite', SRMember, permission_class=ModeratorPermissionSet), UserRel('contributor', SRMember), UserRel('subscriber', SRMember, disable_ids_fn=True), UserRel('banned', SRMember), UserRel('wikibanned', SRMember), UserRel('wikicontributor', SRMember), ) class SubredditPopularityByLanguage(tdb_cassandra.View): _use_db = True _value_type = 'pickle' _connection_pool = 'main'