move_standards.py 1.75 KB
# See LICENSE file for full copyright and licensing details.

from odoo import models, fields


class MoveStandards(models.TransientModel):
    """Defining TransientModel to move standard."""

    _name = 'move.standards'
    _description = "Move Standards"

    academic_year_id = fields.Many2one('academic.year', 'Academic Year',
                                       required=True)

    def move_start(self):
        '''Code for moving student to next standard'''
        academic_obj = self.env['academic.year']
        school_stand_obj = self.env['school.standard']
        standard_obj = self.env["standard.standard"]
        student_obj = self.env['student.student']
        done_rec = student_obj.search([('state', '=', 'done')])
        for stud in done_rec:
            year_id = academic_obj.next_year(stud.year.sequence)
            academic_year = academic_obj.search([('id', '=', year_id)],
                                                limit=1)
            standard_seq = stud.standard_id.standard_id.sequence
            next_class_id = standard_obj.next_standard(standard_seq)
            # Assign the academic year
            if next_class_id:
                division = (stud.standard_id.division_id.id or False)
                next_stand = school_stand_obj.search([
                            ('standard_id', '=', next_class_id),
                            ('division_id', '=', division),
                            ('school_id', '=', stud.school_id.id),
                            ('medium_id', '=', stud.medium_id.id)])
                if next_stand:
                    std_vals = {'year': academic_year.id,
                                'standard_id': next_stand.id}
                    # Move student to next standard
                    stud.write(std_vals)