31 lines
1.3 KiB
Python
31 lines
1.3 KiB
Python
|
|
from odoo import models, fields, api
|
||
|
|
from odoo.exceptions import UserError
|
||
|
|
|
||
|
|
class SelectedApps(models.Model):
|
||
|
|
_name = 'selected.apps'
|
||
|
|
_description = 'Selected Applications'
|
||
|
|
|
||
|
|
subscription_id = fields.Many2one('user.subscription', string='Subscription',
|
||
|
|
required=True, ondelete='cascade')
|
||
|
|
app_name = fields.Char(string='App Name', required=True)
|
||
|
|
app_technical_name = fields.Char(string='Technical Name')
|
||
|
|
app_icon = fields.Char(string='App Icon')
|
||
|
|
app_category = fields.Selection([
|
||
|
|
('sales', 'Sales'),
|
||
|
|
('finance', 'Finance'),
|
||
|
|
('services', 'Services'),
|
||
|
|
('marketing', 'Marketing'),
|
||
|
|
('other', 'Other'),
|
||
|
|
], string='Category', default='other')
|
||
|
|
is_installed = fields.Boolean(string='Installed', default=False)
|
||
|
|
|
||
|
|
@api.constrains('subscription_id')
|
||
|
|
def _check_max_apps(self):
|
||
|
|
for record in self:
|
||
|
|
subscription = record.subscription_id
|
||
|
|
if subscription.max_apps_allowed:
|
||
|
|
app_count = self.search_count([('subscription_id', '=', subscription.id)])
|
||
|
|
if app_count > subscription.max_apps_allowed:
|
||
|
|
raise UserError(
|
||
|
|
f'You can select at most {subscription.max_apps_allowed} apps'
|
||
|
|
)
|