[IMP] delete user and benefit safely with validation
This commit is contained in:
parent
6461dc2330
commit
c1df27244a
|
|
@ -12237,7 +12237,7 @@ msgstr ""
|
||||||
#: code:addons/odex_benefit/models/visit.py:0
|
#: code:addons/odex_benefit/models/visit.py:0
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "You cannot delete this record"
|
msgid "You cannot delete this record"
|
||||||
msgstr ""
|
msgstr "لا يمكنك حذف هذا السجل"
|
||||||
|
|
||||||
#. module: odex_benefit
|
#. module: odex_benefit
|
||||||
#: code:addons/odex_benefit/controllers/benefit.py:0
|
#: code:addons/odex_benefit/controllers/benefit.py:0
|
||||||
|
|
@ -14585,4 +14585,17 @@ msgstr "فشل في حذف هذا الشريك بعد حذف المستخدم ا
|
||||||
#: code:addons/odex_benefit/models/res_users.py:0
|
#: code:addons/odex_benefit/models/res_users.py:0
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Cannot delete user '%s': linked to Benefits - Profiles %s"
|
msgid "Cannot delete user '%s': linked to Benefits - Profiles %s"
|
||||||
msgstr "لا يمكن حذف المستخدم '%s': مرتبط بملفات المستفيدين %s"
|
msgstr "لا يمكن حذف المستخدم '%s': مرتبط بملفات المستفيدين %s"
|
||||||
|
|
||||||
|
#. module: odex_benefit
|
||||||
|
#: code:addons/odex_benefit/models/benefit.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot delete user '%s': still linked to other benefit profiles."
|
||||||
|
msgstr "لا يمكن حذف المستخدم '%s': لا يزال مرتبطًا بملفات مستفيدين أخرى."
|
||||||
|
|
||||||
|
#. module: odex_benefit
|
||||||
|
#: code:addons/odex_benefit/models/res_partner.py:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Cannot delete partner '%s': linked to Benefits - Profiles %s"
|
||||||
|
msgstr "لا يمكن حذف الشريك '%s': مرتبط بملفات مستفيدين %s"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -33,4 +33,5 @@ from . import service_refuse_reason
|
||||||
from . import res_city
|
from . import res_city
|
||||||
from . import seasonal_service
|
from . import seasonal_service
|
||||||
# from . import res_config_settings
|
# from . import res_config_settings
|
||||||
from . import res_users
|
from . import res_users
|
||||||
|
from . import res_partner
|
||||||
|
|
@ -1079,10 +1079,31 @@ class GrantBenefitProfile(models.Model):
|
||||||
return res
|
return res
|
||||||
|
|
||||||
def unlink(self):
|
def unlink(self):
|
||||||
for order in self:
|
users_to_delete = self.env['res.users']
|
||||||
if order.state not in ['draft','new']:
|
skip_user = self.env.context.get('skip_user_unlink')
|
||||||
|
|
||||||
|
for record in self:
|
||||||
|
if record.state not in ['draft', 'new']:
|
||||||
raise UserError(_('You cannot delete this record'))
|
raise UserError(_('You cannot delete this record'))
|
||||||
return super(GrantBenefitProfile, self).unlink()
|
|
||||||
|
if not skip_user and record.user_id:
|
||||||
|
other_benefits = self.env['grant.benefit'].search([
|
||||||
|
('user_id', '=', record.user_id.id),
|
||||||
|
('id', '!=', record.id)
|
||||||
|
])
|
||||||
|
if other_benefits:
|
||||||
|
raise UserError(
|
||||||
|
_("Cannot delete user '%s': still linked to other benefit profiles.")
|
||||||
|
% record.user_id.name
|
||||||
|
)
|
||||||
|
users_to_delete |= record.user_id
|
||||||
|
|
||||||
|
res = super().unlink()
|
||||||
|
|
||||||
|
if not skip_user:
|
||||||
|
users_to_delete.unlink()
|
||||||
|
|
||||||
|
return res
|
||||||
|
|
||||||
def copy(self, default=None):
|
def copy(self, default=None):
|
||||||
"""Override the copy method to prevent duplicating the record."""
|
"""Override the copy method to prevent duplicating the record."""
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
from odoo import api, fields, models, _
|
||||||
|
from odoo.exceptions import ValidationError
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
class ResPartner(models.Model):
|
||||||
|
_inherit = "res.partner"
|
||||||
|
|
||||||
|
def unlink(self):
|
||||||
|
env = self.env
|
||||||
|
|
||||||
|
for partner in self:
|
||||||
|
grants = env['grant.benefit'].search([
|
||||||
|
('partner_id', '=', partner.id),
|
||||||
|
('state', 'not in', ['draft', 'new'])
|
||||||
|
])
|
||||||
|
if grants:
|
||||||
|
grant_info = ', '.join('[%s: %s]' % (g.code or g.name or g.id, dict(g._fields['state'].selection).get(g.state)) for g in grants)
|
||||||
|
raise ValidationError(
|
||||||
|
_("Cannot delete partner '%s': linked to Benefits - Profiles %s") % (partner.name, grant_info)
|
||||||
|
)
|
||||||
|
return super().unlink()
|
||||||
|
|
@ -15,11 +15,16 @@ class ResUsers(models.Model):
|
||||||
('state', 'not in', ['draft', 'new'])
|
('state', 'not in', ['draft', 'new'])
|
||||||
])
|
])
|
||||||
if grants:
|
if grants:
|
||||||
grant_info = ', '.join('[%s: %s]' % (g.code or g.name or g.id, g.state) for g in grants)
|
grant_info = ', '.join('[%s: %s]' % (g.code or g.name or g.id, dict(self.env['grant.benefit']._fields['state'].selection).get(g.state)) for g in grants)
|
||||||
raise ValidationError(
|
raise ValidationError(
|
||||||
_("Cannot delete user '%s': linked to Benefits - Profiles %s") % (user.name, grant_info)
|
_("Cannot delete user '%s': linked to Benefits - Profiles %s") % (user.name, grant_info)
|
||||||
)
|
)
|
||||||
partners = self.mapped('partner_id')
|
partners = self.mapped('partner_id')
|
||||||
|
|
||||||
|
for user in self:
|
||||||
|
benefits = self.env['grant.benefit'].search([('user_id', '=', user.id)])
|
||||||
|
benefits.with_context(skip_user_unlink=True).unlink()
|
||||||
|
|
||||||
res = super(ResUsers, self).unlink()
|
res = super(ResUsers, self).unlink()
|
||||||
|
|
||||||
for partner in partners:
|
for partner in partners:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue