Skip to content

Comments

Cop 561 be implement core plugin loading and enable disable mechanism#390

Open
Hercilio1 wants to merge 20 commits intoepic/plugin-archfrom
COP-561-be-implement-core-plugin-loading-and-enable-disable-mechanism
Open

Cop 561 be implement core plugin loading and enable disable mechanism#390
Hercilio1 wants to merge 20 commits intoepic/plugin-archfrom
COP-561-be-implement-core-plugin-loading-and-enable-disable-mechanism

Conversation

@Hercilio1
Copy link
Contributor

@Hercilio1 Hercilio1 commented Feb 20, 2026

Important Notes

This PR covers the following deliveries:

  • Plugin architecture core in stable mode (covered with unit tests).
  • PoC implemented in /baseapp-auth, /baseapp-comments, and /baseapp-pages, exploring the new plugin architecture.
    • Follow-up stories will focus on stabilizing these changes (reviewing the implementation and adding proper unit test coverage).
  • PoC in /comments removing all concrete models (and their migrations).

Acceptance Criteria

Description

Implement the core plugin engine for baseapp-backend, including plugin discovery, loading, and enable/disable behavior. This story focuses on the plug-and-play mechanics and ensuring the system is robust through thorough unit and integration testing.

A testproject/ environment will be used to validate the design by creating a new app that follows the plugin structure and exercises the full plugin lifecycle and registration features.


This story is done when:

  • The core plugin loading mechanism is implemented (discovery + initialization).
  • Plugins can be enabled/disabled via settings.
  • Disabled plugins register nothing.
  • A new plugin-based app is created under testproject/ to validate:
    • Plugin discovery and load order
    • Plugin lifecycle hooks being invoked as expected
    • Registration behavior (and lack of it when disabled)
  • Unit tests cover the plugin engine behavior (loading, toggling, failure modes).
  • Integration tests validate plugin behavior end-to-end using testproject/.

Notes

  • This story is about the plugin engine core, not migrating existing apps.
  • The testproject/ plugin app is the reference for validating behavior and for future migrations.
  • Prioritize predictable behavior and strong test coverage over adding extra features.
  • Try to use the root pyproject.toml to define entry points.

Approvd

https://app.approvd.io/silverlogic/COP/stories/45020

Hercilio1 and others added 17 commits September 23, 2025 15:53
# COP-353

- Implement Hash ID usage in GraphQL APIs
  - Replace with Relay Global ID with Hash ID
- Current Relay Global ID is a case sensitive base64 which can easily be
decoded, we are looking into make it very hard to decode.
  - Remove PK fields from all GraphQL Object Types exposed externally.
    - Deprecate field and make it return same thing as Relay Global ID
  - Ensure backwards compatibility so we don't break old URLs for now? 

## Notes:

- This PR covered the entire AC and also optimized baseapp\_comments and
baseapp\_auth. However, we still need to optimize more models.
- Due to optimization issues, the migrations responsible for generating
the public\_id for the existing models were not implemented. This will
be addressed in a follow-up story.
- The FE also could not be reviewed and will be addressed in a follow-up
story.
- There is not need for QA right now. We will need to do a big
regression test once the feature is done. That's when we onboard a QA.



<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- New Features
- Public ID (UUID) support across apps with automatic mapping and admin
listing.
- GraphQL additions: blockers_count, blocking_count, is_blocked_by_me,
and notification_settings.
- Improvements
- Unified RelayNode across the GraphQL schema with a strategy-based
global ID system.
- Query optimization helpers and pre-optimization hooks to reduce DB
load.
  - More robust async handling of relay IDs in realtime flows.
- Behavior Changes
  - Anonymous users can no longer fetch users by primary key.
- Migrations/Chores
  - Multiple migrations add triggers to maintain public ID mappings.
- Documentation
  - READMEs updated to reference RelayNode in examples.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Hercilio Ortiz <ho@tsl.io>
Just updating the hashids branch
**Acceptance Criteria** 

Implement Hash ID usage in DRF APIs
- Build helper functions for generating and validating Hash IDs. (that
was done by previous story)
- Update DRF serializers to deliver Hash ID instead of PK by default.
- Ensure backwards compatibility so we don't break old URLs for now?

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…kend into COP-561-be-implement-core-plugin-loading-and-enable-disable-mechanism
@Hercilio1 Hercilio1 marked this pull request as draft February 20, 2026 13:59
@coderabbitai
Copy link

coderabbitai bot commented Feb 20, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch COP-561-be-implement-core-plugin-loading-and-enable-disable-mechanism

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@Hercilio1 Hercilio1 marked this pull request as ready for review February 20, 2026 16:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants