From 3a34a94e857d923fc0a6a816bf6998deb4009764 Mon Sep 17 00:00:00 2001
From: Felix Eckhofer <felix@eckhofer.com>
Date: Sat, 4 Jan 2025 14:04:05 +0100
Subject: [PATCH] Determine id for translation angel dynamically

---
 app/jobs/pretalx/import_job.rb | 17 ++++++++++++++---
 db/schema.rb                   |  2 +-
 2 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/app/jobs/pretalx/import_job.rb b/app/jobs/pretalx/import_job.rb
index 1ddfbff..9174b94 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 8944511..d7b3f45 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
-- 
GitLab