From 2e2f3d9a7a22867fbec6b17b10663680fac14aa0 Mon Sep 17 00:00:00 2001 From: lodewiges Date: Mon, 14 Oct 2024 18:40:39 +0200 Subject: [PATCH 01/14] changed name dinsdag kring and remove woensdag kring --- app/models/activity.rb | 2 +- spec/factories/activities.rb | 2 +- spec/models/activity_spec.rb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/models/activity.rb b/app/models/activity.rb index 0bf89606..5b726587 100644 --- a/app/models/activity.rb +++ b/app/models/activity.rb @@ -33,7 +33,7 @@ class Activity < ApplicationRecord after_save :copy_author_and_group_to_form! def self.categories - %w[algemeen societeit vorming dinsdagkring woensdagkring + %w[algemeen societeit vorming kring choose ifes ozon disputen kiemgroepen huizen extern eerstejaars curiositates] end diff --git a/spec/factories/activities.rb b/spec/factories/activities.rb index 5b1c464c..4f994c43 100644 --- a/spec/factories/activities.rb +++ b/spec/factories/activities.rb @@ -10,7 +10,7 @@ start_time { Faker::Time.between(from: 1.day.ago, to: Time.zone.today) } end_time { Faker::Time.between(from: 1.day.from_now, to: 2.days.from_now) } category do - %w[algemeen societeit vorming dinsdagkring woensdagkring + %w[algemeen societeit vorming kring choose ifes ozon disputen kiemgroepen huizen extern eerstejaars curiositates].sample end publicly_visible { false } diff --git a/spec/models/activity_spec.rb b/spec/models/activity_spec.rb index 35c803de..8b242feb 100644 --- a/spec/models/activity_spec.rb +++ b/spec/models/activity_spec.rb @@ -179,7 +179,7 @@ context 'when it is another category' do let(:record) do build_stubbed(:activity, - category: %w[algemeen sociëteit vorming dinsdagkring woensdagkring + category: %w[algemeen sociëteit vorming kring disputen kiemgroepen huizen extern curiositates].sample) end From 98e5d2915e89339462dfb736dea33632dedc2bfa Mon Sep 17 00:00:00 2001 From: lodewiges Date: Tue, 15 Oct 2024 00:33:26 +0200 Subject: [PATCH 02/14] fixed lint --- app/models/activity.rb | 2 +- spec/factories/activities.rb | 2 +- spec/models/activity_spec.rb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/models/activity.rb b/app/models/activity.rb index 5b726587..ef465109 100644 --- a/app/models/activity.rb +++ b/app/models/activity.rb @@ -33,7 +33,7 @@ class Activity < ApplicationRecord after_save :copy_author_and_group_to_form! def self.categories - %w[algemeen societeit vorming kring + %w[algemeen societeit vorming kring choose ifes ozon disputen kiemgroepen huizen extern eerstejaars curiositates] end diff --git a/spec/factories/activities.rb b/spec/factories/activities.rb index 4f994c43..cd6ebeb2 100644 --- a/spec/factories/activities.rb +++ b/spec/factories/activities.rb @@ -10,7 +10,7 @@ start_time { Faker::Time.between(from: 1.day.ago, to: Time.zone.today) } end_time { Faker::Time.between(from: 1.day.from_now, to: 2.days.from_now) } category do - %w[algemeen societeit vorming kring + %w[algemeen societeit vorming kring choose ifes ozon disputen kiemgroepen huizen extern eerstejaars curiositates].sample end publicly_visible { false } diff --git a/spec/models/activity_spec.rb b/spec/models/activity_spec.rb index 8b242feb..6c0f0d47 100644 --- a/spec/models/activity_spec.rb +++ b/spec/models/activity_spec.rb @@ -179,7 +179,7 @@ context 'when it is another category' do let(:record) do build_stubbed(:activity, - category: %w[algemeen sociëteit vorming kring + category: %w[algemeen sociëteit vorming kring disputen kiemgroepen huizen extern curiositates].sample) end From 1acc0860a9cbc890f17710389b2550a967f72175 Mon Sep 17 00:00:00 2001 From: Jorai Geertsema Date: Wed, 13 Nov 2024 11:57:05 +0100 Subject: [PATCH 03/14] Made migration --- ...41113104056_simplyfing_calender_options.rb | 6 +++++ db/schema.rb | 25 +++++++++---------- 2 files changed, 18 insertions(+), 13 deletions(-) create mode 100644 db/migrate/20241113104056_simplyfing_calender_options.rb diff --git a/db/migrate/20241113104056_simplyfing_calender_options.rb b/db/migrate/20241113104056_simplyfing_calender_options.rb new file mode 100644 index 00000000..7cb49654 --- /dev/null +++ b/db/migrate/20241113104056_simplyfing_calender_options.rb @@ -0,0 +1,6 @@ +class SimplyfingCalenderOptions < ActiveRecord::Migration[7.0] + def change + Activity.where(category: 'dinsdagkring').update_all(category: 'kring') + Activity.where(category: 'woensdagkring').update_all(category: 'kring') + end +end diff --git a/db/schema.rb b/db/schema.rb index 3cb6bb07..fb1dec2c 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.0].define(version: 2024_03_28_205012) do +ActiveRecord::Schema[7.0].define(version: 2024_11_13_104056) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -475,22 +475,10 @@ t.index ["form_id"], name: "index_polls_on_form_id" end - create_table "quickpost_messages", id: :serial, force: :cascade do |t| - t.integer "author_id" - t.text "message" - t.datetime "created_at", precision: nil, null: false - t.datetime "updated_at", precision: nil, null: false - t.datetime "deleted_at", precision: nil - t.datetime "datetime", precision: nil - t.index ["datetime"], name: "index_quickpost_messages_on_datetime" - t.index ["deleted_at"], name: "index_quickpost_messages_on_deleted_at" - end - create_table "room_adverts", force: :cascade do |t| t.string "house_name", null: false t.string "contact", null: false t.string "location" - t.string "available_from" t.string "description", null: false t.string "cover_photo" t.boolean "publicly_visible" @@ -498,6 +486,7 @@ t.datetime "deleted_at" t.datetime "created_at", null: false t.datetime "updated_at", null: false + t.date "available_from", null: false end create_table "static_pages", id: :serial, force: :cascade do |t| @@ -523,6 +512,16 @@ t.index ["mail_alias_id"], name: "index_stored_mails_on_mail_alias_id" end + create_table "study_room_presences", force: :cascade do |t| + t.datetime "start_time", null: false + t.datetime "end_time", null: false + t.text "status", null: false + t.integer "user_id", null: false + t.datetime "deleted_at" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + create_table "users", id: :serial, force: :cascade do |t| t.string "email" t.string "username" From 787cb7589397d5508dbaa42d5a6b400837aaf377 Mon Sep 17 00:00:00 2001 From: lodewiges <131907615+lodewiges@users.noreply.github.com> Date: Wed, 13 Nov 2024 14:08:48 +0100 Subject: [PATCH 04/14] added quickpost to schema.rb --- db/schema.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/db/schema.rb b/db/schema.rb index c37d2fec..6dd027c2 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -473,6 +473,17 @@ t.index ["author_id"], name: "index_polls_on_author_id" t.index ["form_id"], name: "index_polls_on_form_id" end + + create_table "quickpost_messages", id: :serial, force: :cascade do |t| + t.integer "author_id" + t.text "message" + t.datetime "created_at", precision: nil, null: false + t.datetime "updated_at", precision: nil, null: false + t.datetime "deleted_at", precision: nil + t.datetime "datetime", precision: nil + t.index ["datetime"], name: "index_quickpost_messages_on_datetime" + t.index ["deleted_at"], name: "index_quickpost_messages_on_deleted_at" + end create_table "room_adverts", force: :cascade do |t| t.string "house_name", null: false From 36b562059c04a07b2a1c2fd9559f4fb95e8dc810 Mon Sep 17 00:00:00 2001 From: lodewiges <131907615+lodewiges@users.noreply.github.com> Date: Wed, 13 Nov 2024 14:09:32 +0100 Subject: [PATCH 05/14] Fixed Lint --- db/schema.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/schema.rb b/db/schema.rb index 6dd027c2..ce28ee93 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -474,7 +474,7 @@ t.index ["form_id"], name: "index_polls_on_form_id" end - create_table "quickpost_messages", id: :serial, force: :cascade do |t| + create_table "quickpost_messages", id: :serial, force: :cascade do |t| t.integer "author_id" t.text "message" t.datetime "created_at", precision: nil, null: false From d9a6ea5581ab8d9217cf2c1e177f7befa1330118 Mon Sep 17 00:00:00 2001 From: Jorai Geertsema Date: Wed, 13 Nov 2024 15:33:50 +0100 Subject: [PATCH 06/14] Rewrote migration --- ...0241113104056_simplyfing_calender_options.rb | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/db/migrate/20241113104056_simplyfing_calender_options.rb b/db/migrate/20241113104056_simplyfing_calender_options.rb index 7cb49654..50f4ef25 100644 --- a/db/migrate/20241113104056_simplyfing_calender_options.rb +++ b/db/migrate/20241113104056_simplyfing_calender_options.rb @@ -1,6 +1,17 @@ class SimplyfingCalenderOptions < ActiveRecord::Migration[7.0] - def change - Activity.where(category: 'dinsdagkring').update_all(category: 'kring') - Activity.where(category: 'woensdagkring').update_all(category: 'kring') + def up + Activity.where(category: 'dinsdagkring').find_each do |activity| + activity.update(category: 'kring') + end + + Activity.where(category: 'woensdagkring').find_each do |activity| + activity.update(category: 'kring') + end + end + + def down + Activity.where(category: 'kring').find_each do |activity| + activity.update(category: 'dinsdagkring') + end end end From 2d69b0d7ce6514b451f9befbd88ecbc9aa7a09f4 Mon Sep 17 00:00:00 2001 From: Jorai Geertsema Date: Mon, 24 Feb 2025 10:22:36 +0100 Subject: [PATCH 07/14] Trying to store catogories on the users table --- app/controllers/v1/activities_controller.rb | 2 +- app/controllers/v1/users_controller.rb | 2 +- app/resources/v1/user_resource.rb | 8 ++++---- db/migrate/20241113104056_simplyfing_calender_options.rb | 2 ++ db/schema.rb | 2 ++ 5 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/controllers/v1/activities_controller.rb b/app/controllers/v1/activities_controller.rb index d4dcdc44..53f43cd5 100644 --- a/app/controllers/v1/activities_controller.rb +++ b/app/controllers/v1/activities_controller.rb @@ -21,7 +21,7 @@ def generate_alias def ical # rubocop:disable Metrics/AbcSize, Metrics/MethodLength return head :unauthorized unless authenticate_user_by_ical_secret_key - requested_categories = params[:categories].try(:split, ',') + requested_categories = User.find_by(id: params[:user_id]).ical_categories permitted_categories = (requested_categories & Activity.categories) || Activity.categories diff --git a/app/controllers/v1/users_controller.rb b/app/controllers/v1/users_controller.rb index 2b208420..272b6224 100644 --- a/app/controllers/v1/users_controller.rb +++ b/app/controllers/v1/users_controller.rb @@ -118,7 +118,7 @@ def context def excluded_display_properties %i[created_at updated_at deleted_at activated_at archived_at password_digest activation_token avatar activation_token_valid_till sidekiq_access otp_secret_key otp_required - ical_secret_key id] + ical_secret_key ical_categories id] end def otp_already_required_error diff --git a/app/resources/v1/user_resource.rb b/app/resources/v1/user_resource.rb index bef3359f..64fb4565 100644 --- a/app/resources/v1/user_resource.rb +++ b/app/resources/v1/user_resource.rb @@ -6,7 +6,7 @@ class V1::UserResource < V1::ApplicationResource # rubocop:disable Metrics/Class :phone_number, :food_preferences, :vegetarian, :study, :start_study, :picture_publication_preference, :ical_secret_key, :webdav_secret_key, :password, :avatar, :avatar_url, :avatar_thumb_url, - :user_details_sharing_preference, :allow_tomato_sharing + :user_details_sharing_preference, :allow_tomato_sharing, :ical_categories def avatar_url @model.avatar.url @@ -52,12 +52,12 @@ def fetchable_fields # Relationships allowed_keys += %i[groups active_groups memberships mail_aliases mandates group_mail_aliases permissions photos user_permissions] - allowed_keys += %i[ical_secret_key webdav_secret_key] if me? + allowed_keys += %i[ical_secret_key ical_categories webdav_secret_key] if me? if update_or_me? allowed_keys += %i[login_enabled otp_required activated_at emergency_contact emergency_number ifes_data_sharing_preference info_in_almanak almanak_subscription_preference digtus_subscription_preference - user_details_sharing_preference allow_tomato_sharing] + user_details_sharing_preference allow_tomato_sharing ical_secret_key] end allowed_keys += %i[picture_publication_preference] if read_or_me? if read_user_details? && !application_is_tomato? @@ -78,7 +78,7 @@ def self.creatable_fields(context) # rubocop:disable Metrics/MethodLength attributes += %i[otp_required password user_details_sharing_preference allow_tomato_sharing picture_publication_preference info_in_almanak - ifes_data_sharing_preference] + ifes_data_sharing_preference ical_secret_key] end if user_can_create_or_update?(context) diff --git a/db/migrate/20241113104056_simplyfing_calender_options.rb b/db/migrate/20241113104056_simplyfing_calender_options.rb index 50f4ef25..89b350c1 100644 --- a/db/migrate/20241113104056_simplyfing_calender_options.rb +++ b/db/migrate/20241113104056_simplyfing_calender_options.rb @@ -1,5 +1,6 @@ class SimplyfingCalenderOptions < ActiveRecord::Migration[7.0] def up + add_column :users, :ical_categories, :string, array: true, default: [] Activity.where(category: 'dinsdagkring').find_each do |activity| activity.update(category: 'kring') end @@ -10,6 +11,7 @@ def up end def down + remove_column :users, :ical_categories Activity.where(category: 'kring').find_each do |activity| activity.update(category: 'dinsdagkring') end diff --git a/db/schema.rb b/db/schema.rb index c37d2fec..1a4b299b 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -9,6 +9,7 @@ # migrations use external dependencies or application code. # # It's strongly recommended that you check this file into your version control system. + ActiveRecord::Schema[7.0].define(version: 2024_11_13_104056) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -560,6 +561,7 @@ t.boolean "allow_tomato_sharing" t.string "webdav_secret_key" t.string "nickname" + t.string "ical_categories", default: [], array: true t.index ["deleted_at"], name: "index_users_on_deleted_at" t.index ["email"], name: "index_users_on_email", unique: true t.index ["login_enabled"], name: "index_users_on_login_enabled" From 9b1f834b8e86ef57b10be8be851aafde8fac586e Mon Sep 17 00:00:00 2001 From: Lodewiges Date: Mon, 3 Nov 2025 21:34:21 +0100 Subject: [PATCH 08/14] add genootschapen --- app/models/activity.rb | 2 +- spec/factories/activities.rb | 2 +- spec/models/activity_spec.rb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/models/activity.rb b/app/models/activity.rb index 3ecf032a..083d59e2 100644 --- a/app/models/activity.rb +++ b/app/models/activity.rb @@ -35,7 +35,7 @@ class Activity < ApplicationRecord def self.categories %w[algemeen societeit vorming kring - choose ifes ozon disputen kiemgroepen huizen extern eerstejaars curiositates] + choose ifes ozon disputen genootschapen huizen extern eerstejaars] end def full_day? diff --git a/spec/factories/activities.rb b/spec/factories/activities.rb index 0fdb110b..63692b97 100644 --- a/spec/factories/activities.rb +++ b/spec/factories/activities.rb @@ -11,7 +11,7 @@ end_time { Faker::Time.between(from: 1.day.from_now, to: 2.days.from_now) } category do %w[algemeen societeit vorming kring - choose ifes ozon disputen kiemgroepen huizen extern eerstejaars curiositates].sample + choose ifes ozon disputen genootschapen huizen extern eerstejaars].sample end publicly_visible { false } diff --git a/spec/models/activity_spec.rb b/spec/models/activity_spec.rb index 2edbad0d..10cf9d45 100644 --- a/spec/models/activity_spec.rb +++ b/spec/models/activity_spec.rb @@ -180,7 +180,7 @@ let(:record) do build_stubbed(:activity, category: %w[algemeen sociëteit vorming kring - disputen kiemgroepen huizen extern curiositates].sample) + disputen genootschapen huizen extern].sample) end it { expect(record.humanized_category).to eq record.category.capitalize } From f7796437bf4d827fd0b39d3ad106f28c996608b4 Mon Sep 17 00:00:00 2001 From: Lodewiges Date: Mon, 3 Nov 2025 21:46:42 +0100 Subject: [PATCH 09/14] fix comma missing --- app/resources/v1/user_resource.rb | 2 +- db/schema.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/resources/v1/user_resource.rb b/app/resources/v1/user_resource.rb index ea8218b3..706e0a71 100644 --- a/app/resources/v1/user_resource.rb +++ b/app/resources/v1/user_resource.rb @@ -4,7 +4,7 @@ class V1::UserResource < V1::ApplicationResource # rubocop:disable Metrics/Class :ifes_data_sharing_preference, :info_in_almanak, :almanak_subscription_preference, :digtus_subscription_preference, :email, :birthday, :address, :postcode, :city, :phone_number, :food_preferences, :vegetarian, :study, :start_study, - :picture_publication_preference, :ical_secret_key, :ical_categories + :picture_publication_preference, :ical_secret_key, :ical_categories, :password, :avatar, :avatar_url, :avatar_thumb_url, :user_details_sharing_preference, :allow_sofia_sharing, :trailer_drivers_license, :sidekiq_access, :setup_complete diff --git a/db/schema.rb b/db/schema.rb index 8408f336..eb4c99d8 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -560,9 +560,9 @@ t.string "user_details_sharing_preference" t.boolean "allow_sofia_sharing", default: false, null: false t.string "nickname" - t.string "ical_categories", default: [], array: true t.boolean "trailer_drivers_license", default: false, null: false t.boolean "setup_complete", default: false, null: false + t.string "ical_categories", default: [], array: true t.index ["deleted_at"], name: "index_users_on_deleted_at" t.index ["email"], name: "index_users_on_email", unique: true t.index ["login_enabled"], name: "index_users_on_login_enabled" From 9405292ac2417e19c58abee3ecd37ae051e10315 Mon Sep 17 00:00:00 2001 From: Lodewiges Date: Mon, 3 Nov 2025 22:18:38 +0100 Subject: [PATCH 10/14] fix so small inconsisties --- app/controllers/v1/activities_controller.rb | 2 +- app/resources/v1/user_resource.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/v1/activities_controller.rb b/app/controllers/v1/activities_controller.rb index 53f43cd5..cb704358 100644 --- a/app/controllers/v1/activities_controller.rb +++ b/app/controllers/v1/activities_controller.rb @@ -21,7 +21,7 @@ def generate_alias def ical # rubocop:disable Metrics/AbcSize, Metrics/MethodLength return head :unauthorized unless authenticate_user_by_ical_secret_key - requested_categories = User.find_by(id: params[:user_id]).ical_categories + requested_categories = @user.ical_categories permitted_categories = (requested_categories & Activity.categories) || Activity.categories diff --git a/app/resources/v1/user_resource.rb b/app/resources/v1/user_resource.rb index 706e0a71..99ef3b69 100644 --- a/app/resources/v1/user_resource.rb +++ b/app/resources/v1/user_resource.rb @@ -51,13 +51,13 @@ def fetchable_fields # Relationships allowed_keys += %i[groups active_groups memberships mail_aliases mandates group_mail_aliases permissions photos user_permissions] - + # Ical fields allowed_keys += %i[ical_secret_key ical_categories] if me? if update_or_me? allowed_keys += %i[login_enabled otp_required activated_at emergency_contact emergency_number ifes_data_sharing_preference info_in_almanak almanak_subscription_preference digtus_subscription_preference - user_details_sharing_preference allow_sofia_sharing ical_secret_key + user_details_sharing_preference allow_sofia_sharing sidekiq_access setup_complete] end allowed_keys += %i[picture_publication_preference] if read_or_me? From 3d557c7a2f746cc6ae5623011eced290999805d1 Mon Sep 17 00:00:00 2001 From: Lodewiges Date: Tue, 4 Nov 2025 00:01:56 +0100 Subject: [PATCH 11/14] Write logic to automatilly store categories requested --- app/controllers/v1/activities_controller.rb | 19 +++++++++++++++---- app/resources/v1/user_resource.rb | 4 ++-- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/app/controllers/v1/activities_controller.rb b/app/controllers/v1/activities_controller.rb index cb704358..8073e29b 100644 --- a/app/controllers/v1/activities_controller.rb +++ b/app/controllers/v1/activities_controller.rb @@ -21,10 +21,21 @@ def generate_alias def ical # rubocop:disable Metrics/AbcSize, Metrics/MethodLength return head :unauthorized unless authenticate_user_by_ical_secret_key - requested_categories = @user.ical_categories - - permitted_categories = (requested_categories & Activity.categories) || - Activity.categories + stored_categories = @user.ical_categories + + requested_categories = params[:categories]&.split(',') + + permitted_categories = [] + + if stored_categories.empty? && requested_categories.present? # this logic is only to store preferences on first use. this makes it so the end user doesn't notice the change + new_categories_to_store = requested_categories & Activity.categories + @user.update(ical_categories: new_categories_to_store) + permitted_categories = new_categories_to_store + else + permitted_categories = stored_categories & Activity.categories + end + permitted_categories = Activity.categories if permitted_categories.empty? + activities_for_ical(permitted_categories).each do |act| calendar.add_event(act.to_ical) end diff --git a/app/resources/v1/user_resource.rb b/app/resources/v1/user_resource.rb index 99ef3b69..68bb1ace 100644 --- a/app/resources/v1/user_resource.rb +++ b/app/resources/v1/user_resource.rb @@ -79,8 +79,8 @@ def self.creatable_fields(context) # rubocop:disable Metrics/MethodLength attributes += %i[otp_required password user_details_sharing_preference allow_sofia_sharing picture_publication_preference info_in_almanak - ifes_data_sharing_preference ical_secret_key sidekiq_access - setup_complete] + ifes_data_sharing_preference ical_secret_key ical_categories + sidekiq_access setup_complete] end if user_can_create_or_update?(context) From bd9f04ee12b749f9bf6c2488bd6b222ade492808 Mon Sep 17 00:00:00 2001 From: Lodewiges Date: Tue, 4 Nov 2025 00:32:24 +0100 Subject: [PATCH 12/14] fix test & lint --- app/controllers/v1/activities_controller.rb | 9 +++++---- app/resources/v1/user_resource.rb | 4 ++-- spec/resources/v1/user_resource_spec.rb | 6 +++--- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/app/controllers/v1/activities_controller.rb b/app/controllers/v1/activities_controller.rb index 8073e29b..23da6192 100644 --- a/app/controllers/v1/activities_controller.rb +++ b/app/controllers/v1/activities_controller.rb @@ -18,16 +18,17 @@ def generate_alias render json: alias_response("#{mail_alias}@csvalpha.nl") end - def ical # rubocop:disable Metrics/AbcSize, Metrics/MethodLength + def ical # rubocop:disable Metrics/AbcSize, Metrics/MethodLength, Metrics/PerceivedComplexity, Metrics/CyclomaticComplexity return head :unauthorized unless authenticate_user_by_ical_secret_key stored_categories = @user.ical_categories - + requested_categories = params[:categories]&.split(',') permitted_categories = [] - if stored_categories.empty? && requested_categories.present? # this logic is only to store preferences on first use. this makes it so the end user doesn't notice the change + if stored_categories.empty? && requested_categories.present? + # this logic is only to store preferences on first use. this makes it so the end user doesn't notice the change new_categories_to_store = requested_categories & Activity.categories @user.update(ical_categories: new_categories_to_store) permitted_categories = new_categories_to_store @@ -35,7 +36,7 @@ def ical # rubocop:disable Metrics/AbcSize, Metrics/MethodLength permitted_categories = stored_categories & Activity.categories end permitted_categories = Activity.categories if permitted_categories.empty? - + activities_for_ical(permitted_categories).each do |act| calendar.add_event(act.to_ical) end diff --git a/app/resources/v1/user_resource.rb b/app/resources/v1/user_resource.rb index 68bb1ace..cc5dc867 100644 --- a/app/resources/v1/user_resource.rb +++ b/app/resources/v1/user_resource.rb @@ -79,8 +79,8 @@ def self.creatable_fields(context) # rubocop:disable Metrics/MethodLength attributes += %i[otp_required password user_details_sharing_preference allow_sofia_sharing picture_publication_preference info_in_almanak - ifes_data_sharing_preference ical_secret_key ical_categories - sidekiq_access setup_complete] + ifes_data_sharing_preference ical_categories sidekiq_access + setup_complete] end if user_can_create_or_update?(context) diff --git a/spec/resources/v1/user_resource_spec.rb b/spec/resources/v1/user_resource_spec.rb index 2dd32966..3b3bb74b 100644 --- a/spec/resources/v1/user_resource_spec.rb +++ b/spec/resources/v1/user_resource_spec.rb @@ -99,7 +99,7 @@ let(:another_user) { user } let(:fields) do basic_fields + update_fields + - read_fields + user_details_fields + %i[ical_secret_key] + read_fields + user_details_fields + %i[ical_secret_key ical_categories] end it { expect(resource.fetchable_fields).to match_array(fields) } @@ -155,7 +155,7 @@ context 'when record is current user' do let(:another_user) { user } - it { expect(creatable_fields).to match_array(basic_fields + current_user_fields) } + it { expect(creatable_fields).to match_array(basic_fields + current_user_fields + %i[ical_categories]) } end context 'when with create permisison' do @@ -170,7 +170,7 @@ it { expect(creatable_fields).to match_array(basic_fields + permissible_fields + - current_user_fields - [:login_enabled]) + current_user_fields - [:login_enabled] + %i[ical_categories]) } end end From 3a95ea5b0f00dbe4aaddf5f7d260c63fc50fb6ce Mon Sep 17 00:00:00 2001 From: Lodewiges Date: Tue, 4 Nov 2025 00:47:56 +0100 Subject: [PATCH 13/14] rewrote migration --- ...41113104056_simplyfing_calender_options.rb | 19 ------------------- ...51103104056_simplyfing_calender_options.rb | 17 +++++++++++++++++ db/schema.rb | 2 +- 3 files changed, 18 insertions(+), 20 deletions(-) delete mode 100644 db/migrate/20241113104056_simplyfing_calender_options.rb create mode 100644 db/migrate/20251103104056_simplyfing_calender_options.rb diff --git a/db/migrate/20241113104056_simplyfing_calender_options.rb b/db/migrate/20241113104056_simplyfing_calender_options.rb deleted file mode 100644 index 89b350c1..00000000 --- a/db/migrate/20241113104056_simplyfing_calender_options.rb +++ /dev/null @@ -1,19 +0,0 @@ -class SimplyfingCalenderOptions < ActiveRecord::Migration[7.0] - def up - add_column :users, :ical_categories, :string, array: true, default: [] - Activity.where(category: 'dinsdagkring').find_each do |activity| - activity.update(category: 'kring') - end - - Activity.where(category: 'woensdagkring').find_each do |activity| - activity.update(category: 'kring') - end - end - - def down - remove_column :users, :ical_categories - Activity.where(category: 'kring').find_each do |activity| - activity.update(category: 'dinsdagkring') - end - end -end diff --git a/db/migrate/20251103104056_simplyfing_calender_options.rb b/db/migrate/20251103104056_simplyfing_calender_options.rb new file mode 100644 index 00000000..8b4dae80 --- /dev/null +++ b/db/migrate/20251103104056_simplyfing_calender_options.rb @@ -0,0 +1,17 @@ +class SimplyfingCalenderOptions < ActiveRecord::Migration[7.0] + def up + add_column :users, :ical_categories, :string, array: true, default: [] + Activity.where(category: 'dinsdagkring').update_all(category: 'kring') + Activity.where(category: 'woensdagkring').update_all(category: 'kring') + Activity.where(category: 'kiemgroepen').update_all(category: 'algemeen') + Activity.where(category: 'curiositates').update_all(category: 'algemeen') + end + + def down + remove_column :users, :ical_categories + Activity.where(category: 'kring').update_all(category: 'dinsdagkring') + # Note: As mentioned before, reverting 'algemeen' to 'kiamgroepen' or 'curiocitas' + # cannot be done reliably with `update_all` without additional information. + # The `down` migration here only addresses the 'kring' category. + end +end \ No newline at end of file diff --git a/db/schema.rb b/db/schema.rb index eb4c99d8..1812a52a 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_03_10_235232) do +ActiveRecord::Schema[7.1].define(version: 2025_11_03_104056) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" From 23db7588a9e2508dfbc3955a63c8120de5080c19 Mon Sep 17 00:00:00 2001 From: Lodewiges Date: Tue, 4 Nov 2025 00:54:51 +0100 Subject: [PATCH 14/14] fix lint --- Gemfile.lock | 12 ++++++------ app/controllers/v1/activities_controller.rb | 2 +- .../20251103104056_simplyfing_calender_options.rb | 8 +++++--- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index b6d7aea8..92b1ce52 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -129,7 +129,7 @@ GEM bigdecimal rexml crass (1.0.6) - csv (3.3.4) + csv (3.3.5) date (3.4.1) date (3.4.1-java) debug_inspector (1.2.0) @@ -511,7 +511,7 @@ GEM logger rack (>= 2.2.4) redis-client (>= 0.22.2) - sidekiq-scheduler (6.0.0) + sidekiq-scheduler (6.0.1) rufus-scheduler (~> 3.2) sidekiq (>= 7.3, < 9) simplecov (0.22.0) @@ -579,7 +579,7 @@ DEPENDENCIES binding_of_caller (~> 1.0, >= 1.0.1) bootsnap (~> 1.18, >= 1.18.6) brakeman (~> 7.0, >= 7.0.2) - bullet (~> 8.0, >= 8.0.7) + bullet (~> 8.0, >= 8.0.8) carrierwave (~> 3.1, >= 3.1.2) carrierwave-base64 (~> 2.11) carrierwave-bombshelter (~> 0.2, >= 0.2.2) @@ -587,7 +587,7 @@ DEPENDENCIES colorize (~> 1.1) consistency_fail counter_culture (~> 3.10, >= 3.10.1) - csv (~> 3.3, >= 3.3.4) + csv (~> 3.3, >= 3.3.5) doorkeeper (~> 5.8, >= 5.8.2) doorkeeper-i18n (~> 5.2, >= 5.2.7) dotenv-rails (~> 3.1, >= 3.1.8) @@ -625,7 +625,7 @@ DEPENDENCIES redis (~> 5.4) roo (~> 2.10, >= 2.10.1) rspec-rails (~> 8.0) - rubocop (~> 1.75, >= 1.75.6) + rubocop (~> 1.75, >= 1.75.8) rubocop-factory_bot (~> 2.27, >= 2.27.1) rubocop-performance (~> 1.25) rubocop-rails (~> 2.32) @@ -638,7 +638,7 @@ DEPENDENCIES sentry-sidekiq (~> 5.24) sepa_king (~> 0.14) sidekiq (~> 7.3, >= 7.3.9) - sidekiq-scheduler (~> 6.0) + sidekiq-scheduler (~> 6.0, >= 6.0.1) simplecov (~> 0.22) simplecov-lcov (~> 0.8) spring (~> 4.3) diff --git a/app/controllers/v1/activities_controller.rb b/app/controllers/v1/activities_controller.rb index 62122483..b51904d5 100644 --- a/app/controllers/v1/activities_controller.rb +++ b/app/controllers/v1/activities_controller.rb @@ -27,7 +27,7 @@ def ical # rubocop:disable Metrics/AbcSize, Metrics/MethodLength, Metrics/Percei permitted_categories = [] - if stored_categories.empty? && requested_categories.present? + if stored_categories.empty? && requested_categories.present? # this logic is only to store preferences on first use. this makes it so the end user doesn't notice the change new_categories_to_store = requested_categories & Activity.categories @user.update(ical_categories: new_categories_to_store) diff --git a/db/migrate/20251103104056_simplyfing_calender_options.rb b/db/migrate/20251103104056_simplyfing_calender_options.rb index 8b4dae80..4a5207ab 100644 --- a/db/migrate/20251103104056_simplyfing_calender_options.rb +++ b/db/migrate/20251103104056_simplyfing_calender_options.rb @@ -1,4 +1,5 @@ -class SimplyfingCalenderOptions < ActiveRecord::Migration[7.0] +class SimplyfingCalenderOptions < ActiveRecord::Migration[7.2] + # rubocop:disable Rails/SkipsModelValidations def up add_column :users, :ical_categories, :string, array: true, default: [] Activity.where(category: 'dinsdagkring').update_all(category: 'kring') @@ -10,8 +11,9 @@ def up def down remove_column :users, :ical_categories Activity.where(category: 'kring').update_all(category: 'dinsdagkring') - # Note: As mentioned before, reverting 'algemeen' to 'kiamgroepen' or 'curiocitas' + # NOTE: As mentioned before, reverting 'algemeen' to 'kiemgroepen' or 'curiositates' # cannot be done reliably with `update_all` without additional information. # The `down` migration here only addresses the 'kring' category. end -end \ No newline at end of file + # rubocop:enable Rails/SkipsModelValidations +end