Files
Odoo-Tutorial/CatEdu/openeducat_core/models/batch.py
T
2025-05-05 09:03:48 +07:00

71 lines
2.8 KiB
Python

###############################################################################
#
# OpenEduCat Inc
# Copyright (C) 2009-TODAY OpenEduCat Inc(<https://www.openeducat.org>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###############################################################################
from odoo import _, api, fields, models
from odoo.exceptions import ValidationError
class OpBatch(models.Model):
_name = "op.batch"
_inherit = "mail.thread"
_description = "OpenEduCat Batch"
code = fields.Char('Code', size=16, required=True)
name = fields.Char('Name', size=32, required=True)
start_date = fields.Date(
'Start Date', required=True, default=fields.Date.today())
end_date = fields.Date('End Date', required=True)
course_id = fields.Many2one('op.course', 'Course', required=True)
active = fields.Boolean(default=True)
_sql_constraints = [
('unique_batch_code',
'unique(code)', 'Code should be unique per batch!')]
@api.constrains('start_date', 'end_date')
def check_dates(self):
for record in self:
start_date = fields.Date.from_string(record.start_date)
end_date = fields.Date.from_string(record.end_date)
if start_date > end_date:
raise ValidationError(
_("End Date cannot be set before Start Date."))
@api.model
def name_search(self, name, args=None, operator='ilike', limit=100):
if self.env.context.get('get_parent_batch', False):
lst = []
lst.append(self.env.context.get('course_id'))
courses = self.env['op.course'].browse(lst)
while courses.parent_id:
lst.append(courses.parent_id.id)
courses = courses.parent_id
batches = self.env['op.batch'].search([('course_id', 'in', lst)])
return [(batch.id, batch.display_name) for batch in batches]
return super(OpBatch, self).name_search(
name, args, operator=operator, limit=limit)
@api.model
def get_import_templates(self):
return [{
'label': _('Import Template for Batch'),
'template': '/openeducat_core/static/xls/op_batch.xls'
}]