Пример #1
0
def set_multireddit():
    routes_dict = request.environ["pylons.routes_dict"]
    if "multipath" in routes_dict:
        multipath = routes_dict["multipath"].lower()
        multi_id = None

        if c.user_is_loggedin and routes_dict.get("my_multi"):
            multi_id = "/user/%s/m/%s" % (c.user.name.lower(), multipath)
        elif "username" in routes_dict:
            username = routes_dict["username"].lower()

            if c.user_is_loggedin:
                # redirect /user/foo/m/... to /me/m/... for user foo.
                if username == c.user.name.lower():
                    # trim off multi id
                    url_parts = request.path_qs.split("/")[5:]
                    url_parts.insert(0, "/me/m/%s" % multipath)
                    abort(302, location="/".join(url_parts))

            multi_id = "/user/%s/m/%s" % (username, multipath)

        if multi_id:
            try:
                c.site = LabeledMulti._byID(multi_id)
            except tdb_cassandra.NotFound:
                abort(404)
Пример #2
0
def set_multireddit():
    routes_dict = request.environ["pylons.routes_dict"]
    if "multipath" in routes_dict:
        multipath = routes_dict["multipath"].lower()
        multi_id = None

        if c.user_is_loggedin and routes_dict.get("my_multi"):
            multi_id = "/user/%s/m/%s" % (c.user.name.lower(), multipath)
        elif "username" in routes_dict:
            username = routes_dict["username"].lower()

            if c.user_is_loggedin:
                # redirect /user/foo/m/... to /me/m/... for user foo.
                if username == c.user.name.lower():
                    # trim off multi id
                    url_parts = request.path_qs.split("/")[5:]
                    url_parts.insert(0, "/me/m/%s" % multipath)
                    abort(302, location="/".join(url_parts))

            multi_id = "/user/%s/m/%s" % (username, multipath)

        if multi_id:
            try:
                c.site = LabeledMulti._byID(multi_id)
            except tdb_cassandra.NotFound:
                abort(404)
Пример #3
0
 def for_user(cls, account):
     """Return a new AccountSRPrefs obj populated with user's data."""
     prefs = cls()
     multis = LabeledMulti.by_owner(account)
     multi_srs = set(chain.from_iterable(multi.srs for multi in multis))
     feedback = AccountSRFeedback.for_user(account)
     # subscriptions and srs in the user's multis become likes
     subscriptions = Subreddit.user_subreddits(account, limit=None)
     prefs.likes.update(utils.to36(sr_id) for sr_id in subscriptions)
     prefs.likes.update(sr._id36 for sr in multi_srs)
     # recent clicks on explore tab items are also treated as likes
     prefs.likes.update(feedback[CLICK])
     # dismissed recommendations become dislikes
     prefs.dislikes.update(feedback[DISMISS])
     # dislikes take precedence over likes
     prefs.likes = prefs.likes.difference(prefs.dislikes)
     # recently recommended items won't be shown again right away
     prefs.recent_views.update(feedback[VIEW])
     return prefs
Пример #4
0
 def for_user(cls, account):
     """Return a new AccountSRPrefs obj populated with user's data."""
     prefs = cls()
     multis = LabeledMulti.by_owner(account)
     multi_srs = set(chain.from_iterable(multi.srs for multi in multis))
     feedback = AccountSRFeedback.for_user(account)
     # subscriptions and srs in the user's multis become likes
     subscriptions = Subreddit.user_subreddits(account, limit=None)
     prefs.likes.update(utils.to36(sr_id) for sr_id in subscriptions)
     prefs.likes.update(sr._id36 for sr in multi_srs)
     # recent clicks on explore tab items are also treated as likes
     prefs.likes.update(feedback[CLICK])
     # dismissed recommendations become dislikes
     prefs.dislikes.update(feedback[DISMISS])
     # dislikes take precedence over likes
     prefs.likes = prefs.likes.difference(prefs.dislikes)
     # recently recommended items won't be shown again right away
     prefs.recent_views.update(feedback[VIEW])
     return prefs