2026-09-28 11:03:02 +05:30

57 lines
2.0 KiB
Python

from odoo import fields, http
from odoo.exceptions import ValidationError
from odoo.http import request
from odoo.addons.dance_portal.controllers.portal import DanceCustomerPortal
class DanceLeavePortal(DanceCustomerPortal):
def _get_student_portal_values(self, student):
values = super()._get_student_portal_values(student)
values["leave_requests"] = request.env["dance.leave.request"].sudo().search(
[("student_id", "=", student.id)],
order="from_date desc, id desc",
limit=20,
)
return values
@http.route(
["/my/students/<int:student_id>/leave"],
type="http",
auth="user",
website=True,
methods=["GET", "POST"],
csrf=True,
)
def portal_student_leave_request(self, student_id, **post):
student = self._get_portal_student(student_id)
if not student:
return request.redirect("/my/students")
values = self._prepare_portal_layout_values()
values.update(
{
"page_name": "dance_student_leave",
"student": student,
"error": False,
"post": post,
}
)
if request.httprequest.method == "POST":
try:
leave = request.env["dance.leave.request"].sudo().create(
{
"student_id": student.id,
"guardian_id": request.env.user.partner_id.id,
"from_date": fields.Date.to_date(post.get("from_date")),
"to_date": fields.Date.to_date(post.get("to_date")),
"reason": (post.get("reason") or "").strip(),
}
)
return request.redirect("/my/students/%s?leave_submitted=1" % leave.student_id.id)
except (ValidationError, ValueError) as exc:
values["error"] = exc.args[0] if exc.args else str(exc)
return request.render("dance_leave.portal_student_leave_form", values)