Revision 371d907a pithos/api/functions.py

b/pithos/api/functions.py
326 326
    try:
327 327
        meta = request.backend.get_container_meta(request.user_uniq, v_account,
328 328
                                                    v_container, 'pithos', until)
329
        meta['object_meta'] = request.backend.list_object_meta(request.user_uniq,
329
        meta['object_meta'] = request.backend.list_container_meta(request.user_uniq,
330 330
                                                v_account, v_container, 'pithos', until)
331 331
        policy = request.backend.get_container_policy(request.user_uniq, v_account,
332 332
                                                        v_container)
......
463 463
    try:
464 464
        meta = request.backend.get_container_meta(request.user_uniq, v_account,
465 465
                                                    v_container, 'pithos', until)
466
        meta['object_meta'] = request.backend.list_object_meta(request.user_uniq,
466
        meta['object_meta'] = request.backend.list_container_meta(request.user_uniq,
467 467
                                                v_account, v_container, 'pithos', until)
468 468
        policy = request.backend.get_container_policy(request.user_uniq, v_account,
469 469
                                                        v_container)
......
515 515
    if 'shared' in request.GET:
516 516
        shared = True
517 517
    
518
    try:
519
        objects = request.backend.list_objects(request.user_uniq, v_account,
520
                                    v_container, prefix, delimiter, marker,
521
                                    limit, virtual, 'pithos', keys, shared, until)
522
    except NotAllowedError:
523
        raise Forbidden('Not allowed')
524
    except NameError:
525
        raise ItemNotFound('Container does not exist')
526
    
527 518
    if request.serialization == 'text':
519
        try:
520
            objects = request.backend.list_objects(request.user_uniq, v_account,
521
                                        v_container, prefix, delimiter, marker,
522
                                        limit, virtual, 'pithos', keys, shared, until)
523
        except NotAllowedError:
524
            raise Forbidden('Not allowed')
525
        except NameError:
526
            raise ItemNotFound('Container does not exist')
527
        
528 528
        if len(objects) == 0:
529 529
            # The cloudfiles python bindings expect 200 if json/xml.
530 530
            response.status_code = 204
......
533 533
        response.content = '\n'.join([x[0] for x in objects]) + '\n'
534 534
        return response
535 535
    
536
    try:
537
        objects = request.backend.list_object_meta(request.user_uniq, v_account,
538
                                    v_container, prefix, delimiter, marker,
539
                                    limit, virtual, 'pithos', keys, shared, until)
540
    except NotAllowedError:
541
        raise Forbidden('Not allowed')
542
    except NameError:
543
        raise ItemNotFound('Container does not exist')
544
    
545
#     object_meta = []
546
#     for x in objects:
547
#         if x[1] is None:
548
#             # Virtual objects/directories.
549
#             object_meta.append({'subdir': x[0]})
550
#         else:
551
#             try:
552
#                 meta = request.backend.get_object_meta(request.user_uniq, v_account,
553
#                                                         v_container, x[0], 'pithos', x[1])
554
#                 if until is None:
555
#                     permissions = request.backend.get_object_permissions(
556
#                                     request.user_uniq, v_account, v_container, x[0])
557
#                     public = request.backend.get_object_public(request.user_uniq,
558
#                                                 v_account, v_container, x[0])
559
#                 else:
560
#                     permissions = None
561
#                     public = None
562
#             except NotAllowedError:
563
#                 raise Forbidden('Not allowed')
564
#             except NameError:
565
#                 pass
566
#             else:
567
#                 rename_meta_key(meta, 'hash', 'x_object_hash') # Will be replaced by checksum.
568
#                 rename_meta_key(meta, 'checksum', 'hash')
569
#                 rename_meta_key(meta, 'type', 'content_type')
570
#                 rename_meta_key(meta, 'uuid', 'x_object_uuid')
571
#                 rename_meta_key(meta, 'modified', 'last_modified')
572
#                 rename_meta_key(meta, 'modified_by', 'x_object_modified_by')
573
#                 rename_meta_key(meta, 'version', 'x_object_version')
574
#                 rename_meta_key(meta, 'version_timestamp', 'x_object_version_timestamp')
575
#                 m = dict([(k[14:], v) for k, v in meta.iteritems() if k.startswith('X-Object-Meta-')])
576
#                 for k in m:
577
#                     del(meta['X-Object-Meta-' + k])
578
#                 if m:
579
#                     meta['X-Object-Meta'] = printable_header_dict(m)
580
#                 update_sharing_meta(request, permissions, v_account, v_container, x[0], meta)
581
#                 update_public_meta(public, meta)
582
#                 object_meta.append(printable_header_dict(meta))
583
#     if request.serialization == 'xml':
584
#         data = render_to_string('objects.xml', {'container': v_container, 'objects': object_meta})
585
#     elif request.serialization  == 'json':
586
#         data = json.dumps(object_meta, default=json_encode_decimal)
587
#     response.status_code = 200
588
#     response.content = data
589
#     return response
590
    
536 591
    object_meta = []
537
    for x in objects:
538
        if x[1] is None:
592
    for meta in objects:
593
        if len(meta) == 1:
539 594
            # Virtual objects/directories.
540
            object_meta.append({'subdir': x[0]})
595
            object_meta.append(meta)
541 596
        else:
542
            try:
543
                meta = request.backend.get_object_meta(request.user_uniq, v_account,
544
                                                        v_container, x[0], 'pithos', x[1])
545
                if until is None:
546
                    permissions = request.backend.get_object_permissions(
547
                                    request.user_uniq, v_account, v_container, x[0])
548
                    public = request.backend.get_object_public(request.user_uniq,
549
                                                v_account, v_container, x[0])
550
                else:
551
                    permissions = None
552
                    public = None
553
            except NotAllowedError:
554
                raise Forbidden('Not allowed')
555
            except NameError:
556
                pass
597
            rename_meta_key(meta, 'hash', 'x_object_hash') # Will be replaced by checksum.
598
            rename_meta_key(meta, 'checksum', 'hash')
599
            rename_meta_key(meta, 'type', 'content_type')
600
            rename_meta_key(meta, 'uuid', 'x_object_uuid')
601
            if until is not None and 'modified' in meta:
602
                del(meta['modified'])
557 603
            else:
558
                rename_meta_key(meta, 'hash', 'x_object_hash') # Will be replaced by checksum.
559
                rename_meta_key(meta, 'checksum', 'hash')
560
                rename_meta_key(meta, 'type', 'content_type')
561
                rename_meta_key(meta, 'uuid', 'x_object_uuid')
562 604
                rename_meta_key(meta, 'modified', 'last_modified')
563
                rename_meta_key(meta, 'modified_by', 'x_object_modified_by')
564
                rename_meta_key(meta, 'version', 'x_object_version')
565
                rename_meta_key(meta, 'version_timestamp', 'x_object_version_timestamp')
566
                m = dict([(k[14:], v) for k, v in meta.iteritems() if k.startswith('X-Object-Meta-')])
567
                for k in m:
568
                    del(meta['X-Object-Meta-' + k])
569
                if m:
570
                    meta['X-Object-Meta'] = printable_header_dict(m)
571
                update_sharing_meta(request, permissions, v_account, v_container, x[0], meta)
572
                update_public_meta(public, meta)
573
                object_meta.append(printable_header_dict(meta))
605
            rename_meta_key(meta, 'modified_by', 'x_object_modified_by')
606
            rename_meta_key(meta, 'version', 'x_object_version')
607
            rename_meta_key(meta, 'version_timestamp', 'x_object_version_timestamp')
608
            object_meta.append(printable_header_dict(meta))
574 609
    if request.serialization == 'xml':
575 610
        data = render_to_string('objects.xml', {'container': v_container, 'objects': object_meta})
576 611
    elif request.serialization  == 'json':

Also available in: Unified diff