Core Plugin System with djp/pluggy
Status: COMPLETE
Goal
Implement the foundational plugin system using djp (Django plugin system built on pluggy) for extensibility.
Acceptance Criteria
-
Plugin discovery from INSTALLED_APPS via
djadmin_hooks.py -
15 hook specifications defined in
djadmin/plugins/__init__.py - Hook manager integration with pluggy
- Plugin registration and loading
- Feature advertising system
- Plugin validation at startup
Hook Specifications
Features:
-
djadmin_provides_features- Advertise plugin capabilities -
djadmin_get_form_features- Form-level feature detection
Actions:
-
djadmin_get_default_{general,bulk,record}_actions- Default actions -
djadmin_register_actions- Custom action registration
View Customization:
-
djadmin_get_action_view_mixins- Inject mixins into views -
djadmin_get_action_view_base_class- Override base classes -
djadmin_get_action_view_assets- Add CSS/JS assets -
djadmin_get_action_view_attributes- Set view attributes -
djadmin_get_action_view_attribute_bindings- Bind to model_admin
UI Extensions:
-
djadmin_get_sidebar_widgets- Dashboard sidebar -
djadmin_get_column_header_icons- ListView headers
Data:
-
djadmin_modify_queryset- Filter/annotate queries -
djadmin_add_context_data- Template context
Testing:
-
djadmin_get_test_methods- Plugin-based test methods
Dependencies:
-
djadmin_get_required_apps- INSTALLED_APPS management
Reference
djadmin/plugins/__init__.pywiki/archive/Milestone-1-Implementation-Plan.md
Edited by Emma