diff --git a/r2/r2/controllers/api.py b/r2/r2/controllers/api.py index 02a6462f2..7562fcc98 100644 --- a/r2/r2/controllers/api.py +++ b/r2/r2/controllers/api.py @@ -288,7 +288,9 @@ class ApiController(RedditController): l._commit() v = Vote.vote(c.user, l, True, ip, spam) if save == 'on': - l._save(c.user) + r = l._save(c.user) + if g.write_query_queue: + queries.new_savehide(r) #set the ratelimiter if should_ratelimit: VRatelimit.ratelimit(rate_user=True, rate_ip = True) @@ -1160,10 +1162,14 @@ class ApiController(RedditController): if action in ['like', 'dislike']: #vote up all of the links for link in links: - Vote.vote(c.user, link, action == 'like', request.ip) + v = Vote.vote(c.user, link, action == 'like', request.ip) + if g.write_query_queue: + queries.new_vote(v) elif action == 'save': link = max(links, key = lambda x: x._score) - link._save(c.user) + r = link._save(c.user) + if g.write_query_queue: + queries.new_savehide(r) return self.redirect("/static/css_%sd.png" % action) return self.redirect("/static/css_submit.png") diff --git a/r2/r2/controllers/validator/validator.py b/r2/r2/controllers/validator/validator.py index 2fefb807e..50241f4c3 100644 --- a/r2/r2/controllers/validator/validator.py +++ b/r2/r2/controllers/validator/validator.py @@ -716,7 +716,11 @@ class VCnameDomain(Validator): and (not self.domain_re.match(domain) or domain.endswith('.reddit.com'))): c.errors.add(errors.BAD_CNAME) - return domain or '' + try: + return str(domain) or '' + except UnicodeEncodeError: + c.errors.add(errors.BAD_CNAME) + return "" # NOTE: make sure *never* to have res check these are present # otherwise, the response could contain reference to these errors...! diff --git a/r2/r2/models/link.py b/r2/r2/models/link.py index a7e1ab239..56028023c 100644 --- a/r2/r2/models/link.py +++ b/r2/r2/models/link.py @@ -219,8 +219,8 @@ class Link(Thing, Printable): if not c.cname: res = "/r/%s/%s" % (sr.name, p) elif sr != c.site or force_domain: - res = "http://%s/r/%s/%s" % (get_domain(cname = (c.cname and sr == c.site), - subreddit = False), sr.name, p) + res = "http://%s/%s" % (get_domain(cname = (c.cname and sr == c.site), + subreddit = not c.cname), p) else: res = "/%s" % p return res