Preserve the originally attempted url and subreddit when resubmitting a link.

This commit is contained in:
Brian Simpson
2015-01-15 15:03:07 -05:00
parent bb0f5b552c
commit 1c8a27121a
3 changed files with 25 additions and 16 deletions

View File

@@ -482,7 +482,7 @@ class ApiController(RedditController):
if links:
c.errors.add(errors.ALREADY_SUB, field='url')
form.has_errors('url', errors.ALREADY_SUB)
u = links[0].already_submitted_link
u = links[0].already_submitted_link(url)
if extension:
u = UrlParser(u)
u.set_extension(extension)

View File

@@ -299,7 +299,10 @@ class FrontController(RedditController):
# check if we just came from the submit page
infotext = None
if request.GET.get('already_submitted'):
infotext = strings.already_submitted % article.resubmit_link()
submit_url = request.GET.get('submit_url') or article.url
resubmit_url = Link.resubmit_link(submit_url)
sr_resubmit_url = add_sr(resubmit_url)
infotext = strings.already_submitted % sr_resubmit_url
check_cheating('comments')
@@ -1007,13 +1010,17 @@ class FrontController(RedditController):
links = listing.things
if links and len(links) == 1:
return self.redirect(links[0].already_submitted_link)
# redirect the user to the existing link's comments
existing_submission_url = links[0].already_submitted_link(url)
return self.redirect(existing_submission_url)
elif links:
infotext = (strings.multiple_submitted
% links[0].resubmit_link())
res = BoringPage(_("seen it"),
content=listing,
infotext=infotext).render()
# show the user a listing of all the other links with this url
# an infotext to resubmit it
resubmit_url = Link.resubmit_link(url)
sr_resubmit_url = add_sr(resubmit_url)
infotext = strings.multiple_submitted % sr_resubmit_url
res = BoringPage(
_("seen it"), content=listing, infotext=infotext).render()
return res
if not c.user_is_loggedin:

View File

@@ -146,15 +146,17 @@ class Link(Thing, Printable):
LinksByUrl._set_values(LinksByUrl._key_from_url(self.url),
{self._id36: ''})
@property
def already_submitted_link(self):
return self.make_permalink_slow() + '?already_submitted=true'
def already_submitted_link(self, url):
permalink = self.make_permalink_slow()
p = UrlParser(permalink)
p.update_query(already_submitted="true", submit_url=url)
return p.unparse()
def resubmit_link(self, sr_url=False):
submit_url = self.subreddit_slow.path if sr_url else '/'
submit_url += 'submit?resubmit=true&url='
submit_url += url_escape(_force_unicode(self.url))
return submit_url
@classmethod
def resubmit_link(cls, url):
p = UrlParser("/submit")
p.update_query(resubmit="true", url=url)
return p.unparse()
@classmethod
def _choose_comment_tree_version(cls):