Image uploads in wizard fields for topic creation don't make it into topic

Environment

Discourse Version: v3.5.0.beta1

Plugin Commit: ce8ec8e5

Steps to Reproduce

Image upload field added to a step in custom wizard - action: create topic on wizard completion - title set to wizard field topic title - post set to image upload (step_1_field_2). When filling out the wizard, image is uploaded and preview appears in wizard. When completing, routed to topic in category and title appears but no image. In wizard submissions, image is listed and available. I have tried to use post builder and inserting w{step_1_field_2} instead and picking another text field for post, without any change. I have tried putting image upload and all other fields into one step instead of breaking into multiple steps, and also tried action open composer. Image never shows up anywhere but is clearly saved to the wizard submission. Either I am missing something fundamental about how image uploads are handles in the wizard or something is broken

Example

https://staging.wildlifephotocircle.com

I am not sure how to provide a live example for this, site is not public.

Logs

Deprecation notice: Discourse.base_uri is deprecated, use Discourse.base_path instead At /var/www/discourse/plugins/discourse-custom-wizard/lib/custom_wizard/action.rb:318:in open_composer

activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:130:in block in warn' activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in block in dispatch’
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in each' activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in dispatch’
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:130:in warn' /var/www/discourse/lib/discourse.rb:1030:in deprecate’
/var/www/discourse/lib/discourse.rb:553:in base_uri' /var/www/discourse/plugins/discourse-custom-wizard/lib/custom_wizard/action.rb:318:in open_composer’
/var/www/discourse/plugins/discourse-custom-wizard/lib/custom_wizard/action.rb:26:in block in perform' activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/transaction.rb:616:in block in within_new_transaction’
activesupport-7.2.2.1/lib/active_support/concurrency/null_lock.rb:9:in synchronize' activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/transaction.rb:613:in within_new_transaction’
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/database_statements.rb:361:in transaction' activerecord-7.2.2.1/lib/active_record/transactions.rb:234:in block in transaction’
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:421:in with_connection' activerecord-7.2.2.1/lib/active_record/connection_handling.rb:296:in with_connection’
activerecord-7.2.2.1/lib/active_record/transactions.rb:233:in transaction' /var/www/discourse/plugins/discourse-custom-wizard/lib/custom_wizard/action.rb:26:in perform’
/var/www/discourse/plugins/discourse-custom-wizard/app/controllers/custom_wizard/steps.rb:42:in block in update' /var/www/discourse/plugins/discourse-custom-wizard/app/controllers/custom_wizard/steps.rb:35:in each’
/var/www/discourse/plugins/discourse-custom-wizard/app/controllers/custom_wizard/steps.rb:35:in update' actionpack-7.2.2.1/lib/action_controller/metal/basic_implicit_render.rb:8:in send_action’
actionpack-7.2.2.1/lib/abstract_controller/base.rb:226:in process_action' actionpack-7.2.2.1/lib/action_controller/metal/rendering.rb:193:in process_action’
actionpack-7.2.2.1/lib/abstract_controller/callbacks.rb:261:in block in process_action' activesupport-7.2.2.1/lib/active_support/callbacks.rb:121:in block in run_callbacks’
/var/www/discourse/app/controllers/application_controller.rb:427:in block in with_resolved_locale' i18n-1.14.7/lib/i18n.rb:353:in with_locale’
/var/www/discourse/app/controllers/application_controller.rb:427:in with_resolved_locale' activesupport-7.2.2.1/lib/active_support/callbacks.rb:130:in block in run_callbacks’
activesupport-7.2.2.1/lib/active_support/callbacks.rb:141:in run_callbacks' actionpack-7.2.2.1/lib/abstract_controller/callbacks.rb:260:in process_action’
actionpack-7.2.2.1/lib/action_controller/metal/rescue.rb:27:in process_action' actionpack-7.2.2.1/lib/action_controller/metal/instrumentation.rb:77:in block in process_action’
activesupport-7.2.2.1/lib/active_support/notifications.rb:210:in block in instrument' activesupport-7.2.2.1/lib/active_support/notifications/instrumenter.rb:58:in instrument’
activesupport-7.2.2.1/lib/active_support/notifications.rb:210:in instrument' actionpack-7.2.2.1/lib/action_controller/metal/instrumentation.rb:76:in process_action’
actionpack-7.2.2.1/lib/action_controller/metal/params_wrapper.rb:259:in process_action' activerecord-7.2.2.1/lib/active_record/railties/controller_runtime.rb:39:in process_action’
actionpack-7.2.2.1/lib/abstract_controller/base.rb:163:in process' actionview-7.2.2.1/lib/action_view/rendering.rb:40:in process’
rack-mini-profiler-3.3.1/lib/mini_profiler/profiling_methods.rb:115:in block in profile_method' actionpack-7.2.2.1/lib/action_controller/metal.rb:252:in dispatch’
actionpack-7.2.2.1/lib/action_controller/metal.rb:335:in dispatch' actionpack-7.2.2.1/lib/action_dispatch/routing/route_set.rb:67:in dispatch’
actionpack-7.2.2.1/lib/action_dispatch/routing/route_set.rb:50:in serve' actionpack-7.2.2.1/lib/action_dispatch/journey/router.rb:53:in block in serve’
actionpack-7.2.2.1/lib/action_dispatch/journey/router.rb:133:in block in find_routes' actionpack-7.2.2.1/lib/action_dispatch/journey/router.rb:126:in each’
actionpack-7.2.2.1/lib/action_dispatch/journey/router.rb:126:in find_routes' actionpack-7.2.2.1/lib/action_dispatch/journey/router.rb:34:in serve’
actionpack-7.2.2.1/lib/action_dispatch/routing/route_set.rb:896:in call' railties-7.2.2.1/lib/rails/engine.rb:535:in call’
railties-7.2.2.1/lib/rails/railtie.rb:226:in public_send' railties-7.2.2.1/lib/rails/railtie.rb:226:in method_missing’
actionpack-7.2.2.1/lib/action_dispatch/routing/mapper.rb:33:in block in <class:Constraints>' actionpack-7.2.2.1/lib/action_dispatch/routing/mapper.rb:62:in serve’
actionpack-7.2.2.1/lib/action_dispatch/journey/router.rb:53:in block in serve' actionpack-7.2.2.1/lib/action_dispatch/journey/router.rb:133:in block in find_routes’
actionpack-7.2.2.1/lib/action_dispatch/journey/router.rb:126:in each' actionpack-7.2.2.1/lib/action_dispatch/journey/router.rb:126:in find_routes’
actionpack-7.2.2.1/lib/action_dispatch/journey/router.rb:34:in serve' actionpack-7.2.2.1/lib/action_dispatch/routing/route_set.rb:896:in call’
/var/www/discourse/lib/middleware/omniauth_bypass_middleware.rb:35:in call' rack-2.2.11/lib/rack/tempfile_reaper.rb:15:in call’
rack-2.2.11/lib/rack/conditional_get.rb:40:in call' rack-2.2.11/lib/rack/head.rb:12:in call’
actionpack-7.2.2.1/lib/action_dispatch/http/permissions_policy.rb:38:in call' /var/www/discourse/lib/content_security_policy/middleware.rb:12:in call’
/var/www/discourse/lib/middleware/anonymous_cache.rb:409:in call' /var/www/discourse/lib/middleware/csp_script_nonce_injector.rb:12:in call’
/var/www/discourse/config/initializers/008-rack-cors.rb:14:in call' rack-2.2.11/lib/rack/session/abstract/id.rb:266:in context’
rack-2.2.11/lib/rack/session/abstract/id.rb:260:in call' actionpack-7.2.2.1/lib/action_dispatch/middleware/cookies.rb:704:in call’
actionpack-7.2.2.1/lib/action_dispatch/middleware/callbacks.rb:31:in block in call' activesupport-7.2.2.1/lib/active_support/callbacks.rb:101:in run_callbacks’
actionpack-7.2.2.1/lib/action_dispatch/middleware/callbacks.rb:30:in call' actionpack-7.2.2.1/lib/action_dispatch/middleware/debug_exceptions.rb:31:in call’
actionpack-7.2.2.1/lib/action_dispatch/middleware/show_exceptions.rb:32:in call' logster-2.20.1/lib/logster/middleware/reporter.rb:40:in call’
railties-7.2.2.1/lib/rails/rack/logger.rb:41:in call_app' railties-7.2.2.1/lib/rails/rack/logger.rb:29:in call’
/var/www/discourse/config/initializers/100-quiet_logger.rb:20:in call' /var/www/discourse/config/initializers/100-silence_logger.rb:29:in call’
actionpack-7.2.2.1/lib/action_dispatch/middleware/request_id.rb:33:in call' /var/www/discourse/lib/middleware/enforce_hostname.rb:24:in call’
rack-2.2.11/lib/rack/method_override.rb:24:in call' actionpack-7.2.2.1/lib/action_dispatch/middleware/executor.rb:16:in call’
rack-2.2.11/lib/rack/sendfile.rb:110:in call' rack-mini-profiler-3.3.1/lib/mini_profiler.rb:334:in call’
/var/www/discourse/lib/middleware/processing_request.rb:12:in call' message_bus-4.3.9/lib/message_bus/rack/middleware.rb:60:in call’
/var/www/discourse/lib/middleware/request_tracker.rb:385:in call' actionpack-7.2.2.1/lib/action_dispatch/middleware/remote_ip.rb:96:in call’
railties-7.2.2.1/lib/rails/engine.rb:535:in call' railties-7.2.2.1/lib/rails/railtie.rb:226:in public_send’
railties-7.2.2.1/lib/rails/railtie.rb:226:in method_missing' rack-2.2.11/lib/rack/urlmap.rb:74:in block in call’
rack-2.2.11/lib/rack/urlmap.rb:58:in each' rack-2.2.11/lib/rack/urlmap.rb:58:in call’
unicorn-6.1.0/lib/unicorn/http_server.rb:634:in process_client' unicorn-6.1.0/lib/unicorn/http_server.rb:739:in worker_loop’
unicorn-6.1.0/lib/unicorn/http_server.rb:547:in spawn_missing_workers' unicorn-6.1.0/lib/unicorn/http_server.rb:143:in start’
unicorn-6.1.0/bin/unicorn:128:in <top (required)>' /var/www/discourse/vendor/bundle/ruby/3.3.0/bin/unicorn:25:in load’
/var/www/discourse/vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `’

Hey @sfoerster, thanks for creating a report.

For an upload field you need to use w{step_1_field_2.url} to insert the image url into a post. See further

Ah of course the solution was hiding in the one place I didn’t look! Thanks Angus :pray:

1 Like