Skip to content

Commit

Permalink
cli: fixes replace method
Browse files Browse the repository at this point in the history
 * Closes cernopendata#2039.

Signed-off-by: Ioannis Tsanaktsidis <[email protected]>
  • Loading branch information
ioannistsanaktsidis committed Dec 13, 2017
1 parent 2159d2d commit bee06e4
Showing 1 changed file with 21 additions and 6 deletions.
27 changes: 21 additions & 6 deletions cernopendata/modules/fixtures/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,8 @@ def get_jsons_from_dir(dir):
return res


def create_record(schema, data, files, skip_files):
"""Creates a new record."""
bucket = Bucket.create()
def handle_record_files(data, bucket, files, skip_files):
"""Handles record files."""

for file in files:
if skip_files:
Expand Down Expand Up @@ -91,6 +90,11 @@ def create_record(schema, data, files, skip_files):
str(e)))
continue


def create_record(schema, data, files, skip_files):
"""Creates a new record."""
bucket = Bucket.create()
handle_record_files(data, bucket, files, skip_files)
id = uuid.uuid4()
cernopendata_recid_minter(id, data)
record = Record.create(data, id_=id)
Expand All @@ -101,11 +105,22 @@ def create_record(schema, data, files, skip_files):
return record


def update_record(pid, schema, data):
def update_record(pid, schema, data, files, skip_files):
"""Updates the given record."""
record = Record.get_record(pid.object_uuid)
record['$schema'] = schema
RecordsBuckets.query.filter_by(
record=record.model,
bucket=record.files.bucket
).delete()
ObjectVersion.query.delete()
Bucket.query.delete()
FileInstance.query.delete()
bucket = Bucket.create()
handle_record_files(data, bucket, files, skip_files)
record.update(data)
RecordsBuckets.create(
record=record.model, bucket=bucket)
record.commit()
return record

Expand Down Expand Up @@ -172,7 +187,7 @@ def records(skip_files, files, profile, verbose, mode):
try:
pid = PersistentIdentifier.get('recid', data['recid'])
if pid:
record = update_record(pid, schema, data)
record = update_record(pid, schema, data, files, skip_files)
action = 'updated'
except PIDDoesNotExistError:
record = create_record(schema, data, files, skip_files)
Expand All @@ -198,7 +213,7 @@ def records(skip_files, files, profile, verbose, mode):
'cannot replace it.'.format(
data.get('recid')), err=True)
return
record = update_record(pid, schema, data)
record = update_record(pid, schema, data, files, skip_files)
action = 'updated'
db.session.commit()
click.echo(
Expand Down

0 comments on commit bee06e4

Please sign in to comment.