Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions modules/weko-deposit/weko_deposit/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -481,6 +481,45 @@ def _publish_new(self, id_=None):

return record

def _update_version_id(self, metas, bucket_id):
"""
Update 'version_id' of file_metadatas.

parameter:
metas: Record Metadata.
bucket_id: Bucket UUID.
return:
response
"""
_filename_prop = 'filename'

files_versions = ObjectVersion.get_by_bucket(bucket=bucket_id,
with_deleted=True).all()
files_versions = {x.key: x.version_id for x in files_versions}
file_meta = []

for item in metas:
if not isinstance(metas[item], dict) or \
not metas[item].get('attribute_value_mlt'):
continue
itemmeta = metas[item]['attribute_value_mlt']
if itemmeta and isinstance(itemmeta, list) \
and isinstance(itemmeta[0], dict) \
and itemmeta[0].get(_filename_prop):
file_meta.extend(itemmeta)
elif isinstance(itemmeta, dict) \
and itemmeta.get(_filename_prop):
file_meta.extend([itemmeta])

if not file_meta:
return False

for item in file_meta:
item['version_id'] = str(files_versions.get(
item.get(_filename_prop)))

return True

def publish(self, pid=None, id_=None):
"""Publish the deposit."""
if not self.data:
Expand Down Expand Up @@ -688,6 +727,9 @@ def commit(self, *args, **kwargs):
record = RecordMetadata.query.get(self.pid.object_uuid)
if record and record.json and '$schema' in record.json:
record.json.pop('$schema')
if record.json.get('_buckets'):
self._update_version_id(record.json,
record.json['_buckets']['deposit'])
flag_modified(record, 'json')
db.session.merge(record)

Expand Down Expand Up @@ -781,6 +823,7 @@ def get_content_files(self):
for lst in fmd:
if file.obj.key == lst.get('filename'):
lst.update({'mimetype': file.obj.mimetype})
lst.update({'version_id': str(file.obj.version_id)})

# update file_files's json
file.obj.file.update_json(lst)
Expand Down Expand Up @@ -1109,6 +1152,7 @@ def merge_data_to_record_without_version(self, pid):
"deposit": str(snapshot.id)
}
}

args = [index, item_metadata]
self.update(*args)
# Update '_buckets'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3729,7 +3729,7 @@ function toObject(arr) {
let activityId = $("#activity_id").text();
let edit_mode = sessionStorage.getItem("edit_mode_" + activityId);
if ($rootScope.recordsVM.invenioRecordsEndpoints.initialization.includes(".0") || edit_mode) {
if (edit_mode) {
if (edit_mode !== null) {
let version_radios = $('input[name ="radioVersionSelect"]');

version_radios.prop('disabled', true);
Expand Down
2 changes: 1 addition & 1 deletion modules/weko-itemtypes-ui/weko_itemtypes_ui/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -268,7 +268,7 @@ def get_property_list(self, property_id=0):
and k.schema.get('properties').get('filename')):
is_file = True
tmp = {'name': name, 'schema': k.schema, 'form': k.form,
'forms': k.forms, 'sort': k.sort, 'is_file': is_file}
'forms': k.forms, 'sort': k.sort, 'is_file': is_file}
if name and name[:2] == 'S_':
lists['system'][k.id] = tmp
else:
Expand Down