Revision 961f2fbe

b/pithos/lib/client.py
217 217
        """
218 218
         adds new and updates the values of previously set metadata
219 219
        """
220
        for key, val in meta.items():
221
            meta.pop(key)
222
            meta['X-%s-Meta-%s' %(entity.capitalize(), key.capitalize())] = val
223
        prev_meta = self._get_metadata(path)
220
        prefix = 'x-%s-meta-' % entity
221
        prev_meta = self._get_metadata(path, prefix)
224 222
        prev_meta.update(meta)
225 223
        headers = {}
226 224
        for key, val in prev_meta.items():
227
            headers[key.capitalize()] = val
225
            key = '%s%s' % (prefix, key)
226
            key = '-'.join(elem.capitalize() for elem in key.split('-'))
227
            headers[key] = val
228 228
        self.post(path, headers=headers)
229 229
    
230 230
    def _delete_metadata(self, path, entity, meta=[]):
231 231
        """
232 232
        delete previously set metadata
233 233
        """
234
        prev_meta = self._get_metadata(path)
234
        prefix = 'x-%s-meta-' % entity
235
        prev_meta = self._get_metadata(path, prefix)
235 236
        headers = {}
236 237
        for key, val in prev_meta.items():
237
            if key.split('-')[-1] in meta:
238
            if key in meta:
238 239
                continue
239
            http_key = key.capitalize()
240
            headers[http_key] = val
240
            key = '%s%s' % (prefix, key)
241
            key = '-'.join(elem.capitalize() for elem in key.split('-'))
242
            headers[key] = val
241 243
        self.post(path, headers=headers)
242 244
    
243 245
    # Storage Account Services
......
402 404
    def restore_object(self, container, object):
403 405
        """
404 406
        restores a trashed object
405
        actualy just resets all object metadata except trash
407
        actualy removes trash object metadata info
406 408
        """
407 409
        self.delete_object_metadata(container, object, ['trash'])
408 410

  
b/tools/store
314 314
        parser.add_option('--content-disposition', action='store', type='str',
315 315
                          dest='content-disposition', default=None,
316 316
                          help='provide the presentation style of the object')
317
        parser.add_option('--manifest', action='store', type='str',
318
                          dest='manifest', default=None,
317
        parser.add_option('-S', action='store',
318
                          dest='segment-size', default=False,
319 319
                          help='use for large file support')
320
        parser.add_option('--manifest', action='store_true',
321
                          dest='manifest', default=None,
322
                          help='upload a manifestation file')
320 323
        parser.add_option('--type', action='store',
321 324
                          dest='content-type', default=False,
322 325
                          help='create object with specific content type')
......
494 497
    
495 498
    def execute(self, path, *args):
496 499
        #in case of account fix the args
497
        if path.find('=') != -1:
500
        if len(args) == 0:
498 501
            args = list(args)
499 502
            args.append(path)
500 503
            args = tuple(args)

Also available in: Unified diff