| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
Discuss (mail)
|
| Lines of code | 644 |
| Technical Name |
praetorx_base |
| License | LGPL-3 |
| Website | https://syntaxandsabotage.io |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
Discuss (mail)
|
| Lines of code | 644 |
| Technical Name |
praetorx_base |
| License | LGPL-3 |
| Website | https://syntaxandsabotage.io |
Praetorx Base - Foundation Module
v19.0.1.1.0 Odoo 19 LGPL-3
Praetorx Base is a technical foundation module providing reusable patterns extracted from production Odoo implementations. Build robust, maintainable applications with proven patterns.
Key Features
🔄 Queue Job System
Background job processing via cron with state management.
- Process large datasets without blocking UI
- Automatic cron processing every minute
- State tracking: pending → processing → done/failed
- Error logging and retry capability
- Batch processing (100 jobs per run)
Model: praetorx.queue.job
✓ Validation Mixin
Structured validation with HTML-formatted summaries.
- Error vs warning classification
- Bootstrap-styled HTML summaries
- Helper methods: is_valid(), assert_valid()
- Batch validation support
- Field-level error tracking
Mixin: praetorx.validation.mixin
📋 Batch Processing Mixin
State machine pattern for parent-child workflows.
- Standard workflow: draft → validated → posted
- Cancellation with reset to draft
- Extensible validation hooks
- Button visibility auto-computed
- Deletion protection for posted documents
Mixin: praetorx.batch.mixin
📱 Split View OWL Component
Reusable master-detail UI pattern.
- Email-style interfaces (list + detail)
- Customizable master/detail widths
- Slot-based content injection
- Responsive layout
- Empty state handling
Component: SplitView
Quick Start
1. Install the module:
# Apps → Update Apps List → Search "Praetorx Base" → Install
2. Add to your module dependencies:
{
'name': 'My Module',
'depends': ['praetorx_base'],
# ...
}
3. Inherit the patterns you need:
class MyModel(models.Model):
_name = 'my.model'
_inherit = [
'praetorx.validation.mixin',
'praetorx.batch.mixin',
]
Use Cases
- Accounting: Invoice/settlement batch processing
- Property Management: Operating cost settlements
- E-commerce: Order processing workflows
- HR: Payroll batch processing
- Manufacturing: Production order validation
Technical Details
All patterns are implemented as abstract models or mixins promoting:
- Code Reuse: Write once, use everywhere
- Consistency: Standard patterns across modules
- Maintainability: Changes propagate automatically
- Testability: Battle-tested in production
Please log in to comment on this module