[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
|
||||
#, python-format
|
||||
msgid "You cannot delete this record"
|
||||
msgstr ""
|
||||
msgstr "لا يمكنك حذف هذا السجل"
|
||||
|
||||
#. module: odex_benefit
|
||||
#: code:addons/odex_benefit/controllers/benefit.py:0
|
||||
|
|
@ -14585,4 +14585,17 @@ msgstr "فشل في حذف هذا الشريك بعد حذف المستخدم ا
|
|||
#: code:addons/odex_benefit/models/res_users.py:0
|
||||
#, python-format
|
||||
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 seasonal_service
|
||||
# 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
|
||||
|
||||
def unlink(self):
|
||||
for order in self:
|
||||
if order.state not in ['draft','new']:
|
||||
users_to_delete = self.env['res.users']
|
||||
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'))
|
||||
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):
|
||||
"""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'])
|
||||
])
|
||||
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(
|
||||
_("Cannot delete user '%s': linked to Benefits - Profiles %s") % (user.name, grant_info)
|
||||
)
|
||||
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()
|
||||
|
||||
for partner in partners:
|
||||
|
|
|
|||
Loading…
Reference in New Issue