88from psycopg2 import ProgrammingError
99from psycopg2 .sql import SQL , Identifier
1010
11- from odoo import SUPERUSER_ID , _ , api , fields , models
11+ from odoo import api , fields , models
1212from odoo .exceptions import UserError , ValidationError
1313from odoo .tools import sql
1414from odoo .tools .safe_eval import safe_eval
@@ -163,7 +163,7 @@ def _check_index_materialized(self):
163163 for rec in self .filtered (lambda x : not x .is_materialized ):
164164 if rec .bi_sql_view_field_ids .filtered (lambda x : x .is_index ):
165165 raise UserError (
166- _ ("You can not create indexes on non materialized views" )
166+ self . env . _ ("You can not create indexes on non materialized views" )
167167 )
168168
169169 @api .constrains ("view_order" )
@@ -173,7 +173,7 @@ def _check_view_order(self):
173173 for vtype in rec .view_order .split ("," ):
174174 if vtype not in ("graph" , "pivot" , "list" ):
175175 raise UserError (
176- _ ("Only graph, pivot or list views are supported" )
176+ self . env . _ ("Only graph, pivot or list views are supported" )
177177 )
178178
179179 # Compute Section
@@ -236,7 +236,7 @@ def write(self, vals):
236236 def _check_unlink_constraints (self ):
237237 if any (view .state not in ("draft" , "sql_valid" ) for view in self ):
238238 raise UserError (
239- _ (
239+ self . env . _ (
240240 "You can only unlink draft views. "
241241 "If you want to delete them, first set them to draft."
242242 )
@@ -246,7 +246,7 @@ def copy(self, default=None):
246246 self .ensure_one ()
247247 default = dict (default or {})
248248 if "name" not in default :
249- default ["name" ] = _ ("%s (Copy)" ) % self .name
249+ default ["name" ] = self . env . _ ("%s (Copy)" , self .name )
250250 if "technical_name" not in default :
251251 default ["technical_name" ] = f"{ self .technical_name } _copy"
252252 return super ().copy (default = default )
@@ -260,8 +260,10 @@ def button_create_sql_view_and_model(self):
260260 )
261261 if bad_fields :
262262 raise ValidationError (
263- _ ("Please set related models on the following fields %s" )
264- % "," .join (bad_fields .mapped ("name" ))
263+ self .env ._ (
264+ "Please set related models on the following fields %s" ,
265+ "," .join (bad_fields .mapped ("name" )),
266+ )
265267 )
266268 # Create ORM and access
267269 sql_view ._create_model_and_fields ()
@@ -362,8 +364,11 @@ def _prepare_model_access(self):
362364 for group in self .group_ids :
363365 res .append (
364366 {
365- "name" : _ ("%(model_name)s Access %(full_name)s" )
366- % {"model_name" : self .model_name , "full_name" : group .full_name },
367+ "name" : self .env ._ (
368+ "%(model_name)s Access %(full_name)s" ,
369+ model_name = self .model_name ,
370+ full_name = group .full_name ,
371+ ),
367372 "model_id" : self .model_id .id ,
368373 "group_id" : group .id ,
369374 "perm_read" : True ,
@@ -377,8 +382,8 @@ def _prepare_model_access(self):
377382 def _prepare_cron (self ):
378383 now = datetime .now ()
379384 return {
380- "name" : _ ("Refresh Materialized View %s" ) % self .view_name ,
381- "user_id" : SUPERUSER_ID ,
385+ "name" : self . env . _ ("Refresh Materialized View %s" , self .view_name ) ,
386+ "user_id" : api . SUPERUSER_ID ,
382387 "model_id" : self .env ["ir.model" ]
383388 .search ([("model" , "=" , self ._name )], limit = 1 )
384389 .id ,
@@ -393,7 +398,7 @@ def _prepare_cron(self):
393398 def _prepare_rule (self ):
394399 self .ensure_one ()
395400 return {
396- "name" : _ ("Access %s" ) % self .name ,
401+ "name" : self . env . _ ("Access %s" , self .name ) ,
397402 "model_id" : self .model_id .id ,
398403 "domain_force" : self .domain_force ,
399404 "global" : True ,
@@ -446,7 +451,7 @@ def _prepare_search_view(self):
446451 "model" : self .model_id .model ,
447452 "arch" : """<?xml version="1.0"?>"""
448453 """<search string="Analysis">{}"""
449- """<group expand="1" string="Group By" >{}</group>"""
454+ """<group>{}</group>"""
450455 """</search>""" .format (
451456 "" .join (
452457 [x ._prepare_search_field () for x in self .bi_sql_view_field_ids ]
@@ -524,15 +529,13 @@ def _create_view(self):
524529 sql_view ._refresh_size ()
525530 except ProgrammingError as e :
526531 raise UserError (
527- _ (
532+ self . env . _ (
528533 "SQL Error while creating %(materialized_text)s"
529- " VIEW %(view_name)s :\n %(error)s"
534+ " VIEW %(view_name)s :\n %(error)s" ,
535+ materialized_text = sql_view .materialized_text ,
536+ view_name = sql_view .view_name ,
537+ error = str (e ),
530538 )
531- % {
532- "materialized_text" : sql_view .materialized_text ,
533- "view_name" : sql_view .view_name ,
534- "error" : str (e ),
535- }
536539 ) from e
537540
538541 def _create_index (self ):
@@ -554,7 +557,7 @@ def _create_model_and_fields(self):
554557 sql_view .model_id = self .env ["ir.model" ].create (self ._prepare_model ()).id
555558 sql_view .rule_id = self .env ["ir.rule" ].create (self ._prepare_rule ()).id
556559 # Drop table, created by the ORM
557- if sql .table_exists (self ._cr , sql_view .view_name ):
560+ if sql .table_exists (self .env . cr , sql_view .view_name ):
558561 req = SQL ("DROP TABLE {}" ).format (Identifier (sql_view .view_name ))
559562 self ._log_execute (req )
560563
@@ -656,7 +659,9 @@ def _check_execution(self):
656659
657660 if not self .bi_sql_view_field_ids :
658661 raise UserError (
659- _ ("No Column was found.\n Columns name should be prefixed by 'x_'." )
662+ self .env ._ (
663+ "No Column was found.\n Columns name should be prefixed by 'x_'."
664+ )
660665 )
661666
662667 return columns
0 commit comments