Skip to content
Open
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
19 changes: 19 additions & 0 deletions config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
task: update_filenames
host: "https://islandora.traefik.me/"
username: admin
password: shubham
input_csv: 'https://docs.google.com/spreadsheets/d/1X3qay2HxevjmPV6wL2ZIxJO6Pt-7-lkOW-9JMpgqW4U/edit?usp=sharing'
google_sheets_gid: 0
content_type: islandora_object
subdelimiter: "|"
allow_adding_terms: true
ignore_csv_columns: [field_physical_description_note, field_transcription, field_digital_origin, field_copyright_statement, ignore, field_view_mode]
media_types:
- file: ['zip', 'tar']
- document: ['pdf', 'doc', 'docx', 'ppt', 'pptx', 'vtt', 'csv']
- image: ['png', 'gif', 'jpg', 'jpeg', 'tif', 'tiff', 'jp2']
- audio: ['mp3', 'wav', 'aac', 'm4a']
- video: ['mp4']
- extracted_text: ['txt']
- web_archive: ['wacz']
standalone_media_url: true
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions tests/assets/update_file_name_test/create.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
file,id,title,field_model
add_media_file_1.jpg,1,title1,Collection
add_media_file_2.jpg,2,title2,Collection
7 changes: 7 additions & 0 deletions tests/assets/update_file_name_test/create.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
task: create
host: https://islandora.dev
username: admin
password: password
input_dir: "tests/assets/update_file_name_test"
input_csv: create.csv
standalone_media_url: true
7 changes: 7 additions & 0 deletions tests/assets/update_file_name_test/update.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
task: update_filenames
host: https://islandora.dev
username: admin
password: password
input_dir: "tests/assets/update_file_name_test"
input_csv: update_filenames.csv
standalone_media_url: true
3 changes: 3 additions & 0 deletions tests/assets/update_file_name_test/update_filenames.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
file_id,filename
1,new_file_name_1.jpg
2,new_file_name_2.jpg
80 changes: 80 additions & 0 deletions workbench
Original file line number Diff line number Diff line change
Expand Up @@ -3484,6 +3484,84 @@ def update_terms():
pbar(row_position)


def update_filenames():
"""Update files via PATCH. Note that PATCHing replaces the target field,
so if we are adding an additional value to a multivalued field, we need
to include the existing value(s) in our PATCH. The field classes take
care of preserving existing values in 'append' updates.
"""
message = (
'"Update Files" ('
+ config["update_mode"]
+ ") task started using config file "
+ args.config
+ "."
)
print(message)
logging.info(message)

csv_data = get_csv_data(config)
csv_column_headers = csv_data.fieldnames

if "file_id" not in csv_column_headers:
message = (
'For "update_filenames" tasks, your CSV file must contain a "file_id" column.'
)
logging.error(message)
sys.exit("Error: " + message)
method = "POST"
row_count = 0
for row in csv_data:
# Delete expired items from request_cache before processing a row.
if config["enable_http_cache"] is True:
requests_cache.delete(expired=True)
file = {}
if "filename" in csv_column_headers:
if len(row["filename"].strip()) != 0:
file["new_filename"] = row["filename"]

file_endpoint = (
config["host"] + "/islandora_workbench_integration/rename/" + row["file_id"] + "?_format=json"
)
file_headers = {"Content-Type": "application/json"}
file_response = issue_request(
config, method.upper(), file_endpoint, file_headers, file
)


if file_response.status_code == 200:
if config["progress_bar"] is False:
print(
"File "
+ config["host"]
+ "/islandora_workbench_integration/rename/"
+ row["file_id"]
+ " updated."
)
logging.info(
"File %s updated.",
config["host"] + "/islandora_workbench_integration/rename/" + row["file_id"],
)
else:
if config["progress_bar"] is False:
print(
"File "
+ config["host"]
+ "/islandora_workbench_integration/rename/"
+ row["file_id"]
+ " could not be updated."
)
logging.info(
"File %s could not be updated.",
config["host"] + "/islandora_workbench_integration/rename/" + row["file_id"],
)

if config["progress_bar"] is True:
row_count += 1
row_position = get_percentage(row_count, num_csv_records)
pbar(row_position)


def create_redirects():
"""Create new redirect entities via POST."""
message = '"Create redirects" task started using config file ' + args.config + "."
Expand Down Expand Up @@ -3957,6 +4035,8 @@ try:
create()
if config["task"] == "update":
update()
if config["task"] == "update_filenames":
update_filenames()
if config["task"] == "delete":
delete()
if config["task"] == "add_media":
Expand Down
3 changes: 2 additions & 1 deletion workbench_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -1901,12 +1901,13 @@ def check_input(config, args):
"get_media_report_from_view",
"update_terms",
"create_redirects",
"update_filenames",
]
joiner = ", "
if config["task"] not in tasks:
message = (
'"task" in your configuration file must be one of "create", "update", "delete", '
+ '"add_media", "update_media", "delete_media", "delete_media_by_node", "create_from_files", "create_terms", "export_csv", "get_data_from_view", "update_terms", or "create_redirects".'
+ '"add_media", "update_media", "delete_media", "delete_media_by_node", "create_from_files", "create_terms", "export_csv", "get_data_from_view", "update_terms", "update_filenames or "create_redirects".'
)
logging.error(message)
sys.exit("Error: " + message)
Expand Down