From eba5834cbf487ced43a277c42cc39417cf43ee92 Mon Sep 17 00:00:00 2001 From: Bakry Date: Wed, 10 Jul 2024 17:16:27 +0300 Subject: [PATCH] update system notification from zfp --- .../system_notification/__manifest__.py | 4 +- .../system_notification/i18n/ar_001.po | 35 +++++++++---- .../system_notification/models/models.py | 50 ++++++++++++++++++- .../system_notification/views/activity.xml | 1 + .../system_notification/views/views.xml | 22 +++++++- 5 files changed, 95 insertions(+), 17 deletions(-) create mode 100644 odex25_base/system_notification/views/activity.xml diff --git a/odex25_base/system_notification/__manifest__.py b/odex25_base/system_notification/__manifest__.py index 8aa94c744..fb4c4db65 100644 --- a/odex25_base/system_notification/__manifest__.py +++ b/odex25_base/system_notification/__manifest__.py @@ -7,14 +7,12 @@ 'description': """ """, - 'category' : 'Odex25-base', - # Categories can be used to filter modules in modules listing # Check https://github.com/odoo/odoo/blob/11.0/odoo/addons/base/module/module_data.xml # for the full list # any module necessary for this one to work correctly - 'depends': ['base_automation'], + 'depends': ['base_automation','mail'], # always loaded 'data': [ diff --git a/odex25_base/system_notification/i18n/ar_001.po b/odex25_base/system_notification/i18n/ar_001.po index c79edc081..975e3671a 100644 --- a/odex25_base/system_notification/i18n/ar_001.po +++ b/odex25_base/system_notification/i18n/ar_001.po @@ -31,7 +31,7 @@ msgid "Automation" msgstr "أتمتة" #. module: system_notification -#: model:ir.model.fields,field_description:system_notification.field_base_automation_notify__cc_groups_ids +#: model:ir.model.fields,field_description:system_notification.field_base_automation_notify_cc_groups_ids msgid "CC Notify Groups" msgstr "نسخة ايميل لـ" @@ -41,47 +41,47 @@ msgid "Click to setup a new automated automation." msgstr "انقر لإعداد أتمتة آلية جديدة." #. module: system_notification -#: model:ir.model.fields,field_description:system_notification.field_automation_group__create_uid +#: model:ir.model.fields,field_description:system_notification.field_automation_group_create_uid msgid "Created by" msgstr "أنشئ بواسطة" #. module: system_notification -#: model:ir.model.fields,field_description:system_notification.field_automation_group__create_date +#: model:ir.model.fields,field_description:system_notification.field_automation_group_create_date msgid "Created on" msgstr "أنشئ في" #. module: system_notification -#: model:ir.model.fields,field_description:system_notification.field_automation_group__display_name +#: model:ir.model.fields,field_description:system_notification.field_automation_group_display_name msgid "Display Name" msgstr "الاسم المعروض" #. module: system_notification -#: model:ir.model.fields,field_description:system_notification.field_automation_group__atuomation_ids +#: model:ir.model.fields,field_description:system_notification.field_automation_group_atuomation_ids msgid "Group States " msgstr "حالات المجموعة" #. module: system_notification -#: model:ir.model.fields,field_description:system_notification.field_automation_group__id +#: model:ir.model.fields,field_description:system_notification.field_automation_group_id msgid "ID" msgstr "المعرف" #. module: system_notification -#: model:ir.model.fields,field_description:system_notification.field_automation_group__last_update +#: model:ir.model.fields,field_description:system_notification.field_automation_group___last_update msgid "Last Modified on" msgstr "آخر تعديل في" #. module: system_notification -#: model:ir.model.fields,field_description:system_notification.field_automation_group__write_uid +#: model:ir.model.fields,field_description:system_notification.field_automation_group_write_uid msgid "Last Updated by" msgstr "آخر تحديث بواسطة" #. module: system_notification -#: model:ir.model.fields,field_description:system_notification.field_automation_group__write_date +#: model:ir.model.fields,field_description:system_notification.field_automation_group_write_date msgid "Last Updated on" msgstr "آخر تحديث في" #. module: system_notification -#: model:ir.model.fields,field_description:system_notification.field_automation_group__model_id +#: model:ir.model.fields,field_description:system_notification.field_automation_group_model_id msgid "Model" msgstr "اسم الإجراء" @@ -91,10 +91,23 @@ msgid "System Notification" msgstr "إشعارات النظام" #. module: system_notification -#: model:ir.model.fields,field_description:system_notification.field_base_automation_notify__to_groups_ids +#: model:ir.model.fields,field_description:system_notification.field_base_automation_notify_to_groups_ids msgid "TO Notify Groups" msgstr "إشعار المجموعة" +#. module: system_notification +#: model:ir.actions.act_window,help:system_notification.base_automation_act +msgid "Use automated actions to automatically trigger actions for\n" +" various screens. Example: a lead created by a specific user may\n" +" be automatically set to a specific sales channel, or an\n" +" opportunity which still has status pending after 14 days might\n" +" trigger an automatic reminder email." +msgstr "استخدم الإجراءات التلقائية لتشغيل الإجراءات تلقائيًا لـ\n" +" شاشات مختلفة. مثال: قد يتم إنشاء عميل محتمل بواسطة مستخدم معين\n" +" يتم تعيينها تلقائيًا إلى قناة مبيعات معينة ، أو ملف\n" +" الفرصة التي لا تزال بحالة معلقة بعد 14 يومًا\n" +" تشغيل رسالة بريد إلكتروني للتذكير التلقائي." + #. module: system_notification #: model:ir.model,name:system_notification.model_automation_group msgid "automation.group" diff --git a/odex25_base/system_notification/models/models.py b/odex25_base/system_notification/models/models.py index be2db7505..185c4710f 100644 --- a/odex25_base/system_notification/models/models.py +++ b/odex25_base/system_notification/models/models.py @@ -1,11 +1,19 @@ # -*- coding: utf-8 -*- -from odoo import models, fields, api +from odoo import models, fields, api class BaseAutomation(models.Model): _inherit = 'base.automation' - + # add new optine send notify + send_notify = fields.Boolean(string='Send Notify') + notify_title = fields.Char( + string='Notification Title',related='model_id.name') + notify_note = fields.Char( + string='Notification Note') + notify_summary = fields.Char( + string='Notification Message') + # end option notify_to_groups_ids = fields.Many2many(comodel_name='res.groups', relation='automation_notifications_to_groups_rel', string='TO Notify Groups') @@ -29,6 +37,41 @@ class BaseAutomation(models.Model): if self.has_access(user_id=user.id, record=record, mode='read') and user.partner_id.email: users.append(user.partner_id.email) return ",".join(users) + # todo start to add method return access users ids list + def access_users_ids(self, groups, record): + # partner_ids = set() + processed_users = set() + for group in groups: + for user in group.users: + if user.id not in processed_users and self.has_access(user_id=user.id, record=record, mode='read'): + # partner_ids.add(user.partner_id.id) + processed_users.add(user.id) + return list(processed_users) + + # def access_partner_ids(self, groups, record): + # partner_ids = [] + # for group in groups: + # for user in group.users: + # if self.has_access(user_id = user.id, record=record, mode='read'): + # partner_ids.append(user.partner_id.id) + # return partner_ids + # todo end + def get_notify_message(self,record): + user_ids = self.access_users_ids(self.notify_to_groups_ids, record) + for user in user_ids: + record.activity_schedule('mail.mail_activity_todo', user_id=user,) + + # notification_ids = [(0, 0, {'res_partner_id': p,'notification_type': 'inbox'})] + # self.env['mail.message'].sudo().create({ + # 'message_type': 'notification', + # 'body': self.notify_note, + # 'subject':self.notify_summary, + # 'model': record._name, + # 'res_id': record.id, + # 'partner_ids': partner_ids, + # 'notification_ids': notification_ids, + # }) + # end notify method def get_mail_to(self, record): users = self.access_users(self.notify_to_groups_ids, record) @@ -93,5 +136,8 @@ class ServerActions(models.Model): 'email_cc': old_email_cc, } action.template_id.write(old_template_values) + if automation.send_notify: + print('true send....') + automation.get_notify_message(record) return False return super(ServerActions, self)._run_action_email(eval_context=eval_context) diff --git a/odex25_base/system_notification/views/activity.xml b/odex25_base/system_notification/views/activity.xml new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/odex25_base/system_notification/views/activity.xml @@ -0,0 +1 @@ + diff --git a/odex25_base/system_notification/views/views.xml b/odex25_base/system_notification/views/views.xml index 94b37a469..5130e042e 100644 --- a/odex25_base/system_notification/views/views.xml +++ b/odex25_base/system_notification/views/views.xml @@ -8,11 +8,31 @@ + + + + + + + + + + + + + + + + + + + + @@ -22,4 +42,4 @@ - \ No newline at end of file +