please correct my javascript code.in xml file
template.xml
<template id="openeducat_create_subject_registration" name="Create Subject Registration"> <t t-call="portal.portal_layout"> <t t-call="portal.portal_searchbar"> <t t-set="title">Subject Registration Form</t> </t> <t t-if="not student_id"> <p>There are currently no information for your account!!!</p> </t> <div t-if="student_id" style="background-color:white; padding: 20px 40px 20px 40px;"> <div class="mt32"> <form action="/subject/registration/submit" method="post" role="form" enctype="multipart/form-data"> <input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/> <div class="row col-md-12"> <div class="row col-md-6"> <input type="hidden" name="student_id" t-attf-class="form-control" t-att-value="student_id.id"/> <div class="col-md-4 mt8"> <lable for="course_id">Course:</lable> </div> <div class="col-md-8"> <select id="course_dropdown" class="form-control" name="course_id" onchange="myFunction()"> <option value="" class="disabled selected"> <lable>Select your option</lable> </option> <t t-foreach="course" t-as="course_id"> <option t-att-value="course_id.id"> <t t-esc="course_id.name"/> </option> </t> </select> </div> <script> function myFunction() { odoo.define("op.batch", function (require) { var rpc = require('web.rpc'); var course = document.getElementById("course_dropdown"); rpc.query({ model: 'op.batch', }).then(function (data) { for(i in data){ alert(i); document.getElementById("batch_id").value = i.name;} }); }); } </script> <div class="col-md-4 mt16"> <lable for="batch_id">Batch:</lable> </div> <div class="col-md-8 mt8"> <select class="form-control" name="batch_id"> <option value="" class="disabled selected"> <lable>Select your option</lable> </option> <option> <t id="batch_id" t-esc="batch_id"/> </option> </select> </div> </div> <div class="row col-md-6"> <div class="col-md-6 mt8"> <lable for="min_unit_load">Minimum Unit Load:</lable> </div> <div class="col-md-6"> <input type="number" name="min_unit_load" t-attf-class="form-control" t-attf-value="student_id.min_unit_load"/> </div> <div class="col-md-6 mt16"> <lable for="max_unit_load">Maximum Unit Load:</lable> </div> <div class="col-md-6 mt8"> <input type="number" name="max_unit_load" t-attf-class="form-control" t-attf-value="student_id.max_unit_load"/> </div> </div> </div> <div class="mt32"/> <div t-if="user_id.sudo().is_student" class="row col-md-12"> <div class="col-md-2 mt8"> <lable for="compulsory_subject_ids">Compulsory Subjects:</lable> </div> <div class="col-md-10" style="padding-left: 5px;"> <select class="form-control js-example-basic-multiple subjects" name="compulsory_subject_ids" multiple="True" required="1"> <t t-foreach="subjects or []" t-as="subject"> <t t-if="subject.subject_type == 'compulsory'"> <option t-att-value="subject.id"> <t t-esc="subject.name"/> </option> </t> </t> </select> </div> </div> <div t-if="user_id.sudo().is_student" class="row mt8 col-md-12"> <div class="col-md-2 mt8"> <lable for="elective_subject_ids">Elective Subjects:</lable> </div> <div class="col-md-10" style="padding-left: 5px;"> <select class="form-control js-example-basic-multiple subjects" name="compulsory_subject_ids" multiple="True" required="1"> <t t-foreach="subjects or []" t-as="subject"> <t t-if="subject.subject_type == 'elective'"> <option t-att-value="subject.id"> <t t-esc="subject.name"/> </option> </t> </t> </select> </div> </div> <div class="clearfix mb16 mt16 row col-md-12"> <div class="col-md-4"> <button type="submit" class="btn btn-primary"> SUBMIT <span class="fa fa-long-arrow-right"/> </button> </div> </div> </form> </div> </div> </t> </template>
model.py file all fields are available here.class OpSubjectRegistration(models.Model): _name = "op.subject.registration" _inherit = ["mail.thread"] name = fields.Char('Name', readonly=True, default='New') student_id = fields.Many2one('op.student', 'Student', required=True, track_visibility='onchange') course_id = fields.Many2one('op.course', 'Course', required=True, track_visibility='onchange') batch_id = fields.Many2one('op.batch', 'Batch', required=True, track_visibility='onchange') compulsory_subject_ids = fields.Many2many( 'op.subject', 'subject_compulsory_rel', 'register_id', 'subject_id', string="Compulsory Subjects", readonly=True) elective_subject_ids = fields.Many2many( 'op.subject', string="Elective Subjects") state = fields.Selection([ ('draft', 'Draft'), ('submitted', 'Submitted'), ('approved', 'Approved'), ('rejected', 'Rejected')], default='draft', string='state', copy=False, track_visibility='onchange') max_unit_load = fields.Float('Maximum Unit Load', track_visibility='onchange') min_unit_load = fields.Float('Minimum Unit Load', track_visibility='onchange')
template.xml file "student subject registration form" if i select "course" baesd on course field value batch shoul be update.
<template id="openeducat_create_subject_registration" name="Create Subject Registration"> <t t-call="portal.portal_layout"> <t t-call="portal.portal_searchbar"> <t t-set="title">Subject Registration Form</t> </t> <t t-if="not student_id"> <p>There are currently no information for your account!!!</p> </t> <div t-if="student_id" style="background-color:white; padding: 20px 40px 20px 40px;"> <div class="mt32"> <form action="/subject/registration/submit" method="post" role="form" enctype="multipart/form-data"> <input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/> <div class="row col-md-12"> <div class="row col-md-6"> <input type="hidden" name="student_id" t-attf-class="form-control" t-att-value="student_id.id"/> <div class="col-md-4 mt8"> <lable for="course_id">Course:</lable> </div> <div class="col-md-8"> <select id="course_dropdown" class="form-control" name="course_id" onchange="myFunction()"> <option value="" class="disabled selected"> <lable>Select your option</lable> </option> <t t-foreach="course" t-as="course_id"> <option t-att-value="course_id.id"> <t t-esc="course_id.name"/> </option> </t> </select> </div> <script> function myFunction() { odoo.define("op.batch", function (require) { var rpc = require('web.rpc'); var course = document.getElementById("course_dropdown"); rpc.query({ model: 'op.batch', }).then(function (data) { for(i in data){ alert(i); document.getElementById("batch_id").value = i.name;} }); }); } </script> <div class="col-md-4 mt16"> <lable for="batch_id">Batch:</lable> </div> <div class="col-md-8 mt8"> <select class="form-control" name="batch_id"> <option value="" class="disabled selected"> <lable>Select your option</lable> </option> <option> <t id="batch_id" t-esc="batch_id"/> </option> </select> </div> </div> <div class="row col-md-6"> <div class="col-md-6 mt8"> <lable for="min_unit_load">Minimum Unit Load:</lable> </div> <div class="col-md-6"> <input type="number" name="min_unit_load" t-attf-class="form-control" t-attf-value="student_id.min_unit_load"/> </div> <div class="col-md-6 mt16"> <lable for="max_unit_load">Maximum Unit Load:</lable> </div> <div class="col-md-6 mt8"> <input type="number" name="max_unit_load" t-attf-class="form-control" t-attf-value="student_id.max_unit_load"/> </div> </div> </div> <div class="mt32"/> <div t-if="user_id.sudo().is_student" class="row col-md-12"> <div class="col-md-2 mt8"> <lable for="compulsory_subject_ids">Compulsory Subjects:</lable> </div> <div class="col-md-10" style="padding-left: 5px;"> <select class="form-control js-example-basic-multiple subjects" name="compulsory_subject_ids" multiple="True" required="1"> <t t-foreach="subjects or []" t-as="subject"> <t t-if="subject.subject_type == 'compulsory'"> <option t-att-value="subject.id"> <t t-esc="subject.name"/> </option> </t> </t> </select> </div> </div> <div t-if="user_id.sudo().is_student" class="row mt8 col-md-12"> <div class="col-md-2 mt8"> <lable for="elective_subject_ids">Elective Subjects:</lable> </div> <div class="col-md-10" style="padding-left: 5px;"> <select class="form-control js-example-basic-multiple subjects" name="compulsory_subject_ids" multiple="True" required="1"> <t t-foreach="subjects or []" t-as="subject"> <t t-if="subject.subject_type == 'elective'"> <option t-att-value="subject.id"> <t t-esc="subject.name"/> </option> </t> </t> </select> </div> </div> <div class="clearfix mb16 mt16 row col-md-12"> <div class="col-md-4"> <button type="submit" class="btn btn-primary"> SUBMIT <span class="fa fa-long-arrow-right"/> </button> </div> </div> </form> </div> </div> </t> </template>
model.py file all fields are available here.
class OpSubjectRegistration(models.Model): _name = "op.subject.registration" _inherit = ["mail.thread"] name = fields.Char('Name', readonly=True, default='New') student_id = fields.Many2one('op.student', 'Student', required=True, track_visibility='onchange') course_id = fields.Many2one('op.course', 'Course', required=True, track_visibility='onchange') batch_id = fields.Many2one('op.batch', 'Batch', required=True, track_visibility='onchange') compulsory_subject_ids = fields.Many2many( 'op.subject', 'subject_compulsory_rel', 'register_id', 'subject_id', string="Compulsory Subjects", readonly=True) elective_subject_ids = fields.Many2many( 'op.subject', string="Elective Subjects") state = fields.Selection([ ('draft', 'Draft'), ('submitted', 'Submitted'), ('approved', 'Approved'), ('rejected', 'Rejected')], default='draft', string='state', copy=False, track_visibility='onchange') max_unit_load = fields.Float('Maximum Unit Load', track_visibility='onchange') min_unit_load = fields.Float('Minimum Unit Load', track_visibility='onchange')
please help me to do this i am stucking at javascript code how to do this using javascript how to take model records and perform operations.
controller.py ....................................
@http.route('/subject/registration/create/', type='http', auth='public', website=True)
def subject_registration(self, **kw):
students = request.env['op.student'].sudo().search([('user_id', '=', request.session.uid)])
for student in students:
student_id = request.env['op.subject.registration'].sudo().search([('student_id', '=', student.name)])
course = request.env['op.course'].sudo().search([])
subjects = request.env['op.subject'].sudo().search([])
values = {
'student_id': student_id,
'course': course,
'subjects': subjects,
}
return request.render("portal_student.openeducat_create_subject_registration", values)