diff --git a/soter/static/app/album/pictures.html b/soter/static/app/album/pictures.html
index 2a4f3b3..c11ef49 100644
--- a/soter/static/app/album/pictures.html
+++ b/soter/static/app/album/pictures.html
@@ -1,6 +1,8 @@
diff --git a/soter/static/app/app.module.js b/soter/static/app/app.module.js
index b63197e..7859806 100644
--- a/soter/static/app/app.module.js
+++ b/soter/static/app/app.module.js
@@ -32,18 +32,12 @@
controller: 'AlbumPicturesController',
resolve: AlbumPicturesCtrlResolve
})
- //.when('/picture', {
- // templateUrl: '/app/picture/view.html',
- // controller: 'PictureController',
- // resolve: PictureCtrl.resolve,
- // reloadOnSearch: false
- //})
- //.when('/picture/:id', {
- // templateUrl: '/app/picture/view.html',
- // controller: 'PictureController',
- // resolve: PictureCtrl.resolve,
- // reloadOnSearch: false
- //})
+ .when('/picture/:id', {
+ templateUrl: '/app/picture/view.html',
+ controller: 'PictureController',
+ resolve: PictureCtrlResolve,
+ reloadOnSearch: false
+ })
.when('/users', {
templateUrl: '/app/user/list.html',
controller: 'UserListController',
diff --git a/soter/static/app/picture/picture.controller.js b/soter/static/app/picture/picture.controller.js
index 4401482..cff0413 100644
--- a/soter/static/app/picture/picture.controller.js
+++ b/soter/static/app/picture/picture.controller.js
@@ -2,7 +2,8 @@
'use strict';
angular.module('soter')
- .controller('UploadController', ['$scope', 'Upload', UploadController]);
+ .controller('UploadController', ['$scope', 'Upload', UploadController])
+ .controller('PictureController', ['$scope', 'picture', PictureController]);
function UploadController($scope, Upload) {
$scope.upload = function (files) {
@@ -22,6 +23,19 @@
}
};
}
+
+ function PictureController($scope, picture) {
+ $scope.picture = picture;
+ }
+
})();
var UploadCtrlResolve = {};
+
+var PictureCtrlResolve = {
+ album: ['$route', 'Picture', function ($route, Picture) {
+ var id = $route.current.params.id;
+ return Picture.get({id: id}).$promise;
+ }]
+};
+
diff --git a/soter/static/app/picture/view.html b/soter/static/app/picture/view.html
new file mode 100644
index 0000000..dfff7d4
--- /dev/null
+++ b/soter/static/app/picture/view.html
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/soter/views/album.py b/soter/views/album.py
index ac7e2bd..5a2b637 100644
--- a/soter/views/album.py
+++ b/soter/views/album.py
@@ -1,11 +1,10 @@
import uuid
+import re
import pkg_resources
from pyramid.response import FileResponse, Response
from pyramid.security import authenticated_userid
-
from pyramid.view import view_config
-import re
import transaction
from soter.models import DBSession
@@ -94,7 +93,8 @@ def show_pics(request):
album = Album.by_name(id)
info = album_info(album)
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('picture_id', id=item.id),
+ 'imageUrl': request.route_url('picture_raw', id=item.id)})
return info
@@ -103,7 +103,8 @@ def album_info(id):
return {'name': "", 'description': "", 'isPublic': False, 'pictures': []}
if not isinstance(id, Album):
album = Album.by_id(id)
-
+ else:
+ album = id
album = {'id': album.id, 'name': album.name, 'description': album.description, 'isPublic': album.is_public,
'pictures': [], 'user': {'id': album.user_id, 'name': album.user.name},
'isFixture': album.is_fixture}
diff --git a/soter/views/picture.py b/soter/views/picture.py
index 3e0291b..da324a3 100644
--- a/soter/views/picture.py
+++ b/soter/views/picture.py
@@ -4,12 +4,13 @@ import uuid
import pkg_resources
from pyramid.response import FileResponse
+
from pyramid.security import authenticated_userid
+
from pyramid.view import view_config
import transaction
from soter.models import DBSession
-
from soter.models.master import Picture
@@ -37,8 +38,25 @@ def upload(request):
return {'location': file_path}
-@view_config(request_method='GET', route_name='api_picture_id', permission='Albums')
-def show_id(request):
+@view_config(request_method='GET', route_name='picture_raw', permission='Albums')
+def show_raw(request):
package, resource = ('soter:upload/' + request.matchdict['id'] + '.jpg').split(':', 1)
file = pkg_resources.resource_filename(package, resource)
return FileResponse(file, request=request)
+
+
+@view_config(request_method='GET', route_name='api_album_id', renderer='json', request_param='pictures',
+ permission='Albums')
+def show_id(request):
+ return picture_info(request.matchdict['id'], request)
+
+
+def picture_info(id, request):
+ if not isinstance(id, Picture):
+ picture = Picture.by_id(id)
+ else:
+ picture = id
+ album = {'id': picture.id, 'name': picture.name, 'imageUrl': request.route_url('picture_raw', id=picture.id),
+
+ 'user': {'id': picture.user_id, 'name': picture.user.name}}
+ return album