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