various bug fixes
This commit is contained in:
parent
06eb73cffa
commit
1e0891623a
|
@ -19,6 +19,8 @@ doc_hashids = Hashids(min_length=8)
|
|||
Base = declarative_base()
|
||||
Base.query = session.query_property()
|
||||
|
||||
re_server_url = re.compile('^http://perma.pub/\d+/([^/]+)/([^/]+)$')
|
||||
|
||||
# list of disallowed usernames - maybe this should be in the database
|
||||
reserved_name = ['root', 'admin', 'administrator', 'support', 'info',
|
||||
'test', 'tech', 'online', 'old', 'new', 'jobs', 'login', 'job', 'ipad'
|
||||
|
@ -138,7 +140,11 @@ class Item(TimeStampedModel):
|
|||
|
||||
@classmethod
|
||||
def get_by_hashid(cls, hashid):
|
||||
return cls.query.get(doc_hashids.decode(hashid))
|
||||
try:
|
||||
item_id = doc_hashids.decode(hashid)[0]
|
||||
except IndexError:
|
||||
return
|
||||
return cls.query.get(item_id)
|
||||
|
||||
@property
|
||||
def url(self):
|
||||
|
@ -163,11 +169,12 @@ class Item(TimeStampedModel):
|
|||
@classmethod
|
||||
def from_external(cls, url):
|
||||
home = url_for('.home', _external=True)
|
||||
if not url.startswith(home):
|
||||
m = re_server_url.match(url)
|
||||
if not m:
|
||||
return
|
||||
username, _, hashid = url[len(home):].partition('/')
|
||||
q = cls.query.filter(User.username == username,
|
||||
cls.id == doc_hashids.decode(hashid)[0])
|
||||
username, hashid = m.groups()
|
||||
item_id = doc_hashids.decode(hashid)[0]
|
||||
q = cls.query.filter(User.username == username, cls.id == item_id)
|
||||
return q.one_or_none()
|
||||
|
||||
class XanaDoc(Item):
|
||||
|
|
Loading…
Reference in a new issue