Revision aed77afe snf-cyclades-app/synnefo/plankton/views.py
b/snf-cyclades-app/synnefo/plankton/views.py | ||
---|---|---|
35 | 35 |
|
36 | 36 |
from logging import getLogger |
37 | 37 |
from string import punctuation |
38 |
from StringIO import StringIO |
|
39 | 38 |
from urllib import unquote |
40 | 39 |
|
41 | 40 |
from django.conf import settings |
... | ... | |
272 | 271 |
|
273 | 272 |
|
274 | 273 |
@plankton_method('GET') |
275 |
def list_shared_images(request, member): |
|
274 |
def list_shared_images_with(request, member):
|
|
276 | 275 |
"""Request shared images |
277 | 276 |
|
278 | 277 |
Described in: |
... | ... | |
283 | 282 |
the users's images that are accessible by `member`. |
284 | 283 |
""" |
285 | 284 |
|
286 |
log.debug('list_shared_images %s', member) |
|
285 |
log.debug('list_shared_images_with %s', member)
|
|
287 | 286 |
|
288 | 287 |
images = [] |
289 |
for image_id in request.backend.iter_shared(member): |
|
288 |
for image in request.backend.iter_shared(member): |
|
289 |
image_id = image['id'] |
|
290 | 290 |
images.append({'image_id': image_id, 'can_share': False}) |
291 | 291 |
|
292 | 292 |
data = json.dumps({'shared_images': images}, indent=settings.DEBUG) |
... | ... | |
350 | 350 |
|
351 | 351 |
request.backend.replace_users(image_id, members) |
352 | 352 |
return HttpResponse(status=204) |
353 |
|
|
354 |
|
|
355 |
@plankton_method('GET') |
|
356 |
def list_shared_images(request, detail=False): |
|
357 |
def get_request_params(keys): |
|
358 |
params = {} |
|
359 |
for key in keys: |
|
360 |
val = request.GET.get(key, None) |
|
361 |
if val is not None: |
|
362 |
params[key] = val |
|
363 |
return params |
|
364 |
|
|
365 |
log.debug('list_shared_images detail=%s, request %s', detail, request) |
|
366 |
|
|
367 |
filters = get_request_params(FILTERS) |
|
368 |
params = get_request_params(PARAMS) |
|
369 |
|
|
370 |
params.setdefault('sort_key', 'created_at') |
|
371 |
params.setdefault('sort_dir', 'desc') |
|
372 |
|
|
373 |
assert params['sort_key'] in SORT_KEY_OPTIONS |
|
374 |
assert params['sort_dir'] in SORT_DIR_OPTIONS |
|
375 |
|
|
376 |
images = request.backend.list(filters, params) |
|
377 |
images = filter(lambda x: not x['is_public'], images) |
|
378 |
|
|
379 |
# Remove keys that should not be returned |
|
380 |
fields = DETAIL_FIELDS if detail else LIST_FIELDS |
|
381 |
for image in images: |
|
382 |
for key in image.keys(): |
|
383 |
if key not in fields: |
|
384 |
del image[key] |
|
385 |
|
|
386 |
data = json.dumps(images, indent=settings.DEBUG) |
|
387 |
return HttpResponse(data) |
Also available in: Unified diff