Refactor global resource manifests#3416
Conversation
8e3e7d2 to
bcf964e
Compare
1c48282 to
b6ac57d
Compare
josepjaume
left a comment
There was a problem hiding this comment.
Nicely done but I'm not entirely sold on that component_manifest call.
CHANGELOG.md
Outdated
| # inside decidim-my-module/lib/decidim/my-module/component.rb | ||
| component.register_resource(:my_resource) do |resource| | ||
| resource.model_class_name = "Decidim::MyComponent::MyResource" | ||
| resource.component_manifest = component |
There was a problem hiding this comment.
Can't this be inferred from its environment? My intuition says you should be able to pass that in implicitly when calling register_resource.
There was a problem hiding this comment.
@josepjaume me neither, but I don't know how to fix it. The ComponentManifest includes the HasResourceManifest concern, which encapsulates how to register resources from that manifest:
decidim/decidim-core/lib/decidim/has_resource_manifests.rb
Lines 9 to 24 in 5cab5e4
I'd need a way for the ComponentManifest to get that block, somehow add something like resource.component_manifest = self from it, and then send the block to Decidim.register_resource(name, &block), but I don't know if that's possible 😕
Some resource might not have a component (those froma participatory space, for example).
d2baa2b to
63f3e4d
Compare
* Make ResourceManifests global * Make Component manifest not required for resources Some resource might not have a component (those froma participatory space, for example). * Set a name for a resource manifest * Fix all registered resources * Update Changelog * Fix code * Update docs and tests * Fix how to find the resource manifests * Remove outdated test * Fix `sibling_scope` fetching * Improve specs * Automatically set the ComponentManifest for the resources * Lint file
* Make ResourceManifests global * Make Component manifest not required for resources Some resource might not have a component (those froma participatory space, for example). * Set a name for a resource manifest * Fix all registered resources * Update Changelog * Fix code * Update docs and tests * Fix how to find the resource manifests * Remove outdated test * Fix `sibling_scope` fetching * Improve specs * Automatically set the ComponentManifest for the resources * Lint file
…3438) * take into account when space is private and transparent * Initial Commit * Show next upcoming meeting in assembly card (#3435) * Show next upcoming meeting in assembly card * Lint file * New Crowdin translations (#3432) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Catalan) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Basque) * New translations en.yml (Catalan) * New translations en.yml (Dutch) * New translations en.yml (Finnish) * New translations en.yml (French) * New translations en.yml (Galician) * New translations en.yml (Italian) * New translations en.yml (Polish) * New translations en.yml (Portuguese) * New translations en.yml (Spanish) * New translations en.yml (Swedish) * New translations en.yml (Swedish) * New translations en.yml (Basque) * New translations en.yml (Catalan) * New translations en.yml (Dutch) * New translations en.yml (Finnish) * New translations en.yml (French) * New translations en.yml (Galician) * New translations en.yml (Italian) * New translations en.yml (Polish) * New translations en.yml (Portuguese) * New translations en.yml (Spanish) * New translations en.yml (Catalan) * New translations en.yml (Dutch) * New translations en.yml (Basque) * New translations en.yml (Catalan) * New translations en.yml (Finnish) * New translations en.yml (French) * New translations en.yml (Galician) * New translations en.yml (Italian) * New translations en.yml (Polish) * New translations en.yml (Portuguese) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Spanish) * New translations en.yml (Swedish) * New translations en.yml (Catalan) * New translations en.yml (Spanish) * New translations en.yml (Spanish) * Fix card image when missing (#3439) * Fix `Resourceable` concern to only find linked resources from published components (#3433) * Fix the related proposals shown on proposal show when component is unpublished (#3430) * fix the related proposals showed on proposal show when the component are unpublished * update gemfile lock app design * fix gemifile lock generators * add changelog line and apply requested changes * update changelog * Make `sibling_scope` only return resources from published components * Fix changelog * Remove N+1 * Improve code readability * Use array so that query doesn't fail * Don't seed with random scopes if the existing organization already have. (#3437) * Refactor global resource manifests (#3416) * Make ResourceManifests global * Make Component manifest not required for resources Some resource might not have a component (those froma participatory space, for example). * Set a name for a resource manifest * Fix all registered resources * Update Changelog * Fix code * Update docs and tests * Fix how to find the resource manifests * Remove outdated test * Fix `sibling_scope` fetching * Improve specs * Automatically set the ComponentManifest for the resources * Lint file * New Crowdin translations (#3440) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Catalan) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Basque) * New translations en.yml (Catalan) * New translations en.yml (Dutch) * New translations en.yml (Finnish) * New translations en.yml (French) * New translations en.yml (Galician) * New translations en.yml (Italian) * New translations en.yml (Polish) * New translations en.yml (Portuguese) * New translations en.yml (Spanish) * New translations en.yml (Swedish) * New translations en.yml (Swedish) * New translations en.yml (Basque) * New translations en.yml (Catalan) * New translations en.yml (Dutch) * New translations en.yml (Finnish) * New translations en.yml (French) * New translations en.yml (Galician) * New translations en.yml (Italian) * New translations en.yml (Polish) * New translations en.yml (Portuguese) * New translations en.yml (Spanish) * New translations en.yml (Catalan) * New translations en.yml (Dutch) * New translations en.yml (Basque) * New translations en.yml (Catalan) * New translations en.yml (Finnish) * New translations en.yml (French) * New translations en.yml (Galician) * New translations en.yml (Italian) * New translations en.yml (Polish) * New translations en.yml (Portuguese) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Spanish) * New translations en.yml (Swedish) * New translations en.yml (Catalan) * New translations en.yml (Spanish) * New translations en.yml (Spanish) * New translations en.yml (Spanish) * Minute management interface (#3377) * meetings home * Collaborative editor * minutes edition * fix erblint * fix spanglish * Replace `high_voltage` with a custom code (#3441) * Replace `high_voltage` with a custom code * Fix locales * Normalize locale files * Remove old class * Make method public * Add user profile card (#3444) * Register users as a resource * Add user profile card * Manually specify the author card * Add missing locales for another_dummy_authorization_handler (#3447) * Add missing email format validations (#3446) * add email format validation to managed user promotion * add email format validation to meeting user invitation * Include datepicker locales in front pages too. (#3448) * [FIX] Consultations question component html error (#3450) * New user profile (#3415) * Fix user cell * Update user profile with new design * Update CHANGELOG * Add project card (#3454) * Add project card * Normalize locale files * [FIX] Added remove_introductory_image to Consultations form & command (#3455) * Rename migrations to avoid duplicated names (#3452) * Remove text (#3461) * Fix comments on development (#3459) * Set default `totalCommentsCount` value * Use lambdas on interfaces lists * Move to `ts-loader` * Update comments bundle * Fix lint * Run `erblint` on cells views (#3462) * [FIX] Use translations for hardcoded text. (#3464) * [FIX] Use translations for hardcoded text. * Add changelog entry. * [FIX] Fixes artificial margin between proposal "header" and list of endorsements. (#3465) * Add margin to .data-picker (#3463) * Added margin to .data-picker * fix variable, lint scss * Add Stylelinter to development_guide.md (#3472) * Add initiatives card (#3475) * Add initiative card * Improve footer * Lint files * Fix i18n specs * Fix authors list * Remove extra character * Extract ProgressBarCell from proposals * Add progress bar to initiatives cell * Replace "vote" with "sign"/"signature" on initiatives * Replace "adhesions" with "signatures" * Lint erb files * Lint cells files * Remove unused file * Normalize locales file * Lint more files * Fix specs * Update Facebook docs with an example URL (#3474) * Add label identifier to `card_m` (#3468) * Add label identifier to card_m * fix stylelint offenses * removed offending whitespace (stylelint) * fix .card_label status scope * Use `CollapsibleListCell` for proposal endorsements list (#3478) * Upgrade Rails to 5.2 (#3225) * Prevent Rails 5.2 deprecation warnings Like the following, or similar: ``` DEPRECATION WARNING: Dangerous query method (method whose arguments are used as raw SQL) called with non-attribute argument(s): "name->'en' ASC". Non-attribute arguments will be disallowed in Rails 6.0. This method should not be called with user-provided values, such as request parameters or model attributes. Known-safe values can be passed by wrapping them in Arel.sql(). (called from index at /path/to/decidim-admin/app/controllers/decidim/admin/scopes_controller.rb:13) ``` * Only install decidim migrations This is necessary to ignore activestorage ones on Rails 5.2. This is not obscure, it's "lo siguiente" :(. The answer is buried deep down in activerecord's sources: https://github.com/rails/rails/blob/662ba236d115d3e2152b04dcdefdc0ee6f1f6102/activerecord/lib/active_record/railties/databases.rake#L390 * Tweak bootsnap to play nice with byebug * Bump Rails to 5.2 * Bootsnap is require in `config/boot.rb` of the default generated application, so we need to add it to the Gemfile. * Surveys were calling `save!` on `destroy!`'ed records, that's (understandably) no longer valid and was only working by chance. * A transaction block inside `Decidim.traceable` was no longer returning its last statement, so I needed to add a explicit return. I also removed a nested transaction block that seemed unnecessary. * Upgraded papertrail and fixed a deprecation warning about `whodunnit`. * Oauth's request env no longer has indifferent access. Apparently. * Try fix hang by not mixin ruby & rails autoloading * Try fix flaky in system UI * Add new translations (#3460) * New translations en.yml (Spanish) * New translations en.yml (Swedish) * New translations en.yml (Swedish) * New translations en.yml (Catalan) * New translations en.yml (Dutch) * New translations en.yml (Finnish) * New translations en.yml (French) * New translations en.yml (Finnish) * New translations en.yml (Polish) * New translations en.yml (Swedish) * New translations en.yml (Spanish) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese) * New translations en.yml (Polish) * New translations en.yml (Spanish) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese) * New translations en.yml (Catalan) * New translations en.yml (Catalan) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese) * New translations en.yml (Polish) * New translations en.yml (Catalan) * New translations en.yml (Polish) * New translations en.yml (Polish) * New translations en.yml (Swedish) * New translations en.yml (Spanish) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Polish) * New translations en.yml (Catalan) * New translations en.yml (Swedish) * New translations en.yml (Spanish) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese) * New translations en.yml (Catalan) * New translations en.yml (Portuguese) * New translations en.yml (Swedish) * New translations en.yml (Spanish) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese) * New translations en.yml (Polish) * New translations en.yml (Catalan) * New translations en.yml (Swedish) * New translations en.yml (Spanish) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese) * New translations en.yml (Polish) * New translations en.yml (Catalan) * New translations en.yml (Swedish) * New translations en.yml (Spanish) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese) * New translations en.yml (Polish) * New translations en.yml (Catalan) * New translations en.yml (Catalan) * New translations en.yml (Catalan) * New translations en.yml (Swedish) * New translations en.yml (Spanish) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese) * New translations en.yml (Polish) * New translations en.yml (Catalan) * New translations en.yml (Swedish) * New translations en.yml (Spanish) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese) * New translations en.yml (Polish) * New translations en.yml (Polish) * New translations en.yml (Swedish) * New translations en.yml (Spanish) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese) * New translations en.yml (Polish) * New translations en.yml (Catalan) * New translations en.yml (Swedish) * New translations en.yml (Spanish) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese) * New translations en.yml (Basque) * New translations en.yml (Italian) * New translations en.yml (Galician) * New translations en.yml (French) * New translations en.yml (Finnish) * New translations en.yml (Dutch) * New translations en.yml (Catalan) * New translations en.yml (Basque) * New translations en.yml (Catalan) * New translations en.yml (Basque) * New translations en.yml (Italian) * New translations en.yml (Basque) * New translations en.yml (Dutch) * New translations en.yml (French) * New translations en.yml (Galician) * New translations en.yml (Galician) * New translations en.yml (French) * New translations en.yml (Finnish) * New translations en.yml (Dutch) * New translations en.yml (Catalan) * New translations en.yml (Basque) * New translations en.yml (Italian) * New translations en.yml (Galician) * New translations en.yml (French) * New translations en.yml (Finnish) * New translations en.yml (Dutch) * New translations en.yml (Basque) * New translations en.yml (Italian) * New translations en.yml (French) * New translations en.yml (Finnish) * New translations en.yml (Dutch) * New translations en.yml (Catalan) * New translations en.yml (Basque) * New translations en.yml (Italian) * New translations en.yml (Galician) * New translations en.yml (French) * New translations en.yml (Finnish) * New translations en.yml (Dutch) * New translations en.yml (Catalan) * New translations en.yml (Basque) * New translations en.yml (Italian) * New translations en.yml (Galician) * New translations en.yml (French) * New translations en.yml (Galician) * New translations en.yml (Finnish) * New translations en.yml (French) * New translations en.yml (Finnish) * New translations en.yml (Dutch) * New translations en.yml (Catalan) * New translations en.yml (Basque) * New translations en.yml (Spanish) * New translations en.yml (Italian) * New translations en.yml (Galician) * New translations en.yml (French) * New translations en.yml (Finnish) * New translations en.yml (Dutch) * New translations en.yml (Basque) * New translations en.yml (Italian) * New translations en.yml (Spanish) * New translations en.yml (Italian) * New translations en.yml (Galician) * New translations en.yml (French) * New translations en.yml (Finnish) * New translations en.yml (Dutch) * New translations en.yml (Basque) * New translations en.yml (Galician) * New translations en.yml (Spanish) * New translations en.yml (Dutch) * New translations en.yml (Basque) * New translations en.yml (Catalan) * New translations en.yml (Italian) * New translations en.yml (Galician) * New translations en.yml (French) * New translations en.yml (Finnish) * New translations en.yml (Dutch) * New translations en.yml (Basque) * New translations en.yml (Basque) * New translations en.yml (Spanish) * New translations en.yml (Italian) * New translations en.yml (Galician) * New translations en.yml (French) * New translations en.yml (Finnish) * New translations en.yml (Dutch) * New translations en.yml (Catalan) * New translations en.yml (Basque) * New translations en.yml (Italian) * New translations en.yml (Galician) * New translations en.yml (French) * New translations en.yml (Finnish) * New translations en.yml (Dutch) * New translations en.yml (Italian) * New translations en.yml (Spanish) * New translations en.yml (Spanish) * New translations en.yml (Spanish) * New translations en.yml (Spanish) * New translations en.yml (Spanish) * New translations en.yml (Spanish) * New translations en.yml (Spanish) * New translations en.yml (Spanish) * New translations en.yml (Galician) * New translations en.yml (Italian) * New translations en.yml (Polish) * New translations en.yml (Portuguese) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Spanish) * New translations en.yml (Swedish) * New translations en.yml (Finnish) * New translations en.yml (French) * New translations en.yml (Dutch) * New translations en.yml (Catalan) * New translations en.yml (Basque) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Basque) * New translations en.yml (Catalan) * New translations en.yml (Dutch) * New translations en.yml (Finnish) * New translations en.yml (French) * New translations en.yml (Galician) * New translations en.yml (Italian) * New translations en.yml (Polish) * New translations en.yml (Portuguese) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Spanish) * New translations en.yml (Swedish) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Basque) * New translations en.yml (Catalan) * New translations en.yml (Dutch) * New translations en.yml (Finnish) * New translations en.yml (French) * New translations en.yml (Galician) * New translations en.yml (Italian) * New translations en.yml (Polish) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Spanish) * New translations en.yml (Swedish) * New translations en.yml (Dutch) * New translations en.yml (Basque) * New translations en.yml (Catalan) * New translations en.yml (Finnish) * New translations en.yml (French) * New translations en.yml (Galician) * New translations en.yml (Italian) * New translations en.yml (Polish) * New translations en.yml (Portuguese) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Spanish) * New translations en.yml (Swedish) * New translations en.yml (Portuguese) * Update comments bundle * Unbundled consent on user registration (#3483) * Unbundled consent on user registration * [FEAT] Added RSpec tests for unbundled consent in Registration * minor fixes * Add CHANGELOG entry * fix codeclimate * Add more cards (#3487) * Add consultation card * Normalize locales files * Lint file * Add blog post card * Add changelog entry * Remove impossible condition * add changelog and specs * Newsletter checkbox unchecked by default (#3488) * [FEAT] Registration newsletter checkbox unchecked by default * [FEAT] Added Modal to show message and action to user. Tests updated * [FIX] Corrections to pass tests * add method can participate to participable concern
🎩 What? Why?
This PR sets some grounds for #2872. It promotes the
ResourceManifests from inside aComponentManifestor aParticipatorySpaceManifestto a global registry, so that we can register resources from anywhere.This implies some changes when registering a resource:
THIS IS A BREAKING CHANGE
📌 Related Issues
ResourceManifestcontract should be expanded to accommodate other models outside of features #2872.📋 Subtasks
CHANGELOGentry