diff --git a/app/jobs/pretalx/import_job.rb b/app/jobs/pretalx/import_job.rb index 1ddfbfffd84ec65d91a2282e8b2d4a323124c961..9174b94af3b3cf474efac887fdb26a0d7b8747f7 100644 --- a/app/jobs/pretalx/import_job.rb +++ b/app/jobs/pretalx/import_job.rb @@ -76,7 +76,15 @@ module Pretalx end def import_engelsystem_refs(conference, engelsystem_url) - return unless data = fetch_engelsystem(engelsystem_url, "angeltypes/34/shifts") + unless translation_angel_id = + fetch_engelsystem(engelsystem_url, "angeltypes") + &.find { |t| t['name'] == 'Translation Angel' } + &.dig('id') + logger.warn("Could not find angel id for 'Translation Angel' at #{engelsystem_url}") + return + end + return unless data = fetch_engelsystem(engelsystem_url, "angeltypes/#{translation_angel_id}/shifts") + shifts = data.each_with_object({}) do |shift, hash| starts_at = parse_datetime_or_nil(conference, shift['starts_at']) if hash[starts_at].nil? @@ -85,6 +93,7 @@ module Pretalx hash[starts_at].push(shift) end end + Session.joins(:conference).where(conference:).each do |session| shifts_at_time = shifts[session.starts_at - 15.minutes] unless shifts_at_time.nil? @@ -114,8 +123,10 @@ module Pretalx def fetch_engelsystem(engelsystem_url, endpoint) begin + endpoint_url = engelsystem_url + endpoint + Rails.logger.debug("Querying engelsystem API at #{endpoint_url}") response = HTTParty.get( - engelsystem_url + endpoint, + endpoint_url, headers: { 'Accept' => 'application/json', "x-api-key" => fetch_credential("engelsystem_token") @@ -124,7 +135,7 @@ module Pretalx ) return response.success? ? JSON.parse(response.body)["data"] : nil rescue => e - Rails.logger.warn("Engelsystem response for #{endpoint} failed: #{e.message}") + Rails.logger.warn("Engelsystem query for #{endpoint} failed: #{e.message}") return nil end end diff --git a/db/schema.rb b/db/schema.rb index 8944511c9f57db48ac73628823fd23ba2376910d..d7b3f45c2d393885e335e710320e3dff45d8747c 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.1].define(version: 2025_01_02_175732) do +ActiveRecord::Schema[8.0].define(version: 2025_01_02_175732) do create_table "assignments", force: :cascade do |t| t.integer "user_id", null: false t.integer "session_id", null: false