Skip to content

Commit 0f35bd3

Browse files
cli: fixes replace method
* Closes #2039. Signed-off-by: Ioannis Tsanaktsidis <[email protected]>
1 parent 2159d2d commit 0f35bd3

File tree

1 file changed

+22
-6
lines changed
  • cernopendata/modules/fixtures

1 file changed

+22
-6
lines changed

cernopendata/modules/fixtures/cli.py

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,8 @@ def get_jsons_from_dir(dir):
5555
return res
5656

5757

58-
def create_record(schema, data, files, skip_files):
59-
"""Creates a new record."""
60-
bucket = Bucket.create()
58+
def handle_record_files(data, bucket, files, skip_files):
59+
"""Handles record files."""
6160

6261
for file in files:
6362
if skip_files:
@@ -91,6 +90,11 @@ def create_record(schema, data, files, skip_files):
9190
str(e)))
9291
continue
9392

93+
94+
def create_record(schema, data, files, skip_files):
95+
"""Creates a new record."""
96+
bucket = Bucket.create()
97+
handle_record_files(data, bucket, files, skip_files)
9498
id = uuid.uuid4()
9599
cernopendata_recid_minter(id, data)
96100
record = Record.create(data, id_=id)
@@ -101,11 +105,23 @@ def create_record(schema, data, files, skip_files):
101105
return record
102106

103107

104-
def update_record(pid, schema, data):
108+
def update_record(pid, schema, data, files, skip_files):
105109
"""Updates the given record."""
106110
record = Record.get_record(pid.object_uuid)
107111
record['$schema'] = schema
112+
data.pop('files', None)
113+
RecordsBuckets.query.filter_by(
114+
record=record.model,
115+
bucket=record.files.bucket
116+
).delete()
117+
ObjectVersion.query.delete()
118+
Bucket.query.delete()
119+
FileInstance.query.delete()
120+
bucket = Bucket.create()
121+
handle_record_files(data, bucket, files, skip_files)
108122
record.update(data)
123+
RecordsBuckets.create(
124+
record=record.model, bucket=bucket)
109125
record.commit()
110126
return record
111127

@@ -172,7 +188,7 @@ def records(skip_files, files, profile, verbose, mode):
172188
try:
173189
pid = PersistentIdentifier.get('recid', data['recid'])
174190
if pid:
175-
record = update_record(pid, schema, data)
191+
record = update_record(pid, schema, data, files, skip_files)
176192
action = 'updated'
177193
except PIDDoesNotExistError:
178194
record = create_record(schema, data, files, skip_files)
@@ -198,7 +214,7 @@ def records(skip_files, files, profile, verbose, mode):
198214
'cannot replace it.'.format(
199215
data.get('recid')), err=True)
200216
return
201-
record = update_record(pid, schema, data)
217+
record = update_record(pid, schema, data, files, skip_files)
202218
action = 'updated'
203219
db.session.commit()
204220
click.echo(

0 commit comments

Comments
 (0)