User Actions Notification System
The User Actions system provides a framework for detecting and managing user-specific actions across Waldur components. It helps users stay informed about items requiring attention, such as pending orders, expiring resources, and stale assets.
Core Features
- Action Detection: Automated discovery of user-specific actions across applications
- Urgency Classification: Three-tier urgency system (low, medium, high)
- Action Management: Users can silence actions temporarily or permanently
- Corrective Actions: Predefined actions users can take to resolve issues
- Audit Trail: Complete execution history for actions taken
Architecture
Provider Framework
Action providers inherit from BaseActionProvider and implement:
get_actions_for_user(user)- Returns user-specific actionsget_affected_users()- Returns users who might have actionsget_corrective_actions(user, obj)- Returns available corrective actions
Database Models
UserAction- Individual action items with urgency, due dates, and silencingUserActionExecution- Audit trail for executed actionsUserActionProvider- Registry of registered providers
API Endpoints
GET /api/user-actions/- List user actions (filterable by urgency)GET /api/user-actions/summary/- Action statistics and countsPOST /api/user-actions/{uuid}/silence/- Silence actionsPOST /api/user-actions/{uuid}/execute_action/- Execute corrective actions
Marketplace Providers
Two providers are included for marketplace workflows:
PendingOrderProvider
Detects orders pending consumer approval for more than 24 hours. Provides corrective actions:
- View order details
- Approve order (API endpoint)
- Reject order
- Contact customer
ExpiringResourceProvider
Finds resources expiring within 30 days. Corrective actions include:
- View resource details
- Extend resource
- Create backup
- Terminate early
- Migrate to new resource
Configuration
1 2 3 4 5 6 7 8 9 | |
Creating Custom Providers
- Create a provider class inheriting from
BaseActionProvider - Implement required methods
- Register with
register_provider(YourProvider) - Create
user_actions.pyin your app to auto-register on startup
Example provider structure:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | |
Automated Tasks
Celery tasks run periodically:
- Action Updates: Every 6 hours - detect new actions
- Cleanup: Daily/weekly - remove expired silenced actions and old executions
- Notifications: Daily at 9 AM - send action digest emails
Usage Examples
List high-urgency actions:
1 | |
Get action summary:
1 2 | |
Silence an action for 7 days:
1 2 | |
The system integrates with existing Waldur permissions and follows established patterns for extensibility across all Waldur applications.