Make Item.from_external() more robust.

This commit is contained in:
Edward Betts 2018-12-04 15:24:27 +00:00
parent 379ee401fe
commit 9eecd4f490

View file

@ -240,13 +240,18 @@ span: {},start=0,length={}'''.format(self.external_url, title_source_doc.externa
@classmethod
def from_external(cls, url, home=None):
base = current_app.config.get('BASE_URL')
username, hashid = None, None
if home is None:
home = url_for('view.home', _external=True)
if url.startswith(home):
username, _, hashid = url[len(home):].partition('/')
elif base and url.startswith(base):
username, _, hashid = url[len(base):].lstrip('/').partition('/')
else:
if username and '/' in username or hashid and '/' in hashid:
username, hashid = None, None
if not username or not hashid:
m = re_server_url.match(url)
if not m:
return