Trying to give album url natural name
This commit is contained in:
parent
d586e8fe86
commit
82313b8ec8
@ -76,6 +76,12 @@ class Album(Base):
|
|||||||
id = uuid.UUID(id)
|
id = uuid.UUID(id)
|
||||||
return DBSession.query(cls).filter(cls.id == id).first()
|
return DBSession.query(cls).filter(cls.id == id).first()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def by_name(cls, name):
|
||||||
|
if not name:
|
||||||
|
return None
|
||||||
|
return DBSession.query(cls).filter(cls.name.ilike(name)).first()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def menu_item(cls):
|
def menu_item(cls):
|
||||||
return uuid.UUID('dad46805-f577-4e5b-8073-9b788e0173fc')
|
return uuid.UUID('dad46805-f577-4e5b-8073-9b788e0173fc')
|
||||||
|
@ -5,6 +5,7 @@ from pyramid.response import FileResponse, Response
|
|||||||
from pyramid.security import authenticated_userid
|
from pyramid.security import authenticated_userid
|
||||||
|
|
||||||
from pyramid.view import view_config
|
from pyramid.view import view_config
|
||||||
|
import re
|
||||||
import transaction
|
import transaction
|
||||||
|
|
||||||
from soter.models import DBSession
|
from soter.models import DBSession
|
||||||
@ -85,8 +86,13 @@ def show_list(request):
|
|||||||
@view_config(request_method='GET', route_name='api_album_id', renderer='json', request_param='pictures',
|
@view_config(request_method='GET', route_name='api_album_id', renderer='json', request_param='pictures',
|
||||||
permission='Albums')
|
permission='Albums')
|
||||||
def show_pics(request):
|
def show_pics(request):
|
||||||
album = Album.by_id(uuid.UUID(request.matchdict['id']))
|
id = request.matchdict['id']
|
||||||
info = album_info(uuid.UUID(request.matchdict['id']))
|
p = re.compile('^[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$')
|
||||||
|
if p.match(id):
|
||||||
|
album = Album.by_id(uuid.UUID(id))
|
||||||
|
else:
|
||||||
|
album = Album.by_name(id)
|
||||||
|
info = album_info(album)
|
||||||
for item in album.pictures:
|
for item in album.pictures:
|
||||||
info['pictures'].append({'name': item.name, 'url': request.route_url('api_picture_id', id=item.id)})
|
info['pictures'].append({'name': item.name, 'url': request.route_url('api_picture_id', id=item.id)})
|
||||||
return info
|
return info
|
||||||
@ -94,9 +100,10 @@ def show_pics(request):
|
|||||||
|
|
||||||
def album_info(id):
|
def album_info(id):
|
||||||
if id is None:
|
if id is None:
|
||||||
album = {'name': "", 'description': "", 'isPublic': False, 'pictures': []}
|
return {'name': "", 'description': "", 'isPublic': False, 'pictures': []}
|
||||||
else:
|
if not isinstance(id, Album):
|
||||||
album = Album.by_id(id)
|
album = Album.by_id(id)
|
||||||
|
|
||||||
album = {'id': album.id, 'name': album.name, 'description': album.description, 'isPublic': album.is_public,
|
album = {'id': album.id, 'name': album.name, 'description': album.description, 'isPublic': album.is_public,
|
||||||
'pictures': [], 'user': {'id': album.user_id, 'name': album.user.name},
|
'pictures': [], 'user': {'id': album.user_id, 'name': album.user.name},
|
||||||
'isFixture': album.is_fixture}
|
'isFixture': album.is_fixture}
|
||||||
|
Loading…
Reference in New Issue
Block a user