Media URLs with ids in them are now like /u/cwebber/m/id:4112/ rather than /u/cwebber/m/4112/
This avoids some potential name collision issues. This commit sponsored by Asokan Pichai. Thank you!
This commit is contained in:
parent
397c22d139
commit
7de20e5234
@ -150,8 +150,10 @@ class MediaEntryMixin(object):
|
||||
|
||||
@property
|
||||
def slug_or_id(self):
|
||||
return (self.slug or self.id)
|
||||
|
||||
if self.slug:
|
||||
return self.slug
|
||||
else:
|
||||
return u'id:%s' % self.id
|
||||
|
||||
def url_for_self(self, urlgen, **extra_args):
|
||||
"""
|
||||
|
@ -125,24 +125,31 @@ def get_user_media_entry(controller):
|
||||
if not user:
|
||||
raise NotFound()
|
||||
|
||||
media = None
|
||||
|
||||
# might not be a slug, might be an id, but whatever
|
||||
media_slug = request.matchdict['media']
|
||||
|
||||
if u":" in request.matchdict['media']:
|
||||
# okay, it's not actually a slug, it's some kind of identifier,
|
||||
# probably id:
|
||||
if media_slug.startswith(u'id:'):
|
||||
try:
|
||||
media = MediaEntry.query.filter_by(
|
||||
id=int(media_slug[3:]),
|
||||
state=u'processed',
|
||||
uploader=user.id).first()
|
||||
except ValueError:
|
||||
raise NotFound()
|
||||
else:
|
||||
# no magical id: stuff? It's a slug!
|
||||
media = MediaEntry.query.filter_by(
|
||||
slug=request.matchdict['media'],
|
||||
state=u'processed',
|
||||
uploader=user.id).first()
|
||||
|
||||
if not media:
|
||||
# no media via slug? Grab it via object id
|
||||
try:
|
||||
media = MediaEntry.query.filter_by(
|
||||
id = int(request.matchdict['media']),
|
||||
state = u'processed',
|
||||
uploader = user.id).first()
|
||||
except ValueError:
|
||||
# media "id" was no int
|
||||
raise NotFound()
|
||||
|
||||
if not media:
|
||||
# no media by that id? Okay, 404.
|
||||
# Didn't find anything? Okay, 404.
|
||||
raise NotFound()
|
||||
|
||||
return controller(request, media=media, *args, **kwargs)
|
||||
|
Loading…
x
Reference in New Issue
Block a user