odoo_18_Education_management/models/application.py

91 lines
3.2 KiB
Python
Raw Normal View History

2025-07-29 05:25:05 +00:00
from odoo import models, fields, api
from odoo.exceptions import ValidationError
import re
from odoo.exceptions import UserError
import base64
class SchoolApplication(models.Model):
_name = 'school.application'
_description = 'Student Application'
_order = 'name'
_rec_name = 'name'
# _inherit = ['mail.thread', 'mail.activity.mixin']
name = fields.Char(string="Student Name", required=True,)
email = fields.Char(string="Email", )
phone_no = fields.Char(string="Phone Number")
image = fields.Binary("Profile Photo", store=True)
address = fields.Text(string="Address")
class_name = fields.Char(string="Class")
gender = fields.Selection([
('male', 'Male'),
('female', 'Female'),
('other', 'Other')
], string="Gender")
date_of_birth = fields.Date(string="Date of Birth")
parent_email = fields.Char(string="Parent Email")
blood_group = fields.Selection([
('a+', 'A+'), ('a-', 'A-'),
('b+', 'B+'), ('b-', 'B-'),
('ab+', 'AB+'), ('ab-', 'AB-'),
('o+', 'O+'), ('o-', 'O-')
], string="Blood Group")
school_name = fields.Char(string="Previous School")
has_disability = fields.Boolean(string="Any Disability")
is_ex_service_child = fields.Boolean(string="Ex-Service Man's Child")
caste = fields.Selection([
('general', 'General'),
('OBC', 'OBC'),
('SC', 'SC'),
('ST', 'ST'),
('other','Other')
], string="Caste")
status = fields.Selection([
('pending', 'Pending'),
('approved', 'Approved'),
('rejected', 'Rejected')
], default='pending')
father_name = fields.Char(string="Father's Name")
father_phone = fields.Char(string="Father's Phone")
mother_name = fields.Char(string="Mother's Name")
mother_phone = fields.Char(string="Mother's Phone")
father_occupation = fields.Char(string="Father's Occupation")
mother_occupation = fields.Char(string="Mother's Occupation")
# Admission Query
admission_query = fields.Text(string="Admission Query")
# Documents (File Uploads)
birth_certificate = fields.Binary(string="Birth Certificate")
birth_certificate_filename = fields.Char(string="Filename")
tc_certificate = fields.Binary(string="Transfer Certificate")
tc_certificate_filename = fields.Char(string="TC Filename")
aadhaar_card = fields.Binary(string="Aadhaar Card")
aadhaar_card_filename = fields.Char(string="Filename")
@api.constrains('phone_no')
def _check_phone_no(self):
for record in self:
if not re.fullmatch(r'\d{10}', record.phone_no or ''):
raise ValidationError("Phone number must contain exactly 10 digits.")
def action_send_message(self):
for record in self:
raise UserError("Send Message clicked for %s" % record.name)
def action_log_note(self):
for record in self:
raise UserError("Log Note clicked for %s" % record.name)
def action_schedule_activity(self):
for record in self:
raise UserError("Activity clicked for %s" % record.name)
# def get_default_image(self):
# with open('/path/to/sample.jpg', 'rb') as f:
# return base64.b64encode(f.read())