[IMP] Convert UserError into ValidationError when only a message to display
When only a message argument is given to the crash manager, the popup display "Error while validating constarint" and "None" with the warning message which does not make any sense for the common user.
This commit is contained in:
committed by
Yannick Tivisse
parent
0eebd3c4ac
commit
1409de5d36
@@ -93,7 +93,7 @@ class AccountAccount(models.Model):
|
||||
def _check_reconcile(self):
|
||||
for account in self:
|
||||
if account.internal_type in ('receivable', 'payable') and account.reconcile == False:
|
||||
raise ValueError(_('You cannot have a receivable/payable account that is not reconciliable. (account code: %s)') % account.code)
|
||||
raise ValidationError(_('You cannot have a receivable/payable account that is not reconciliable. (account code: %s)') % account.code)
|
||||
|
||||
name = fields.Char(required=True, index=True)
|
||||
currency_id = fields.Many2one('res.currency', string='Account Currency',
|
||||
@@ -265,9 +265,9 @@ class AccountJournal(models.Model):
|
||||
def _check_currency(self):
|
||||
if self.currency_id:
|
||||
if self.default_credit_account_id and not self.default_credit_account_id.currency_id.id == self.currency_id.id:
|
||||
raise UserError(_('Configuration error!\nThe currency of the journal should be the same than the default credit account.'))
|
||||
raise ValidationError(_('Configuration error!\nThe currency of the journal should be the same than the default credit account.'))
|
||||
if self.default_debit_account_id and not self.default_debit_account_id.currency_id.id == self.currency_id.id:
|
||||
raise UserError(_('Configuration error!\nThe currency of the journal should be the same than the default debit account.'))
|
||||
raise ValidationError(_('Configuration error!\nThe currency of the journal should be the same than the default debit account.'))
|
||||
|
||||
@api.one
|
||||
@api.constrains('type', 'bank_account_id')
|
||||
@@ -530,7 +530,7 @@ class AccountTax(models.Model):
|
||||
@api.constrains('children_tax_ids', 'type_tax_use')
|
||||
def _check_children_scope(self):
|
||||
if not all(child.type_tax_use in ('none', self.type_tax_use) for child in self.children_tax_ids):
|
||||
raise UserError(_('The application scope of taxes in a group must be either the same as the group or "None".'))
|
||||
raise ValidationError(_('The application scope of taxes in a group must be either the same as the group or "None".'))
|
||||
|
||||
@api.one
|
||||
def copy(self, default=None):
|
||||
|
||||
@@ -1309,7 +1309,7 @@ class AccountPaymentTermLine(models.Model):
|
||||
@api.constrains('value', 'value_amount')
|
||||
def _check_percent(self):
|
||||
if self.value == 'percent' and (self.value_amount < 0.0 or self.value_amount > 100.0):
|
||||
raise UserError(_('Percentages for Payment Term Line must be between 0 and 100.'))
|
||||
raise ValidationError(_('Percentages for Payment Term Line must be between 0 and 100.'))
|
||||
|
||||
@api.onchange('option')
|
||||
def _onchange_option(self):
|
||||
|
||||
@@ -4,7 +4,7 @@ import time
|
||||
from collections import OrderedDict
|
||||
from openerp import api, fields, models, _
|
||||
from openerp.osv import expression
|
||||
from openerp.exceptions import RedirectWarning, UserError
|
||||
from openerp.exceptions import RedirectWarning, UserError, ValidationError
|
||||
from openerp.tools.misc import formatLang
|
||||
from openerp.tools import float_is_zero, float_compare
|
||||
from openerp.tools.safe_eval import safe_eval
|
||||
@@ -386,14 +386,14 @@ class AccountMoveLine(models.Model):
|
||||
for line in self:
|
||||
if line.account_id.currency_id:
|
||||
if not line.currency_id or line.currency_id.id != line.account_id.currency_id.id:
|
||||
raise UserError(_('The selected account of your Journal Entry forces to provide a secondary currency. You should remove the secondary currency on the account.'))
|
||||
raise ValidationError(_('The selected account of your Journal Entry forces to provide a secondary currency. You should remove the secondary currency on the account.'))
|
||||
|
||||
@api.multi
|
||||
@api.constrains('currency_id', 'amount_currency')
|
||||
def _check_currency_and_amount(self):
|
||||
for line in self:
|
||||
if (line.amount_currency and not line.currency_id):
|
||||
raise UserError(_("You cannot create journal items with a secondary currency without filling both 'currency' and 'amount currency' field."))
|
||||
raise ValidationError(_("You cannot create journal items with a secondary currency without filling both 'currency' and 'amount currency' field."))
|
||||
|
||||
@api.multi
|
||||
@api.constrains('amount_currency')
|
||||
@@ -401,7 +401,7 @@ class AccountMoveLine(models.Model):
|
||||
for line in self:
|
||||
if line.amount_currency:
|
||||
if (line.amount_currency > 0.0 and line.credit > 0.0) or (line.amount_currency < 0.0 and line.debit > 0.0):
|
||||
raise UserError(_('The amount expressed in the secondary currency must be positive when account is debited and negative when account is credited.'))
|
||||
raise ValidationError(_('The amount expressed in the secondary currency must be positive when account is debited and negative when account is credited.'))
|
||||
|
||||
####################################################
|
||||
# Reconciliation interface methods
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
import pytz
|
||||
|
||||
from openerp import _, api, fields, models
|
||||
from openerp.exceptions import AccessError, UserError
|
||||
from openerp.exceptions import AccessError, UserError, ValidationError
|
||||
|
||||
class event_type(models.Model):
|
||||
""" Event Type """
|
||||
@@ -196,13 +196,13 @@ class event_event(models.Model):
|
||||
@api.constrains('seats_max', 'seats_available')
|
||||
def _check_seats_limit(self):
|
||||
if self.seats_availability == 'limited' and self.seats_max and self.seats_available < 0:
|
||||
raise UserError(_('No more available seats.'))
|
||||
raise ValidationError(_('No more available seats.'))
|
||||
|
||||
@api.one
|
||||
@api.constrains('date_begin', 'date_end')
|
||||
def _check_closing_date(self):
|
||||
if self.date_end < self.date_begin:
|
||||
raise UserError(_('Closing Date cannot be set before Beginning Date.'))
|
||||
raise ValidationError(_('Closing Date cannot be set before Beginning Date.'))
|
||||
|
||||
@api.model
|
||||
def create(self, vals):
|
||||
@@ -296,7 +296,7 @@ class event_registration(models.Model):
|
||||
@api.constrains('event_id', 'state')
|
||||
def _check_seats_limit(self):
|
||||
if self.event_id.seats_availability == 'limited' and self.event_id.seats_max and self.event_id.seats_available < (1 if self.state == 'draft' else 0):
|
||||
raise UserError(_('No more seats available for this event.'))
|
||||
raise ValidationError(_('No more seats available for this event.'))
|
||||
|
||||
@api.multi
|
||||
def _check_auto_confirmation(self):
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
from openerp import models, fields, api, _
|
||||
import openerp.addons.decimal_precision as dp
|
||||
from openerp.exceptions import UserError
|
||||
from openerp.exceptions import ValidationError
|
||||
from openerp.osv import fields as old_fields
|
||||
|
||||
|
||||
@@ -128,7 +128,7 @@ class event_ticket(models.Model):
|
||||
@api.constrains('registration_ids', 'seats_max')
|
||||
def _check_seats_limit(self):
|
||||
if self.seats_max and self.seats_available < 0:
|
||||
raise UserError(_('No more available seats for the ticket'))
|
||||
raise ValidationError(_('No more available seats for the ticket'))
|
||||
|
||||
@api.onchange('product_id')
|
||||
def onchange_product_id(self):
|
||||
@@ -150,7 +150,7 @@ class event_registration(models.Model):
|
||||
@api.constrains('event_ticket_id', 'state')
|
||||
def _check_ticket_seats_limit(self):
|
||||
if self.event_ticket_id.seats_max and self.event_ticket_id.seats_available < 0:
|
||||
raise UserError(_('No more available seats for this ticket'))
|
||||
raise ValidationError(_('No more available seats for this ticket'))
|
||||
|
||||
@api.multi
|
||||
def _check_auto_confirmation(self):
|
||||
|
||||
@@ -4,7 +4,7 @@ import datetime
|
||||
|
||||
from openerp import models, fields, api, _
|
||||
import openerp.addons.decimal_precision as dp
|
||||
from openerp.exceptions import AccessError, UserError
|
||||
from openerp.exceptions import AccessError, ValidationError
|
||||
|
||||
|
||||
class LunchOrder(models.Model):
|
||||
@@ -95,7 +95,7 @@ class LunchOrder(models.Model):
|
||||
date_order = datetime.datetime.strptime(self.date, '%Y-%m-%d')
|
||||
date_today = datetime.datetime.strptime(fields.Date.context_today(self), '%Y-%m-%d')
|
||||
if (date_order < date_today):
|
||||
raise UserError(_('The date of your order is in the past.'))
|
||||
raise ValidationError(_('The date of your order is in the past.'))
|
||||
|
||||
@api.one
|
||||
@api.depends('order_line_ids.state')
|
||||
|
||||
@@ -5,7 +5,7 @@ import re
|
||||
import unicodedata
|
||||
|
||||
from openerp import _, api, fields, models, SUPERUSER_ID
|
||||
from openerp.exceptions import UserError
|
||||
from openerp.exceptions import ValidationError
|
||||
from openerp.modules.registry import RegistryManager
|
||||
from openerp.tools import ustr
|
||||
from openerp.tools.safe_eval import safe_eval as eval
|
||||
@@ -96,7 +96,7 @@ class Alias(models.Model):
|
||||
try:
|
||||
dict(eval(self.alias_defaults))
|
||||
except Exception:
|
||||
raise UserError(_('Invalid expression, it must be a literal python dictionary definition e.g. "{\'field\': \'value\'}"'))
|
||||
raise ValidationError(_('Invalid expression, it must be a literal python dictionary definition e.g. "{\'field\': \'value\'}"'))
|
||||
|
||||
@api.model
|
||||
def create(self, vals):
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
from openerp import models, api, fields
|
||||
from openerp.tools.translate import _
|
||||
|
||||
from openerp.exceptions import UserError
|
||||
from openerp.exceptions import ValidationError
|
||||
|
||||
|
||||
class ResCompany(models.Model):
|
||||
@@ -131,7 +131,7 @@ class SaleOrder(models.Model):
|
||||
if line.product_id.track_service == 'timesheet':
|
||||
count += 1
|
||||
if count > 1:
|
||||
raise UserError(_("You can use only one product on timesheet within the same sale order. You should split your order to include only one contract based on time and material."))
|
||||
raise ValidationError(_("You can use only one product on timesheet within the same sale order. You should split your order to include only one contract based on time and material."))
|
||||
return {}
|
||||
|
||||
@api.multi
|
||||
|
||||
@@ -15,7 +15,7 @@ from openerp import modules
|
||||
from openerp import tools
|
||||
from openerp import SUPERUSER_ID
|
||||
from openerp.addons.website.models.website import slug
|
||||
from openerp.exceptions import UserError
|
||||
from openerp.exceptions import UserError, ValidationError
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -139,7 +139,7 @@ class Forum(models.Model):
|
||||
if (self.default_post_type == 'question' and not self.allow_question) \
|
||||
or (self.default_post_type == 'discussion' and not self.allow_discussion) \
|
||||
or (self.default_post_type == 'link' and not self.allow_link):
|
||||
raise UserError(_('You cannot choose %s as default post since the forum does not allow it.') % self.default_post_type)
|
||||
raise ValidationError(_('You cannot choose %s as default post since the forum does not allow it.') % self.default_post_type)
|
||||
|
||||
@api.one
|
||||
def _compute_count_posts_waiting_validation(self):
|
||||
@@ -414,7 +414,7 @@ class Post(models.Model):
|
||||
if (self.post_type == 'question' and not self.forum_id.allow_question) \
|
||||
or (self.post_type == 'discussion' and not self.forum_id.allow_discussion) \
|
||||
or (self.post_type == 'link' and not self.forum_id.allow_link):
|
||||
raise UserError(_('This forum does not allow %s') % self.post_type)
|
||||
raise ValidationError(_('This forum does not allow %s') % self.post_type)
|
||||
|
||||
def _update_content(self, content, forum_id):
|
||||
forum = self.env['forum.forum'].browse(forum_id)
|
||||
|
||||
@@ -275,9 +275,9 @@ class IrModelFields(models.Model):
|
||||
if self.state == 'manual' and self.related:
|
||||
field = self._related_field()
|
||||
if field.type != self.ttype:
|
||||
raise UserError(_("Related field '%s' does not have type '%s'") % (self.related, self.ttype))
|
||||
raise ValidationError(_("Related field '%s' does not have type '%s'") % (self.related, self.ttype))
|
||||
if field.relational and field.comodel_name != self.relation:
|
||||
raise UserError(_("Related field '%s' does not have comodel '%s'") % (self.related, self.relation))
|
||||
raise ValidationError(_("Related field '%s' does not have comodel '%s'") % (self.related, self.relation))
|
||||
|
||||
@api.onchange('related')
|
||||
def _onchange_related(self):
|
||||
|
||||
@@ -157,7 +157,7 @@ class Message(models.Model):
|
||||
@api.constrains('author', 'discussion')
|
||||
def _check_author(self):
|
||||
if self.discussion and self.author not in self.discussion.participants:
|
||||
raise ValueError(_("Author must be among the discussion participants."))
|
||||
raise ValidationError(_("Author must be among the discussion participants."))
|
||||
|
||||
@api.one
|
||||
@api.depends('author.name', 'discussion.name')
|
||||
|
||||
+2
-2
@@ -109,9 +109,9 @@ def raise_on_invalid_object_name(name):
|
||||
def check_pg_name(name):
|
||||
""" Check whether the given name is a valid PostgreSQL identifier name. """
|
||||
if not regex_pg_name.match(name):
|
||||
raise ValueError("Invalid characters in table name %r" % name)
|
||||
raise ValidationError("Invalid characters in table name %r" % name)
|
||||
if len(name) > 63:
|
||||
raise ValueError("Table name %r is too long" % name)
|
||||
raise ValidationError("Table name %r is too long" % name)
|
||||
|
||||
POSTGRES_CONFDELTYPES = {
|
||||
'RESTRICT': 'r',
|
||||
|
||||
Reference in New Issue
Block a user