This commit is contained in:
pranay 2026-04-13 18:21:55 +05:30
parent ff806505e2
commit 26923e20b9
2120 changed files with 1307331 additions and 1307302 deletions

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<!-- security.xml --> <!--security.xml -->
<odoo> <odoo>
<!-- security.xml --> <!--security.xml -->
<odoo> <odoo>
<record id="category_employee_appraisal" model="ir.module.category"> <record id="category_employee_appraisal" model="ir.module.category">

View File

@ -170,13 +170,9 @@ class HRJobRecruitment(models.Model):
def send_mail_to_recruiters(self): def send_mail_to_recruiters(self):
for rec in self: for rec in self:
""" Open the email wizard """ users = (rec.interviewer_ids | rec.user_id).filtered(lambda user: user.email)
users = rec.interviewer_ids.ids if not users:
primary_user = rec.user_id.id raise ValidationError(_("Please add at least one recruiter with an email address before sending notifications."))
# template = self.env.ref('hr_recruitment_extended.email_template_recruiter_assignment_template')
# template.sudo().send_mail(rec.id, force_send=True)
users.append(primary_user)
return { return {
'type': 'ir.actions.act_window', 'type': 'ir.actions.act_window',
'name': 'Send Email', 'name': 'Send Email',
@ -184,8 +180,10 @@ class HRJobRecruitment(models.Model):
'view_mode': 'form', 'view_mode': 'form',
'view_id': self.env.ref('hr_recruitment_extended.view_ats_invite_mail_template_wizard_form').id, 'view_id': self.env.ref('hr_recruitment_extended.view_ats_invite_mail_template_wizard_form').id,
'target': 'new', 'target': 'new',
'context': {'default_partner_ids': [(6, 0, users)],'default_template_id': self.env.ref("hr_recruitment_extended.email_template_recruiter_assignment_template").id, 'context': {
}, 'default_partner_ids': [(6, 0, users.ids)],
'default_template_id': self.env.ref("hr_recruitment_extended.email_template_recruiter_assignment_template").id,
},
} }
@api.onchange('requested_by') @api.onchange('requested_by')

View File

@ -428,6 +428,20 @@
</field> </field>
</record> </record>
<record id="action_hr_job_recruitment" model="ir.actions.act_window">
<field name="name">Job Positions Recruitment</field>
<field name="res_model">hr.job.recruitment</field>
<field name="view_mode">kanban,list,form</field>
<field name="search_view_id" ref="view_job_recruitment_filter"/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Ready to recruit more efficiently?
</p>
<p>
Let's create a job position recruitment request.
</p>
</field>
</record>
<record id="action_hr_job_recruitment_awaiting_published" model="ir.actions.act_window"> <record id="action_hr_job_recruitment_awaiting_published" model="ir.actions.act_window">

View File

@ -35,18 +35,33 @@ class AtsInviteMailTemplateWizard(models.TransientModel):
def action_send_email(self): def action_send_email(self):
""" Send email to the selected partners """
if not self.partner_ids: if not self.partner_ids:
raise UserError("Please select at least one recipient.") raise UserError("Please select at least one recipient.")
users_without_email = self.partner_ids.filtered(lambda user: not user.email)
if users_without_email:
raise UserError(
"These recipients do not have an email address: %s"
% ", ".join(users_without_email.mapped('name'))
)
template = self.template_id or self.env.ref(
'hr_recruitment_extended.email_template_recruiter_assignment_template'
)
for partner in self.partner_ids: for partner in self.partner_ids:
template = self.env.ref('hr_recruitment_extended.email_template_recruiter_assignment_template')
values = { values = {
'email_from': self.env.company.email, 'email_from': self.env.company.email or self.env.user.email_formatted,
'email_to': partner.email, 'email_to': partner.email,
} }
render_ctx = dict(recruiter_name=partner.employee_id.name) render_ctx = {
# Use 'with_context' to override the email template fields dynamically 'recruiter_name': partner.employee_id.name or partner.name,
template.sudo().with_context(default_body_html=self.email_body, default_subject=self.email_subject,**render_ctx).send_mail(self.env.context.get('active_id'),email_values=values, force_send=True) 'default_body_html': self.email_body,
'default_subject': self.email_subject,
}
template.sudo().with_context(**render_ctx).send_mail(
self.env.context.get('active_id'),
email_values=values,
force_send=True,
)
return {'type': 'ir.actions.act_window_close'} # Close wizard after sending return {'type': 'ir.actions.act_window_close'} # Close wizard after sending

View File

@ -1,7 +1,10 @@
{ {
"name": "Custom Module Switcher", "name": "Custom Module Switcher",
"version": "1.0", "version": "1.0",
"depends": ["web"], "depends": ["web","menu_control_center"],
'data': [
'security/ir.model.access.csv',
],
"assets": { "assets": {
"web.assets_backend": [ "web.assets_backend": [
"module_selector_sidebar/static/src/js/module_switcher.js", "module_selector_sidebar/static/src/js/module_switcher.js",

View File

@ -2,4 +2,3 @@ from . import project_kudo_extend
from . import task_assignee_domain from . import task_assignee_domain
from . import project_task from . import project_task
from . import account_analytic_line from . import account_analytic_line

0
addons_extensions/one2many_search_widget/__init__.py Executable file → Normal file
View File

View File