when copying keys create new objects using deepcopy
This commit is contained in:
parent
2ba64e1322
commit
1f49148a64
@ -2,6 +2,7 @@ import os
|
|||||||
import base64
|
import base64
|
||||||
import datetime
|
import datetime
|
||||||
import hashlib
|
import hashlib
|
||||||
|
import copy
|
||||||
|
|
||||||
from moto.core import BaseBackend
|
from moto.core import BaseBackend
|
||||||
from moto.core.utils import iso_8601_datetime, rfc_1123_datetime
|
from moto.core.utils import iso_8601_datetime, rfc_1123_datetime
|
||||||
@ -19,6 +20,12 @@ class FakeKey(object):
|
|||||||
self.last_modified = datetime.datetime.now()
|
self.last_modified = datetime.datetime.now()
|
||||||
self._metadata = {}
|
self._metadata = {}
|
||||||
|
|
||||||
|
def copy(self, new_name = None):
|
||||||
|
r = copy.deepcopy(self)
|
||||||
|
if new_name is not None:
|
||||||
|
r.name = new_name
|
||||||
|
return r
|
||||||
|
|
||||||
def set_metadata(self, key, metadata):
|
def set_metadata(self, key, metadata):
|
||||||
self._metadata[key] = metadata
|
self._metadata[key] = metadata
|
||||||
|
|
||||||
@ -229,6 +236,9 @@ class S3Backend(BaseBackend):
|
|||||||
dest_key_name = clean_key_name(dest_key_name)
|
dest_key_name = clean_key_name(dest_key_name)
|
||||||
src_bucket = self.buckets[src_bucket_name]
|
src_bucket = self.buckets[src_bucket_name]
|
||||||
dest_bucket = self.buckets[dest_bucket_name]
|
dest_bucket = self.buckets[dest_bucket_name]
|
||||||
dest_bucket.keys[dest_key_name] = src_bucket.keys[src_key_name]
|
key = src_bucket.keys[src_key_name]
|
||||||
|
if dest_key_name != src_key_name:
|
||||||
|
key = key.copy(dest_key_name)
|
||||||
|
dest_bucket.keys[dest_key_name] = key
|
||||||
|
|
||||||
s3_backend = S3Backend()
|
s3_backend = S3Backend()
|
||||||
|
Loading…
Reference in New Issue
Block a user