spree_cm_commissioner 2.9.4 → 2.9.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/app/controllers/concerns/spree_cm_commissioner/turnstile_protectable.rb +9 -7
- data/app/controllers/spree/api/v2/operator/event_charts_controller.rb +1 -0
- data/app/controllers/spree/api/v2/operator/guest_json_gzips_controller.rb +14 -4
- data/app/controllers/spree/api/v2/storefront/account_checker_controller.rb +4 -0
- data/app/controllers/spree/api/v2/tenant/account/orders_controller.rb +1 -1
- data/app/controllers/spree/api/v2/tenant/my_votes_controller.rb +51 -0
- data/app/controllers/spree/api/v2/tenant/show_people_controller.rb +1 -4
- data/app/controllers/spree/api/v2/tenant/show_person_assignments_controller.rb +4 -1
- data/app/controllers/spree/api/v2/tenant/voting_contestants_controller.rb +6 -2
- data/app/interactors/spree_cm_commissioner/host_matcher.rb +6 -5
- data/app/interactors/spree_cm_commissioner/turnstile_token_validator.rb +43 -13
- data/app/models/concerns/spree_cm_commissioner/event_metadata.rb +5 -0
- data/app/models/concerns/spree_cm_commissioner/order_qr_codeable.rb +39 -0
- data/app/models/concerns/spree_cm_commissioner/order_scopes.rb +5 -0
- data/app/models/spree_cm_commissioner/check_in_session.rb +36 -0
- data/app/models/spree_cm_commissioner/exports/operator_guest_json_gzip.rb +26 -1
- data/app/models/spree_cm_commissioner/guest.rb +4 -0
- data/app/models/spree_cm_commissioner/maintenance_tasks/event.rb +9 -1
- data/app/models/spree_cm_commissioner/order_decorator.rb +2 -37
- data/app/models/spree_cm_commissioner/role_decorator.rb +52 -4
- data/app/models/spree_cm_commissioner/role_user_decorator.rb +11 -0
- data/app/models/spree_cm_commissioner/show_person.rb +5 -1
- data/app/models/spree_cm_commissioner/show_person_assignment.rb +1 -1
- data/app/models/spree_cm_commissioner/taxon_decorator.rb +2 -0
- data/app/models/spree_cm_commissioner/tenant.rb +17 -6
- data/app/models/spree_cm_commissioner/user_decorator.rb +35 -0
- data/app/models/spree_cm_commissioner/voting_contestant.rb +2 -0
- data/app/queries/spree_cm_commissioner/event_chart_queries.rb +23 -7
- data/app/queries/spree_cm_commissioner/guest_searcher_query.rb +16 -3
- data/app/queries/spree_cm_commissioner/pie_chart_event_aggregator_queries.rb +1 -0
- data/app/queries/spree_cm_commissioner/user_votes_per_contestant_query.rb +48 -0
- data/app/serializers/spree/v2/tenant/my_vote_serializer.rb +19 -0
- data/app/serializers/spree/v2/tenant/show_serializer.rb +2 -1
- data/app/serializers/spree/v2/tenant/voting_contestant_serializer.rb +2 -0
- data/app/services/spree_cm_commissioner/check_ins/create_bulk.rb +10 -6
- data/app/services/spree_cm_commissioner/imports/contestants/create.rb +19 -1
- data/app/services/spree_cm_commissioner/operator_guest_json_gzips/create.rb +14 -7
- data/app/services/spree_cm_commissioner/organizer/export_guest_csv_service.rb +12 -11
- data/app/services/spree_cm_commissioner/show_contestants/normalize_video_highlights.rb +5 -1
- data/app/views/spree/admin/tenants/_form.html.erb +13 -1
- data/config/locales/en.yml +12 -7
- data/config/locales/km.yml +12 -4
- data/config/routes.rb +1 -0
- data/db/migrate/20260720000001_add_check_in_fields_to_spree_roles.rb +11 -0
- data/db/migrate/20260723000000_add_payment_host_to_cm_tenants.rb +6 -0
- data/db/migrate/20260723000001_add_metadata_to_spree_roles.rb +11 -0
- data/db/migrate/20260728074153_add_role_to_cm_exports.rb +5 -0
- data/lib/spree_cm_commissioner/test_helper/factories/vehicle_factory.rb +1 -1
- data/lib/spree_cm_commissioner/version.rb +1 -1
- metadata +10 -2
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
<% end %>
|
|
35
35
|
<% end %>
|
|
36
36
|
</div>
|
|
37
|
-
<div class="col-
|
|
37
|
+
<div class="col-6">
|
|
38
38
|
<%= f.field_container :host do %>
|
|
39
39
|
<%= f.label :host, raw(Spree.t(:host) + required_span_tag) %>
|
|
40
40
|
<%= f.text_field :host, required: true, class: 'form-control', placeholder: 'example.com' %>
|
|
@@ -43,6 +43,18 @@
|
|
|
43
43
|
<% end %>
|
|
44
44
|
<% end %>
|
|
45
45
|
</div>
|
|
46
|
+
<div class="col-6">
|
|
47
|
+
<%= f.field_container :payment_host do %>
|
|
48
|
+
<%= f.label :payment_host, raw(Spree.t(:payment_host)) %>
|
|
49
|
+
<span class="text-muted" style="font-size: 0.875rem; font-weight: normal; margin-left: 8px;">(eg. server.example.com)</span>
|
|
50
|
+
<span title="When set, this tenant's payment URLs (ABA callback + iframe pages) point directly at this host instead of routing through the tenant's client domain."
|
|
51
|
+
style="cursor: help; margin-left: 4px;">ⓘ</span>
|
|
52
|
+
<%= f.text_field :payment_host, class: 'form-control', placeholder: 'server.example.com' %>
|
|
53
|
+
<% if f.object.errors[:payment_host].any? %>
|
|
54
|
+
<div class="error text-danger"><%= f.object.errors[:payment_host].join(', ') %></div>
|
|
55
|
+
<% end %>
|
|
56
|
+
<% end %>
|
|
57
|
+
</div>
|
|
46
58
|
<div class="col-6">
|
|
47
59
|
<%= f.field_container :state do %>
|
|
48
60
|
<%= f.label :state, raw(Spree.t(:state)) %>
|
data/config/locales/en.yml
CHANGED
|
@@ -77,7 +77,11 @@ en:
|
|
|
77
77
|
action_not_matched: "Action is not matched"
|
|
78
78
|
|
|
79
79
|
turnstile:
|
|
80
|
+
token_missing: "Verification token is missing"
|
|
80
81
|
verification_failed: "Human verification failed. Please try again."
|
|
82
|
+
token_expired: "Verification expired. Please try again."
|
|
83
|
+
invalid_token: "Verification token is invalid. Please try again."
|
|
84
|
+
service_unavailable: "Verification service is temporarily unavailable. Please try again shortly."
|
|
81
85
|
|
|
82
86
|
taxon:
|
|
83
87
|
icon: Icon (Square)
|
|
@@ -244,6 +248,7 @@ en:
|
|
|
244
248
|
no_internal_note: "No note"
|
|
245
249
|
save_internal_note: "Save Note"
|
|
246
250
|
internal_note_updated: "Internal note updated"
|
|
251
|
+
payment_host: "Payment Host"
|
|
247
252
|
voting_contestant_advancer:
|
|
248
253
|
reversion_error: "Cannot eliminate here yet. This contestant appears in a later session."
|
|
249
254
|
is_open_dated: "Is Open Dated Trip?"
|
|
@@ -538,6 +543,12 @@ en:
|
|
|
538
543
|
already_checked_in: "Guest has already checked in for this session"
|
|
539
544
|
check_in_session_required: "Check-in session required"
|
|
540
545
|
check_in_session_is_not_allowed_or_invalid: "Check-in session is not allowed or invalid for this guest/ticket"
|
|
546
|
+
check_in_group_not_allowed: "This ticket is not in your check-in group"
|
|
547
|
+
order_canceled: "Cannot check in guest from a cancelled order"
|
|
548
|
+
guest_locked: "Guest is locked and cannot be checked in"
|
|
549
|
+
guest_transferred: "Guest has been transferred and cannot be checked in"
|
|
550
|
+
check_in_session:
|
|
551
|
+
end_time_after_start_time: "End time must be after start time"
|
|
541
552
|
load_test:
|
|
542
553
|
nav_label: "Load Testing"
|
|
543
554
|
back_to_load_testing: "Back to Load Testing"
|
|
@@ -671,9 +682,7 @@ en:
|
|
|
671
682
|
paid_votes_amount:
|
|
672
683
|
less_than_used: "cannot be less than paid votes used (%{used})"
|
|
673
684
|
spree_cm_commissioner/tenant:
|
|
674
|
-
|
|
675
|
-
host:
|
|
676
|
-
format: "must not include protocol (http:// or https://)"
|
|
685
|
+
format: "must not include protocol (http:// or https://)"
|
|
677
686
|
|
|
678
687
|
mail:
|
|
679
688
|
order_mailer:
|
|
@@ -907,10 +916,6 @@ en:
|
|
|
907
916
|
past_date: "Cannot redeem for a past date"
|
|
908
917
|
return_before_outbound: "Return date must be after the outbound trip date"
|
|
909
918
|
trip_not_available: "Trip is not available for redemption"
|
|
910
|
-
turnstile:
|
|
911
|
-
token_missing: "Verification token is missing"
|
|
912
|
-
verification_failed: "Human verification failed"
|
|
913
|
-
service_unavailable: "Verification service is temporarily unavailable"
|
|
914
919
|
spree_cm_commissioner:
|
|
915
920
|
draft_order:
|
|
916
921
|
line_items_missing: "Line items are missing"
|
data/config/locales/km.yml
CHANGED
|
@@ -26,6 +26,10 @@ km:
|
|
|
26
26
|
already_checked_in: "ភ្ញៀវបានចូលរួចហើយ"
|
|
27
27
|
check_in_session_required: "ត្រូវតែមានវគ្គចុះឈ្មោះចូល"
|
|
28
28
|
check_in_session_is_not_allowed_or_invalid: "វគ្គចុះឈ្មោះនេះមិនត្រឹមត្រូវ សម្រាប់ភ្ញៀវ ឬសំបុត្រនេះទេ"
|
|
29
|
+
check_in_group_not_allowed: "សំបុត្រនេះមិនស្ថិតក្នុងក្រុមចុះឈ្មោះចូលរបស់អ្នកទេ"
|
|
30
|
+
order_canceled: "មិនអាចចុះឈ្មោះចូលភ្ញៀវពីការបញ្ជាទិញដែលបានលុបចោលបានទេ"
|
|
31
|
+
guest_locked: "ភ្ញៀវត្រូវបានចាក់សោ មិនអាចចុះឈ្មោះចូលបានទេ"
|
|
32
|
+
guest_transferred: "ភ្ញៀវត្រូវបានផ្ទេរ មិនអាចចុះឈ្មោះចូលបានទេ"
|
|
29
33
|
|
|
30
34
|
sms:
|
|
31
35
|
to:
|
|
@@ -200,11 +204,14 @@ km:
|
|
|
200
204
|
riel: "៛"
|
|
201
205
|
|
|
202
206
|
spree:
|
|
207
|
+
check_in_session:
|
|
208
|
+
end_time_after_start_time: "កាលបរិច្ឆេទបញ្ចប់ត្រូវតែក្រោយកាលបរិច្ឆេទចាប់ផ្តើម"
|
|
203
209
|
internal_note: "ចំណាំផ្ទៃក្នុង"
|
|
204
210
|
add_internal_note: "បន្ថែមចំណាំ"
|
|
205
211
|
no_internal_note: "គ្មានចំណាំ"
|
|
206
212
|
save_internal_note: "រក្សាទុកចំណាំ"
|
|
207
213
|
internal_note_updated: "បានរក្សាទុកចំណាំផ្ទៃក្នុង"
|
|
214
|
+
payment_host: "ម៉ាស៊ីនមេទូទាត់ប្រាក់"
|
|
208
215
|
voting_contestant_advancer:
|
|
209
216
|
reversion_error: "មិនអាចដកចេញនៅវគ្គនេះបានទេ។ បេក្ខជននេះមាននៅវគ្គបោះឆ្នោតក្រោយ។"
|
|
210
217
|
registered_by:
|
|
@@ -441,9 +448,7 @@ km:
|
|
|
441
448
|
paid_votes_amount:
|
|
442
449
|
less_than_used: "មិនអាចតូចជាងចំនួនសំឡេងបង់ប្រាក់ដែលបានប្រើ (%{used})"
|
|
443
450
|
spree_cm_commissioner/tenant:
|
|
444
|
-
|
|
445
|
-
host:
|
|
446
|
-
format: "មិនអនុញ្ញាតឱ្យបញ្ចូលឈ្មោះដែលភ្ជាប់ជាមួយ (http:// ឬ https://)"
|
|
451
|
+
format: "មិនអនុញ្ញាតឱ្យបញ្ចូលឈ្មោះដែលភ្ជាប់ជាមួយ (http:// ឬ https://)"
|
|
447
452
|
|
|
448
453
|
mail:
|
|
449
454
|
order_mailer:
|
|
@@ -665,7 +670,10 @@ km:
|
|
|
665
670
|
|
|
666
671
|
turnstile:
|
|
667
672
|
token_missing: "សញ្ញាណផ្ទៀងផ្ទាត់គឺបាត់"
|
|
668
|
-
|
|
673
|
+
verification_failed: "ការផ្ទៀងផ្ទាត់មនុស្សបានបរាជ័យ។ សូមព្យាយាមម្តងទៀត។"
|
|
674
|
+
token_expired: "ការផ្ទៀងផ្ទាត់បានផុតកំណត់។ សូមព្យាយាមម្តងទៀត។"
|
|
675
|
+
invalid_token: "សញ្ញាណផ្ទៀងផ្ទាត់មិនត្រឹមត្រូវ។ សូមព្យាយាមម្តងទៀត។"
|
|
676
|
+
service_unavailable: "សេវាកម្មផ្ទៀងផ្ទាត់បច្ចុប្បន្នមិនអាចប្រើបានទេ។ សូមព្យាយាមម្តងទៀតក្នុងពេលឆាប់ៗនេះ។"
|
|
669
677
|
|
|
670
678
|
spree_cm_commissioner:
|
|
671
679
|
draft_order:
|
data/config/routes.rb
CHANGED
|
@@ -642,6 +642,7 @@ Spree::Core::Engine.add_routes do
|
|
|
642
642
|
resources :voting_contestants, only: :index
|
|
643
643
|
resources :voting_credits, only: :index
|
|
644
644
|
resources :votes, only: %i[create index]
|
|
645
|
+
resource :my_votes, only: :show, controller: :my_votes
|
|
645
646
|
end
|
|
646
647
|
|
|
647
648
|
resources :voting_credit_transactions, only: :index
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
class AddCheckInFieldsToSpreeRoles < ActiveRecord::Migration[7.0]
|
|
2
|
+
def change
|
|
3
|
+
# A check-in group is a Spree::Role (role_type :check_in) scoped to one event via event_id.
|
|
4
|
+
add_column :spree_roles, :event_id, :bigint, if_not_exists: true
|
|
5
|
+
add_index :spree_roles, :event_id, if_not_exists: true
|
|
6
|
+
|
|
7
|
+
# 0 = all (check in every ticket, the default), 1 = include (only the group's listed tickets),
|
|
8
|
+
# 2 = exclude (all except them).
|
|
9
|
+
add_column :spree_roles, :check_in_mode, :integer, default: 0, null: false, if_not_exists: true
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
class AddMetadataToSpreeRoles < ActiveRecord::Migration[7.0]
|
|
2
|
+
def up
|
|
3
|
+
add_column :spree_roles, :public_metadata, :jsonb, default: '{}', if_not_exists: true
|
|
4
|
+
add_column :spree_roles, :private_metadata, :jsonb, default: '{}', if_not_exists: true
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def down
|
|
8
|
+
remove_column :spree_roles, :public_metadata, if_exists: true
|
|
9
|
+
remove_column :spree_roles, :private_metadata, if_exists: true
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -3,7 +3,7 @@ FactoryBot.define do
|
|
|
3
3
|
sequence(:name) { |n| "vehicle_#{n}" }
|
|
4
4
|
sequence(:license_plate) { |n| "2KH-#{'%04d' % (n % 10000)}" }
|
|
5
5
|
kind { :air_bus }
|
|
6
|
-
|
|
6
|
+
vendor { |v| v.association(:cm_vendor) }
|
|
7
7
|
association :vehicle_type, factory: :cm_vehicle_type
|
|
8
8
|
end
|
|
9
9
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: spree_cm_commissioner
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.9.
|
|
4
|
+
version: 2.9.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- You
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-07-
|
|
11
|
+
date: 2026-07-29 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: spree
|
|
@@ -1071,6 +1071,7 @@ files:
|
|
|
1071
1071
|
- app/controllers/spree/api/v2/tenant/intercity_taxi/distance_calculator_controller.rb
|
|
1072
1072
|
- app/controllers/spree/api/v2/tenant/intercity_taxi/draft_orders_controller.rb
|
|
1073
1073
|
- app/controllers/spree/api/v2/tenant/line_items_controller.rb
|
|
1074
|
+
- app/controllers/spree/api/v2/tenant/my_votes_controller.rb
|
|
1074
1075
|
- app/controllers/spree/api/v2/tenant/notifications_controller.rb
|
|
1075
1076
|
- app/controllers/spree/api/v2/tenant/order_histories_controller.rb
|
|
1076
1077
|
- app/controllers/spree/api/v2/tenant/pin_code_checkers_controller.rb
|
|
@@ -1472,6 +1473,7 @@ files:
|
|
|
1472
1473
|
- app/models/concerns/spree_cm_commissioner/option_value_attr_type.rb
|
|
1473
1474
|
- app/models/concerns/spree_cm_commissioner/order_holdable.rb
|
|
1474
1475
|
- app/models/concerns/spree_cm_commissioner/order_integration.rb
|
|
1476
|
+
- app/models/concerns/spree_cm_commissioner/order_qr_codeable.rb
|
|
1475
1477
|
- app/models/concerns/spree_cm_commissioner/order_scopes.rb
|
|
1476
1478
|
- app/models/concerns/spree_cm_commissioner/order_state_machine.rb
|
|
1477
1479
|
- app/models/concerns/spree_cm_commissioner/parameterize_name.rb
|
|
@@ -1958,6 +1960,7 @@ files:
|
|
|
1958
1960
|
- app/queries/spree_cm_commissioner/tickets_searcher_query.rb
|
|
1959
1961
|
- app/queries/spree_cm_commissioner/trip_query.rb
|
|
1960
1962
|
- app/queries/spree_cm_commissioner/trip_seat_layout_query.rb
|
|
1963
|
+
- app/queries/spree_cm_commissioner/user_votes_per_contestant_query.rb
|
|
1961
1964
|
- app/queries/spree_cm_commissioner/users_by_event_fetcher_query.rb
|
|
1962
1965
|
- app/request_schemas/spree_cm_commissioner/accommodation_request_schema.rb
|
|
1963
1966
|
- app/request_schemas/spree_cm_commissioner/application_request_schema.rb
|
|
@@ -2040,6 +2043,7 @@ files:
|
|
|
2040
2043
|
- app/serializers/spree/v2/tenant/image_serializer.rb
|
|
2041
2044
|
- app/serializers/spree/v2/tenant/intercity_taxi_cart_serializer.rb
|
|
2042
2045
|
- app/serializers/spree/v2/tenant/line_item_serializer.rb
|
|
2046
|
+
- app/serializers/spree/v2/tenant/my_vote_serializer.rb
|
|
2043
2047
|
- app/serializers/spree/v2/tenant/notification_serializer.rb
|
|
2044
2048
|
- app/serializers/spree/v2/tenant/option_type_serializer.rb
|
|
2045
2049
|
- app/serializers/spree/v2/tenant/option_value_serializer.rb
|
|
@@ -3450,6 +3454,10 @@ files:
|
|
|
3450
3454
|
- db/migrate/20260708150000_add_name_and_short_name_to_cm_trips.rb
|
|
3451
3455
|
- db/migrate/20260713022227_add_advanced_to_episode_id_to_cm_voting_contestants.rb
|
|
3452
3456
|
- db/migrate/20260714002626_rename_data_fill_stage_phase_on_cm_guests.rb
|
|
3457
|
+
- db/migrate/20260720000001_add_check_in_fields_to_spree_roles.rb
|
|
3458
|
+
- db/migrate/20260723000000_add_payment_host_to_cm_tenants.rb
|
|
3459
|
+
- db/migrate/20260723000001_add_metadata_to_spree_roles.rb
|
|
3460
|
+
- db/migrate/20260728074153_add_role_to_cm_exports.rb
|
|
3453
3461
|
- docker-compose.yml
|
|
3454
3462
|
- docs/api/scoped-access-token-endpoints.md
|
|
3455
3463
|
- docs/option_types/attr_types.md
|