Skip to content
Snippets Groups Projects

Fixup

Merged Teal requested to merge fixup-changes into main
1 unresolved thread
9 files
+ 109
87
Compare changes
  • Side-by-side
  • Inline
Files
9
  • 149b15f6
    Fixup · 149b15f6
    Teal authored
@@ -8,6 +8,41 @@ module Pretalx
@@ -8,6 +8,41 @@ module Pretalx
queue_as :default
queue_as :default
include ActionView::Helpers
include ActionView::Helpers
 
# Class method to return required data fields
 
def self.required_data_fields
 
[ "schedule_url", "filedrop_url", "engelsystem_url", "heartbeat_url" ]
 
end
 
 
# Class method to return field metadata
 
def self.field_metadata
 
{
 
"schedule_url" => {
 
title: "Schedule URL",
 
description: "URL to the Pretalx schedule data in JSON format",
 
placeholder: "https://pretalx.com/api/events/<EVENT>/schedules/latest/",
 
required: true
 
},
 
"filedrop_url" => {
 
title: "Filedrop URL",
 
description: "URL to the filedrop service for speaker slides and materials",
 
placeholder: "https://filedrop.example.com/api/",
 
required: false
 
},
 
"engelsystem_url" => {
 
title: "Engelsystem URL",
 
description: "URL to the Engelsystem API for volunteer management",
 
placeholder: "https://engelsystem.example.com/api/",
 
required: false
 
},
 
"heartbeat_url" => {
 
title: "Heartbeat URL",
 
description: "URL to ping when the import is complete",
 
placeholder: "https://monitoring.example.com/ping/<ID>",
 
required: false
 
}
 
}
 
end
 
def import_schedule(conference)
def import_schedule(conference)
response = HTTParty.get(conference.schedule_url)
response = HTTParty.get(conference.schedule_url)
response.success? or return Rails.logger.error "Failed to fetch schedule from #{conference.schedule_url}"
response.success? or return Rails.logger.error "Failed to fetch schedule from #{conference.schedule_url}"
@@ -62,7 +97,10 @@ module Pretalx
@@ -62,7 +97,10 @@ module Pretalx
end
end
end
end
session.recorded = !session_data.fetch("do_not_record", false)
session.recorded = !session_data.fetch("do_not_record", false)
update_filedrop_data(session, filedrop_index[session.ref_id], conference.filedrop_url) if filedrop_index[session.ref_id]
if filedrop_index[session.ref_id]
 
update_filedrop_data(session, filedrop_index[session.ref_id],
 
conference.filedrop_url)
 
end
session.save!
session.save!
end
end
end
end
@@ -97,6 +135,7 @@ module Pretalx
@@ -97,6 +135,7 @@ module Pretalx
shifts_at_time.each do |shift|
shifts_at_time.each do |shift|
next unless session.stage.name == shift.dig("location", "name")
next unless session.stage.name == shift.dig("location", "name")
 
session.engelsystem_id = shift["id"]
session.engelsystem_id = shift["id"]
session.engelsystem_url = shift["url"]
session.engelsystem_url = shift["url"]
session.save
session.save
@@ -129,13 +168,13 @@ module Pretalx
@@ -129,13 +168,13 @@ module Pretalx
},
},
headers: { "Accept" => "application/json" },
headers: { "Accept" => "application/json" },
timeout: 30
timeout: 30
)
)
data = JSON.parse(response.body)
data = JSON.parse(response.body)
rescue StandardError => e
rescue StandardError => e
Rails.logger.warn("Filedrop response for #{session.ref_id} failed: #{e.message}")
Rails.logger.warn("Filedrop response for #{session.ref_id} failed: #{e.message}")
return {}
return {}
end
end
if !data["talks"].is_a?(Array)
unless data["talks"].is_a?(Array)
Rails.logger.warn("Filedrop index was incomplete")
Rails.logger.warn("Filedrop index was incomplete")
return {}
return {}
end
end
@@ -172,7 +211,8 @@ module Pretalx
@@ -172,7 +211,8 @@ module Pretalx
# Add or update files
# Add or update files
filedrop_data["files"]&.each do |file_data|
filedrop_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|
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.size = file_data["meta"]["size"]
file.orig_created = parse_datetime_or_nil(session.conference, file_data["meta"]["created"])
file.orig_created = parse_datetime_or_nil(session.conference, file_data["meta"]["created"])
if file_data["url"].blank?
if file_data["url"].blank?
Loading