Пример #1
0
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
Пример #2
0
    @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'
Пример #3
0
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
Пример #4
0
    @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))
Пример #5
0
        # 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
Пример #6
0
        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), )
Пример #7
0
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
Пример #8
0
    """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'