From 7f71a05b88934a57c98a1bf9765efc23e67fb32a Mon Sep 17 00:00:00 2001 From: Felix Eckhofer <felix@eckhofer.com> Date: Thu, 26 Dec 2024 13:33:45 +0100 Subject: [PATCH] Fix import logic from filedrop --- app/jobs/pretalx/import_job.rb | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/app/jobs/pretalx/import_job.rb b/app/jobs/pretalx/import_job.rb index 268289b..ff75c19 100644 --- a/app/jobs/pretalx/import_job.rb +++ b/app/jobs/pretalx/import_job.rb @@ -147,13 +147,13 @@ module Pretalx # Add or update comments data["comments"]&.each do |comment_data| session.filedrop_comments.find_or_initialize_by(body: comment_data['body']).tap do |comment| - comment.orig_created = comment_data['created'] + comment.orig_created = parse_datetime_or_nil(comment_data['meta']['created']) comment.save! end end existing_files = session.filedrop_files.pluck(:name, :checksum) - new_files = data['filedrop_files']&.pluck('name', 'hash') || [] + new_files = data['files']&.map { |d| [d['name'], d.dig('meta', 'hash')] } || [] # Remove files not in the JSON file (existing_files - new_files).each do |name, checksum| @@ -164,11 +164,17 @@ module Pretalx data['files']&.each do |file_data| session.filedrop_files.find_or_initialize_by(name: file_data['name'], checksum: file_data['meta']['hash']).tap do |file| file.size = file_data['meta']['size'] - file.orig_created = file_data['meta']['created'] + file.orig_created = parse_datetime_or_nil(file_data['meta']['created']) file.download(filedrop_config['url'] + file_data['url']) unless filedrop_config.fetch('skip_downloads', false) file.save end end end + + def parse_datetime_or_nil(datetime_string) + DateTime.iso8601(datetime_string) + rescue + nil + end end end -- GitLab