From cbdad75620adeba6b42f265c5b36676216772e30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20=C3=89vrard?= Date: Fri, 4 Apr 2025 00:45:18 +0200 Subject: [PATCH] Remove old-style of super() calls --- modules/account/account.py | 16 ++--- modules/account/configuration.py | 2 +- modules/account/fiscalyear.py | 6 +- modules/account/journal.py | 10 +-- modules/account/move.py | 26 +++---- modules/account/party.py | 6 +- modules/account/period.py | 10 +-- modules/account/tax.py | 32 ++++----- modules/account_asset/account.py | 8 +-- modules/account_asset/asset.py | 8 +-- modules/account_asset/invoice.py | 6 +- modules/account_asset/product.py | 2 +- modules/account_deposit/invoice.py | 4 +- modules/account_dunning/account.py | 2 +- modules/account_dunning/dunning.py | 4 +- modules/account_dunning_email/account.py | 2 +- modules/account_dunning_fee/account.py | 2 +- modules/account_dunning_fee/dunning.py | 8 +-- modules/account_dunning_letter/dunning.py | 4 +- modules/account_es/account.py | 2 +- modules/account_eu/account.py | 2 +- modules/account_fr_chorus/account.py | 8 +-- modules/account_fr_chorus/edocument.py | 4 +- modules/account_invoice/account.py | 14 ++-- modules/account_invoice/invoice.py | 36 +++++----- modules/account_invoice/party.py | 4 +- modules/account_invoice/payment_term.py | 4 +- modules/account_invoice_correction/invoice.py | 2 +- modules/account_invoice_history/account.py | 8 +-- .../invoice.py | 2 +- modules/account_invoice_stock/account.py | 2 +- modules/account_payment/account.py | 12 ++-- modules/account_payment/payment.py | 8 +-- modules/account_payment_braintree/account.py | 2 +- modules/account_payment_clearing/account.py | 2 +- modules/account_payment_clearing/payment.py | 8 +-- modules/account_payment_clearing/statement.py | 10 +-- modules/account_payment_sepa/payment.py | 20 +++--- modules/account_payment_sepa/sepa_handler.py | 2 +- modules/account_payment_sepa_cfonb/payment.py | 4 +- modules/account_payment_stripe/payment.py | 18 ++--- modules/account_product/account.py | 4 +- modules/account_product/configuration.py | 2 +- modules/account_product/product.py | 8 +-- modules/account_statement/account.py | 4 +- modules/account_statement/journal.py | 2 +- modules/account_statement/statement.py | 16 ++--- modules/account_statement_aeb43/statement.py | 2 +- modules/account_statement_coda/account.py | 2 +- modules/account_statement_ofx/account.py | 2 +- modules/account_stock_anglo_saxon/account.py | 2 +- modules/account_stock_anglo_saxon/invoice.py | 2 +- modules/account_stock_anglo_saxon/product.py | 2 +- modules/account_stock_anglo_saxon/stock.py | 6 +- modules/account_stock_continental/account.py | 2 +- modules/account_stock_continental/product.py | 4 +- modules/account_stock_continental/stock.py | 2 +- modules/account_stock_landed_cost/account.py | 10 +-- .../account.py | 2 +- modules/account_tax_cash/account.py | 20 +++--- modules/account_tax_rule_country/account.py | 4 +- modules/account_tax_rule_country/purchase.py | 2 +- modules/account_tax_rule_country/sale.py | 2 +- modules/analytic_account/account.py | 8 +-- modules/analytic_account/line.py | 14 ++-- modules/analytic_invoice/asset.py | 6 +- modules/analytic_invoice/invoice.py | 10 +-- modules/analytic_purchase/purchase.py | 8 +-- modules/analytic_sale/sale.py | 4 +- modules/authentication_sms/res.py | 2 +- .../authentication_sms/tests/test_module.py | 2 +- modules/bank/party.py | 2 +- modules/carrier/carrier.py | 4 +- modules/carrier_percentage/carrier.py | 6 +- modules/carrier_percentage/stock.py | 4 +- modules/carrier_weight/carrier.py | 8 +-- modules/carrier_weight/sale.py | 2 +- modules/carrier_weight/stock.py | 4 +- modules/commission/account.py | 2 +- modules/commission/commission.py | 6 +- modules/commission/invoice.py | 6 +- modules/commission_waiting/account.py | 2 +- modules/commission_waiting/commission.py | 4 +- modules/commission_waiting/invoice.py | 4 +- modules/company/ir.py | 8 +-- modules/company/model.py | 6 +- modules/company/party.py | 2 +- modules/company/res.py | 8 +-- modules/company_work_time/res.py | 2 +- modules/country/country.py | 14 ++-- modules/currency/currency.py | 6 +- modules/customs/customs.py | 6 +- modules/customs/product.py | 10 +-- modules/dashboard/ir.py | 2 +- modules/dashboard/res.py | 2 +- modules/document_incoming/res.py | 2 +- modules/edocument_uncefact/edocument.py | 2 +- .../edocument_uncefact/tests/test_module.py | 2 +- modules/edocument_unece/account.py | 2 +- modules/ldap_authentication/res.py | 4 +- .../ldap_authentication/tests/test_module.py | 2 +- .../notification_email/tests/test_module.py | 2 +- modules/party/address.py | 14 ++-- modules/party/category.py | 2 +- modules/party/contact_mechanism.py | 6 +- modules/party/party.py | 8 +-- modules/product/category.py | 2 +- modules/product/product.py | 14 ++-- modules/product/uom.py | 8 +-- .../product.py | 2 +- modules/product_cost_fifo/move.py | 4 +- modules/product_cost_fifo/product.py | 2 +- modules/product_cost_history/product.py | 2 +- modules/product_cost_warehouse/ir.py | 2 +- modules/product_measurements/product.py | 2 +- modules/product_price_list/price_list.py | 2 +- modules/product_price_list_dates/product.py | 2 +- modules/product_price_list_dates/sale.py | 4 +- modules/production/bom.py | 8 +-- modules/production/product.py | 6 +- modules/production/production.py | 10 +-- modules/production/stock.py | 2 +- modules/production_outsourcing/production.py | 10 +-- modules/production_routing/production.py | 4 +- modules/production_split/production.py | 2 +- modules/production_work/production.py | 8 +-- modules/production_work/work.py | 8 +-- modules/production_work_timesheet/work.py | 6 +- modules/project/work.py | 10 +-- modules/project_invoice/invoice.py | 2 +- modules/project_invoice/project.py | 4 +- modules/project_plan/allocation.py | 6 +- modules/project_plan/work.py | 14 ++-- modules/project_revenue/work.py | 2 +- modules/purchase/configuration.py | 2 +- modules/purchase/invoice.py | 14 ++-- modules/purchase/party.py | 4 +- modules/purchase/product.py | 10 +-- modules/purchase/purchase.py | 12 ++-- modules/purchase/stock.py | 22 +++--- modules/purchase_amendment/purchase.py | 2 +- .../purchase.py | 6 +- modules/purchase_request/purchase.py | 6 +- modules/purchase_request/purchase_request.py | 8 +-- .../purchase_request_quotation/purchase.py | 20 +++--- modules/purchase_requisition/purchase.py | 18 ++--- modules/purchase_shipment_cost/stock.py | 6 +- modules/sale/configuration.py | 2 +- modules/sale/invoice.py | 8 +-- modules/sale/product.py | 4 +- modules/sale/sale.py | 16 ++--- modules/sale/sale_reporting.py | 30 ++++---- modules/sale/stock.py | 18 ++--- modules/sale_advance_payment/account.py | 4 +- modules/sale_advance_payment/sale.py | 18 ++--- modules/sale_advance_payment/stock.py | 2 +- modules/sale_amendment/sale.py | 2 +- modules/sale_complaint/account.py | 2 +- modules/sale_complaint/complaint.py | 12 ++-- modules/sale_complaint/sale.py | 4 +- modules/sale_credit_limit/party.py | 4 +- modules/sale_credit_limit/sale.py | 2 +- modules/sale_extra/sale.py | 2 +- modules/sale_gift_card/account.py | 2 +- .../sale_invoice_grouping/configuration.py | 2 +- modules/sale_invoice_grouping/sale.py | 2 +- modules/sale_opportunity/configuration.py | 2 +- modules/sale_opportunity/opportunity.py | 10 +-- modules/sale_opportunity/sale.py | 14 ++-- modules/sale_payment/account.py | 6 +- modules/sale_payment/sale.py | 6 +- modules/sale_point/product.py | 2 +- modules/sale_point/stock.py | 2 +- modules/sale_price_list/sale.py | 4 +- modules/sale_promotion/sale.py | 4 +- modules/sale_promotion_coupon/sale.py | 8 +-- modules/sale_shipment_cost/sale.py | 16 ++--- .../sale_shipment_grouping/configuration.py | 2 +- modules/sale_shipment_grouping/sale.py | 2 +- .../sale_shipment_tolerance/configuration.py | 4 +- modules/sale_shipment_tolerance/stock.py | 4 +- modules/sale_stock_quantity/sale.py | 4 +- modules/sale_subscription/configuration.py | 2 +- modules/sale_subscription/invoice.py | 4 +- modules/sale_subscription/subscription.py | 16 ++--- modules/sale_subscription_asset/sale.py | 8 +-- modules/sale_supply/sale.py | 2 +- modules/sale_supply_drop_shipment/purchase.py | 4 +- modules/sale_supply_drop_shipment/stock.py | 16 ++--- modules/stock/configuration.py | 2 +- modules/stock/inventory.py | 12 ++-- modules/stock/location.py | 10 +-- modules/stock/move.py | 10 +-- modules/stock/period.py | 2 +- modules/stock/product.py | 6 +- modules/stock/res.py | 2 +- modules/stock/shipment.py | 56 +++++++-------- modules/stock_consignment/account.py | 4 +- modules/stock_consignment/stock.py | 26 +++---- modules/stock_forecast/forecast.py | 10 +-- modules/stock_location_move/product.py | 2 +- modules/stock_location_move/stock.py | 12 ++-- modules/stock_lot/stock.py | 22 +++--- modules/stock_lot_sled/stock.py | 10 +-- modules/stock_lot_unit/stock.py | 10 +-- modules/stock_package/stock.py | 6 +- modules/stock_package_shipping/stock.py | 4 +- modules/stock_package_shipping_dpd/carrier.py | 2 +- modules/stock_package_shipping_dpd/stock.py | 2 +- .../stock_package_shipping_mygls/carrier.py | 2 +- .../carrier.py | 2 +- modules/stock_package_shipping_ups/carrier.py | 4 +- modules/stock_package_shipping_ups/stock.py | 2 +- modules/stock_shipment_measurements/stock.py | 4 +- .../tests/test_module.py | 2 +- modules/stock_split/stock.py | 4 +- modules/stock_supply/purchase_request.py | 2 +- modules/stock_supply_day/purchase.py | 4 +- modules/stock_supply_production/stock.py | 8 +-- modules/timesheet/line.py | 6 +- modules/timesheet/user.py | 2 +- modules/timesheet/work.py | 8 +-- modules/timesheet_cost/company.py | 8 +-- modules/web_user/tests/test_module.py | 2 +- modules/web_user/user.py | 10 +-- proteus/proteus/__init__.py | 68 +++++++++---------- proteus/proteus/config.py | 12 ++-- proteus/proteus/pyson.py | 36 +++++----- tryton/tryton/common/button.py | 2 +- tryton/tryton/common/cellrendererfloat.py | 2 +- tryton/tryton/common/cellrenderertext.py | 4 +- tryton/tryton/common/common.py | 10 +-- tryton/tryton/common/environment.py | 4 +- tryton/tryton/common/selection.py | 2 +- tryton/tryton/gui/window/attachment.py | 4 +- tryton/tryton/gui/window/board.py | 2 +- tryton/tryton/gui/window/form.py | 4 +- tryton/tryton/gui/window/note.py | 4 +- tryton/tryton/gui/window/tabcontent.py | 2 +- tryton/tryton/gui/window/view_board/action.py | 2 +- .../gui/window/view_form/model/field.py | 50 +++++++------- .../gui/window/view_form/model/group.py | 8 +-- .../gui/window/view_form/model/record.py | 2 +- .../view_form/view/calendar_gtk/calendar_.py | 2 +- .../view_form/view/calendar_gtk/toolbar.py | 2 +- .../window/view_form/view/form_gtk/binary.py | 6 +- .../view_form/view/form_gtk/calendar_.py | 8 +-- .../window/view_form/view/form_gtk/char.py | 8 +-- .../view_form/view/form_gtk/checkbox.py | 6 +- .../view_form/view/form_gtk/dictionary.py | 4 +- .../window/view_form/view/form_gtk/float.py | 2 +- .../window/view_form/view/form_gtk/image.py | 8 +-- .../window/view_form/view/form_gtk/integer.py | 2 +- .../view_form/view/form_gtk/many2many.py | 4 +- .../view_form/view/form_gtk/many2one.py | 4 +- .../view_form/view/form_gtk/multiselection.py | 6 +- .../view_form/view/form_gtk/one2many.py | 4 +- .../view_form/view/form_gtk/progressbar.py | 4 +- .../window/view_form/view/form_gtk/pyson.py | 6 +- .../view_form/view/form_gtk/reference.py | 8 +-- .../view_form/view/form_gtk/richtextbox.py | 10 +-- .../view_form/view/form_gtk/selection.py | 6 +- .../view_form/view/form_gtk/state_widget.py | 12 ++-- .../window/view_form/view/form_gtk/textbox.py | 8 +-- .../view_form/view/form_gtk/timedelta.py | 6 +- .../gui/window/view_form/view/form_gtk/url.py | 4 +- .../window/view_form/view/form_gtk/widget.py | 2 +- .../window/view_form/view/graph_gtk/bar.py | 14 ++-- .../window/view_form/view/graph_gtk/graph.py | 4 +- .../window/view_form/view/graph_gtk/line.py | 10 +-- .../window/view_form/view/graph_gtk/pie.py | 4 +- .../view_form/view/list_gtk/editabletree.py | 4 +- .../window/view_form/view/list_gtk/widget.py | 40 +++++------ .../window/view_form/view/screen_container.py | 2 +- tryton/tryton/gui/window/win_csv.py | 4 +- tryton/tryton/gui/window/win_export.py | 2 +- tryton/tryton/gui/window/win_import.py | 2 +- tryton/tryton/gui/window/wizard.py | 22 +++--- tryton/tryton/jsonrpc.py | 4 +- tryton/tryton/pyson.py | 36 +++++----- trytond-gis/trytond_gis/__init__.py | 2 +- trytond-gis/trytond_gis/fields.py | 4 +- trytond-gis/trytond_gis/postgis/database.py | 2 +- trytond-gis/trytond_gis/postgis/table.py | 2 +- .../trytond/backend/postgresql/database.py | 2 +- trytond/trytond/backend/sqlite/database.py | 4 +- trytond/trytond/backend/table.py | 2 +- trytond/trytond/cache.py | 14 ++-- trytond/trytond/exceptions.py | 6 +- trytond/trytond/ir/action.py | 40 +++++------ trytond/trytond/ir/cron.py | 2 +- trytond/trytond/ir/date.py | 2 +- trytond/trytond/ir/lang.py | 10 +-- trytond/trytond/ir/message.py | 4 +- trytond/trytond/ir/model.py | 48 ++++++------- trytond/trytond/ir/module.py | 10 +-- trytond/trytond/ir/note.py | 2 +- trytond/trytond/ir/queue_.py | 2 +- trytond/trytond/ir/resource.py | 2 +- trytond/trytond/ir/rule.py | 14 ++-- trytond/trytond/ir/sequence.py | 8 +-- trytond/trytond/ir/session.py | 6 +- trytond/trytond/ir/translation.py | 4 +- trytond/trytond/ir/trigger.py | 10 +-- trytond/trytond/ir/ui/icon.py | 2 +- trytond/trytond/ir/ui/menu.py | 4 +- trytond/trytond/ir/ui/view.py | 22 +++--- trytond/trytond/model/dictschema.py | 2 +- trytond/trytond/model/fields/binary.py | 2 +- trytond/trytond/model/fields/boolean.py | 4 +- trytond/trytond/model/fields/char.py | 8 +-- trytond/trytond/model/fields/date.py | 8 +-- trytond/trytond/model/fields/dict.py | 2 +- trytond/trytond/model/fields/field.py | 2 +- trytond/trytond/model/fields/float.py | 2 +- trytond/trytond/model/fields/function.py | 2 +- trytond/trytond/model/fields/many2many.py | 4 +- trytond/trytond/model/fields/many2one.py | 6 +- trytond/trytond/model/fields/numeric.py | 2 +- trytond/trytond/model/fields/one2many.py | 4 +- trytond/trytond/model/fields/one2one.py | 2 +- trytond/trytond/model/fields/reference.py | 10 +-- trytond/trytond/model/fields/selection.py | 4 +- trytond/trytond/model/model.py | 8 +-- trytond/trytond/model/modelsingleton.py | 14 ++-- trytond/trytond/model/modelsql.py | 22 +++--- trytond/trytond/model/modelstorage.py | 12 ++-- trytond/trytond/model/modelview.py | 4 +- trytond/trytond/model/multivalue.py | 2 +- trytond/trytond/model/order.py | 2 +- trytond/trytond/model/tree.py | 6 +- trytond/trytond/model/workflow.py | 2 +- trytond/trytond/modules/__init__.py | 4 +- trytond/trytond/protocols/jsonrpc.py | 2 +- trytond/trytond/protocols/wrappers.py | 2 +- trytond/trytond/pyson.py | 38 +++++------ trytond/trytond/report/report.py | 2 +- trytond/trytond/res/group.py | 6 +- trytond/trytond/res/user.py | 20 +++--- trytond/trytond/tests/field_char.py | 2 +- trytond/trytond/tests/field_one2one.py | 6 +- trytond/trytond/tests/modelsql.py | 6 +- trytond/trytond/tests/modelview.py | 4 +- trytond/trytond/tests/test_field_depends.py | 2 +- trytond/trytond/tests/test_tryton.py | 2 +- trytond/trytond/tests/workflow.py | 2 +- trytond/trytond/tools/singleton.py | 4 +- trytond/trytond/transaction.py | 2 +- trytond/trytond/wizard/wizard.py | 10 +-- trytond/trytond/wsgi.py | 2 +- 350 files changed, 1235 insertions(+), 1235 deletions(-) diff --git a/modules/account/account.py b/modules/account/account.py index 6edab5072a..ba8f4cea99 100644 --- a/modules/account/account.py +++ b/modules/account/account.py @@ -391,7 +391,7 @@ class Type( types = cls.search([ ('parent', 'child_of', [t.id for t in types]), ]) - super(Type, cls).delete(types) + super().delete(types) def update_type(self, template2type=None): ''' @@ -689,7 +689,7 @@ class AccountTemplate( @classmethod def __setup__(cls): - super(AccountTemplate, cls).__setup__() + super().__setup__() cls._order.insert(0, ('code', 'ASC')) cls._order.insert(1, ('name', 'ASC')) table = cls.__table__() @@ -984,7 +984,7 @@ class Account( @classmethod def __setup__(cls): - super(Account, cls).__setup__() + super().__setup__() for date in [cls.start_date, cls.end_date]: date.states = { 'readonly': (Bool(Eval('template', -1)) @@ -1310,7 +1310,7 @@ class Account( default = default.copy() default.setdefault('template', None) default.setdefault('deferrals', []) - new_accounts = super(Account, cls).copy(accounts, default=default) + new_accounts = super().copy(accounts, default=default) cls._rebuild_tree('parent', None, 0) return new_accounts @@ -1327,7 +1327,7 @@ class Account( raise AccessError( gettext('account.msg_delete_account_with_move_lines', account=lines[0].account.rec_name)) - super(Account, cls).delete(accounts) + super().delete(accounts) def update_account(self, template2account=None, template2type=None): ''' @@ -1726,7 +1726,7 @@ class AccountDeferral(ModelSQL, ModelView): @classmethod def __setup__(cls): - super(AccountDeferral, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_constraints += [ ('deferral_uniq', Unique(t, t.account, t.fiscalyear), @@ -2426,7 +2426,7 @@ class GeneralLedgerLine(DescriptionOriginMixin, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(GeneralLedgerLine, cls).__setup__() + super().__setup__() cls.__access__.add('account') cls._order.insert(0, ('date', 'ASC')) cls.description_used.setter = None @@ -2987,7 +2987,7 @@ class AgedBalance(ModelSQL, ModelView): @classmethod def __setup__(cls): - super(AgedBalance, cls).__setup__() + super().__setup__() cls._order.insert(0, ('party', 'ASC')) @classmethod diff --git a/modules/account/configuration.py b/modules/account/configuration.py index 2e699d51aa..e8504d548f 100644 --- a/modules/account/configuration.py +++ b/modules/account/configuration.py @@ -92,7 +92,7 @@ class Configuration( return pool.get('account.configuration.sequence') elif field == 'currency_exchange_journal': return pool.get('account.configuration.journal') - return super(Configuration, cls).multivalue_model(field) + return super().multivalue_model(field) @classmethod def default_tax_rounding(cls, **pattern): diff --git a/modules/account/fiscalyear.py b/modules/account/fiscalyear.py index 2488c358c5..9edb656d7b 100644 --- a/modules/account/fiscalyear.py +++ b/modules/account/fiscalyear.py @@ -62,7 +62,7 @@ class FiscalYear(Workflow, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(FiscalYear, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_constraints += [ ('dates_overlap', @@ -228,14 +228,14 @@ class FiscalYear(Workflow, ModelSQL, ModelView): gettext('account.' 'msg_change_fiscalyear_move_sequence', fiscalyear=fiscalyear.rec_name)) - super(FiscalYear, cls).write(*args) + super().write(*args) cls._find_cache.clear() @classmethod def delete(cls, fiscalyears): Period = Pool().get('account.period') Period.delete([p for f in fiscalyears for p in f.periods]) - super(FiscalYear, cls).delete(fiscalyears) + super().delete(fiscalyears) cls._find_cache.clear() @classmethod diff --git a/modules/account/journal.py b/modules/account/journal.py index 16d8ec26d1..ce099950cb 100644 --- a/modules/account/journal.py +++ b/modules/account/journal.py @@ -52,7 +52,7 @@ class Journal( @classmethod def __setup__(cls): - super(Journal, cls).__setup__() + super().__setup__() cls._order.insert(0, ('name', 'ASC')) @classmethod @@ -199,7 +199,7 @@ class JournalPeriod(Workflow, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(JournalPeriod, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_constraints += [ ('journal_period_uniq', Unique(t, t.journal, t.period), @@ -285,7 +285,7 @@ class JournalPeriod(Workflow, ModelSQL, ModelView): gettext('account' '.msg_create_journal_period_closed_period', period=period.rec_name)) - return super(JournalPeriod, cls).create(vlist) + return super().create(vlist) @classmethod def write(cls, *args): @@ -302,12 +302,12 @@ class JournalPeriod(Workflow, ModelSQL, ModelView): '.msg_open_journal_period_closed_period', journal_period=journal_period.rec_name, period=journal_period.period.rec_name)) - super(JournalPeriod, cls).write(*args) + super().write(*args) @classmethod def delete(cls, periods): cls._check(periods) - super(JournalPeriod, cls).delete(periods) + super().delete(periods) @classmethod @ModelView.button diff --git a/modules/account/move.py b/modules/account/move.py index b09831934c..5195963229 100644 --- a/modules/account/move.py +++ b/modules/account/move.py @@ -129,7 +129,7 @@ class Move(DescriptionOriginMixin, ModelSQL, ModelView): @classmethod def __setup__(cls): cls.number.search_unaccented = False - super(Move, cls).__setup__() + super().__setup__() t = cls.__table__() cls.create_date.select = True cls._check_modify_exclude = ['lines'] @@ -295,14 +295,14 @@ class Move(DescriptionOriginMixin, ModelSQL, ModelView): if len(keys): cls.check_modify(moves) args.extend((moves, values)) - super(Move, cls).write(*args) + super().write(*args) @classmethod def delete(cls, moves): MoveLine = Pool().get('account.move.line') cls.check_modify(moves) MoveLine.delete([l for m in moves for l in m.lines]) - super(Move, cls).delete(moves) + super().delete(moves) @classmethod def copy(cls, moves, default=None): @@ -589,7 +589,7 @@ class Reconciliation(ModelSQL, ModelView): if table.column_exist('name') and not table.column_exist('number'): table.column_rename('name', 'number') - super(Reconciliation, cls).__register__(module_name) + super().__register__(module_name) # Migration from 5.8: add company field if not company_exist and line_h.column_exist('reconciliation'): @@ -624,7 +624,7 @@ class Reconciliation(ModelSQL, ModelView): 'reconciliation_sequence', company=vals.get('company', default_company)).get() - return super(Reconciliation, cls).create(vlist) + return super().create(vlist) @classmethod def write(cls, moves, values, *args): @@ -632,7 +632,7 @@ class Reconciliation(ModelSQL, ModelView): @classmethod def validate(cls, reconciliations): - super(Reconciliation, cls).validate(reconciliations) + super().validate(reconciliations) cls.check_lines(reconciliations) @classmethod @@ -1091,7 +1091,7 @@ class Line(DescriptionOriginMixin, MoveLineMixin, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(Line, cls).__setup__() + super().__setup__() cls.__access__.add('move') cls._check_modify_exclude = { 'maturity_date', 'reconciliation', 'tax_lines'} @@ -1417,7 +1417,7 @@ class Line(DescriptionOriginMixin, MoveLineMixin, ModelSQL, ModelView): @classmethod def validate_fields(cls, lines, field_names): - super(Line, cls).validate(lines) + super().validate(lines) cls.check_account(lines, field_names) @classmethod @@ -1515,7 +1515,7 @@ class Line(DescriptionOriginMixin, MoveLineMixin, ModelSQL, ModelView): cls.check_modify(lines) cls.check_reconciliation(lines) moves = [x.move for x in lines] - super(Line, cls).delete(lines) + super().delete(lines) Move.validate_move(moves) @classmethod @@ -1533,7 +1533,7 @@ class Line(DescriptionOriginMixin, MoveLineMixin, ModelSQL, ModelView): all_lines.extend(lines) args.extend((lines, values)) - super(Line, cls).write(*args) + super().write(*args) Transaction().timestamp = {} Move.validate_move(list(set(l.move for l in all_lines) | set(moves))) @@ -1570,7 +1570,7 @@ class Line(DescriptionOriginMixin, MoveLineMixin, ModelSQL, ModelView): # prevent default value for field with set_move_field for fname in move_fields(move_name=False): vals.setdefault(fname, None) - lines = super(Line, cls).create(vlist) + lines = super().create(vlist) period_and_journals = set((line.period, line.journal) for line in lines) for period, journal in period_and_journals: @@ -1590,14 +1590,14 @@ class Line(DescriptionOriginMixin, MoveLineMixin, ModelSQL, ModelView): default.setdefault('move', None) default.setdefault('reconciliation', None) default.setdefault('reconciliations_delegated', []) - return super(Line, cls).copy(lines, default=default) + return super().copy(lines, default=default) @classmethod def view_toolbar_get(cls): pool = Pool() Template = pool.get('account.move.template') - toolbar = super(Line, cls).view_toolbar_get() + toolbar = super().view_toolbar_get() # Add a wizard entry for each templates context = Transaction().context diff --git a/modules/account/party.py b/modules/account/party.py index 49c3c5d1a6..32a46edc85 100644 --- a/modules/account/party.py +++ b/modules/account/party.py @@ -88,7 +88,7 @@ class Party(CompanyMultiValueMixin, metaclass=PoolMeta): pool = Pool() if field in account_names: return pool.get('party.party.account') - return super(Party, cls).multivalue_model(field) + return super().multivalue_model(field) @classmethod def _default_tax_rule(cls, type_, **pattern): @@ -332,7 +332,7 @@ class PartyReplace(metaclass=PoolMeta): @classmethod def fields_to_replace(cls): - return super(PartyReplace, cls).fields_to_replace() + [ + return super().fields_to_replace() + [ ('account.move.line', 'party'), ] @@ -341,7 +341,7 @@ class PartyErase(metaclass=PoolMeta): __name__ = 'party.erase' def check_erase_company(self, party, company): - super(PartyErase, self).check_erase_company(party, company) + super().check_erase_company(party, company) if party.receivable or party.payable: raise EraseError( gettext('account.msg_erase_party_receivable_payable', diff --git a/modules/account/period.py b/modules/account/period.py index 41637eb9c2..a3b463ca70 100644 --- a/modules/account/period.py +++ b/modules/account/period.py @@ -60,7 +60,7 @@ class Period(Workflow, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(Period, cls).__setup__() + super().__setup__() t = cls.__table__() cls.__access__.add('fiscalyear') cls._sql_constraints += [ @@ -316,7 +316,7 @@ class Period(Workflow, ModelSQL, ModelView): process_args(args[i]) i += 1 process_args(args) - return super(Period, cls).search(args, offset=offset, limit=limit, + return super().search(args, offset=offset, limit=limit, order=order, count=count, query=query) @classmethod @@ -330,7 +330,7 @@ class Period(Workflow, ModelSQL, ModelView): raise AccessError( gettext('account.msg_create_period_closed_fiscalyear', fiscalyear=fiscalyear.rec_name)) - periods = super(Period, cls).create(vlist) + periods = super().create(vlist) cls._find_cache.clear() return periods @@ -362,12 +362,12 @@ class Period(Workflow, ModelSQL, ModelView): '.msg_change_period_move_sequence', period=period.rec_name)) args.extend((periods, values)) - super(Period, cls).write(*args) + super().write(*args) cls._find_cache.clear() @classmethod def delete(cls, periods): - super(Period, cls).delete(periods) + super().delete(periods) cls._find_cache.clear() @classmethod diff --git a/modules/account/tax.py b/modules/account/tax.py index ea8d5678e8..db4aa7a04f 100644 --- a/modules/account/tax.py +++ b/modules/account/tax.py @@ -57,7 +57,7 @@ class TaxCodeTemplate(PeriodMixin, tree(), ModelSQL, ModelView): @classmethod def __setup__(cls): - super(TaxCodeTemplate, cls).__setup__() + super().__setup__() cls._order.insert(0, ('code', 'ASC')) cls._order.insert(0, ('account', 'ASC')) @@ -159,7 +159,7 @@ class TaxCode( @classmethod def __setup__(cls): cls.code.search_unaccented = False - super(TaxCode, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_indexes.add( Index(t, (t.code, Index.Similarity()))) @@ -241,14 +241,14 @@ class TaxCode( else: default = default.copy() default.setdefault('template', None) - return super(TaxCode, cls).copy(codes, default=default) + return super().copy(codes, default=default) @classmethod def delete(cls, codes): codes = cls.search([ ('parent', 'child_of', [c.id for c in codes]), ]) - super(TaxCode, cls).delete(codes) + super().delete(codes) @classmethod def update_tax_code(cls, company_id, template2tax_code=None): @@ -641,7 +641,7 @@ class TaxTemplate(sequence_ordered(), ModelSQL, ModelView, DeactivableMixin): @classmethod def __setup__(cls): - super(TaxTemplate, cls).__setup__() + super().__setup__() cls._order.insert(0, ('account', 'ASC')) @classmethod @@ -979,7 +979,7 @@ class Tax(sequence_ordered(), ModelSQL, ModelView, DeactivableMixin): else: default = default.copy() default.setdefault('template', None) - return super(Tax, cls).copy(taxes, default=default) + return super().copy(taxes, default=default) def _process_tax(self, price_unit): if self.type == 'percentage': @@ -1360,7 +1360,7 @@ class TaxLine(ModelSQL, ModelView): table_h = cls.__table_handler__(module_name) migrate_type = not table_h.column_exist('type') - super(TaxLine, cls).__register__(module_name) + super().__register__(module_name) table_h = cls.__table_handler__(module_name) @@ -1398,7 +1398,7 @@ class TaxLine(ModelSQL, ModelView): return self.move_line.account.company def get_rec_name(self, name): - name = super(TaxLine, self).get_rec_name(name) + name = super().get_rec_name(name) if self.tax: name = self.tax.rec_name return name @@ -1409,7 +1409,7 @@ class TaxLine(ModelSQL, ModelView): @classmethod def create(cls, vlist): - lines = super(TaxLine, cls).create(vlist) + lines = super().create(vlist) cls.check_modify(lines) return lines @@ -1417,12 +1417,12 @@ class TaxLine(ModelSQL, ModelView): def write(cls, *args): lines = sum(args[0:None:2], []) cls.check_modify(lines) - super(TaxLine, cls).write(*args) + super().write(*args) @classmethod def delete(cls, lines): cls.check_modify(lines) - super(TaxLine, cls).delete(lines) + super().delete(lines) @property def period_checked(self): @@ -1528,7 +1528,7 @@ class TaxRule(ModelSQL, ModelView): else: default = default.copy() default.setdefault('template', None) - return super(TaxRule, cls).copy(rules, default=default) + return super().copy(rules, default=default) def apply(self, tax, pattern): ''' @@ -1623,7 +1623,7 @@ class TaxRuleLineTemplate(sequence_ordered(), ModelSQL, ModelView): @classmethod def __setup__(cls): - super(TaxRuleLineTemplate, cls).__setup__() + super().__setup__() cls.__access__.add('rule') cls._order.insert(1, ('rule', 'ASC')) @@ -1752,7 +1752,7 @@ class TaxRuleLine(sequence_ordered(), ModelSQL, ModelView, MatchMixin): @classmethod def __setup__(cls): - super(TaxRuleLine, cls).__setup__() + super().__setup__() cls.__access__.add('rule') cls._order.insert(1, ('rule', 'ASC')) @@ -1763,7 +1763,7 @@ class TaxRuleLine(sequence_ordered(), ModelSQL, ModelView, MatchMixin): else: default = default.copy() default.setdefault('template', None) - return super(TaxRuleLine, cls).copy(lines, default=default) + return super().copy(lines, default=default) def match(self, pattern): pool = Pool() @@ -1779,7 +1779,7 @@ class TaxRuleLine(sequence_ordered(), ModelSQL, ModelView, MatchMixin): return False if self.end_date and date > self.end_date: return False - return super(TaxRuleLine, self).match(pattern) + return super().match(pattern) def get_taxes(self, origin_tax): ''' diff --git a/modules/account_asset/account.py b/modules/account_asset/account.py index 5ce839f2bf..9e224244c3 100644 --- a/modules/account_asset/account.py +++ b/modules/account_asset/account.py @@ -62,7 +62,7 @@ class Configuration(metaclass=PoolMeta): pool = Pool() if field in {'asset_bymonthday', 'asset_bymonth'}: return pool.get('account.configuration.asset_date') - return super(Configuration, cls).multivalue_model(field) + return super().multivalue_model(field) @classmethod def default_asset_sequence(cls, **pattern): @@ -170,7 +170,7 @@ class Move(metaclass=PoolMeta): @classmethod def _get_origin(cls): - origins = super(Move, cls)._get_origin() + origins = super()._get_origin() origins.append('account.asset') origins.append('account.asset.line') return origins @@ -207,7 +207,7 @@ class Period(metaclass=PoolMeta): def close(cls, periods): for period in periods: period.check_asset_line_running() - super(Period, cls).close(periods) + super().close(periods) class Journal(metaclass=PoolMeta): @@ -215,5 +215,5 @@ class Journal(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Journal, cls).__setup__() + super().__setup__() cls.type.selection.append(('asset', "Asset")) diff --git a/modules/account_asset/asset.py b/modules/account_asset/asset.py index 9050db37ce..d067898a3f 100644 --- a/modules/account_asset/asset.py +++ b/modules/account_asset/asset.py @@ -198,7 +198,7 @@ class Asset(Workflow, ModelSQL, ModelView): @classmethod def __setup__(cls): cls.number.search_unaccented = False - super(Asset, cls).__setup__() + super().__setup__() table = cls.__table__() cls._sql_constraints = [ ('invoice_line_uniq', Unique(table, table.supplier_invoice_line), @@ -709,7 +709,7 @@ class Asset(Workflow, ModelSQL, ModelView): default.setdefault('supplier_invoice_line', None) default.setdefault('move') default.setdefault('revisions', []) - return super(Asset, cls).copy(assets, default=default) + return super().copy(assets, default=default) @classmethod def delete(cls, assets): @@ -718,7 +718,7 @@ class Asset(Workflow, ModelSQL, ModelView): raise AccessError( gettext('account_asset.msg_asset_delete_draft', asset=asset.rec_name)) - return super(Asset, cls).delete(assets) + return super().delete(assets) class AssetLine(ModelSQL, ModelView): @@ -746,7 +746,7 @@ class AssetLine(ModelSQL, ModelView): @classmethod def __setup__(cls): - super(AssetLine, cls).__setup__() + super().__setup__() cls.__access__.add('asset') cls._order.insert(0, ('date', 'ASC')) diff --git a/modules/account_asset/invoice.py b/modules/account_asset/invoice.py index ede421bdea..1af47f7717 100644 --- a/modules/account_asset/invoice.py +++ b/modules/account_asset/invoice.py @@ -23,7 +23,7 @@ class InvoiceLine(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(InvoiceLine, cls).__setup__() + super().__setup__() table = cls.__table__() cls._sql_constraints += [ ('asset_uniq', Unique(table, table.asset), @@ -40,7 +40,7 @@ class InvoiceLine(metaclass=PoolMeta): @fields.depends('product', 'invoice', 'invoice_type', '_parent_invoice.invoice_date', '_parent_invoice.accounting_date') def on_change_product(self): - super(InvoiceLine, self).on_change_product() + super().on_change_product() if self.invoice and self.invoice.type: type_ = self.invoice.type else: @@ -79,4 +79,4 @@ class InvoiceLine(metaclass=PoolMeta): if self.asset: date = self.invoice.accounting_date or self.invoice.invoice_date Asset.close([self.asset], account=self.account, date=date) - return super(InvoiceLine, self).get_move_lines() + return super().get_move_lines() diff --git a/modules/account_asset/product.py b/modules/account_asset/product.py index a58a7d4e2c..ceb1c27f6b 100644 --- a/modules/account_asset/product.py +++ b/modules/account_asset/product.py @@ -36,7 +36,7 @@ class Category(metaclass=PoolMeta): pool = Pool() if field in {'account_depreciation', 'account_asset'}: return pool.get('product.category.account') - return super(Category, cls).multivalue_model(field) + return super().multivalue_model(field) @property @account_used('account_depreciation') diff --git a/modules/account_deposit/invoice.py b/modules/account_deposit/invoice.py index 7175c1dcf7..e654e2f57b 100644 --- a/modules/account_deposit/invoice.py +++ b/modules/account_deposit/invoice.py @@ -16,7 +16,7 @@ class Invoice(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Invoice, cls).__setup__() + super().__setup__() cls._buttons.update({ 'recall_deposit': { 'invisible': Eval('state') != 'draft', @@ -112,7 +112,7 @@ class InvoiceLine(metaclass=PoolMeta): @classmethod def _account_domain(cls, type_): - domain = super(InvoiceLine, cls)._account_domain(type_) + domain = super()._account_domain(type_) return domain + [('type.deposit', '=', True)] diff --git a/modules/account_dunning/account.py b/modules/account_dunning/account.py index 581f5b5689..d76eddf4c4 100644 --- a/modules/account_dunning/account.py +++ b/modules/account_dunning/account.py @@ -35,4 +35,4 @@ class MoveLine(metaclass=PoolMeta): else: default = default.copy() default.setdefault('dunnings', None) - return super(MoveLine, cls).copy(lines, default=default) + return super().copy(lines, default=default) diff --git a/modules/account_dunning/dunning.py b/modules/account_dunning/dunning.py index bab2824f4d..6fb20eb27a 100644 --- a/modules/account_dunning/dunning.py +++ b/modules/account_dunning/dunning.py @@ -119,7 +119,7 @@ class Dunning(ModelSQL, ModelView): @classmethod def __setup__(cls): - super(Dunning, cls).__setup__() + super().__setup__() table = cls.__table__() cls._sql_constraints = [ ('line_unique', Unique(table, table.line), @@ -363,7 +363,7 @@ class ProcessDunning(Wizard): @classmethod def __setup__(cls): - super(ProcessDunning, cls).__setup__() + super().__setup__() # _actions is the list that define the order of each state to process # after the 'process' state. diff --git a/modules/account_dunning_email/account.py b/modules/account_dunning_email/account.py index 45ed5ad901..5421d65d44 100644 --- a/modules/account_dunning_email/account.py +++ b/modules/account_dunning_email/account.py @@ -79,7 +79,7 @@ class ProcessDunning(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(ProcessDunning, cls).__setup__() + super().__setup__() cls._actions.append('send_email') def transition_send_email(self): diff --git a/modules/account_dunning_fee/account.py b/modules/account_dunning_fee/account.py index 90d8e0e157..3ca236c60b 100644 --- a/modules/account_dunning_fee/account.py +++ b/modules/account_dunning_fee/account.py @@ -8,5 +8,5 @@ class Move(metaclass=PoolMeta): @classmethod def _get_origin(cls): - return super(Move, cls)._get_origin() + [ + return super()._get_origin() + [ 'account.dunning.fee.dunning_level'] diff --git a/modules/account_dunning_fee/dunning.py b/modules/account_dunning_fee/dunning.py index f0b42616a9..e3d75edd4d 100644 --- a/modules/account_dunning_fee/dunning.py +++ b/modules/account_dunning_fee/dunning.py @@ -79,7 +79,7 @@ class Dunning(metaclass=PoolMeta): FeeDunningLevel.save(fees) FeeDunningLevel.process(fees) - super(Dunning, cls).process(dunnings) + super().process(dunnings) class FeeDunningLevel(ModelSQL, ModelView): @@ -95,7 +95,7 @@ class FeeDunningLevel(ModelSQL, ModelView): @classmethod def __setup__(cls): - super(FeeDunningLevel, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_constraints = [ ('dunning_level_unique', Unique(t, t.dunning, t.level), @@ -174,14 +174,14 @@ class Letter(metaclass=PoolMeta): @classmethod def get_party_letter(cls): - PartyLetter = super(Letter, cls).get_party_letter() + PartyLetter = super().get_party_letter() class PartyLetterFee(PartyLetter): @property def fees(self): fees = defaultdict(int) - fees.update(super(PartyLetterFee, self).fees) + fees.update(super().fees) for dunning in self.dunnings: for fee in dunning.fees: fees[fee.currency] += fee.amount diff --git a/modules/account_dunning_letter/dunning.py b/modules/account_dunning_letter/dunning.py index 971b55db32..fae4ebd35c 100644 --- a/modules/account_dunning_letter/dunning.py +++ b/modules/account_dunning_letter/dunning.py @@ -22,7 +22,7 @@ class ProcessDunning(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(ProcessDunning, cls).__setup__() + super().__setup__() cls._actions.append('print_letter') def do_print_letter(self, action): @@ -48,7 +48,7 @@ class Letter(CompanyReport, metaclass=PoolMeta): @classmethod def execute(cls, ids, data): with Transaction().set_context(address_with_party=True): - return super(Letter, cls).execute(ids, data) + return super().execute(ids, data) @classmethod def get_context(cls, records, header, data): diff --git a/modules/account_es/account.py b/modules/account_es/account.py index c6be18541f..af2622b079 100644 --- a/modules/account_es/account.py +++ b/modules/account_es/account.py @@ -17,7 +17,7 @@ class TaxCodeTemplate(metaclass=PoolMeta): ], "AEAT Report") def _get_tax_code_value(self, code=None): - value = super(TaxCodeTemplate, self)._get_tax_code_value(code=code) + value = super()._get_tax_code_value(code=code) value['aeat_report'] = self.aeat_report return value diff --git a/modules/account_eu/account.py b/modules/account_eu/account.py index 15ad936ae6..3702485894 100644 --- a/modules/account_eu/account.py +++ b/modules/account_eu/account.py @@ -17,7 +17,7 @@ class TaxTemplate(metaclass=PoolMeta): ec_sales_list_code = fields.Char("EC Sales List Code") def _get_tax_value(self, tax=None): - value = super(TaxTemplate, self)._get_tax_value(tax=tax) + value = super()._get_tax_value(tax=tax) if not tax or tax.ec_sales_list_code != self.ec_sales_list_code: value['ec_sales_list_code'] = self.ec_sales_list_code return value diff --git a/modules/account_fr_chorus/account.py b/modules/account_fr_chorus/account.py index 010eb2c4b3..e2e73dc96a 100644 --- a/modules/account_fr_chorus/account.py +++ b/modules/account_fr_chorus/account.py @@ -99,7 +99,7 @@ class Configuration(_SyntaxMixin, metaclass=PoolMeta): 'chorus_piste_client_id', 'chorus_piste_client_secret', 'chorus_login', 'chorus_password', 'chorus_service'}: return pool.get('account.credential.chorus') - return super(Configuration, cls).multivalue_model(field) + return super().multivalue_model(field) class CredentialChorus(ModelSQL, CompanyValueMixin): @@ -241,7 +241,7 @@ class InvoiceChorus( @classmethod def __setup__(cls): cls.number.search_unaccented = False - super(InvoiceChorus, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_constraints = [ @@ -302,7 +302,7 @@ class InvoiceChorus( @classmethod def validate(cls, records): - super(InvoiceChorus, cls).validate(records) + super().validate(records) for record in records: addresses = [ record.invoice.company.party.address_get('invoice'), @@ -322,7 +322,7 @@ class InvoiceChorus( raise AccessError( gettext('account_fr_chorus.msg_invoice_delete_sent', invoice=record.invoice.rec_name)) - super(InvoiceChorus, cls).delete(records) + super().delete(records) def _send_context(self): return { diff --git a/modules/account_fr_chorus/edocument.py b/modules/account_fr_chorus/edocument.py index be2120c847..9741cbbce2 100644 --- a/modules/account_fr_chorus/edocument.py +++ b/modules/account_fr_chorus/edocument.py @@ -10,11 +10,11 @@ class UNCEFACTInvoice(metaclass=PoolMeta): def render(self, template): if Transaction().context.get('account_fr_chorus') and not template: template = '16B-CII' - return super(UNCEFACTInvoice, self).render(template) + return super().render(template) @classmethod def party_legal_ids(cls, party, address): - ids = super(UNCEFACTInvoice, cls).party_legal_ids(party, address) + ids = super().party_legal_ids(party, address) if Transaction().context.get('account_fr_chorus') and address: ids.append((address.siret.code, {'schemeID': '1'})) return ids diff --git a/modules/account_invoice/account.py b/modules/account_invoice/account.py index b820a98ad3..da1b61889b 100644 --- a/modules/account_invoice/account.py +++ b/modules/account_invoice/account.py @@ -123,7 +123,7 @@ class InvoiceSequence(sequence_ordered(), ModelSQL, ModelView, MatchMixin): @classmethod def __setup__(cls): - super(InvoiceSequence, cls).__setup__() + super().__setup__() cls._order.insert(0, ('fiscalyear', 'ASC')) @classmethod @@ -136,7 +136,7 @@ class Move(metaclass=PoolMeta): @classmethod def _get_origin(cls): - return super(Move, cls)._get_origin() + ['account.invoice'] + return super()._get_origin() + ['account.invoice'] class MoveLine(metaclass=PoolMeta): @@ -163,7 +163,7 @@ class MoveLine(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(MoveLine, cls).__setup__() + super().__setup__() cls._check_modify_exclude.add('invoice_payment') @classmethod @@ -257,7 +257,7 @@ class Reconciliation(metaclass=PoolMeta): Invoice = Pool().get('account.invoice') transaction = Transaction() context = transaction.context - reconciliations = super(Reconciliation, cls).create(vlist) + reconciliations = super().create(vlist) with transaction.set_context( queue_batch=context.get('queue_batch', True)): Invoice.__queue__.process( @@ -270,7 +270,7 @@ class Reconciliation(metaclass=PoolMeta): transaction = Transaction() context = transaction.context invoices_to_process = _invoices_to_process(reconciliations) - super(Reconciliation, cls).delete(reconciliations) + super().delete(reconciliations) with transaction.set_context( queue_batch=context.get('queue_batch', True)): Invoice.__queue__.process(list(invoices_to_process)) @@ -280,7 +280,7 @@ class RenewFiscalYear(metaclass=PoolMeta): __name__ = 'account.fiscalyear.renew' def fiscalyear_defaults(self): - defaults = super(RenewFiscalYear, self).fiscalyear_defaults() + defaults = super().fiscalyear_defaults() defaults['invoice_sequences'] = None return defaults @@ -293,7 +293,7 @@ class RenewFiscalYear(metaclass=PoolMeta): pool = Pool() Sequence = pool.get('ir.sequence.strict') InvoiceSequence = pool.get('account.fiscalyear.invoice_sequence') - fiscalyear = super(RenewFiscalYear, self).create_fiscalyear() + fiscalyear = super().create_fiscalyear() def standard_period(period): return period.type == 'standard' diff --git a/modules/account_invoice/invoice.py b/modules/account_invoice/invoice.py index ea7b7e6acd..75b4e97344 100644 --- a/modules/account_invoice/invoice.py +++ b/modules/account_invoice/invoice.py @@ -361,7 +361,7 @@ class Invoice(Workflow, ModelSQL, ModelView, TaxableMixin, InvoiceReportMixin): Party = pool.get('party.party') cls.number.search_unaccented = False cls.reference.search_unaccented = False - super(Invoice, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_indexes.update({ Index(t, (t.reference, Index.Similarity())), @@ -492,7 +492,7 @@ class Invoice(Workflow, ModelSQL, ModelView, TaxableMixin, InvoiceReportMixin): def __register__(cls, module_name): sql_table = cls.__table__() - super(Invoice, cls).__register__(module_name) + super().__register__(module_name) transaction = Transaction() cursor = transaction.connection.cursor() table = cls.__table_handler__(module_name) @@ -1481,7 +1481,7 @@ class Invoice(Workflow, ModelSQL, ModelView, TaxableMixin, InvoiceReportMixin): raise AccessError( gettext('account_invoice.msg_invoice_delete_numbered', invoice=invoice.rec_name)) - super(Invoice, cls).delete(invoices) + super().delete(invoices) @classmethod def create(cls, vlist): @@ -1498,7 +1498,7 @@ class Invoice(Workflow, ModelSQL, ModelView, TaxableMixin, InvoiceReportMixin): cls.check_modify(invoices) all_invoices += invoices update_tax = [i for i in all_invoices if i.state == 'draft'] - super(Invoice, cls).write(*args) + super().write(*args) if update_tax: cls.update_taxes(update_tax) @@ -1541,11 +1541,11 @@ class Invoice(Workflow, ModelSQL, ModelView, TaxableMixin, InvoiceReportMixin): default.setdefault('validated_by') default.setdefault('posted_by') default.setdefault('invoice_report_revisions', None) - return super(Invoice, cls).copy(invoices, default=default) + return super().copy(invoices, default=default) @classmethod def validate(cls, invoices): - super(Invoice, cls).validate(invoices) + super().validate(invoices) for invoice in invoices: invoice.check_payment_lines() @@ -2167,7 +2167,7 @@ class InvoicePaymentLine(ModelSQL): @classmethod def __setup__(cls): - super(InvoicePaymentLine, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_constraints = [ ('line_unique', Unique(t, t.line), @@ -2389,7 +2389,7 @@ class InvoiceLine(sequence_ordered(), ModelSQL, ModelView, TaxableMixin): @classmethod def __setup__(cls): - super(InvoiceLine, cls).__setup__() + super().__setup__() cls._check_modify_exclude = {'note', 'origin', 'description'} # Set account domain dynamically for kind @@ -2429,7 +2429,7 @@ class InvoiceLine(sequence_ordered(), ModelSQL, ModelView, TaxableMixin): @classmethod def __register__(cls, module_name): - super(InvoiceLine, cls).__register__(module_name) + super().__register__(module_name) table = cls.__table_handler__(module_name) # Migration from 5.0: remove check constraints table.drop_constraint('type_account') @@ -2845,14 +2845,14 @@ class InvoiceLine(sequence_ordered(), ModelSQL, ModelView, TaxableMixin): @classmethod def delete(cls, lines): cls.check_modify(lines) - super(InvoiceLine, cls).delete(lines) + super().delete(lines) @classmethod def write(cls, *args): actions = iter(args) for lines, values in zip(actions, actions): cls.check_modify(lines, set(values)) - super(InvoiceLine, cls).write(*args) + super().write(*args) @classmethod def create(cls, vlist): @@ -2864,7 +2864,7 @@ class InvoiceLine(sequence_ordered(), ModelSQL, ModelView, TaxableMixin): raise AccessError( gettext('account_invoice.msg_invoice_line_create_draft', invoice=invoice.rec_name)) - return super(InvoiceLine, cls).create(vlist) + return super().create(vlist) @classmethod def copy(cls, lines, default=None): @@ -2873,7 +2873,7 @@ class InvoiceLine(sequence_ordered(), ModelSQL, ModelView, TaxableMixin): else: default = default.copy() default.setdefault('origin', None) - return super(InvoiceLine, cls).copy(lines, default=default) + return super().copy(lines, default=default) def _compute_taxes(self): pool = Pool() @@ -3177,14 +3177,14 @@ class InvoiceTax(sequence_ordered(), ModelSQL, ModelView): @classmethod def delete(cls, taxes): cls.check_modify(taxes) - super(InvoiceTax, cls).delete(taxes) + super().delete(taxes) @classmethod def write(cls, *args): actions = iter(args) for taxes, values in zip(actions, actions): cls.check_modify(taxes, set(values)) - super(InvoiceTax, cls).write(*args) + super().write(*args) @classmethod def create(cls, vlist): @@ -3196,7 +3196,7 @@ class InvoiceTax(sequence_ordered(), ModelSQL, ModelView): raise AccessError( gettext('account_invoice.msg_invoice_tax_create_draft', invoice=invoice.rec_name)) - return super(InvoiceTax, cls).create(vlist) + return super().create(vlist) def get_move_lines(self): ''' @@ -3374,7 +3374,7 @@ class InvoiceReport(Report): @classmethod def __setup__(cls): - super(InvoiceReport, cls).__setup__() + super().__setup__() cls.__rpc__['execute'] = RPC(False) @classmethod @@ -3560,7 +3560,7 @@ class PayInvoice(Wizard): @classmethod def __setup__(cls): - super(PayInvoice, cls).__setup__() + super().__setup__() cls.__rpc__['create'].fresh_session = True def get_reconcile_lines_for_amount(self, invoice, amount, currency): diff --git a/modules/account_invoice/party.py b/modules/account_invoice/party.py index 5746807ff0..6de762e7e3 100644 --- a/modules/account_invoice/party.py +++ b/modules/account_invoice/party.py @@ -27,7 +27,7 @@ class ContactMechanism(metaclass=PoolMeta): if _fields is None: _fields = [] _fields.append('invoice') - return super(ContactMechanism, cls).usages(_fields=_fields) + return super().usages(_fields=_fields) class Party(metaclass=PoolMeta): @@ -42,7 +42,7 @@ class Party(metaclass=PoolMeta): pool = Pool() if field in {'customer_payment_term', 'supplier_payment_term'}: return pool.get('party.party.payment_term') - return super(Party, cls).multivalue_model(field) + return super().multivalue_model(field) @classmethod def default_customer_payment_term(cls, **pattern): diff --git a/modules/account_invoice/payment_term.py b/modules/account_invoice/payment_term.py index 17e715e102..a22b4da00b 100644 --- a/modules/account_invoice/payment_term.py +++ b/modules/account_invoice/payment_term.py @@ -26,7 +26,7 @@ class PaymentTerm(DeactivableMixin, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(PaymentTerm, cls).__setup__() + super().__setup__() cls._order.insert(0, ('name', 'ASC')) @classmethod @@ -264,7 +264,7 @@ class PaymentTermLineRelativeDelta(sequence_ordered(), ModelSQL, ModelView): table_h.column_rename('month', '_temp_month') table_h.column_rename('weekday', '_temp_weekday') - super(PaymentTermLineRelativeDelta, cls).__register__(module_name) + super().__register__(module_name) table_h = cls.__table_handler__(module_name) diff --git a/modules/account_invoice_correction/invoice.py b/modules/account_invoice_correction/invoice.py index 9783d3c752..6755260da3 100644 --- a/modules/account_invoice_correction/invoice.py +++ b/modules/account_invoice_correction/invoice.py @@ -13,7 +13,7 @@ class Invoice(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Invoice, cls).__setup__() + super().__setup__() cls._buttons.update({ 'correct': { 'invisible': Eval('state') != 'posted', diff --git a/modules/account_invoice_history/account.py b/modules/account_invoice_history/account.py index 18c6a9525c..b1e3c3183b 100644 --- a/modules/account_invoice_history/account.py +++ b/modules/account_invoice_history/account.py @@ -34,7 +34,7 @@ class Invoice(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Invoice, cls).__setup__() + super().__setup__() cls._check_modify_exclude.add('numbered_at') cls.party.datetime_field = 'history_datetime' cls.party_tax_identifier.datetime_field = 'history_datetime' @@ -82,7 +82,7 @@ class Invoice(metaclass=PoolMeta): @classmethod def set_number(cls, invoices): numbered = [i for i in invoices if not i.number or not i.numbered_at] - super(Invoice, cls).set_number(invoices) + super().set_number(invoices) if numbered: cls.write(numbered, { 'numbered_at': CurrentTimestamp(), @@ -92,7 +92,7 @@ class Invoice(metaclass=PoolMeta): @ModelView.button @Workflow.transition('draft') def draft(cls, invoices): - super(Invoice, cls).draft(invoices) + super().draft(invoices) cls.write(invoices, { 'numbered_at': None, }) @@ -104,4 +104,4 @@ class Invoice(metaclass=PoolMeta): else: default = default.copy() default.setdefault('numbered_at', None) - return super(Invoice, cls).copy(invoices, default=default) + return super().copy(invoices, default=default) diff --git a/modules/account_invoice_line_standalone/invoice.py b/modules/account_invoice_line_standalone/invoice.py index a1dc62556b..a9b207e249 100644 --- a/modules/account_invoice_line_standalone/invoice.py +++ b/modules/account_invoice_line_standalone/invoice.py @@ -9,7 +9,7 @@ class Invoice(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Invoice, cls).__setup__() + super().__setup__() add_remove = [ ('invoice', '=', None), ] diff --git a/modules/account_invoice_stock/account.py b/modules/account_invoice_stock/account.py index 2489f9db9d..64fc63d7d6 100644 --- a/modules/account_invoice_stock/account.py +++ b/modules/account_invoice_stock/account.py @@ -137,7 +137,7 @@ class InvoiceLine(metaclass=PoolMeta): default.setdefault('correction', False) if not Transaction().context.get('_account_invoice_correction'): default.setdefault('stock_moves', None) - return super(InvoiceLine, cls).copy(lines, default=default) + return super().copy(lines, default=default) def _credit(self): line = super()._credit() diff --git a/modules/account_payment/account.py b/modules/account_payment/account.py index 8dc9cebdab..316b0dff89 100644 --- a/modules/account_payment/account.py +++ b/modules/account_payment/account.py @@ -74,7 +74,7 @@ class MoveLine(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(MoveLine, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_indexes.update({ Index( @@ -238,7 +238,7 @@ class MoveLine(metaclass=PoolMeta): else: default = default.copy() default.setdefault('payments', None) - return super(MoveLine, cls).copy(lines, default=default) + return super().copy(lines, default=default) @classmethod @ModelView.button_action('account_payment.act_pay_line') @@ -743,12 +743,12 @@ class Invoice(metaclass=PoolMeta): @fields.depends('party') def on_change_party(self): - super(Invoice, self).on_change_party() + super().on_change_party() if self.party: self.payment_direct_debit = self.party.payment_direct_debit def _get_move_line(self, date, amount): - line = super(Invoice, self)._get_move_line(date, amount) + line = super()._get_move_line(date, amount) line.payment_direct_debit = self.payment_direct_debit return line @@ -759,7 +759,7 @@ class Invoice(metaclass=PoolMeta): Date = pool.get('ir.date') context = Transaction().context - amounts = super(Invoice, cls).get_amount_to_pay(invoices, name) + amounts = super().get_amount_to_pay(invoices, name) if context.get('with_payment', True): for company, c_invoices in groupby( @@ -881,7 +881,7 @@ class StatementLine(metaclass=PoolMeta): @fields.depends('party', methods=['payment']) def on_change_party(self): - super(StatementLine, self).on_change_party() + super().on_change_party() if self.payment: if self.payment.party != self.party: self.payment = None diff --git a/modules/account_payment/payment.py b/modules/account_payment/payment.py index bdf4c54d2f..029850d871 100644 --- a/modules/account_payment/payment.py +++ b/modules/account_payment/payment.py @@ -153,7 +153,7 @@ class Group(ModelSQL, ModelView): values['number'] = config.get_multivalue( 'payment_group_sequence', company=values.get('company', default_company)).get() - return super(Group, cls).create(vlist) + return super().create(vlist) @classmethod def copy(cls, groups, default=None): @@ -163,7 +163,7 @@ class Group(ModelSQL, ModelView): default = default.copy() default.setdefault('number', None) default.setdefault('payments', None) - return super(Group, cls).copy(groups, default=default) + return super().copy(groups, default=default) @classmethod @ModelView.button @@ -389,7 +389,7 @@ class Payment(Workflow, ModelSQL, ModelView): def __setup__(cls): cls.number.search_unaccented = False cls.reference.search_unaccented = False - super(Payment, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_indexes.update({ Index( @@ -654,7 +654,7 @@ class Payment(Workflow, ModelSQL, ModelView): gettext('account_payment.msg_payment_delete_draft', payment=payment.rec_name)) lines = {p.line for p in payments if p.line} - super(Payment, cls).delete(payments) + super().delete(payments) if lines: Line.set_payment_amount(list(lines)) diff --git a/modules/account_payment_braintree/account.py b/modules/account_payment_braintree/account.py index ca2e59e1c9..532c5f670f 100644 --- a/modules/account_payment_braintree/account.py +++ b/modules/account_payment_braintree/account.py @@ -296,7 +296,7 @@ class Payment(CheckoutMixin, BraintreeCustomerMethodMixin, metaclass=PoolMeta): @ModelView.button @Workflow.transition('draft') def draft(cls, payments): - super(Payment, cls).draft(payments) + super().draft(payments) for payment in payments: if payment.braintree_nonce: payment.braintree_nonce = None diff --git a/modules/account_payment_clearing/account.py b/modules/account_payment_clearing/account.py index 503eb6f85c..9787dd80f5 100644 --- a/modules/account_payment_clearing/account.py +++ b/modules/account_payment_clearing/account.py @@ -9,7 +9,7 @@ class Move(metaclass=PoolMeta): @classmethod def _get_origin(cls): - models = super(Move, cls)._get_origin() + models = super()._get_origin() return models + ['account.payment'] diff --git a/modules/account_payment_clearing/payment.py b/modules/account_payment_clearing/payment.py index 0357f142ef..fa041724a9 100644 --- a/modules/account_payment_clearing/payment.py +++ b/modules/account_payment_clearing/payment.py @@ -167,7 +167,7 @@ class Payment(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Payment, cls).__setup__() + super().__setup__() line_invisible = Eval('account') & ~Eval('line') if 'invisible' in cls.line.states: cls.line.states['invisible'] &= line_invisible @@ -212,7 +212,7 @@ class Payment(metaclass=PoolMeta): pool = Pool() Line = pool.get('account.move.line') - super(Payment, cls).succeed(payments) + super().succeed(payments) cls.set_clearing_move(payments) to_reconcile = [] @@ -332,7 +332,7 @@ class Payment(metaclass=PoolMeta): @Workflow.transition('failed') @cancel_clearing_move def fail(cls, payments): - super(Payment, cls).fail(payments) + super().fail(payments) @classmethod def update_reconciled(cls, payments): @@ -379,7 +379,7 @@ class Payment(metaclass=PoolMeta): else: default = default.copy() default.setdefault('clearing_move') - return super(Payment, cls).copy(payments, default=default) + return super().copy(payments, default=default) class Group(metaclass=PoolMeta): diff --git a/modules/account_payment_clearing/statement.py b/modules/account_payment_clearing/statement.py index 08dadecb4f..bab96f2c7f 100644 --- a/modules/account_payment_clearing/statement.py +++ b/modules/account_payment_clearing/statement.py @@ -61,7 +61,7 @@ class Statement(metaclass=PoolMeta): return payments def _group_key(self, line): - key = super(Statement, self)._group_key(line) + key = super()._group_key(line) if hasattr(line, 'payment'): key += (('payment', line.payment),) return key @@ -72,7 +72,7 @@ class StatementLine(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(StatementLine, cls).__setup__() + super().__setup__() cls.related_to.domain['account.payment'] = [ cls.related_to.domain.get('account.payment', []), If(Eval('statement_state') == 'draft', @@ -151,13 +151,13 @@ class StatementLine(metaclass=PoolMeta): @fields.depends('party', methods=['payment']) def on_change_party(self): - super(StatementLine, self).on_change_party() + super().on_change_party() if self.party: self.payment_group = None @fields.depends('account', methods=['payment', 'payment_group']) def on_change_account(self): - super(StatementLine, self).on_change_account() + super().on_change_account() if self.payment: clearing_account = self.payment.journal.clearing_account elif self.payment_group: @@ -171,7 +171,7 @@ class StatementLine(metaclass=PoolMeta): def post_move(cls, lines): pool = Pool() Move = pool.get('account.move') - super(StatementLine, cls).post_move(lines) + super().post_move(lines) Move.post([l.payment.clearing_move for l in lines if l.payment and l.payment.clearing_move diff --git a/modules/account_payment_sepa/payment.py b/modules/account_payment_sepa/payment.py index 6bf715bb18..fdafecfa8e 100644 --- a/modules/account_payment_sepa/payment.py +++ b/modules/account_payment_sepa/payment.py @@ -127,7 +127,7 @@ class Journal(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Journal, cls).__setup__() + super().__setup__() sepa_method = ('sepa', 'SEPA') if sepa_method not in cls.process_method.selection: cls.process_method.selection.append(sepa_method) @@ -200,7 +200,7 @@ class Group(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Group, cls).__setup__() + super().__setup__() cls._buttons.update({ 'sepa_generate_message': { 'invisible': Eval('process_method') != 'sepa', @@ -383,7 +383,7 @@ class Payment(metaclass=PoolMeta): else: default = default.copy() default.setdefault('sepa_mandate_sequence_type', None) - return super(Payment, cls).copy(payments, default=default) + return super().copy(payments, default=default) @classmethod def process_method_with_group(cls): @@ -555,7 +555,7 @@ class Mandate(Workflow, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(Mandate, cls).__setup__() + super().__setup__() cls._transitions |= set(( ('draft', 'requested'), ('requested', 'validated'), @@ -676,7 +676,7 @@ class Mandate(Workflow, ModelSQL, ModelView): # Prevent raising false unique constraint if values.get('identification') == '': values['identification'] = None - return super(Mandate, cls).create(vlist) + return super().create(vlist) @classmethod def write(cls, *args): @@ -688,7 +688,7 @@ class Mandate(Workflow, ModelSQL, ModelView): values = values.copy() values['identification'] = None args.extend((mandates, values)) - super(Mandate, cls).write(*args) + super().write(*args) @classmethod def copy(cls, mandates, default=None): @@ -699,7 +699,7 @@ class Mandate(Workflow, ModelSQL, ModelView): default.setdefault('payments', []) default.setdefault('signature_date', None) default.setdefault('identification', None) - return super(Mandate, cls).copy(mandates, default=default) + return super().copy(mandates, default=default) @property def is_valid(self): @@ -795,7 +795,7 @@ class Mandate(Workflow, ModelSQL, ModelView): gettext('account_payment_sepa' '.msg_mandate_delete_draft_cancelled', mandate=mandate.rec_name)) - super(Mandate, cls).delete(mandates) + super().delete(mandates) class MandateReport(CompanyReport): @@ -836,7 +836,7 @@ class Message(Workflow, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(Message, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_indexes.add( Index( @@ -874,7 +874,7 @@ class Message(Workflow, ModelSQL, ModelView): cursor = transaction.connection.cursor() table = cls.__table__() - super(Message, cls).__register__(module_name) + super().__register__(module_name) # Migration from 5.6: rename state canceled to cancelled cursor.execute(*table.update( diff --git a/modules/account_payment_sepa/sepa_handler.py b/modules/account_payment_sepa/sepa_handler.py index b2e679c79d..33a40af7d3 100644 --- a/modules/account_payment_sepa/sepa_handler.py +++ b/modules/account_payment_sepa/sepa_handler.py @@ -23,7 +23,7 @@ class CAMT054(SEPAHandler): def __init__(self, source, Payment): self.Payment = Payment - super(CAMT054, self).__init__(source) + super().__init__(source) def handle(self, event, element): tag = etree.QName(element) diff --git a/modules/account_payment_sepa_cfonb/payment.py b/modules/account_payment_sepa_cfonb/payment.py index 7700aadf36..fac032f235 100644 --- a/modules/account_payment_sepa_cfonb/payment.py +++ b/modules/account_payment_sepa_cfonb/payment.py @@ -14,7 +14,7 @@ class Journal(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Journal, cls).__setup__() + super().__setup__() payable_flavor_cfonb = ('pain.001.001.03-cfonb', 'pain.001.001.03 CFONB') receivable_flavor_cfonb = ('pain.008.001.02-cfonb', @@ -45,4 +45,4 @@ class Group(metaclass=PoolMeta): if (self.kind == 'receivable' and self.journal.sepa_receivable_flavor.endswith('-cfonb')): return loader.load('%s.xml' % self.journal.sepa_receivable_flavor) - return super(Group, self).get_sepa_template() + return super().get_sepa_template() diff --git a/modules/account_payment_stripe/payment.py b/modules/account_payment_stripe/payment.py index f672786464..f782e5eb01 100644 --- a/modules/account_payment_stripe/payment.py +++ b/modules/account_payment_stripe/payment.py @@ -56,7 +56,7 @@ class Journal(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Journal, cls).__setup__() + super().__setup__() stripe_method = ('stripe', 'Stripe') if stripe_method not in cls.process_method.selection: cls.process_method.selection.append(stripe_method) @@ -194,7 +194,7 @@ class Payment(StripeCustomerMethodMixin, CheckoutMixin, metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Payment, cls).__setup__() + super().__setup__() cls.stripe_customer.states['readonly'] = ( ~Eval('state').in_(['draft', 'submitted', 'approved']) @@ -331,7 +331,7 @@ class Payment(StripeCustomerMethodMixin, CheckoutMixin, metaclass=PoolMeta): # default methods are called only once values.setdefault('stripe_idempotency_key', cls.default_stripe_idempotency_key()) - return super(Payment, cls).create(vlist) + return super().create(vlist) @classmethod def copy(cls, payments, default=None): @@ -349,13 +349,13 @@ class Payment(StripeCustomerMethodMixin, CheckoutMixin, metaclass=PoolMeta): default.setdefault('stripe_captured', False) default.setdefault('stripe_chargeable', False) default.setdefault('stripe_capturable', False) - return super(Payment, cls).copy(payments, default=default) + return super().copy(payments, default=default) @classmethod @ModelView.button @Workflow.transition('draft') def draft(cls, payments): - super(Payment, cls).draft(payments) + super().draft(payments) for payment in payments: if payment.stripe_token: payment.stripe_token = None @@ -991,7 +991,7 @@ class Account(ModelSQL, ModelView): @classmethod def __setup__(cls): - super(Account, cls).__setup__() + super().__setup__() cls._buttons.update({ 'new_identifier': { 'icon': 'tryton-refresh', @@ -1475,7 +1475,7 @@ class Customer(CheckoutMixin, DeactivableMixin, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(Customer, cls).__setup__() + super().__setup__() cls._buttons.update({ 'stripe_checkout': { 'invisible': ~Eval('stripe_checkout_needed', False), @@ -1501,7 +1501,7 @@ class Customer(CheckoutMixin, DeactivableMixin, ModelSQL, ModelView): or not self.stripe_setup_intent_id) def get_rec_name(self, name): - name = super(Customer, self).get_rec_name(name) + name = super().get_rec_name(name) return self.stripe_customer_id if self.stripe_customer_id else name @classmethod @@ -1524,7 +1524,7 @@ class Customer(CheckoutMixin, DeactivableMixin, ModelSQL, ModelView): default = default.copy() default.setdefault('stripe_token', None) default.setdefault('stripe_customer_id', None) - return super(Customer, cls).copy(customers, default=default) + return super().copy(customers, default=default) @classmethod def stripe_checkout(cls, customers): diff --git a/modules/account_product/account.py b/modules/account_product/account.py index 398b0a8e21..f9c1d2a0af 100644 --- a/modules/account_product/account.py +++ b/modules/account_product/account.py @@ -31,7 +31,7 @@ class CreateChart(metaclass=PoolMeta): def transition_create_properties(self): pool = Pool() Configuration = pool.get('account.configuration') - state = super(CreateChart, self).transition_create_properties() + state = super().transition_create_properties() with Transaction().set_context(company=self.properties.company.id): config = Configuration(1) @@ -47,7 +47,7 @@ class CreateChart(metaclass=PoolMeta): pool = Pool() Account = pool.get('account.account') - defaults = super(CreateChart, self).default_properties(fields) + defaults = super().default_properties(fields) expense_accounts = Account.search([ ('type.expense', '=', True), ('company', '=', self.account.company.id), diff --git a/modules/account_product/configuration.py b/modules/account_product/configuration.py index 2742d53411..224b896fc5 100644 --- a/modules/account_product/configuration.py +++ b/modules/account_product/configuration.py @@ -27,7 +27,7 @@ class Configuration(metaclass=PoolMeta): if field in {'default_category_account_expense', 'default_category_account_revenue'}: return pool.get('account.configuration.default_account') - return super(Configuration, cls).multivalue_model(field) + return super().multivalue_model(field) class ConfigurationDefaultAccount(metaclass=PoolMeta): diff --git a/modules/account_product/product.py b/modules/account_product/product.py index ddb00e509c..37de4f3323 100644 --- a/modules/account_product/product.py +++ b/modules/account_product/product.py @@ -137,7 +137,7 @@ class Category(CompanyMultiValueMixin, metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Category, cls).__setup__() + super().__setup__() cls.parent.domain = [ ('accounting', '=', Eval('accounting', False)), cls.parent.domain or []] @@ -150,7 +150,7 @@ class Category(CompanyMultiValueMixin, metaclass=PoolMeta): pool = Pool() if field in {'account_expense', 'account_revenue'}: return pool.get('product.category.account') - return super(Category, cls).multivalue_model(field) + return super().multivalue_model(field) @classmethod def default_accounting(cls): @@ -230,7 +230,7 @@ class Category(CompanyMultiValueMixin, metaclass=PoolMeta): @classmethod def view_attributes(cls): - return super(Category, cls).view_attributes() + [ + return super().view_attributes() + [ ('/form/notebook/page[@id="accounting"]', 'states', { 'invisible': ~Eval('accounting', False), }), @@ -430,5 +430,5 @@ class TemplateCategoryAll(metaclass=PoolMeta): @classmethod def union_models(cls): - return super(TemplateCategoryAll, cls).union_models() + [ + return super().union_models() + [ 'product.template-product.category.account'] diff --git a/modules/account_statement/account.py b/modules/account_statement/account.py index 5c213cd169..8d60e5acf2 100644 --- a/modules/account_statement/account.py +++ b/modules/account_statement/account.py @@ -11,7 +11,7 @@ class Journal(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Journal, cls).__setup__() + super().__setup__() cls.type.selection.append(('statement', "Statement")) @@ -20,7 +20,7 @@ class Move(metaclass=PoolMeta): @classmethod def _get_origin(cls): - return super(Move, cls)._get_origin() + ['account.statement'] + return super()._get_origin() + ['account.statement'] @dualmethod @ModelView.button diff --git a/modules/account_statement/journal.py b/modules/account_statement/journal.py index c5a57d2dee..0a9d915a92 100644 --- a/modules/account_statement/journal.py +++ b/modules/account_statement/journal.py @@ -68,7 +68,7 @@ class Journal(DeactivableMixin, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(Journal, cls).__setup__() + super().__setup__() cls._order.insert(0, ('name', 'ASC')) t = cls.__table__() cls._sql_constraints = [ diff --git a/modules/account_statement/statement.py b/modules/account_statement/statement.py index 85caa68207..d62c96abce 100644 --- a/modules/account_statement/statement.py +++ b/modules/account_statement/statement.py @@ -131,7 +131,7 @@ class Statement(Workflow, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(Statement, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_indexes.update({ Index( @@ -185,7 +185,7 @@ class Statement(Workflow, ModelSQL, ModelView): cursor = transaction.connection.cursor() sql_table = cls.__table__() - super(Statement, cls).__register__(module_name) + super().__register__(module_name) # Migration from 5.6: rename state cancel to cancelled cursor.execute(*sql_table.update( @@ -389,7 +389,7 @@ class Statement(Workflow, ModelSQL, ModelView): raise AccessError( gettext('account_statement.msg_statement_delete_cancel', statement=statement.rec_name)) - super(Statement, cls).delete(statements) + super().delete(statements) @classmethod @ModelView.button @@ -789,7 +789,7 @@ class Line(origin_mixin(_states), sequence_ordered(), ModelSQL, ModelView): @classmethod def __setup__(cls): - super(Line, cls).__setup__() + super().__setup__() table = cls.__table__() cls.date.states['readonly'] = ( cls.date.states.get('readonly', False) @@ -961,7 +961,7 @@ class Line(origin_mixin(_states), sequence_ordered(), ModelSQL, ModelView): @fields.depends('origin', '_parent_origin.statement_state') def on_change_with_statement_state(self, name=None): try: - state = super(Line, self).on_change_with_statement_state() + state = super().on_change_with_statement_state() except AttributeError: state = None if self.origin: @@ -995,7 +995,7 @@ class Line(origin_mixin(_states), sequence_ordered(), ModelSQL, ModelView): default = default.copy() default.setdefault('move', None) default.setdefault('related_to', None) - return super(Line, cls).copy(lines, default=default) + return super().copy(lines, default=default) @classmethod def reconcile(cls, move_lines): @@ -1117,7 +1117,7 @@ class LineGroup(ModelSQL, ModelView): @classmethod def __setup__(cls): cls.number.search_unaccented = False - super(LineGroup, cls).__setup__() + super().__setup__() cls.__access__.add('statement') cls._order.insert(0, ('date', 'DESC')) @@ -1204,7 +1204,7 @@ class Origin(origin_mixin(_states), ModelSQL, ModelView): # Migration from 5.0: rename informations into information table.column_rename('informations', 'information') - super(Origin, cls).__register__(module_name) + super().__register__(module_name) @fields.depends('statement', '_parent_statement.id') def on_change_with_statement_id(self, name=None): diff --git a/modules/account_statement_aeb43/statement.py b/modules/account_statement_aeb43/statement.py index 30952236f7..633ee2653c 100644 --- a/modules/account_statement_aeb43/statement.py +++ b/modules/account_statement_aeb43/statement.py @@ -14,7 +14,7 @@ class ImportStatementStart(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(ImportStatementStart, cls).__setup__() + super().__setup__() aeb43 = ('aeb43', 'AEB Norm 43') cls.file_format.selection.append(aeb43) diff --git a/modules/account_statement_coda/account.py b/modules/account_statement_coda/account.py index 92da8df162..633e6a858c 100644 --- a/modules/account_statement_coda/account.py +++ b/modules/account_statement_coda/account.py @@ -14,7 +14,7 @@ class StatementImportStart(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(StatementImportStart, cls).__setup__() + super().__setup__() cls.file_format.selection.append(('coda', "CODA")) diff --git a/modules/account_statement_ofx/account.py b/modules/account_statement_ofx/account.py index 836837a29a..28ace252b1 100644 --- a/modules/account_statement_ofx/account.py +++ b/modules/account_statement_ofx/account.py @@ -14,7 +14,7 @@ class StatementImportStart(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(StatementImportStart, cls).__setup__() + super().__setup__() cls.file_format.selection.append(('ofx', "OFX")) diff --git a/modules/account_stock_anglo_saxon/account.py b/modules/account_stock_anglo_saxon/account.py index e41011bc58..9648de137f 100644 --- a/modules/account_stock_anglo_saxon/account.py +++ b/modules/account_stock_anglo_saxon/account.py @@ -8,6 +8,6 @@ class FiscalYear(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(FiscalYear, cls).__setup__() + super().__setup__() cls.account_stock_method.selection.append( ('anglo_saxon', 'Anglo-Saxon')) diff --git a/modules/account_stock_anglo_saxon/invoice.py b/modules/account_stock_anglo_saxon/invoice.py index ceacb32943..3c09bb19d7 100644 --- a/modules/account_stock_anglo_saxon/invoice.py +++ b/modules/account_stock_anglo_saxon/invoice.py @@ -59,7 +59,7 @@ class InvoiceLine(metaclass=PoolMeta): Period = pool.get('account.period') Warning = pool.get('res.user.warning') - result = super(InvoiceLine, self).get_move_lines() + result = super().get_move_lines() if self.type != 'line': return result diff --git a/modules/account_stock_anglo_saxon/product.py b/modules/account_stock_anglo_saxon/product.py index 497b2f5435..cda3fb97dc 100644 --- a/modules/account_stock_anglo_saxon/product.py +++ b/modules/account_stock_anglo_saxon/product.py @@ -26,7 +26,7 @@ class Category(metaclass=PoolMeta): pool = Pool() if field == 'account_cogs': return pool.get('product.category.account') - return super(Category, cls).multivalue_model(field) + return super().multivalue_model(field) @property @account_used('account_cogs') diff --git a/modules/account_stock_anglo_saxon/stock.py b/modules/account_stock_anglo_saxon/stock.py index 81354319e6..dd2029a6ce 100644 --- a/modules/account_stock_anglo_saxon/stock.py +++ b/modules/account_stock_anglo_saxon/stock.py @@ -32,7 +32,7 @@ class Move(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Move, cls).__setup__() + super().__setup__() cls._allow_modify_closed_period.update(['in_anglo_saxon_quantity', 'out_anglo_saxon_quantity']) @@ -59,7 +59,7 @@ class Move(metaclass=PoolMeta): Uom = pool.get('product.uom') AccountMoveLine = pool.get('account.move.line') Currency = pool.get('currency.currency') - lines = super(Move, self)._get_account_stock_move_lines(type_) + lines = super()._get_account_stock_move_lines(type_) cost_price_method = self.product.get_multivalue( 'cost_price_method', **self._cost_price_pattern) if type_.endswith('supplier') and cost_price_method == 'fixed': @@ -186,7 +186,7 @@ class Move(metaclass=PoolMeta): for prefix in ('in_', 'out_'): default.setdefault(prefix + 'anglo_saxon_quantity', getattr(cls, 'default_%sanglo_saxon_quantity' % prefix)()) - return super(Move, cls).copy(moves, default=default) + return super().copy(moves, default=default) @classmethod @ModelView.button diff --git a/modules/account_stock_continental/account.py b/modules/account_stock_continental/account.py index 88d6b59050..5e77e69ead 100644 --- a/modules/account_stock_continental/account.py +++ b/modules/account_stock_continental/account.py @@ -43,5 +43,5 @@ class AccountMove(metaclass=PoolMeta): @classmethod def _get_origin(cls): - return super(AccountMove, cls)._get_origin() + ['stock.move', + return super()._get_origin() + ['stock.move', 'product.product', 'product.template'] diff --git a/modules/account_stock_continental/product.py b/modules/account_stock_continental/product.py index 5cb9002646..48730648a7 100644 --- a/modules/account_stock_continental/product.py +++ b/modules/account_stock_continental/product.py @@ -70,7 +70,7 @@ class Category(metaclass=PoolMeta): pool = Pool() if field in account_names: return pool.get('product.category.account') - return super(Category, cls).multivalue_model(field) + return super().multivalue_model(field) @property @account_used('account_stock') @@ -142,7 +142,7 @@ class Template(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Template, cls).__setup__() + super().__setup__() cls._modify_no_move.append( ('cost_price', 'account_stock_continental.msg_product_change_cost_price')) diff --git a/modules/account_stock_continental/stock.py b/modules/account_stock_continental/stock.py index c57f22e97d..d8a2034744 100644 --- a/modules/account_stock_continental/stock.py +++ b/modules/account_stock_continental/stock.py @@ -171,7 +171,7 @@ class Move(metaclass=PoolMeta): def do(cls, moves): pool = Pool() AccountMove = pool.get('account.move') - super(Move, cls).do(moves) + super().do(moves) account_moves = [] for move in moves: account_move = move._get_account_stock_move() diff --git a/modules/account_stock_landed_cost/account.py b/modules/account_stock_landed_cost/account.py index 01e9c52435..48b574197a 100644 --- a/modules/account_stock_landed_cost/account.py +++ b/modules/account_stock_landed_cost/account.py @@ -132,7 +132,7 @@ class LandedCost(Workflow, ModelSQL, ModelView, MatchMixin): @classmethod def __setup__(cls): cls.number.search_unaccented = False - super(LandedCost, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_indexes.add( Index( @@ -173,7 +173,7 @@ class LandedCost(Workflow, ModelSQL, ModelView, MatchMixin): cursor = Transaction().connection.cursor() sql_table = cls.__table__() - super(LandedCost, cls).__register__(module_name) + super().__register__(module_name) # Migration from 5.6: rename state cancel to cancelled cursor.execute(*sql_table.update( @@ -434,7 +434,7 @@ class LandedCost(Workflow, ModelSQL, ModelView, MatchMixin): values['number'] = config.get_multivalue( 'landed_cost_sequence', company=values.get('company', default_company)).get() - return super(LandedCost, cls).create(vlist) + return super().create(vlist) @classmethod def delete(cls, landed_costs): @@ -563,7 +563,7 @@ class InvoiceLine(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(InvoiceLine, cls).__setup__() + super().__setup__() cls._check_modify_exclude.add('landed_cost') @classmethod @@ -573,4 +573,4 @@ class InvoiceLine(metaclass=PoolMeta): else: default = default.copy() default.setdefault('landed_cost', None) - return super(InvoiceLine, cls).copy(lines, default=default) + return super().copy(lines, default=default) diff --git a/modules/account_stock_landed_cost_weight/account.py b/modules/account_stock_landed_cost_weight/account.py index 1aef157211..d18dd51a75 100644 --- a/modules/account_stock_landed_cost_weight/account.py +++ b/modules/account_stock_landed_cost_weight/account.py @@ -10,7 +10,7 @@ class LandedCost(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(LandedCost, cls).__setup__() + super().__setup__() cls.allocation_method.selection.append(('weight', 'By Weight')) def allocate_cost_by_weight(self): diff --git a/modules/account_tax_cash/account.py b/modules/account_tax_cash/account.py index 5a67d593d4..4b382ed276 100644 --- a/modules/account_tax_cash/account.py +++ b/modules/account_tax_cash/account.py @@ -54,7 +54,7 @@ class Period(metaclass=PoolMeta): pool = Pool() MoveLine = pool.get('account.move.line') Warning = pool.get('res.user.warning') - super(Period, cls).close(periods) + super().close(periods) for period in periods: if (period.tax_group_on_cash_basis or period.fiscalyear.tax_group_on_cash_basis): @@ -101,7 +101,7 @@ class Tax(metaclass=PoolMeta): def _amount_where(cls, tax_line, move_line, move): context = Transaction().context periods = context.get('periods', []) - where = super(Tax, cls)._amount_where(tax_line, move_line, move) + where = super()._amount_where(tax_line, move_line, move) return ((where & (tax_line.on_cash_basis == Literal(False)) | (tax_line.on_cash_basis == Null)) @@ -112,7 +112,7 @@ class Tax(metaclass=PoolMeta): def _amount_domain(cls): context = Transaction().context periods = context.get('periods', []) - domain = super(Tax, cls)._amount_domain() + domain = super()._amount_domain() return ['OR', [domain, ('on_cash_basis', '=', False), @@ -158,7 +158,7 @@ class TaxLine(metaclass=PoolMeta): @property def period_checked(self): - period = super(TaxLine, self).period_checked + period = super().period_checked if self.on_cash_basis: period = self.period return period @@ -216,7 +216,7 @@ class Move(metaclass=PoolMeta): def post(cls, moves): pool = Pool() TaxLine = pool.get('account.tax.line') - super(Move, cls).post(moves) + super().post(moves) tax_lines = [] for move in moves: @@ -244,7 +244,7 @@ class Invoice(metaclass=PoolMeta): @fields.depends('party', 'type', 'tax_group_on_cash_basis') def on_change_party(self): - super(Invoice, self).on_change_party() + super().on_change_party() if self.type == 'in' and self.party: self.tax_group_on_cash_basis = ( self.party.supplier_tax_group_on_cash_basis) @@ -252,7 +252,7 @@ class Invoice(metaclass=PoolMeta): self.tax_group_on_cash_basis = [] def get_move(self): - move = super(Invoice, self).get_move() + move = super().get_move() if self.tax_group_on_cash_basis: for line in move.lines: for tax_line in getattr(line, 'tax_lines', []): @@ -284,7 +284,7 @@ class Invoice(metaclass=PoolMeta): @classmethod def write(cls, *args): - super(Invoice, cls).write(*args) + super().write(*args) invoices = [] actions = iter(args) @@ -296,14 +296,14 @@ class Invoice(metaclass=PoolMeta): @classmethod def process(cls, invoices): - super(Invoice, cls).process(invoices) + super().process(invoices) cls._update_tax_cash_basis(invoices) @classmethod @ModelView.button @Workflow.transition('cancelled') def cancel(cls, invoices): - super(Invoice, cls).cancel(invoices) + super().cancel(invoices) cls._update_tax_cash_basis(invoices) @classmethod diff --git a/modules/account_tax_rule_country/account.py b/modules/account_tax_rule_country/account.py index d28a6db1d0..fddd02f697 100644 --- a/modules/account_tax_rule_country/account.py +++ b/modules/account_tax_rule_country/account.py @@ -62,7 +62,7 @@ class TaxRuleLineTemplate(_TaxRuleLineMixin, metaclass=PoolMeta): __name__ = 'account.tax.rule.line.template' def _get_tax_rule_line_value(self, rule_line=None): - value = super(TaxRuleLineTemplate, self)._get_tax_rule_line_value( + value = super()._get_tax_rule_line_value( rule_line=rule_line) if not rule_line or rule_line.from_country != self.from_country: value['from_country'] = ( @@ -121,7 +121,7 @@ class InvoiceLine(metaclass=PoolMeta): except KeyError: Move = ShipmentOut = ShipmentOutReturn = None - pattern = super(InvoiceLine, self)._get_tax_rule_pattern() + pattern = super()._get_tax_rule_pattern() from_country = from_subdivision = to_country = to_subdivision = None if (SaleLine diff --git a/modules/account_tax_rule_country/purchase.py b/modules/account_tax_rule_country/purchase.py index ee8f467ebd..e2de0d3b0d 100644 --- a/modules/account_tax_rule_country/purchase.py +++ b/modules/account_tax_rule_country/purchase.py @@ -11,7 +11,7 @@ class Purchase(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Purchase, cls).__setup__() + super().__setup__() for field in (cls.invoice_address, cls.warehouse): field.states['readonly'] |= ( Eval('lines', [0]) & Eval('invoice_address')) diff --git a/modules/account_tax_rule_country/sale.py b/modules/account_tax_rule_country/sale.py index 3d979a3130..39e20aa24c 100644 --- a/modules/account_tax_rule_country/sale.py +++ b/modules/account_tax_rule_country/sale.py @@ -11,7 +11,7 @@ class Sale(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Sale, cls).__setup__() + super().__setup__() for field in (cls.shipment_party, cls.shipment_address, cls.warehouse): field.states['readonly'] |= ( Eval('lines', [0]) & Eval('shipment_address')) diff --git a/modules/analytic_account/account.py b/modules/analytic_account/account.py index 6637c4b6b4..4ed5d73be6 100644 --- a/modules/analytic_account/account.py +++ b/modules/analytic_account/account.py @@ -96,7 +96,7 @@ class Account( @classmethod def __setup__(cls): cls.code.search_unaccented = False - super(Account, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_indexes.add( Index(t, (t.code, Index.Similarity()))) @@ -105,7 +105,7 @@ class Account( @classmethod def __register__(cls, module_name): - super(Account, cls).__register__(module_name) + super().__register__(module_name) table = cls.__table_handler__(module_name) # Migration from 5.0: remove display_balance @@ -361,7 +361,7 @@ class AccountDistribution(ModelView, ModelSQL): @classmethod def __setup__(cls): - super(AccountDistribution, cls).__setup__() + super().__setup__() cls._order.insert(0, ('ratio', 'DESC')) @fields.depends('parent', '_parent_parent.root') @@ -402,7 +402,7 @@ class AnalyticAccountEntry(ModelView, ModelSQL): @classmethod def __setup__(cls): - super(AnalyticAccountEntry, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_constraints += [ ('root_origin_uniq', Unique(t, t.origin, t.root), diff --git a/modules/analytic_account/line.py b/modules/analytic_account/line.py index d8a534d65e..dd13b69be4 100644 --- a/modules/analytic_account/line.py +++ b/modules/analytic_account/line.py @@ -43,7 +43,7 @@ class Line(ModelSQL, ModelView): @classmethod def __setup__(cls): - super(Line, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_constraints += [ ('credit_debit_', @@ -58,7 +58,7 @@ class Line(ModelSQL, ModelView): @classmethod def __register__(cls, module_name): - super(Line, cls).__register__(module_name) + super().__register__(module_name) table = cls.__table_handler__(module_name) # Migration from 5.0: replace credit_debit constraint by credit_debit_ @@ -116,7 +116,7 @@ class Line(ModelSQL, ModelView): def create(cls, vlist): pool = Pool() MoveLine = pool.get('account.move.line') - lines = super(Line, cls).create(vlist) + lines = super().create(vlist) move_lines = [l.move_line for l in lines] MoveLine.set_analytic_state(move_lines) MoveLine.save(move_lines) @@ -126,7 +126,7 @@ class Line(ModelSQL, ModelView): def write(cls, *args): pool = Pool() MoveLine = pool.get('account.move.line') - super(Line, cls).write(*args) + super().write(*args) lines = sum(args[0:None:2], []) move_lines = [l.move_line for l in lines] MoveLine.set_analytic_state(move_lines) @@ -137,7 +137,7 @@ class Line(ModelSQL, ModelView): pool = Pool() MoveLine = pool.get('account.move.line') move_lines = [l.move_line for l in lines] - super(Line, cls).delete(lines) + super().delete(lines) MoveLine.set_analytic_state(move_lines) MoveLine.save(move_lines) @@ -150,7 +150,7 @@ class Move(metaclass=PoolMeta): def post(cls, moves): pool = Pool() MoveLine = pool.get('account.move.line') - super(Move, cls).post(moves) + super().post(moves) lines = [l for m in moves for l in m.lines] MoveLine.apply_rule(lines) MoveLine.set_analytic_state(lines) @@ -182,7 +182,7 @@ class MoveLine(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(MoveLine, cls).__setup__() + super().__setup__() cls._buttons.update({ 'apply_analytic_rules': { 'invisible': Eval('analytic_state') != 'draft', diff --git a/modules/analytic_invoice/asset.py b/modules/analytic_invoice/asset.py index 4175058051..8e430399de 100644 --- a/modules/analytic_invoice/asset.py +++ b/modules/analytic_invoice/asset.py @@ -12,7 +12,7 @@ class Asset(AnalyticMixin, metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Asset, cls).__setup__() + super().__setup__() cls.analytic_accounts.domain = [ ('company', '=', Eval('company', -1)), ] @@ -22,7 +22,7 @@ class Asset(AnalyticMixin, metaclass=PoolMeta): pool = Pool() Entry = pool.get('analytic.account.entry') - super(Asset, self).on_change_supplier_invoice_line() + super().on_change_supplier_invoice_line() if self.supplier_invoice_line: entries = [] for entry in self.supplier_invoice_line.analytic_accounts: @@ -35,7 +35,7 @@ class Asset(AnalyticMixin, metaclass=PoolMeta): self.analytic_accounts = entries def get_move(self, line): - move = super(Asset, self).get_move(line) + move = super().get_move(line) self.set_analytic_lines(move, self.product.account_expense_used) return move diff --git a/modules/analytic_invoice/invoice.py b/modules/analytic_invoice/invoice.py index 92d4bd56bf..a17f6696ae 100644 --- a/modules/analytic_invoice/invoice.py +++ b/modules/analytic_invoice/invoice.py @@ -11,7 +11,7 @@ class InvoiceLine(AnalyticMixin, metaclass=PoolMeta): @classmethod def __setup__(cls): - super(InvoiceLine, cls).__setup__() + super().__setup__() cls.analytic_accounts.domain = [ ('company', '=', Eval('company', -1)), ] @@ -24,7 +24,7 @@ class InvoiceLine(AnalyticMixin, metaclass=PoolMeta): pool = Pool() AnalyticAccountEntry = pool.get('analytic.account.entry') - line = super(InvoiceLine, self)._credit() + line = super()._credit() if self.analytic_accounts: new_entries = AnalyticAccountEntry.copy(self.analytic_accounts, default={ @@ -34,7 +34,7 @@ class InvoiceLine(AnalyticMixin, metaclass=PoolMeta): return line def get_move_lines(self): - lines = super(InvoiceLine, self).get_move_lines() + lines = super().get_move_lines() if self.invoice and self.invoice.type: type_ = self.invoice.type else: @@ -76,7 +76,7 @@ class AnalyticAccountEntry(metaclass=PoolMeta): @classmethod def _get_origin(cls): pool = Pool() - origins = super(AnalyticAccountEntry, cls)._get_origin() + origins = super()._get_origin() origins.append('account.invoice.line') try: pool.get('account.asset') @@ -102,7 +102,7 @@ class AnalyticAccountEntry(metaclass=PoolMeta): @classmethod def search_company(cls, name, clause): pool = Pool() - domain = super(AnalyticAccountEntry, cls).search_company(name, clause), + domain = super().search_company(name, clause), domain = ['OR', domain, (('origin.' + clause[0],) + tuple(clause[1:3]) diff --git a/modules/analytic_purchase/purchase.py b/modules/analytic_purchase/purchase.py index c88f93f3a7..9b5f6c17f5 100644 --- a/modules/analytic_purchase/purchase.py +++ b/modules/analytic_purchase/purchase.py @@ -11,7 +11,7 @@ class PurchaseLine(AnalyticMixin, metaclass=PoolMeta): @classmethod def __setup__(cls): - super(PurchaseLine, cls).__setup__() + super().__setup__() cls.analytic_accounts.domain = [ ('company', '=', Eval('company', -1)), ] @@ -24,7 +24,7 @@ class PurchaseLine(AnalyticMixin, metaclass=PoolMeta): pool = Pool() AnalyticAccountEntry = pool.get('analytic.account.entry') - invoice_lines = super(PurchaseLine, self).get_invoice_line() + invoice_lines = super().get_invoice_line() for invoice_line in invoice_lines: new_entries = AnalyticAccountEntry.copy(self.analytic_accounts, default={ @@ -39,7 +39,7 @@ class AnalyticAccountEntry(metaclass=PoolMeta): @classmethod def _get_origin(cls): - origins = super(AnalyticAccountEntry, cls)._get_origin() + origins = super()._get_origin() return origins + ['purchase.line'] @fields.depends('origin') @@ -53,7 +53,7 @@ class AnalyticAccountEntry(metaclass=PoolMeta): @classmethod def search_company(cls, name, clause): - domain = super(AnalyticAccountEntry, cls).search_company(name, clause) + domain = super().search_company(name, clause) if domain: domain = ['OR', domain] domain.append( diff --git a/modules/analytic_sale/sale.py b/modules/analytic_sale/sale.py index 41bd6e7a4e..05ebdaaf9a 100644 --- a/modules/analytic_sale/sale.py +++ b/modules/analytic_sale/sale.py @@ -39,7 +39,7 @@ class AnalyticAccountEntry(metaclass=PoolMeta): @classmethod def _get_origin(cls): - origins = super(AnalyticAccountEntry, cls)._get_origin() + origins = super()._get_origin() return origins + ['sale.line'] @fields.depends('origin') @@ -53,7 +53,7 @@ class AnalyticAccountEntry(metaclass=PoolMeta): @classmethod def search_company(cls, name, clause): - domain = super(AnalyticAccountEntry, cls).search_company(name, clause), + domain = super().search_company(name, clause), if domain: domain = ['OR', domain] domain.append(('origin.sale.' + clause[0], diff --git a/modules/authentication_sms/res.py b/modules/authentication_sms/res.py index b9f57da4a7..fbe354409f 100644 --- a/modules/authentication_sms/res.py +++ b/modules/authentication_sms/res.py @@ -30,7 +30,7 @@ class User(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(User, cls).__setup__() + super().__setup__() cls._preferences_fields.append('mobile') @classmethod diff --git a/modules/authentication_sms/tests/test_module.py b/modules/authentication_sms/tests/test_module.py index 163a0de1ef..779e526822 100644 --- a/modules/authentication_sms/tests/test_module.py +++ b/modules/authentication_sms/tests/test_module.py @@ -24,7 +24,7 @@ class AuthenticationSMSTestCase(ModuleTestCase): module = 'authentication_sms' def setUp(self): - super(AuthenticationSMSTestCase, self).setUp() + super().setUp() methods = config.get('session', 'authentications', default='') config.set('session', 'authentications', 'sms') self.addCleanup(config.set, 'session', 'authentications', methods) diff --git a/modules/bank/party.py b/modules/bank/party.py index 607ed09dbc..32a19d50e8 100644 --- a/modules/bank/party.py +++ b/modules/bank/party.py @@ -15,7 +15,7 @@ class Party(metaclass=PoolMeta): @classmethod def search_rec_name(cls, name, clause): - domain = super(Party, cls).search_rec_name(name, clause) + domain = super().search_rec_name(name, clause) if clause[1].startswith('!') or clause[1].startswith('not '): bool_op = 'AND' else: diff --git a/modules/carrier/carrier.py b/modules/carrier/carrier.py index 2004acce50..2078ea1ec3 100644 --- a/modules/carrier/carrier.py +++ b/modules/carrier/carrier.py @@ -69,7 +69,7 @@ class Carrier(DeactivableMixin, ModelSQL, ModelView): def create(cls, *args, **kwargs): pool = Pool() CarrierSelection = pool.get('carrier.selection') - carriers = super(Carrier, cls).create(*args, **kwargs) + carriers = super().create(*args, **kwargs) CarrierSelection._get_carriers_cache.clear() return carriers @@ -77,7 +77,7 @@ class Carrier(DeactivableMixin, ModelSQL, ModelView): def delete(cls, *args, **kwargs): pool = Pool() CarrierSelection = pool.get('carrier.selection') - super(Carrier, cls).delete(*args, **kwargs) + super().delete(*args, **kwargs) CarrierSelection._get_carriers_cache.clear() diff --git a/modules/carrier_percentage/carrier.py b/modules/carrier_percentage/carrier.py index 74b9ceac57..103479c54c 100644 --- a/modules/carrier_percentage/carrier.py +++ b/modules/carrier_percentage/carrier.py @@ -19,7 +19,7 @@ class Carrier(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Carrier, cls).__setup__() + super().__setup__() selection = ('percentage', 'Percentage') if selection not in cls.carrier_cost_method.selection: cls.carrier_cost_method.selection.append(selection) @@ -33,7 +33,7 @@ class Carrier(metaclass=PoolMeta): return currency.round(price), currency_id def get_sale_price(self): - price, currency_id = super(Carrier, self).get_sale_price() + price, currency_id = super().get_sale_price() if self.carrier_cost_method == 'percentage': amount = Transaction().context.get('amount', Decimal(0)) currency_id = Transaction().context.get('currency', currency_id) @@ -42,7 +42,7 @@ class Carrier(metaclass=PoolMeta): return price, currency_id def get_purchase_price(self): - price, currency_id = super(Carrier, self).get_purchase_price() + price, currency_id = super().get_purchase_price() if self.carrier_cost_method == 'percentage': amount = Transaction().context.get('amount', Decimal(0)) currency_id = Transaction().context.get('currency', currency_id) diff --git a/modules/carrier_percentage/stock.py b/modules/carrier_percentage/stock.py index 8e98c3538f..e594b7fb54 100644 --- a/modules/carrier_percentage/stock.py +++ b/modules/carrier_percentage/stock.py @@ -33,7 +33,7 @@ class ShipmentIn(metaclass=PoolMeta): @fields.depends('carrier', 'incoming_moves', 'company') def _get_carrier_context(self): - context = super(ShipmentIn, self)._get_carrier_context() + context = super()._get_carrier_context() if not self.carrier or not self.company: return context if self.carrier.carrier_cost_method != 'percentage': @@ -49,7 +49,7 @@ class ShipmentOut(metaclass=PoolMeta): @fields.depends('carrier', 'inventory_moves', 'company') def _get_carrier_context(self): - context = super(ShipmentOut, self)._get_carrier_context() + context = super()._get_carrier_context() if not self.carrier or not self.company: return context if self.carrier.carrier_cost_method != 'percentage': diff --git a/modules/carrier_weight/carrier.py b/modules/carrier_weight/carrier.py index 384cd9f1a6..0b7c09d036 100644 --- a/modules/carrier_weight/carrier.py +++ b/modules/carrier_weight/carrier.py @@ -39,7 +39,7 @@ class Carrier(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Carrier, cls).__setup__() + super().__setup__() selection = ('weight', 'Weight') if selection not in cls.carrier_cost_method.selection: cls.carrier_cost_method.selection.append(selection) @@ -64,13 +64,13 @@ class Carrier(metaclass=PoolMeta): return weight_price, self.weight_currency.id def get_sale_price(self): - price, currency_id = super(Carrier, self).get_sale_price() + price, currency_id = super().get_sale_price() if self.carrier_cost_method == 'weight': price, currency_id = self._get_weight_price() return price, currency_id def get_purchase_price(self): - price, currency_id = super(Carrier, self).get_purchase_price() + price, currency_id = super().get_purchase_price() if self.carrier_cost_method == 'weight': price, currency_id = self._get_weight_price() return price, currency_id @@ -102,7 +102,7 @@ class WeightPriceList(ModelSQL, ModelView): @classmethod def __setup__(cls): - super(WeightPriceList, cls).__setup__() + super().__setup__() cls._order.insert(0, ('weight', 'ASC')) @fields.depends('carrier', '_parent_carrier.weight_currency') diff --git a/modules/carrier_weight/sale.py b/modules/carrier_weight/sale.py index 8dfb202cf4..f204a4537d 100644 --- a/modules/carrier_weight/sale.py +++ b/modules/carrier_weight/sale.py @@ -23,7 +23,7 @@ class Sale(metaclass=PoolMeta): return parcel_weight(parcel, self.carrier.weight_uom, 'unit') def _get_carrier_context(self, carrier): - context = super(Sale, self)._get_carrier_context(carrier) + context = super()._get_carrier_context(carrier) if not carrier or carrier.carrier_cost_method != 'weight': return context diff --git a/modules/carrier_weight/stock.py b/modules/carrier_weight/stock.py index 81755bb6d5..51f6a48461 100644 --- a/modules/carrier_weight/stock.py +++ b/modules/carrier_weight/stock.py @@ -27,7 +27,7 @@ class ShipmentIn(metaclass=PoolMeta): @fields.depends('carrier', 'incoming_moves', methods=['_group_parcel_key', '_parcel_weight']) def _get_carrier_context(self): - context = super(ShipmentIn, self)._get_carrier_context() + context = super()._get_carrier_context() if not self.carrier: return context if self.carrier.carrier_cost_method != 'weight': @@ -63,7 +63,7 @@ class ShipmentOut(metaclass=PoolMeta): 'warehouse_storage', 'warehouse_output', methods=['_group_parcel_key', '_parcel_weight']) def _get_carrier_context(self): - context = super(ShipmentOut, self)._get_carrier_context() + context = super()._get_carrier_context() if not self.carrier: return context if self.carrier.carrier_cost_method != 'weight': diff --git a/modules/commission/account.py b/modules/commission/account.py index 9cc01415bd..497693b25b 100644 --- a/modules/commission/account.py +++ b/modules/commission/account.py @@ -8,5 +8,5 @@ class Journal(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Journal, cls).__setup__() + super().__setup__() cls.type.selection.append(('commission', "Commission")) diff --git a/modules/commission/commission.py b/modules/commission/commission.py index b99178e4f5..88aef25e7d 100644 --- a/modules/commission/commission.py +++ b/modules/commission/commission.py @@ -358,7 +358,7 @@ class PlanLines(sequence_ordered(), ModelSQL, ModelView, MatchMixin): if (self.category is not None and self.category.id not in categories): return False - return super(PlanLines, self).match(pattern) + return super().match(pattern) class Commission(ModelSQL, ModelView): @@ -404,7 +404,7 @@ class Commission(ModelSQL, ModelView): @classmethod def __setup__(cls): - super(Commission, cls).__setup__() + super().__setup__() cls.__access__.add('agent') cls._buttons.update({ 'invoice': { @@ -473,7 +473,7 @@ class Commission(ModelSQL, ModelView): else: default = default.copy() default.setdefault('invoice_line', None) - return super(Commission, cls).copy(commissions, default=default) + return super().copy(commissions, default=default) @classmethod @ModelView.button diff --git a/modules/commission/invoice.py b/modules/commission/invoice.py index 78cdeaaacb..79f83a7826 100644 --- a/modules/commission/invoice.py +++ b/modules/commission/invoice.py @@ -202,7 +202,7 @@ class InvoiceLine(metaclass=PoolMeta): @fields.depends('product', 'principal') def on_change_product(self): - super(InvoiceLine, self).on_change_product() + super().on_change_product() if self.product: if self.product.principals: if self.principal not in self.product.principals: @@ -212,7 +212,7 @@ class InvoiceLine(metaclass=PoolMeta): @classmethod def view_attributes(cls): - return super(InvoiceLine, cls).view_attributes() + [ + return super().view_attributes() + [ ('//page[@id="commissions"]', 'states', { 'invisible': Eval('type') != 'line', })] @@ -225,7 +225,7 @@ class InvoiceLine(metaclass=PoolMeta): default = default.copy() default.setdefault('commissions', None) default.setdefault('from_commissions', None) - return super(InvoiceLine, cls).copy(lines, default=default) + return super().copy(lines, default=default) class CreditInvoiceStart(metaclass=PoolMeta): diff --git a/modules/commission_waiting/account.py b/modules/commission_waiting/account.py index ac4f94cf63..50a8ac5cb6 100644 --- a/modules/commission_waiting/account.py +++ b/modules/commission_waiting/account.py @@ -9,4 +9,4 @@ class Move(metaclass=PoolMeta): @classmethod def _get_origin(cls): - return super(Move, cls)._get_origin() + ['commission'] + return super()._get_origin() + ['commission'] diff --git a/modules/commission_waiting/commission.py b/modules/commission_waiting/commission.py index 95641e4989..8c4a870e0d 100644 --- a/modules/commission_waiting/commission.py +++ b/modules/commission_waiting/commission.py @@ -26,7 +26,7 @@ class Commission(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Commission, cls).__setup__() + super().__setup__() cls.amount.states['readonly'] |= Bool(Eval('waiting_move')) @classmethod @@ -36,7 +36,7 @@ class Commission(metaclass=PoolMeta): else: default = default.copy() default.setdefault('waiting_move', None) - return super(Commission, cls).copy(commissions, default=default) + return super().copy(commissions, default=default) @classmethod def create_waiting_move(cls, commissions): diff --git a/modules/commission_waiting/invoice.py b/modules/commission_waiting/invoice.py index 4a87dadc5b..c1a6ae7325 100644 --- a/modules/commission_waiting/invoice.py +++ b/modules/commission_waiting/invoice.py @@ -19,7 +19,7 @@ class Invoice(metaclass=PoolMeta): pool = Pool() Commission = pool.get('commission') - commissions = super(Invoice, cls).create_commissions(invoices) + commissions = super().create_commissions(invoices) Commission.create_waiting_move(commissions) return commissions @@ -47,7 +47,7 @@ class InvoiceLine(metaclass=PoolMeta): pool = Pool() MoveLine = pool.get('account.move.line') - lines = super(InvoiceLine, self).get_move_lines() + lines = super().get_move_lines() if self.from_commissions: amounts = defaultdict(int) for commission in self.from_commissions: diff --git a/modules/company/ir.py b/modules/company/ir.py index dae05d508f..34fea298f6 100644 --- a/modules/company/ir.py +++ b/modules/company/ir.py @@ -17,7 +17,7 @@ class Sequence(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Sequence, cls).__setup__() + super().__setup__() cls._order.insert(0, ('company', 'ASC')) @staticmethod @@ -41,7 +41,7 @@ class Date(metaclass=PoolMeta): company = Company(company_id) if company.timezone: timezone = tz.ZoneInfo(company.timezone) - return super(Date, cls).today(timezone=timezone) + return super().today(timezone=timezone) class Rule(metaclass=PoolMeta): @@ -83,11 +83,11 @@ class Cron(metaclass=PoolMeta): def run_once(cls, crons): for cron in crons: if not cron.companies: - super(Cron, cls).run_once([cron]) + super().run_once([cron]) else: for company in cron.companies: with Transaction().set_context(company=company.id): - super(Cron, cls).run_once([cron]) + super().run_once([cron]) @staticmethod def default_companies(): diff --git a/modules/company/model.py b/modules/company/model.py index bf8d45ea3b..d71ffe0a90 100644 --- a/modules/company/model.py +++ b/modules/company/model.py @@ -16,7 +16,7 @@ class CompanyMultiValueMixin(MultiValueMixin): def multivalue_records(self, field): Value = self.multivalue_model(field) - records = super(CompanyMultiValueMixin, self).multivalue_records(field) + records = super().multivalue_records(field) if issubclass(Value, CompanyValueMixin): # Sort to get record with empty company at the end # and so give priority to record with company filled. @@ -27,14 +27,14 @@ class CompanyMultiValueMixin(MultiValueMixin): Value = self.multivalue_model(name) if issubclass(Value, CompanyValueMixin): pattern.setdefault('company', Transaction().context.get('company')) - return super(CompanyMultiValueMixin, self).get_multivalue( + return super().get_multivalue( name, **pattern) def set_multivalue(self, name, value, save=True, **pattern): Value = self.multivalue_model(name) if issubclass(Value, CompanyValueMixin): pattern.setdefault('company', Transaction().context.get('company')) - return super(CompanyMultiValueMixin, self).set_multivalue( + return super().set_multivalue( name, value, save=save, **pattern) diff --git a/modules/company/party.py b/modules/company/party.py index 3787d72018..0009706216 100644 --- a/modules/company/party.py +++ b/modules/company/party.py @@ -94,4 +94,4 @@ class LetterReport(Report): @classmethod def execute(cls, ids, data): with Transaction().set_context(address_with_party=True): - return super(LetterReport, cls).execute(ids, data) + return super().execute(ids, data) diff --git a/modules/company/res.py b/modules/company/res.py index c489162fbb..b1c164f688 100644 --- a/modules/company/res.py +++ b/modules/company/res.py @@ -114,7 +114,7 @@ class User(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(User, cls).__setup__() + super().__setup__() cls._context_fields.insert(0, 'company') cls._context_fields.insert(0, 'employee') cls._context_fields.insert(0, 'company_filter') @@ -168,7 +168,7 @@ class User(metaclass=PoolMeta): def get_status_bar(self, name): def same_company(record): return record.company == self.company - status = super(User, self).get_status_bar(name) + status = super().get_status_bar(name) if (self.employee and len(list(filter(same_company, self.employees))) > 1): status += ' - %s' % self.employee.rec_name @@ -209,7 +209,7 @@ class User(metaclass=PoolMeta): @classmethod def _get_preferences(cls, user, context_only=False): - res = super(User, cls)._get_preferences(user, + res = super()._get_preferences(user, context_only=context_only) if not context_only: res['companies'] = [c.id for c in user.companies] @@ -263,7 +263,7 @@ class User(metaclass=PoolMeta): user_id = Transaction().user if user_id == 0 and 'user' in Transaction().context: user_id = Transaction().context['user'] - result = super(User, cls).read(ids, fields_names) + result = super().read(ids, fields_names) if (fields_names and (( 'company' in fields_names diff --git a/modules/company_work_time/res.py b/modules/company_work_time/res.py index 4b7a2c56a2..7355587231 100644 --- a/modules/company_work_time/res.py +++ b/modules/company_work_time/res.py @@ -8,7 +8,7 @@ class User(metaclass=PoolMeta): @classmethod def _get_preferences(cls, user, context_only=False): - res = super(User, cls)._get_preferences(user, + res = super()._get_preferences(user, context_only=context_only) if user.company: time = { diff --git a/modules/country/country.py b/modules/country/country.py index 7ae0730b11..194640b9e9 100644 --- a/modules/country/country.py +++ b/modules/country/country.py @@ -169,7 +169,7 @@ class Country(DeactivableMixin, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(Country, cls).__setup__() + super().__setup__() cls._order.insert(0, ('name', 'ASC')) @classmethod @@ -179,7 +179,7 @@ class Country(DeactivableMixin, ModelSQL, ModelView): data = Data.__table__() cursor = Transaction().connection.cursor() - super(Country, cls).__register__(module_name) + super().__register__(module_name) # Migration from 5.2: remove country data cursor.execute(*data.delete(where=(data.module == 'country') @@ -235,7 +235,7 @@ class Country(DeactivableMixin, ModelSQL, ModelView): for code in {'code', 'code3', 'code_numeric'}: if code in vals and vals[code]: vals[code] = vals[code].upper() - return super(Country, cls).create(vlist) + return super().create(vlist) @classmethod def write(cls, *args): @@ -247,7 +247,7 @@ class Country(DeactivableMixin, ModelSQL, ModelView): values = values.copy() values[code] = values[code].upper() args.extend((countries, values)) - super(Country, cls).write(*args) + super().write(*args) class Subdivision(DeactivableMixin, ModelSQL, ModelView): @@ -421,7 +421,7 @@ class Subdivision(DeactivableMixin, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(Subdivision, cls).__setup__() + super().__setup__() cls._order.insert(0, ('code', 'ASC')) @classmethod @@ -493,7 +493,7 @@ class Subdivision(DeactivableMixin, ModelSQL, ModelView): for vals in vlist: if 'code' in vals and vals['code']: vals['code'] = vals['code'].upper() - return super(Subdivision, cls).create(vlist) + return super().create(vlist) @classmethod def write(cls, *args): @@ -504,7 +504,7 @@ class Subdivision(DeactivableMixin, ModelSQL, ModelView): values = values.copy() values['code'] = values['code'].upper() args.extend((subdivisions, values)) - super(Subdivision, cls).write(*args) + super().write(*args) class PostalCode(ModelSQL, ModelView): diff --git a/modules/currency/currency.py b/modules/currency/currency.py index abc83e5ffd..f584dce5c1 100644 --- a/modules/currency/currency.py +++ b/modules/currency/currency.py @@ -67,7 +67,7 @@ class Currency( @classmethod def __setup__(cls): - super(Currency, cls).__setup__() + super().__setup__() cls._order.insert(0, ('code', 'ASC')) cls.__rpc__.update({ 'compute': RPC(instantiate=slice(0, 3, 2)), @@ -80,7 +80,7 @@ class Currency( data = Data.__table__() cursor = Transaction().connection.cursor() - super(Currency, cls).__register__(module_name) + super().__register__(module_name) table_h = cls.__table_handler__(module_name) @@ -101,7 +101,7 @@ class Currency( @classmethod def search_global(cls, text): - for record, rec_name, icon in super(Currency, cls).search_global(text): + for record, rec_name, icon in super().search_global(text): icon = icon or 'tryton-currency' yield record, rec_name, icon diff --git a/modules/customs/customs.py b/modules/customs/customs.py index 3276bceedd..afe1dfb409 100644 --- a/modules/customs/customs.py +++ b/modules/customs/customs.py @@ -75,7 +75,7 @@ class TariffCode(DeactivableMixin, CountryMatchMixin, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(TariffCode, cls).__setup__() + super().__setup__() cls._order.insert(0, ('code', 'ASC')) @classmethod @@ -185,7 +185,7 @@ class DutyRate(CountryMatchMixin, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(DutyRate, cls).__setup__() + super().__setup__() cls._order.insert(0, ('start_date', 'ASC')) cls._order.insert(0, ('end_date', 'ASC')) @@ -210,7 +210,7 @@ class DutyRate(CountryMatchMixin, ModelSQL, ModelView): end = self.end_date or datetime.date.max if not (start <= pattern.pop('date') <= end): return False - return super(DutyRate, self).match(pattern) + return super().match(pattern) def compute(self, currency, quantity, uom, **kwargs): return getattr(self, 'compute_%s' % self.computation_type)( diff --git a/modules/customs/product.py b/modules/customs/product.py index 9ca2213a67..3362decb94 100644 --- a/modules/customs/product.py +++ b/modules/customs/product.py @@ -31,7 +31,7 @@ class Category(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Category, cls).__setup__() + super().__setup__() cls.parent.domain = [ ('customs', '=', Eval('customs', False)), cls.parent.domain or []] @@ -69,7 +69,7 @@ class Category(metaclass=PoolMeta): @classmethod def view_attributes(cls): - return super(Category, cls).view_attributes() + [ + return super().view_attributes() + [ ('/form/notebook/page[@id="customs"]', 'states', { 'invisible': ~Eval('customs', False), }), @@ -81,7 +81,7 @@ class Category(metaclass=PoolMeta): Product_TariffCode = pool.get('product-customs.tariff.code') products = [str(t) for t in categories] - super(Category, cls).delete(categories) + super().delete(categories) for products in grouped_slice(products): product_tariffcodes = Product_TariffCode.search([ @@ -138,7 +138,7 @@ class Template(metaclass=PoolMeta): @classmethod def view_attributes(cls): - return super(Template, cls).view_attributes() + [ + return super().view_attributes() + [ ('//page[@id="customs"]', 'states', { 'invisible': Eval('type') == 'service', }), @@ -150,7 +150,7 @@ class Template(metaclass=PoolMeta): Product_TariffCode = pool.get('product-customs.tariff.code') products = [str(t) for t in templates] - super(Template, cls).delete(templates) + super().delete(templates) for products in grouped_slice(products): product_tariffcodes = Product_TariffCode.search([ diff --git a/modules/dashboard/ir.py b/modules/dashboard/ir.py index 08aba0117a..f8b988cd95 100644 --- a/modules/dashboard/ir.py +++ b/modules/dashboard/ir.py @@ -115,7 +115,7 @@ class View(metaclass=PoolMeta): @classmethod def read(cls, ids, fields_names): - res = super(View, cls).read(ids, fields_names) + res = super().read(ids, fields_names) if Transaction().user == 0: return res dashboard_id = cls.dashboard_id() diff --git a/modules/dashboard/res.py b/modules/dashboard/res.py index f24ef2be71..b2187bfa86 100644 --- a/modules/dashboard/res.py +++ b/modules/dashboard/res.py @@ -18,7 +18,7 @@ class User(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(User, cls).__setup__() + super().__setup__() cls._preferences_fields += [ 'dashboard_layout', 'dashboard_actions', diff --git a/modules/document_incoming/res.py b/modules/document_incoming/res.py index 5d0ec5db05..e2102ed99c 100644 --- a/modules/document_incoming/res.py +++ b/modules/document_incoming/res.py @@ -8,6 +8,6 @@ class UserApplication(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(UserApplication, cls).__setup__() + super().__setup__() cls.application.selection.append( ('document_incoming', "Incoming Document")) diff --git a/modules/edocument_uncefact/edocument.py b/modules/edocument_uncefact/edocument.py index 4c125ce1f4..9545e8a416 100644 --- a/modules/edocument_uncefact/edocument.py +++ b/modules/edocument_uncefact/edocument.py @@ -56,7 +56,7 @@ class Invoice(Model): @classmethod def __setup__(cls): - super(Invoice, cls).__setup__() + super().__setup__() cls.__rpc__.update({ 'render': RPC(instantiate=0), }) diff --git a/modules/edocument_uncefact/tests/test_module.py b/modules/edocument_uncefact/tests/test_module.py index d116d04d27..abeef73fce 100644 --- a/modules/edocument_uncefact/tests/test_module.py +++ b/modules/edocument_uncefact/tests/test_module.py @@ -114,7 +114,7 @@ class EDocumentUNCEFACTTestCase(ModuleTestCase): @classmethod def setUpClass(cls): - super(EDocumentUNCEFACTTestCase, cls).setUpClass() + super().setUpClass() activate_module('account_invoice') @with_transaction() diff --git a/modules/edocument_unece/account.py b/modules/edocument_unece/account.py index d2b5fe6670..073be9bc27 100644 --- a/modules/edocument_unece/account.py +++ b/modules/edocument_unece/account.py @@ -127,7 +127,7 @@ class TaxTemplate(metaclass=PoolMeta): ['unece_category_code'])['unece_category_code']['selection'] def _get_tax_value(self, tax=None): - value = super(TaxTemplate, self)._get_tax_value(tax=tax) + value = super()._get_tax_value(tax=tax) for field in ['unece_code', 'unece_category_code']: if not tax or getattr(tax, field) != getattr(self, field): value[field] = getattr(self, field) diff --git a/modules/ldap_authentication/res.py b/modules/ldap_authentication/res.py index d9f4bdcd5e..fbe35dc1fd 100644 --- a/modules/ldap_authentication/res.py +++ b/modules/ldap_authentication/res.py @@ -126,7 +126,7 @@ class User(metaclass=PoolMeta): tocheck.append(values['login']) if tocheck: cls._check_passwd_ldap_user(tocheck) - return super(User, cls).create(vlist) + return super().create(vlist) @classmethod def write(cls, *args): @@ -135,7 +135,7 @@ class User(metaclass=PoolMeta): if values.get('password'): logins = [x.login for x in users] cls._check_passwd_ldap_user(logins) - super(User, cls).write(*args) + super().write(*args) @classmethod def _login_ldap(cls, login, parameters): diff --git a/modules/ldap_authentication/tests/test_module.py b/modules/ldap_authentication/tests/test_module.py index 0d7310d9a0..3e6e0357ca 100644 --- a/modules/ldap_authentication/tests/test_module.py +++ b/modules/ldap_authentication/tests/test_module.py @@ -20,7 +20,7 @@ class LDAPAuthenticationTestCase(ModuleTestCase): module = 'ldap_authentication' def setUp(self): - super(LDAPAuthenticationTestCase, self).setUp() + super().setUp() methods = config.get('session', 'authentications', default='') config.set('session', 'authentications', 'ldap') self.addCleanup(config.set, 'session', 'authentications', methods) diff --git a/modules/notification_email/tests/test_module.py b/modules/notification_email/tests/test_module.py index 78d9af0538..a59e4b7d2c 100644 --- a/modules/notification_email/tests/test_module.py +++ b/modules/notification_email/tests/test_module.py @@ -27,7 +27,7 @@ class NotificationEmailTestCase(CompanyTestMixin, ModuleTestCase): extras = ['company', 'commission', 'party', 'web_user'] def setUp(self): - super(NotificationEmailTestCase, self).setUp() + super().setUp() reset_from = config.get('email', 'from', default='') config.set('email', 'from', FROM) self.addCleanup(lambda: config.set('email', 'from', reset_from)) diff --git a/modules/party/address.py b/modules/party/address.py index 54a71b1c7b..d6618bbfd2 100644 --- a/modules/party/address.py +++ b/modules/party/address.py @@ -72,7 +72,7 @@ class Address( @classmethod def __setup__(cls): - super(Address, cls).__setup__() + super().__setup__() cls.__access__.add('party') cls._order.insert(0, ('party', 'ASC')) cls.__rpc__.update( @@ -87,7 +87,7 @@ class Address( # Migration from 5.8: rename zip to postal code table.column_rename('zip', 'postal_code') - super(Address, cls).__register__(module_name) + super().__register__(module_name) @fields.depends('street') def on_change_with_street_single_line(self, name=None): @@ -244,7 +244,7 @@ class Address( raise AccessError( gettext('party.msg_address_change_party', address=address.rec_name)) - super(Address, cls).write(*args) + super().write(*args) @fields.depends('subdivision', 'country') def on_change_country(self): @@ -294,7 +294,7 @@ class AddressFormat(DeactivableMixin, MatchMixin, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(AddressFormat, cls).__setup__() + super().__setup__() cls._order.insert(0, ('country_code', 'ASC NULLS LAST')) cls._order.insert(1, ('language_code', 'ASC NULLS LAST')) @@ -344,18 +344,18 @@ ${COUNTRY}""" @classmethod def create(cls, *args, **kwargs): - records = super(AddressFormat, cls).create(*args, **kwargs) + records = super().create(*args, **kwargs) cls._get_format_cache.clear() return records @classmethod def write(cls, *args, **kwargs): - super(AddressFormat, cls).write(*args, **kwargs) + super().write(*args, **kwargs) cls._get_format_cache.clear() @classmethod def delete(cls, *args, **kwargs): - super(AddressFormat, cls).delete(*args, **kwargs) + super().delete(*args, **kwargs) cls._get_format_cache.clear() @classmethod diff --git a/modules/party/category.py b/modules/party/category.py index e3295b6076..d2d3828b82 100644 --- a/modules/party/category.py +++ b/modules/party/category.py @@ -21,7 +21,7 @@ class Category(DeactivableMixin, tree(separator=' / '), ModelSQL, ModelView): @classmethod def __setup__(cls): - super(Category, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_constraints = [ ('name_parent_exclude', diff --git a/modules/party/contact_mechanism.py b/modules/party/contact_mechanism.py index 3d038ff4e3..e236b6d51a 100644 --- a/modules/party/contact_mechanism.py +++ b/modules/party/contact_mechanism.py @@ -130,7 +130,7 @@ class ContactMechanism( def __setup__(cls): cls.value.search_unaccented = False cls.value_compact.search_unaccented = False - super(ContactMechanism, cls).__setup__() + super().__setup__() cls.__access__.add('party') t = cls.__table__() cls._sql_indexes.add( @@ -286,7 +286,7 @@ class ContactMechanism( @classmethod def create(cls, vlist): - mechanisms = super(ContactMechanism, cls).create(vlist) + mechanisms = super().create(vlist) cls._format_values(mechanisms) return mechanisms @@ -304,7 +304,7 @@ class ContactMechanism( '.msg_contact_mechanism_change_party') % { 'contact': mechanism.rec_name, }) - super(ContactMechanism, cls).write(*args) + super().write(*args) cls._format_values(all_mechanisms) @classmethod diff --git a/modules/party/party.py b/modules/party/party.py index 7d1ca47b70..006f1a8b69 100644 --- a/modules/party/party.py +++ b/modules/party/party.py @@ -95,7 +95,7 @@ class Party( @classmethod def __setup__(cls): cls.code.search_unaccented = False - super(Party, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_constraints = [ ('code_uniq', Unique(t, t.code), 'party.msg_party_code_unique') @@ -298,7 +298,7 @@ class Party( for values, code in zip( missing_code, sequence.get_many(len(missing_code))): values['code'] = code - return super(Party, cls).create(vlist) + return super().create(vlist) @classmethod def copy(cls, parties, default=None): @@ -307,11 +307,11 @@ class Party( else: default = default.copy() default.setdefault('code', None) - return super(Party, cls).copy(parties, default=default) + return super().copy(parties, default=default) @classmethod def search_global(cls, text): - for record, rec_name, icon in super(Party, cls).search_global(text): + for record, rec_name, icon in super().search_global(text): icon = icon or 'tryton-party' yield record, rec_name, icon diff --git a/modules/product/category.py b/modules/product/category.py index 05f6e45628..b70d938956 100644 --- a/modules/product/category.py +++ b/modules/product/category.py @@ -34,7 +34,7 @@ class Category(tree(separator=' / '), ModelSQL, ModelView): @classmethod def __setup__(cls): cls.code.search_unaccented = False - super(Category, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_constraints += [ ('code_unique', Exclude(t, (NullIf(t.code, ''), Equal)), diff --git a/modules/product/product.py b/modules/product/product.py index 24b9bc283b..feab706f60 100644 --- a/modules/product/product.py +++ b/modules/product/product.py @@ -142,7 +142,7 @@ class Template( return pool.get('product.list_price') elif field == 'cost_price_method': return pool.get('product.cost_price_method') - return super(Template, cls).multivalue_model(field) + return super().multivalue_model(field) @classmethod def order_code(cls, tables): @@ -253,7 +253,7 @@ class Template( for values, code in zip( missing_code, sequence.get_many(len(missing_code))): values['code'] = code - templates = super(Template, cls).create(vlist) + templates = super().create(vlist) products = sum((t.products for t in templates), ()) Product.sync_code(products) return templates @@ -278,7 +278,7 @@ class Template( @classmethod def search_global(cls, text): - for record, rec_name, icon in super(Template, cls).search_global(text): + for record, rec_name, icon in super().search_global(text): icon = icon or 'tryton-product' yield record, rec_name, icon @@ -286,7 +286,7 @@ class Template( class TemplateFunction(fields.Function): def __init__(self, field): - super(TemplateFunction, self).__init__( + super().__init__( field, 'get_template', searcher='search_template') # Disable on_change as it is managed by on_change_template self.on_change = set() @@ -459,7 +459,7 @@ class Product( continue product_fields[attr] = field - super(Product, cls).__setup__() + super().__setup__() cls.__access__.add('template') cls._order.insert(0, ('rec_name', 'ASC')) @@ -576,7 +576,7 @@ class Product( pool = Pool() if field == 'cost_price': return pool.get('product.cost_price') - return super(Product, cls).multivalue_model(field) + return super().multivalue_model(field) def set_multivalue(self, name, value, save=True, **pattern): context = Transaction().context @@ -659,7 +659,7 @@ class Product( @classmethod def search_global(cls, text): - for id_, rec_name, icon in super(Product, cls).search_global(text): + for id_, rec_name, icon in super().search_global(text): icon = icon or 'tryton-product' yield id_, rec_name, icon diff --git a/modules/product/uom.py b/modules/product/uom.py index c80196bbc3..ecb597ef68 100644 --- a/modules/product/uom.py +++ b/modules/product/uom.py @@ -27,7 +27,7 @@ class UomCategory(ModelSQL, ModelView): @classmethod def __setup__(cls): - super(UomCategory, cls).__setup__() + super().__setup__() cls._order.insert(0, ('name', 'ASC')) @@ -69,7 +69,7 @@ class Uom(SymbolMixin, DigitsMixin, DeactivableMixin, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(Uom, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_constraints += [ ('non_zero_rate_factor', Check(t, (t.rate != 0) | (t.factor != 0)), @@ -152,7 +152,7 @@ class Uom(SymbolMixin, DigitsMixin, DeactivableMixin, ModelSQL, ModelView): @classmethod def write(cls, *args): if Transaction().user == 0: - super(Uom, cls).write(*args) + super().write(*args) return all_uoms = sum(args[0:None:2], []) @@ -160,7 +160,7 @@ class Uom(SymbolMixin, DigitsMixin, DeactivableMixin, ModelSQL, ModelView): uom.id: (uom.factor, uom.rate, uom.category) for uom in all_uoms} old_digits = {uom.id: uom.digits for uom in all_uoms} - super(Uom, cls).write(*args) + super().write(*args) for uom in all_uoms: for i, field in enumerate(['factor', 'rate', 'category']): diff --git a/modules/product_classification_taxonomic/product.py b/modules/product_classification_taxonomic/product.py index cc868d45e6..13f205d20c 100644 --- a/modules/product_classification_taxonomic/product.py +++ b/modules/product_classification_taxonomic/product.py @@ -11,7 +11,7 @@ class Template(metaclass=PoolMeta): @classmethod def _get_classification(cls): - return super(Template, cls)._get_classification() + [ + return super()._get_classification() + [ 'product.taxon', 'product.cultivar'] diff --git a/modules/product_cost_fifo/move.py b/modules/product_cost_fifo/move.py index 581d68016e..b8c3d0888b 100644 --- a/modules/product_cost_fifo/move.py +++ b/modules/product_cost_fifo/move.py @@ -28,7 +28,7 @@ class Move(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Move, cls).__setup__() + super().__setup__() cls._allow_modify_closed_period.add('fifo_quantity') t = cls.__table__() @@ -119,7 +119,7 @@ class Move(metaclass=PoolMeta): return cost_price, average_cost_price, to_save def _do(self): - cost_price, to_save = super(Move, self)._do() + cost_price, to_save = super()._do() cost_price_method = self.product.get_multivalue( 'cost_price_method', **self._cost_price_pattern) if (self.from_location.type != 'storage' diff --git a/modules/product_cost_fifo/product.py b/modules/product_cost_fifo/product.py index 2f0ea5fef3..612d469dd4 100644 --- a/modules/product_cost_fifo/product.py +++ b/modules/product_cost_fifo/product.py @@ -13,7 +13,7 @@ class Template(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Template, cls).__setup__() + super().__setup__() new_sel = ('fifo', 'FIFO') if new_sel not in cls.cost_price_method.selection: cls.cost_price_method._field.selection.append(new_sel) diff --git a/modules/product_cost_history/product.py b/modules/product_cost_history/product.py index d096be726e..f06c73982b 100644 --- a/modules/product_cost_history/product.py +++ b/modules/product_cost_history/product.py @@ -68,7 +68,7 @@ class ProductCostHistory(ModelSQL, ModelView): @classmethod def __setup__(cls): - super(ProductCostHistory, cls).__setup__() + super().__setup__() cls._order.insert(0, ('date', 'DESC')) @classmethod diff --git a/modules/product_cost_warehouse/ir.py b/modules/product_cost_warehouse/ir.py index 04ad64679f..224ca12b91 100644 --- a/modules/product_cost_warehouse/ir.py +++ b/modules/product_cost_warehouse/ir.py @@ -24,7 +24,7 @@ class Cron(metaclass=PoolMeta): else: for warehouse in cron.warehouses: with Transaction().set_context(warehouse=warehouse.id): - super(Cron, cls).run_once([cron]) + super().run_once([cron]) class CronWarehouse(ModelSQL): diff --git a/modules/product_measurements/product.py b/modules/product_measurements/product.py index 111e966682..656985b3e6 100644 --- a/modules/product_measurements/product.py +++ b/modules/product_measurements/product.py @@ -112,7 +112,7 @@ class Template(metaclass=PoolMeta): @classmethod def view_attributes(cls): - return super(Template, cls).view_attributes() + [ + return super().view_attributes() + [ ('//page[@id="measurements"]', 'states', { 'invisible': Eval('type').in_(NON_MEASURABLE), })] diff --git a/modules/product_price_list/price_list.py b/modules/product_price_list/price_list.py index e1b3563c04..f0469178dc 100644 --- a/modules/product_price_list/price_list.py +++ b/modules/product_price_list/price_list.py @@ -201,7 +201,7 @@ class PriceListLine(sequence_ordered(), ModelSQL, ModelView, MatchMixin): if (self.category is not None and self.category.id not in categories): return False - return super(PriceListLine, self).match(pattern) + return super().match(pattern) def get_unit_price(self, **context): 'Return unit price (as Decimal)' diff --git a/modules/product_price_list_dates/product.py b/modules/product_price_list_dates/product.py index 0318457573..8d167e92df 100644 --- a/modules/product_price_list_dates/product.py +++ b/modules/product_price_list_dates/product.py @@ -106,7 +106,7 @@ class PriceListLine(metaclass=PoolMeta): return False if self.end_date and self.end_date < date: return False - return super(PriceListLine, self).match(pattern) + return super().match(pattern) class PriceListLineContext(metaclass=PoolMeta): diff --git a/modules/product_price_list_dates/sale.py b/modules/product_price_list_dates/sale.py index df9b460413..972e8b2df8 100644 --- a/modules/product_price_list_dates/sale.py +++ b/modules/product_price_list_dates/sale.py @@ -10,13 +10,13 @@ class Line(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Line, cls).__setup__() + super().__setup__() cls.product.search_context['date'] = Eval( '_parent_sale', {}).get('sale_date') @fields.depends('sale', '_parent_sale.sale_date') def _get_context_sale_price(self): - context = super(Line, self)._get_context_sale_price() + context = super()._get_context_sale_price() if self.sale: context.setdefault('date', self.sale.sale_date) return context diff --git a/modules/production/bom.py b/modules/production/bom.py index 0474a18c4e..918c65fa76 100644 --- a/modules/production/bom.py +++ b/modules/production/bom.py @@ -112,7 +112,7 @@ class BOM(DeactivableMixin, ModelSQL, ModelView): default = default.copy() default.setdefault('code', None) default.setdefault('output_products', None) - return super(BOM, cls).copy(records, default=default) + return super().copy(records, default=default) class BOMInput(ModelSQL, ModelView): @@ -137,7 +137,7 @@ class BOMInput(ModelSQL, ModelView): @classmethod def __setup__(cls): - super(BOMInput, cls).__setup__() + super().__setup__() cls.product.domain = [('type', 'in', cls.get_product_types())] cls.__access__.add('bom') @@ -182,7 +182,7 @@ class BOMInput(ModelSQL, ModelView): @classmethod def validate(cls, boms): - super(BOMInput, cls).validate(boms) + super().validate(boms) for bom in boms: bom.check_bom_recursion() @@ -209,7 +209,7 @@ class BOMOutput(BOMInput): pool = Pool() ProductBOM = pool.get('product.product-production.bom') bom_products = [b for o in outputs for b in o.product.boms] - super(BOMOutput, cls).delete(outputs) + super().delete(outputs) # Validate that output_products domain on bom is still valid ProductBOM._validate(bom_products, ['bom']) diff --git a/modules/production/product.py b/modules/production/product.py index 232ad62753..0347102057 100644 --- a/modules/production/product.py +++ b/modules/production/product.py @@ -47,7 +47,7 @@ class Product(metaclass=PoolMeta): @classmethod def validate(cls, products): - super(Product, cls).validate(products) + super().validate(products) for product in products: product.check_bom_recursion() @@ -74,7 +74,7 @@ class Product(metaclass=PoolMeta): default = default.copy() default.setdefault('boms', None) default.setdefault('production_lead_times', None) - return super(Product, cls).copy(products, default=default) + return super().copy(products, default=default) def get_bom(self, pattern=None): if pattern is None: @@ -131,5 +131,5 @@ class ProductionLeadTime(sequence_ordered(), ModelSQL, ModelView, MatchMixin): @classmethod def __setup__(cls): - super(ProductionLeadTime, cls).__setup__() + super().__setup__() cls._order.insert(0, ('product', 'ASC')) diff --git a/modules/production/production.py b/modules/production/production.py index b980e5327b..5b66aa9a6b 100644 --- a/modules/production/production.py +++ b/modules/production/production.py @@ -163,7 +163,7 @@ class Production(ShipmentAssignMixin, Workflow, ModelSQL, ModelView): def __setup__(cls): cls.number.search_unaccented = False cls.reference.search_unaccented = False - super(Production, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_indexes.update({ Index(t, (t.reference, Index.Similarity())), @@ -272,7 +272,7 @@ class Production(ShipmentAssignMixin, Workflow, ModelSQL, ModelView): and not table_h.column_exist('unit')): table_h.column_rename('uom', 'unit') - super(Production, cls).__register__(module_name) + super().__register__(module_name) table = cls.__table__() cursor = Transaction().connection.cursor() @@ -659,13 +659,13 @@ class Production(ShipmentAssignMixin, Workflow, ModelSQL, ModelView): @classmethod def create(cls, vlist): - productions = super(Production, cls).create(vlist) + productions = super().create(vlist) cls._set_move_planned_date(productions) return productions @classmethod def write(cls, *args): - super(Production, cls).write(*args) + super().write(*args) cls._set_move_planned_date(sum(args[::2], [])) @classmethod @@ -680,7 +680,7 @@ class Production(ShipmentAssignMixin, Workflow, ModelSQL, ModelView): default.setdefault('done_by') default.setdefault('inputs.origin', None) default.setdefault('outputs.origin', None) - return super(Production, cls).copy(productions, default=default) + return super().copy(productions, default=default) def _get_move_planned_date(self): "Return the planned dates for input and output moves" diff --git a/modules/production/stock.py b/modules/production/stock.py index 38e316ec8a..926420c463 100644 --- a/modules/production/stock.py +++ b/modules/production/stock.py @@ -122,7 +122,7 @@ class Move(metaclass=PoolMeta): self.effective_date = self.production_input.effective_start_date if not self.effective_date and self.production_output: self.effective_date = self.production_output.effective_date - super(Move, self).set_effective_date() + super().set_effective_date() @classmethod def write(cls, *args): diff --git a/modules/production_outsourcing/production.py b/modules/production_outsourcing/production.py index 78b785b239..5f5987f813 100644 --- a/modules/production_outsourcing/production.py +++ b/modules/production_outsourcing/production.py @@ -97,7 +97,7 @@ class Routing(metaclass=PoolMeta): @classmethod def view_attributes(cls): - return super(Routing, cls).view_attributes() + [ + return super().view_attributes() + [ ('//page[@id="supplier"]', 'states', { 'invisible': ~Eval('supplier'), }), @@ -117,7 +117,7 @@ class Production(metaclass=PoolMeta): def get_cost(self, name): pool = Pool() Currency = pool.get('currency.currency') - cost = super(Production, self).get_cost(name) + cost = super().get_cost(name) for line in self.purchase_lines: if line.purchase.state != 'cancelled' and line.amount: cost += Currency.compute( @@ -131,7 +131,7 @@ class Production(metaclass=PoolMeta): def draft(cls, productions): pool = Pool() PurchaseLine = pool.get('purchase.line') - super(Production, cls).draft(productions) + super().draft(productions) PurchaseLine.delete([l for p in productions for l in p.purchase_lines if l.purchase_state in {'draft', 'cancelled'}]) @@ -141,7 +141,7 @@ class Production(metaclass=PoolMeta): def cancel(cls, productions): pool = Pool() PurchaseLine = pool.get('purchase.line') - super(Production, cls).cancel(productions) + super().cancel(productions) PurchaseLine.delete([l for p in productions for l in p.purchase_lines if l.purchase_state in {'draft', 'cancelled'}]) @@ -156,7 +156,7 @@ class Production(metaclass=PoolMeta): draft_productions = [p for p in productions if p.state == 'draft'] - super(Production, cls).wait(productions) + super().wait(productions) purchases = [] lines = [] diff --git a/modules/production_routing/production.py b/modules/production_routing/production.py index 10524e8592..15dde6bf42 100644 --- a/modules/production_routing/production.py +++ b/modules/production_routing/production.py @@ -20,7 +20,7 @@ class Production(metaclass=PoolMeta): @fields.depends('bom', 'routing') def on_change_bom(self): - super(Production, self).on_change_bom() + super().on_change_bom() if self.bom: if self.routing: if self.bom not in self.routing.boms: @@ -39,7 +39,7 @@ class Production(metaclass=PoolMeta): def compute_request( cls, product, warehouse, quantity, date, company, order_point=None, bom_pattern=None): - production = super(Production, cls).compute_request( + production = super().compute_request( product, warehouse, quantity, date, company, order_point=order_point, bom_pattern=bom_pattern) if bom := product.get_bom(bom_pattern): diff --git a/modules/production_split/production.py b/modules/production_split/production.py index 9a31828729..7dc54ecd4f 100644 --- a/modules/production_split/production.py +++ b/modules/production_split/production.py @@ -11,7 +11,7 @@ class Production(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Production, cls).__setup__() + super().__setup__() cls._buttons.update({ 'split_wizard': { 'invisible': (~Eval('state').in_(['request', 'draft']) diff --git a/modules/production_work/production.py b/modules/production_work/production.py index 0b65081c41..0efe8293f2 100644 --- a/modules/production_work/production.py +++ b/modules/production_work/production.py @@ -41,7 +41,7 @@ class Production(metaclass=PoolMeta): def draft(cls, productions): pool = Pool() Work = pool.get('production.work') - super(Production, cls).draft(productions) + super().draft(productions) Work.delete([w for p in productions for w in p.works if w.state in ['request', 'draft']]) @@ -51,7 +51,7 @@ class Production(metaclass=PoolMeta): def cancel(cls, productions): pool = Pool() Work = pool.get('production.work') - super(Production, cls).cancel(productions) + super().cancel(productions) Work.delete([w for p in productions for w in p.works if w.state in ['request', 'draft']]) @@ -65,7 +65,7 @@ class Production(metaclass=PoolMeta): draft_productions = [p for p in productions if p.state == 'draft'] - super(Production, cls).wait(productions) + super().wait(productions) work_center_picker = WorkCenter.get_picker() works = [] @@ -87,7 +87,7 @@ class Production(metaclass=PoolMeta): pool = Pool() Work = pool.get('production.work') - super(Production, cls).run(productions) + super().run(productions) Work.set_state([w for p in productions for w in p.works]) diff --git a/modules/production_work/work.py b/modules/production_work/work.py index b334acb1d7..82a4d52b33 100644 --- a/modules/production_work/work.py +++ b/modules/production_work/work.py @@ -64,7 +64,7 @@ class WorkCenter(DeactivableMixin, tree(separator=' / '), ModelSQL, ModelView): @classmethod def __setup__(cls): - super(WorkCenter, cls).__setup__() + super().__setup__() cls._order.insert(0, ('name', 'ASC')) @classmethod @@ -274,7 +274,7 @@ class Work(sequence_ordered(), ModelSQL, ModelView): @classmethod def create(cls, values): - works = super(Work, cls).create(values) + works = super().create(values) cls.set_state(works) return works @@ -291,7 +291,7 @@ class Work(sequence_ordered(), ModelSQL, ModelView): raise AccessError( gettext('production_work.msg_delete_request', work=work.rec_name)) - super(Work, cls).delete(works) + super().delete(works) def set_work_state(func): @@ -340,7 +340,7 @@ class WorkCycle(Workflow, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(WorkCycle, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_indexes.add( Index( diff --git a/modules/production_work_timesheet/work.py b/modules/production_work_timesheet/work.py index d74fa3df0f..ec06cbb4da 100644 --- a/modules/production_work_timesheet/work.py +++ b/modules/production_work_timesheet/work.py @@ -59,13 +59,13 @@ class Work(metaclass=PoolMeta): @classmethod def create(cls, vlist): - works = super(Work, cls).create(vlist) + works = super().create(vlist) cls._set_timesheet_work(works) return works @classmethod def write(cls, *args): - super(Work, cls).write(*args) + super().write(*args) works = sum(args[0:None:2], []) cls._set_timesheet_work(works) @@ -76,7 +76,7 @@ class Work(metaclass=PoolMeta): timesheet_works = [w for pw in works for w in pw.timesheet_works] - super(Work, cls).delete(works) + super().delete(works) if timesheet_works: TimesheetWork.delete(timesheet_works) diff --git a/modules/project/work.py b/modules/project/work.py index 19b007043a..e6152979b1 100644 --- a/modules/project/work.py +++ b/modules/project/work.py @@ -228,7 +228,7 @@ class Work(sequence_ordered(), tree(separator='\\'), ModelSQL, ModelView): def __register__(cls, module_name): table_project_work = cls.__table_handler__(module_name) - super(Work, cls).__register__(module_name) + super().__register__(module_name) # Migration from 5.4: replace state by status table_project_work.not_null_action('state', action='remove') @@ -255,14 +255,14 @@ class Work(sequence_ordered(), tree(separator='\\'), ModelSQL, ModelView): @classmethod def index_set_field(cls, name): - index = super(Work, cls).index_set_field(name) + index = super().index_set_field(name) if name in {'timesheet_start_date', 'timesheet_end_date'}: index = cls.index_set_field('timesheet_available') + 1 return index @classmethod def validate(cls, works): - super(Work, cls).validate(works) + super().validate(works) for work in works: work.check_work_progress() @@ -438,7 +438,7 @@ class Work(sequence_ordered(), tree(separator='\\'), ModelSQL, ModelView): timesheet_works = [ w for pw in project_works for w in pw.timesheet_works] - super(Work, cls).delete(project_works) + super().delete(project_works) if timesheet_works: with without_check_access(): @@ -446,6 +446,6 @@ class Work(sequence_ordered(), tree(separator='\\'), ModelSQL, ModelView): @classmethod def search_global(cls, text): - for record, rec_name, icon in super(Work, cls).search_global(text): + for record, rec_name, icon in super().search_global(text): icon = icon or 'tryton-project' yield record, rec_name, icon diff --git a/modules/project_invoice/invoice.py b/modules/project_invoice/invoice.py index 7676fd117f..e2bfa1722a 100644 --- a/modules/project_invoice/invoice.py +++ b/modules/project_invoice/invoice.py @@ -130,4 +130,4 @@ class InvoiceLine(metaclass=PoolMeta): with without_check_access(): WorkInvoicedProgress.delete(progress) - super(InvoiceLine, cls).delete(lines) + super().delete(lines) diff --git a/modules/project_invoice/project.py b/modules/project_invoice/project.py index 3425186995..47975cbeca 100644 --- a/modules/project_invoice/project.py +++ b/modules/project_invoice/project.py @@ -402,7 +402,7 @@ class Work(Effort, Progress, Timesheet, metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Work, cls).__setup__() + super().__setup__() cls._buttons.update({ 'invoice': { 'invisible': ((Eval('type') != 'project') @@ -425,7 +425,7 @@ class Work(Effort, Progress, Timesheet, metaclass=PoolMeta): else: default = default.copy() default.setdefault('invoice_line', None) - return super(Work, cls).copy(records, default=default) + return super().copy(records, default=default) @classmethod def write(cls, *args): diff --git a/modules/project_plan/allocation.py b/modules/project_plan/allocation.py index fdcc697baf..21fab6508e 100644 --- a/modules/project_plan/allocation.py +++ b/modules/project_plan/allocation.py @@ -28,7 +28,7 @@ class Allocation(ModelSQL, ModelView): @classmethod def write(cls, *args): Work = Pool().get('project.work') - super(Allocation, cls).write(*args) + super().write(*args) works = Work.search([ ('allocations', 'in', @@ -42,7 +42,7 @@ class Allocation(ModelSQL, ModelView): @classmethod def create(cls, vlist): - allocations = super(Allocation, cls).create(vlist) + allocations = super().create(vlist) for allocation in allocations: allocation.work.reset_leveling() allocation.work.compute_dates() @@ -51,7 +51,7 @@ class Allocation(ModelSQL, ModelView): @classmethod def delete(cls, allocations): works = [a.work for a in allocations] - super(Allocation, cls).delete(allocations) + super().delete(allocations) for work in works: work.reset_leveling() diff --git a/modules/project_plan/work.py b/modules/project_plan/work.py index ea9353bc5d..0c90c15e8a 100644 --- a/modules/project_plan/work.py +++ b/modules/project_plan/work.py @@ -67,7 +67,7 @@ class Work(tree(parent='successors'), metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Work, cls).__setup__() + super().__setup__() @staticmethod def default_leveling_delay(): @@ -551,7 +551,7 @@ class Work(tree(parent='successors'), metaclass=PoolMeta): @classmethod def write(cls, *args): - super(Work, cls).write(*args) + super().write(*args) actions = iter(args) for works, values in zip(actions, actions): @@ -566,7 +566,7 @@ class Work(tree(parent='successors'), metaclass=PoolMeta): @classmethod def create(cls, vlist): - works = super(Work, cls).create(vlist) + works = super().create(vlist) for work in works: work.reset_leveling() work.compute_dates() @@ -580,7 +580,7 @@ class Work(tree(parent='successors'), metaclass=PoolMeta): to_update.add(work.parent) to_update.update(c for c in work.parent.children if c not in works) - super(Work, cls).delete(works) + super().delete(works) for work in to_update: work.reset_leveling() @@ -597,7 +597,7 @@ class PredecessorSuccessor(ModelSQL): @classmethod def write(cls, *args): Work = Pool().get('project.work') - super(PredecessorSuccessor, cls).write(*args) + super().write(*args) work_ids = [v for values in args[1::2] for k, v in values.values() @@ -619,7 +619,7 @@ class PredecessorSuccessor(ModelSQL): if pred_succ.predecessor.parent: parents.add(pred_succ.predecessor.parent) - super(PredecessorSuccessor, cls).delete(pred_succs) + super().delete(pred_succs) for work in works: work.reset_leveling() @@ -629,7 +629,7 @@ class PredecessorSuccessor(ModelSQL): @classmethod def create(cls, vlist): - pred_succs = super(PredecessorSuccessor, cls).create(vlist) + pred_succs = super().create(vlist) for pred_succ in pred_succs: pred_succ.predecessor.reset_leveling() diff --git a/modules/project_revenue/work.py b/modules/project_revenue/work.py index 8f5c8256bf..33089da127 100644 --- a/modules/project_revenue/work.py +++ b/modules/project_revenue/work.py @@ -42,7 +42,7 @@ class Work(metaclass=PoolMeta): def __setup__(cls): pool = Pool() - super(Work, cls).__setup__() + super().__setup__() try: pool.get('purchase.line') diff --git a/modules/purchase/configuration.py b/modules/purchase/configuration.py index c9ffdba9bd..a15aba3322 100644 --- a/modules/purchase/configuration.py +++ b/modules/purchase/configuration.py @@ -50,7 +50,7 @@ class Configuration( return pool.get('purchase.configuration.purchase_method') if field == 'purchase_sequence': return pool.get('purchase.configuration.sequence') - return super(Configuration, cls).multivalue_model(field) + return super().multivalue_model(field) @classmethod def default_purchase_sequence(cls, **pattern): diff --git a/modules/purchase/invoice.py b/modules/purchase/invoice.py index 8bd41c5a85..82ec2bd644 100644 --- a/modules/purchase/invoice.py +++ b/modules/purchase/invoice.py @@ -69,7 +69,7 @@ class Invoice(metaclass=PoolMeta): @classmethod @process_purchase def delete(cls, invoices): - super(Invoice, cls).delete(invoices) + super().delete(invoices) @classmethod @ModelView.button @@ -81,7 +81,7 @@ class Invoice(metaclass=PoolMeta): gettext('purchase.msg_purchase_invoice_reset_draft', invoice=invoice.rec_name)) - return super(Invoice, cls).draft(invoices) + return super().draft(invoices) @classmethod @process_purchase @@ -91,12 +91,12 @@ class Invoice(metaclass=PoolMeta): @classmethod @process_purchase def paid(cls, invoices): - super(Invoice, cls).paid(invoices) + super().paid(invoices) @classmethod @process_purchase def cancel(cls, invoices): - super(Invoice, cls).cancel(invoices) + super().cancel(invoices) class InvoiceLine(metaclass=PoolMeta): @@ -148,14 +148,14 @@ class InvoiceLine(metaclass=PoolMeta): def origin_name(self): pool = Pool() PurchaseLine = pool.get('purchase.line') - name = super(InvoiceLine, self).origin_name + name = super().origin_name if isinstance(self.origin, PurchaseLine) and self.origin.id >= 0: name = self.origin.purchase.rec_name return name @classmethod def _get_origin(cls): - models = super(InvoiceLine, cls)._get_origin() + models = super()._get_origin() models.append('purchase.line') return models @@ -169,7 +169,7 @@ class InvoiceLine(metaclass=PoolMeta): invoices = (l.invoice for l in cls.browse(lines) if l.type == 'line' and l.invoice) purchases = set(p for i in invoices for p in i.purchases) - super(InvoiceLine, cls).delete(lines) + super().delete(lines) if purchases: with transaction.set_context( queue_batch=context.get('queue_batch', True)): diff --git a/modules/purchase/party.py b/modules/purchase/party.py index 5d6174c88f..b2013bfb33 100644 --- a/modules/purchase/party.py +++ b/modules/purchase/party.py @@ -71,7 +71,7 @@ class PartyReplace(metaclass=PoolMeta): @classmethod def fields_to_replace(cls): - return super(PartyReplace, cls).fields_to_replace() + [ + return super().fields_to_replace() + [ ('purchase.product_supplier', 'party'), ('purchase.purchase', 'party'), ('purchase.purchase', 'invoice_party'), @@ -84,7 +84,7 @@ class PartyErase(metaclass=PoolMeta): def check_erase_company(self, party, company): pool = Pool() Purchase = pool.get('purchase.purchase') - super(PartyErase, self).check_erase_company(party, company) + super().check_erase_company(party, company) purchases = Purchase.search([ ('party', '=', party.id), diff --git a/modules/purchase/product.py b/modules/purchase/product.py index bdf3a1fc36..04a061fe93 100644 --- a/modules/purchase/product.py +++ b/modules/purchase/product.py @@ -42,7 +42,7 @@ class Template(metaclass=PoolMeta): @fields.depends('default_uom', 'purchase_uom', 'purchasable') def on_change_default_uom(self): try: - super(Template, self).on_change_default_uom() + super().on_change_default_uom() except AttributeError: pass if self.default_uom: @@ -54,7 +54,7 @@ class Template(metaclass=PoolMeta): @classmethod def view_attributes(cls): - return super(Template, cls).view_attributes() + [ + return super().view_attributes() + [ ('//page[@id="suppliers"]', 'states', { 'invisible': ~Eval('purchasable'), })] @@ -84,7 +84,7 @@ class Template(metaclass=PoolMeta): if Warning.check(name): raise PurchaseUOMWarning( name, gettext('purchase.msg_change_purchase_uom')) - super(Template, cls).write(*args) + super().write(*args) @classmethod def copy(cls, templates, default=None): @@ -390,7 +390,7 @@ class ProductSupplier( and not table.column_exist('template')): table.column_rename('product', 'template') - super(ProductSupplier, cls).__register__(module_name) + super().__register__(module_name) @staticmethod def default_company(): @@ -562,4 +562,4 @@ class ProductSupplierPrice( self.product_supplier.unit, self.quantity, unit) if test_quantity > abs(quantity): return False - return super(ProductSupplierPrice, self).match(pattern) + return super().match(pattern) diff --git a/modules/purchase/purchase.py b/modules/purchase/purchase.py index 29dc5e6403..30e0fdbf16 100644 --- a/modules/purchase/purchase.py +++ b/modules/purchase/purchase.py @@ -257,7 +257,7 @@ class Purchase( def __setup__(cls): cls.number.search_unaccented = False cls.reference.search_unaccented = False - super(Purchase, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_indexes.update({ Index(t, (t.reference, Index.Similarity())), @@ -358,7 +358,7 @@ class Purchase( cursor = Transaction().connection.cursor() sql_table = cls.__table__() - super(Purchase, cls).__register__(module_name) + super().__register__(module_name) # Migration from 5.6: rename state cancel to cancelled cursor.execute(*sql_table.update( @@ -754,7 +754,7 @@ class Purchase( default.setdefault('untaxed_amount_cache') default.setdefault('tax_amount_cache') default.setdefault('total_amount_cache') - return super(Purchase, cls).copy(purchases, default=default) + return super().copy(purchases, default=default) def check_for_quotation(self): for line in self.line_lines: @@ -908,7 +908,7 @@ class Purchase( raise AccessError( gettext('purchase.msg_purchase_delete_cancel', purchase=purchase.rec_name)) - super(Purchase, cls).delete(purchases) + super().delete(purchases) @classmethod @ModelView.button @@ -2215,7 +2215,7 @@ class PurchaseReport(CompanyReport): @classmethod def execute(cls, ids, data): with Transaction().set_context(address_with_party=True): - return super(PurchaseReport, cls).execute(ids, data) + return super().execute(ids, data) @classmethod def get_context(cls, records, header, data): @@ -2358,7 +2358,7 @@ class HandleInvoiceException(Wizard): class ModifyHeaderStateView(StateView): def get_view(self, wizard, state_name): with Transaction().set_context(modify_header=True): - return super(ModifyHeaderStateView, self).get_view( + return super().get_view( wizard, state_name) def get_defaults(self, wizard, state_name, fields): diff --git a/modules/purchase/stock.py b/modules/purchase/stock.py index a74f22576f..4991eb206f 100644 --- a/modules/purchase/stock.py +++ b/modules/purchase/stock.py @@ -36,7 +36,7 @@ class ShipmentIn(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(ShipmentIn, cls).__setup__() + super().__setup__() add_remove = [ ('supplier', '=', Eval('supplier')), ] @@ -62,7 +62,7 @@ class ShipmentIn(metaclass=PoolMeta): gettext('purchase.msg_purchase_move_reset_draft', move=move.rec_name)) - return super(ShipmentIn, cls).draft(shipments) + return super().draft(shipments) @classmethod @ModelView.button @@ -75,14 +75,14 @@ class ShipmentIn(metaclass=PoolMeta): for move in shipment.incoming_moves: if isinstance(move.origin, PurchaseLine): move.origin.check_move_quantity() - super(ShipmentIn, cls).receive(shipments) + super().receive(shipments) @classmethod @ModelView.button @Workflow.transition('cancelled') @process_purchase('incoming_moves') def cancel(cls, shipments): - super(ShipmentIn, cls).cancel(shipments) + super().cancel(shipments) class ShipmentInReturn(metaclass=PoolMeta): @@ -101,7 +101,7 @@ class ShipmentInReturn(metaclass=PoolMeta): gettext('purchase.msg_purchase_move_reset_draft', move=move.rec_name)) - return super(ShipmentInReturn, cls).draft(shipments) + return super().draft(shipments) @classmethod @ModelView.button @@ -162,13 +162,13 @@ class Move(metaclass=PoolMeta): @classmethod def _get_origin(cls): - models = super(Move, cls)._get_origin() + models = super()._get_origin() models.append('purchase.line') return models @classmethod def check_origin_types(cls): - types = super(Move, cls).check_origin_types() + types = super().check_origin_types() types.add('supplier') return types @@ -210,7 +210,7 @@ class Move(metaclass=PoolMeta): def on_change_with_product_uom_category(self, name=None): pool = Pool() PurchaseLine = pool.get('purchase.line') - category = super(Move, self).on_change_with_product_uom_category( + category = super().on_change_with_product_uom_category( name=name) # Enforce the same unit category as they are used to compute the # remaining quantity to receive and the quantity to invoice. @@ -224,7 +224,7 @@ class Move(metaclass=PoolMeta): def origin_name(self): pool = Pool() PurchaseLine = pool.get('purchase.line') - name = super(Move, self).origin_name + name = super().origin_name if isinstance(self.origin, PurchaseLine) and self.origin.id >= 0: name = self.origin.purchase.rec_name return name @@ -246,12 +246,12 @@ class Move(metaclass=PoolMeta): @Workflow.transition('cancelled') @process_purchase_move(without_shipment=True) def cancel(cls, moves): - super(Move, cls).cancel(moves) + super().cancel(moves) @classmethod @process_purchase_move() def delete(cls, moves): - super(Move, cls).delete(moves) + super().delete(moves) class Location(metaclass=PoolMeta): diff --git a/modules/purchase_amendment/purchase.py b/modules/purchase_amendment/purchase.py index afadee2e3b..5b1232ac16 100644 --- a/modules/purchase_amendment/purchase.py +++ b/modules/purchase_amendment/purchase.py @@ -68,7 +68,7 @@ class Amendment(Workflow, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(Amendment, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_indexes.add( Index( diff --git a/modules/purchase_invoice_line_standalone/purchase.py b/modules/purchase_invoice_line_standalone/purchase.py index 6c5b320107..f95400fa0f 100644 --- a/modules/purchase_invoice_line_standalone/purchase.py +++ b/modules/purchase_invoice_line_standalone/purchase.py @@ -48,7 +48,7 @@ class Purchase(metaclass=PoolMeta): super()._save_invoice(non_standalone) def get_invoice_state(self): - state = super(Purchase, self).get_invoice_state() + state = super().get_invoice_state() skips = set(self.invoice_lines_ignored) standalone_lines = [ l for l in self.invoice_lines if l not in skips and not l.invoice] @@ -66,7 +66,7 @@ class Purchase(metaclass=PoolMeta): else: default = default.copy() default.setdefault('invoice_lines_ignored', None) - return super(Purchase, cls).copy(purchases, default=default) + return super().copy(purchases, default=default) class PurchaseIgnoredInvoiceLine(ModelSQL): @@ -89,7 +89,7 @@ class HandleInvoiceException(metaclass=PoolMeta): __name__ = 'purchase.handle.invoice.exception' def transition_handle(self): - state = super(HandleInvoiceException, self).transition_handle() + state = super().transition_handle() invoice_lines = [] for invoice_line in self.record.invoice_lines: diff --git a/modules/purchase_request/purchase.py b/modules/purchase_request/purchase.py index d5cf3d2573..b5d0ae6fd8 100644 --- a/modules/purchase_request/purchase.py +++ b/modules/purchase_request/purchase.py @@ -35,7 +35,7 @@ class Purchase(metaclass=PoolMeta): @classmethod def delete(cls, purchases): cls.check_delete_purchase_request(purchases) - super(Purchase, cls).delete(purchases) + super().delete(purchases) @classmethod @without_check_access @@ -53,7 +53,7 @@ class Purchase(metaclass=PoolMeta): def confirm(cls, purchases): for purchase in purchases: purchase.check_request_warehouse() - super(Purchase, cls).confirm(purchases) + super().confirm(purchases) def check_request_warehouse(self): pool = Pool() @@ -78,7 +78,7 @@ class Purchase(metaclass=PoolMeta): @process_request @Workflow.transition('cancelled') def cancel(cls, purchases): - super(Purchase, cls).cancel(purchases) + super().cancel(purchases) @classmethod @ModelView.button diff --git a/modules/purchase_request/purchase_request.py b/modules/purchase_request/purchase_request.py index f3750cdd16..a95df4631a 100644 --- a/modules/purchase_request/purchase_request.py +++ b/modules/purchase_request/purchase_request.py @@ -106,7 +106,7 @@ class PurchaseRequest(ModelSQL, ModelView): @classmethod def __setup__(cls): - super(PurchaseRequest, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_indexes.add( Index( @@ -136,7 +136,7 @@ class PurchaseRequest(ModelSQL, ModelView): and not table_h.column_exist('computed_unit')): table_h.column_rename('computed_uom', 'computed_unit') - super(PurchaseRequest, cls).__register__(module_name) + super().__register__(module_name) cursor = Transaction().connection.cursor() @@ -281,7 +281,7 @@ class PurchaseRequest(ModelSQL, ModelView): if transaction.user and transaction.check_access: raise AccessError( gettext('purchase_request.msg_request_no_create')) - return super(PurchaseRequest, cls).create(vlist) + return super().create(vlist) @classmethod def delete(cls, requests): @@ -290,7 +290,7 @@ class PurchaseRequest(ModelSQL, ModelView): raise AccessError( gettext('purchase_request.msg_request_delete_purchased', request=request.rec_name)) - super(PurchaseRequest, cls).delete(requests) + super().delete(requests) @classmethod def copy(cls, requests, default=None): diff --git a/modules/purchase_request_quotation/purchase.py b/modules/purchase_request_quotation/purchase.py index 00f28e0ea6..d7289145c7 100644 --- a/modules/purchase_request_quotation/purchase.py +++ b/modules/purchase_request_quotation/purchase.py @@ -51,7 +51,7 @@ class Configuration(metaclass=PoolMeta): pool = Pool() if field == 'purchase_request_quotation_sequence': return pool.get('purchase.configuration.sequence') - return super(Configuration, cls).multivalue_model(field) + return super().multivalue_model(field) @classmethod def default_purchase_request_quotation_sequence(cls, **pattern): @@ -134,7 +134,7 @@ class Quotation(Workflow, ModelSQL, ModelView): def __setup__(cls): cls.number.search_unaccented = False cls.reference.search_unaccented = False - super(Quotation, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_indexes.update({ Index(t, (t.reference, Index.Similarity())), @@ -236,7 +236,7 @@ class Quotation(Workflow, ModelSQL, ModelView): default = default.copy() default.setdefault('number', None) default.setdefault('revision', cls.default_revision()) - return super(Quotation, cls).copy(groups, default=default) + return super().copy(groups, default=default) @property def delivery_full_address(self): @@ -415,7 +415,7 @@ class QuotationLine(ModelSQL, ModelView): pool = Pool() Request = pool.get('purchase.request') requests = [l.request for l in quotationlines] - super(QuotationLine, cls).delete(quotationlines) + super().delete(quotationlines) Request.update_state(requests) def get_product(self, name): @@ -592,7 +592,7 @@ class PurchaseRequest(metaclass=PoolMeta): @property def currency(self): - currency = super(PurchaseRequest, self).currency + currency = super().currency if self.best_quotation_line: return self.best_quotation_line.currency return currency @@ -608,14 +608,14 @@ class PurchaseRequest(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(PurchaseRequest, cls).__setup__() + super().__setup__() selection = [('quotation', 'Quotation'), ('received', 'Received')] for s in selection: if s not in cls.state.selection: cls.state.selection.append(s) def get_state(self): - state = super(PurchaseRequest, self).get_state() + state = super().get_state() if state == 'draft' and self.quotation_lines: state = 'quotation' if any(l.quotation_state == 'received' @@ -631,7 +631,7 @@ class CreatePurchase(Wizard): @classmethod def __setup__(cls): - super(CreatePurchase, cls).__setup__() + super().__setup__() def transition_start(self): to_save = [] @@ -643,7 +643,7 @@ class CreatePurchase(Wizard): to_save.append(self.apply_quotation(req)) if to_save: self.model.save(to_save) - state = super(CreatePurchase, self).transition_start() + state = super().transition_start() return state def apply_quotation(self, request): @@ -656,7 +656,7 @@ class CreatePurchase(Wizard): @classmethod def compute_purchase_line(cls, key, requests, purchase): - line = super(CreatePurchase, cls).compute_purchase_line(key, + line = super().compute_purchase_line(key, requests, purchase) try: line.unit_price = min(req.best_quotation_line.unit_price diff --git a/modules/purchase_requisition/purchase.py b/modules/purchase_requisition/purchase.py index 59c24422f7..11017acaf0 100644 --- a/modules/purchase_requisition/purchase.py +++ b/modules/purchase_requisition/purchase.py @@ -38,7 +38,7 @@ class Configuration(metaclass=PoolMeta): pool = Pool() if field == 'purchase_requisition_sequence': return pool.get('purchase.configuration.sequence') - return super(Configuration, cls).multivalue_model(field) + return super().multivalue_model(field) @classmethod def default_purchase_requisition_sequence(cls, **pattern): @@ -130,7 +130,7 @@ class PurchaseRequisition(Workflow, ModelSQL, ModelView): @classmethod def __setup__(cls): cls.number.search_unaccented = False - super(PurchaseRequisition, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_indexes.add( Index( @@ -307,7 +307,7 @@ class PurchaseRequisition(Workflow, ModelSQL, ModelView): values['number'] = config.get_multivalue( 'purchase_requisition_sequence', company=values.get('company', default_company)).get() - return super(PurchaseRequisition, cls).create(vlist) + return super().create(vlist) @classmethod def delete(cls, requisitions): @@ -318,7 +318,7 @@ class PurchaseRequisition(Workflow, ModelSQL, ModelView): raise AccessError( gettext('purchase_requisition.msg_delete_cancel', requisition=requisition.rec_name)) - super(PurchaseRequisition, cls).delete(requisitions) + super().delete(requisitions) def check_for_waiting(self): if not self.warehouse: @@ -339,7 +339,7 @@ class PurchaseRequisition(Workflow, ModelSQL, ModelView): default.setdefault('approved_by') default.setdefault('rejected_by') default.setdefault('total_amount_cache') - return super(PurchaseRequisition, cls).copy( + return super().copy( requisitions, default=default) @classmethod @@ -637,7 +637,7 @@ class PurchaseRequisitionLine(sequence_ordered(), ModelSQL, ModelView): else: default = default.copy() default.setdefault('purchase_requests') - return super(PurchaseRequisitionLine, cls).copy(lines, default=default) + return super().copy(lines, default=default) class PurchaseRequest(metaclass=PoolMeta): @@ -645,14 +645,14 @@ class PurchaseRequest(metaclass=PoolMeta): @classmethod def _get_origin(cls): - return (super(PurchaseRequest, cls)._get_origin() + return (super()._get_origin() | {'purchase.requisition.line'}) @property def currency(self): pool = Pool() RequisitionLine = pool.get('purchase.requisition.line') - currency = super(PurchaseRequest, self).currency + currency = super().currency if (isinstance(self.origin, RequisitionLine) and self.origin.requisition.currency): return self.origin.requisition.currency @@ -697,7 +697,7 @@ class CreatePurchase(Wizard): def _group_purchase_line_key(self, request): pool = Pool() RequisitionLine = pool.get('purchase.requisition.line') - key = super(CreatePurchase, self)._group_purchase_line_key(request) + key = super()._group_purchase_line_key(request) if isinstance(request.origin, RequisitionLine): unit_price = request.origin.request_unit_price if unit_price: diff --git a/modules/purchase_shipment_cost/stock.py b/modules/purchase_shipment_cost/stock.py index aa8afea390..1f1a42853c 100644 --- a/modules/purchase_shipment_cost/stock.py +++ b/modules/purchase_shipment_cost/stock.py @@ -96,7 +96,7 @@ class ShipmentIn(ShipmentCostMixin, metaclass=PoolMeta): allocation_method = \ Carrier.default_carrier_cost_allocation_method() getattr(shipment, 'allocate_cost_by_%s' % allocation_method)() - super(ShipmentIn, cls).receive(shipments) + super().receive(shipments) @classmethod @ModelView.button @@ -138,7 +138,7 @@ class Move(metaclass=PoolMeta): pool = Pool() AccountMoveLine = pool.get('account.move.line') Currency = pool.get('currency.currency') - move_lines = super(Move, self)._get_account_stock_move_lines(type_) + move_lines = super()._get_account_stock_move_lines(type_) if (type_.startswith('in_') and self.unit_shipment_cost and self.shipment @@ -169,7 +169,7 @@ class Move(metaclass=PoolMeta): pool = Pool() Currency = pool.get('currency.currency') Uom = pool.get('product.uom') - for move, qty, cost_price in super(Move, cls)._get_anglo_saxon_move( + for move, qty, cost_price in super()._get_anglo_saxon_move( moves, quantity, type_): if (type_.startswith('in_') and move.unit_shipment_cost): diff --git a/modules/sale/configuration.py b/modules/sale/configuration.py index 6e0db022f8..84ca564d70 100644 --- a/modules/sale/configuration.py +++ b/modules/sale/configuration.py @@ -74,7 +74,7 @@ class Configuration( return pool.get('sale.configuration.sequence') elif field == 'sale_quotation_validity': return pool.get('sale.configuration.quotation') - return super(Configuration, cls).multivalue_model(field) + return super().multivalue_model(field) default_sale_sequence = default_func('sale_sequence') default_sale_invoice_method = default_func('sale_invoice_method') diff --git a/modules/sale/invoice.py b/modules/sale/invoice.py index abc3cc5a1e..c649ff02e7 100644 --- a/modules/sale/invoice.py +++ b/modules/sale/invoice.py @@ -78,7 +78,7 @@ class Invoice(metaclass=PoolMeta): @classmethod @process_sale def delete(cls, invoices): - super(Invoice, cls).delete(invoices) + super().delete(invoices) @classmethod @process_sale @@ -88,12 +88,12 @@ class Invoice(metaclass=PoolMeta): @classmethod @process_sale def paid(cls, invoices): - super(Invoice, cls).paid(invoices) + super().paid(invoices) @classmethod @process_sale def cancel(cls, invoices): - super(Invoice, cls).cancel(invoices) + super().cancel(invoices) @classmethod @Workflow.transition('draft') @@ -104,7 +104,7 @@ class Invoice(metaclass=PoolMeta): gettext('sale.msg_sale_invoice_reset_draft', invoice=invoice.rec_name)) - return super(Invoice, cls).draft(invoices) + return super().draft(invoices) class Line(metaclass=PoolMeta): diff --git a/modules/sale/product.py b/modules/sale/product.py index ca4952f4d8..191628d289 100644 --- a/modules/sale/product.py +++ b/modules/sale/product.py @@ -75,7 +75,7 @@ class Template(metaclass=PoolMeta): @fields.depends('default_uom', 'sale_uom', 'salable') def on_change_default_uom(self): try: - super(Template, self).on_change_default_uom() + super().on_change_default_uom() except AttributeError: pass if self.default_uom: @@ -87,7 +87,7 @@ class Template(metaclass=PoolMeta): @classmethod def view_attributes(cls): - return super(Template, cls).view_attributes() + [ + return super().view_attributes() + [ ('//page[@id="customers"]', 'states', { 'invisible': ~Eval('salable'), })] diff --git a/modules/sale/sale.py b/modules/sale/sale.py index 00aa4dddfe..e7c1b7068a 100644 --- a/modules/sale/sale.py +++ b/modules/sale/sale.py @@ -328,7 +328,7 @@ class Sale( def __setup__(cls): cls.number.search_unaccented = False cls.reference.search_unaccented = False - super(Sale, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_indexes.update({ Index(t, (t.reference, Index.Similarity())), @@ -431,7 +431,7 @@ class Sale( cursor = Transaction().connection.cursor() sql_table = cls.__table__() - super(Sale, cls).__register__(module_name) + super().__register__(module_name) # Migration from 5.6: rename state cancel to cancelled cursor.execute(*sql_table.update( @@ -904,7 +904,7 @@ class Sale( default.setdefault('untaxed_amount_cache') default.setdefault('tax_amount_cache') default.setdefault('total_amount_cache') - return super(Sale, cls).copy(sales, default=default) + return super().copy(sales, default=default) def check_for_quotation(self): if not self.invoice_address: @@ -1109,7 +1109,7 @@ class Sale( raise AccessError( gettext('sale.msg_sale_delete_cancel', sale=sale.rec_name)) - super(Sale, cls).delete(sales) + super().delete(sales) @classmethod @ModelView.button @@ -2264,7 +2264,7 @@ class SaleLine(TaxableMixin, sequence_ordered(), ModelSQL, ModelView): gettext('sale.msg_sale_line_delete_cancel_draft', line=line.rec_name, sale=line.sale.rec_name)) - super(SaleLine, cls).delete(lines) + super().delete(lines) @classmethod def copy(cls, lines, default=None): @@ -2277,7 +2277,7 @@ class SaleLine(TaxableMixin, sequence_ordered(), ModelSQL, ModelView): default.setdefault('moves_recreated', None) default.setdefault('invoice_lines', None) default.setdefault('actual_quantity') - return super(SaleLine, cls).copy(lines, default=default) + return super().copy(lines, default=default) class SaleLineTax(ModelSQL): @@ -2347,7 +2347,7 @@ class SaleReport(CompanyReport): @classmethod def execute(cls, ids, data): with Transaction().set_context(address_with_party=True): - return super(SaleReport, cls).execute(ids, data) + return super().execute(ids, data) @classmethod def get_context(cls, records, header, data): @@ -2518,7 +2518,7 @@ class ReturnSale(Wizard): class ModifyHeaderStateView(StateView): def get_view(self, wizard, state_name): with Transaction().set_context(modify_header=True): - return super(ModifyHeaderStateView, self).get_view( + return super().get_view( wizard, state_name) def get_defaults(self, wizard, state_name, fields): diff --git a/modules/sale/sale_reporting.py b/modules/sale/sale_reporting.py index a711a371f6..bd257a1a6a 100644 --- a/modules/sale/sale_reporting.py +++ b/modules/sale/sale_reporting.py @@ -209,12 +209,12 @@ class AbstractTimeseries(Abstract): @classmethod def __setup__(cls): - super(AbstractTimeseries, cls).__setup__() + super().__setup__() cls._order = [('date', 'ASC')] @classmethod def _columns(cls, tables, withs): - return super(AbstractTimeseries, cls)._columns(tables, withs) + [ + return super()._columns(tables, withs) + [ cls._column_date(tables, withs).as_('date')] @classmethod @@ -227,7 +227,7 @@ class AbstractTimeseries(Abstract): @classmethod def _group_by(cls, tables, withs): - return super(AbstractTimeseries, cls)._group_by(tables, withs) + [ + return super()._group_by(tables, withs) + [ cls._column_date(tables, withs)] @@ -322,13 +322,13 @@ class CustomerMixin(object): @classmethod def _columns(cls, tables, withs): line = tables['line'] - return super(CustomerMixin, cls)._columns(tables, withs) + [ + return super()._columns(tables, withs) + [ line.customer.as_('customer')] @classmethod def _group_by(cls, tables, withs): line = tables['line'] - return super(CustomerMixin, cls)._group_by(tables, withs) + [ + return super()._group_by(tables, withs) + [ line.customer] def get_rec_name(self, name): @@ -552,19 +552,19 @@ class ProductMixin(object): @classmethod def _columns(cls, tables, withs): line = tables['line'] - return super(ProductMixin, cls)._columns(tables, withs) + [ + return super()._columns(tables, withs) + [ line.product.as_('product')] @classmethod def _group_by(cls, tables, withs): line = tables['line'] - return super(ProductMixin, cls)._group_by(tables, withs) + [ + return super()._group_by(tables, withs) + [ line.product] @classmethod def _where(cls, tables, withs): line = tables['line'] - where = super(ProductMixin, cls)._where(tables, withs) + where = super()._where(tables, withs) where &= line.product != Null return where @@ -790,7 +790,7 @@ class CountryMixin(object): def _joins(cls): pool = Pool() Address = pool.get('party.address') - from_item, tables, withs = super(CountryMixin, cls)._joins() + from_item, tables, withs = super()._joins() if 'line.shipment_address' not in tables: address = Address.__table__() tables['line.shipment_address'] = address @@ -802,19 +802,19 @@ class CountryMixin(object): @classmethod def _columns(cls, tables, withs): address = tables['line.shipment_address'] - return super(CountryMixin, cls)._columns(tables, withs) + [ + return super()._columns(tables, withs) + [ address.country.as_('country')] @classmethod def _group_by(cls, tables, withs): address = tables['line.shipment_address'] - return super(CountryMixin, cls)._group_by(tables, withs) + [ + return super()._group_by(tables, withs) + [ address.country] @classmethod def _where(cls, tables, withs): address = tables['line.shipment_address'] - where = super(CountryMixin, cls)._where(tables, withs) + where = super()._where(tables, withs) where &= address.country != Null return where @@ -962,19 +962,19 @@ class SubdivisionMixin(CountryMixin): @classmethod def _columns(cls, tables, withs): address = tables['line.shipment_address'] - return super(SubdivisionMixin, cls)._columns(tables, withs) + [ + return super()._columns(tables, withs) + [ address.subdivision.as_('subdivision')] @classmethod def _group_by(cls, tables, withs): address = tables['line.shipment_address'] - return super(SubdivisionMixin, cls)._group_by(tables, withs) + [ + return super()._group_by(tables, withs) + [ address.subdivision] @classmethod def _where(cls, tables, withs): address = tables['line.shipment_address'] - where = super(SubdivisionMixin, cls)._where(tables, withs) + where = super()._where(tables, withs) where &= address.subdivision != Null return where diff --git a/modules/sale/stock.py b/modules/sale/stock.py index 026e66ffd8..b30e5031aa 100644 --- a/modules/sale/stock.py +++ b/modules/sale/stock.py @@ -47,7 +47,7 @@ class ShipmentOut(metaclass=PoolMeta): gettext('sale.msg_sale_move_reset_draft', move=move.rec_name)) - return super(ShipmentOut, cls).draft(shipments) + return super().draft(shipments) @classmethod @ModelView.button @@ -68,7 +68,7 @@ class ShipmentOut(metaclass=PoolMeta): @Workflow.transition('cancelled') @process_sale('outgoing_moves') def cancel(cls, shipments): - super(ShipmentOut, cls).cancel(shipments) + super().cancel(shipments) class ShipmentOutReturn(metaclass=PoolMeta): @@ -87,7 +87,7 @@ class ShipmentOutReturn(metaclass=PoolMeta): gettext('sale.msg_sale_move_reset_draft', move=move.rec_name)) - return super(ShipmentOutReturn, cls).draft(shipments) + return super().draft(shipments) @classmethod @ModelView.button @@ -100,7 +100,7 @@ class ShipmentOutReturn(metaclass=PoolMeta): for move in shipment.incoming_moves: if isinstance(move.origin, SaleLine): move.origin.check_move_quantity() - super(ShipmentOutReturn, cls).receive(shipments) + super().receive(shipments) def process_sale_move(func): @@ -142,13 +142,13 @@ class Move(metaclass=PoolMeta): @classmethod def _get_origin(cls): - models = super(Move, cls)._get_origin() + models = super()._get_origin() models.append('sale.line') return models @classmethod def check_origin_types(cls): - types = super(Move, cls).check_origin_types() + types = super().check_origin_types() types.add('customer') return types @@ -216,7 +216,7 @@ class Move(metaclass=PoolMeta): def origin_name(self): pool = Pool() SaleLine = pool.get('sale.line') - name = super(Move, self).origin_name + name = super().origin_name if isinstance(self.origin, SaleLine) and self.origin.id >= 0: name = self.origin.sale.rec_name return name @@ -226,9 +226,9 @@ class Move(metaclass=PoolMeta): @Workflow.transition('cancelled') @process_sale_move def cancel(cls, moves): - super(Move, cls).cancel(moves) + super().cancel(moves) @classmethod @process_sale_move def delete(cls, moves): - super(Move, cls).delete(moves) + super().delete(moves) diff --git a/modules/sale_advance_payment/account.py b/modules/sale_advance_payment/account.py index 808ec56675..5a9d3c4459 100644 --- a/modules/sale_advance_payment/account.py +++ b/modules/sale_advance_payment/account.py @@ -51,7 +51,7 @@ class Invoice(metaclass=PoolMeta): pool = Pool() AdvancePaymentCondition = pool.get('sale.advance_payment.condition') - sales = set(super(Invoice, self).get_sales(name)) + sales = set(super().get_sales(name)) for line in self.lines: if isinstance(line.origin, AdvancePaymentCondition): sales.add(line.origin.sale.id) @@ -92,7 +92,7 @@ class InvoiceLine(metaclass=PoolMeta): @classmethod def _get_origin(cls): - return (super(InvoiceLine, cls)._get_origin() + return (super()._get_origin() + ['sale.advance_payment.condition']) @classmethod diff --git a/modules/sale_advance_payment/sale.py b/modules/sale_advance_payment/sale.py index 6c7dc83eb4..242d0e170e 100644 --- a/modules/sale_advance_payment/sale.py +++ b/modules/sale_advance_payment/sale.py @@ -85,7 +85,7 @@ class AdvancePaymentTermLine(ModelView, ModelSQL, CompanyMultiValueMixin): @fields.depends('formula', 'description') def pre_validate(self, **names): - super(AdvancePaymentTermLine, self).pre_validate() + super().pre_validate() names['total_amount'] = names['untaxed_amount'] = 0 try: if not isinstance(self.compute_amount(**names), Decimal): @@ -183,7 +183,7 @@ class AdvancePaymentCondition(ModelSQL, ModelView): @classmethod def __setup__(cls): - super(AdvancePaymentCondition, cls).__setup__() + super().__setup__() cls._order.insert(0, ('amount', 'ASC')) cls.__access__.add('sale') @@ -213,7 +213,7 @@ class AdvancePaymentCondition(ModelSQL, ModelView): else: default = default.copy() default.setdefault('invoice_lines', []) - return super(AdvancePaymentCondition, cls).copy(conditions, default) + return super().copy(conditions, default) def create_invoice(self): invoice = self.sale._get_invoice_sale() @@ -305,7 +305,7 @@ class Sale(metaclass=PoolMeta): pool = Pool() AdvancePaymentCondition = pool.get('sale.advance_payment.condition') - super(Sale, cls).quote(sales) + super().quote(sales) AdvancePaymentCondition.delete( list(chain(*(s.advance_payment_conditions for s in sales)))) @@ -321,7 +321,7 @@ class Sale(metaclass=PoolMeta): else: default = default.copy() default.setdefault('advance_payment_conditions', None) - return super(Sale, cls).copy(sales, default=default) + return super().copy(sales, default=default) def set_advance_payment_term(self): pool = Pool() @@ -400,7 +400,7 @@ class Sale(metaclass=PoolMeta): super()._process_invoice(sales) def create_invoice(self): - invoice = super(Sale, self).create_invoice() + invoice = super().create_invoice() if (invoice is not None and self.advance_payment_eligible() @@ -449,7 +449,7 @@ class SaleLine(metaclass=PoolMeta): __name__ = 'sale.line' def get_move(self, shipment_type): - move = super(SaleLine, self).get_move(shipment_type) + move = super().get_move(shipment_type) if (self.sale.advance_payment_eligible(shipment_type) and self.sale.supply_blocked): return None @@ -463,7 +463,7 @@ class SaleLine(metaclass=PoolMeta): return request def get_invoice_line(self): - lines = super(SaleLine, self).get_invoice_line() + lines = super().get_invoice_line() if (self.sale.advance_payment_eligible() and not self.sale.advance_payment_completed): return [] @@ -474,7 +474,7 @@ class HandleInvoiceException(metaclass=PoolMeta): __name__ = 'sale.handle.invoice.exception' def default_ask(self, fields): - default = super(HandleInvoiceException, self).default_ask(fields) + default = super().default_ask(fields) invoices = default['domain_invoices'] sale = self.record diff --git a/modules/sale_advance_payment/stock.py b/modules/sale_advance_payment/stock.py index b2d9d71465..052edf96b8 100644 --- a/modules/sale_advance_payment/stock.py +++ b/modules/sale_advance_payment/stock.py @@ -27,4 +27,4 @@ class ShipmentOut(metaclass=PoolMeta): raise ShippingBlocked( gettext('sale_advance_payment.msg_shipping_blocked', sale=sale.rec_name)) - super(ShipmentOut, cls).pack(shipments) + super().pack(shipments) diff --git a/modules/sale_amendment/sale.py b/modules/sale_amendment/sale.py index debfa5bd9e..53bd1f7361 100644 --- a/modules/sale_amendment/sale.py +++ b/modules/sale_amendment/sale.py @@ -68,7 +68,7 @@ class Amendment(Workflow, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(Amendment, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_indexes.add( Index( diff --git a/modules/sale_complaint/account.py b/modules/sale_complaint/account.py index 3050d59406..cac1ad9522 100644 --- a/modules/sale_complaint/account.py +++ b/modules/sale_complaint/account.py @@ -9,4 +9,4 @@ class InvoiceLine(metaclass=PoolMeta): @classmethod def _get_origin(cls): - return super(InvoiceLine, cls)._get_origin() + ['sale.complaint'] + return super()._get_origin() + ['sale.complaint'] diff --git a/modules/sale_complaint/complaint.py b/modules/sale_complaint/complaint.py index b30166f403..55580bcc28 100644 --- a/modules/sale_complaint/complaint.py +++ b/modules/sale_complaint/complaint.py @@ -135,7 +135,7 @@ class Complaint(Workflow, ModelSQL, ModelView): def __setup__(cls): cls.number.search_unaccented = False cls.reference.search_unaccented = False - super(Complaint, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_indexes.update({ Index(t, (t.reference, Index.Similarity())), @@ -204,7 +204,7 @@ class Complaint(Workflow, ModelSQL, ModelView): and not table_h.column_exist('submitted_by')): table_h.column_rename('employee', 'submitted_by') - super(Complaint, cls).__register__(module_name) + super().__register__(module_name) @classmethod def _actions_domains(cls): @@ -291,7 +291,7 @@ class Complaint(Workflow, ModelSQL, ModelView): values['number'] = config.get_multivalue( 'complaint_sequence', company=values.get('company', default_company)).get() - return super(Complaint, cls).create(vlist) + return super().create(vlist) @classmethod def copy(cls, complaints, default=None): @@ -304,7 +304,7 @@ class Complaint(Workflow, ModelSQL, ModelView): default.setdefault('approved_by') default.setdefault('rejected_by') default.setdefault('cancelled_by') - return super(Complaint, cls).copy(complaints, default=default) + return super().copy(complaints, default=default) @classmethod def delete(cls, complaints): @@ -313,7 +313,7 @@ class Complaint(Workflow, ModelSQL, ModelView): raise AccessError( gettext('sale_complaint.msg_complaint_delete_draft', complaint=complaint.rec_name)) - super(Complaint, cls).delete(complaints) + super().delete(complaints) @classmethod @ModelView.button @@ -727,7 +727,7 @@ class Action(ModelSQL, ModelView): raise AccessError( gettext('sale_complaint.msg_action_delete_result', action=action.rec_name)) - super(Action, cls).delete(actions) + super().delete(actions) class _Action_Line: diff --git a/modules/sale_complaint/sale.py b/modules/sale_complaint/sale.py index c539a42dc1..80fce7c74e 100644 --- a/modules/sale_complaint/sale.py +++ b/modules/sale_complaint/sale.py @@ -23,7 +23,7 @@ class Configuration(metaclass=PoolMeta): pool = Pool() if field == 'complaint_sequence': return pool.get('sale.configuration.sequence') - return super(Configuration, cls).multivalue_model(field) + return super().multivalue_model(field) @classmethod def default_complaint_sequence(cls, **pattern): @@ -56,4 +56,4 @@ class Sale(metaclass=PoolMeta): @classmethod def _get_origin(cls): - return super(Sale, cls)._get_origin() + ['sale.complaint'] + return super()._get_origin() + ['sale.complaint'] diff --git a/modules/sale_credit_limit/party.py b/modules/sale_credit_limit/party.py index 38a349728c..589966252f 100644 --- a/modules/sale_credit_limit/party.py +++ b/modules/sale_credit_limit/party.py @@ -18,7 +18,7 @@ class Party(metaclass=PoolMeta): Sale = pool.get('sale.sale') Uom = pool.get('product.uom') - amounts = super(Party, cls).get_credit_amount(parties, name) + amounts = super().get_credit_amount(parties, name) company_id = Transaction().context.get('company') @@ -63,5 +63,5 @@ class Party(metaclass=PoolMeta): @classmethod def _credit_limit_to_lock(cls): - return super(Party, cls)._credit_limit_to_lock() + [ + return super()._credit_limit_to_lock() + [ 'sale.sale', 'sale.line'] diff --git a/modules/sale_credit_limit/sale.py b/modules/sale_credit_limit/sale.py index bd9bd389a0..2e3769afec 100644 --- a/modules/sale_credit_limit/sale.py +++ b/modules/sale_credit_limit/sale.py @@ -27,7 +27,7 @@ class Sale(metaclass=PoolMeta): party = sale.invoice_party or sale.party party.check_credit_limit( sale.credit_limit_amount, sale.company, origin=sale) - super(Sale, cls).confirm(sales) + super().confirm(sales) class Line(metaclass=PoolMeta): diff --git a/modules/sale_extra/sale.py b/modules/sale_extra/sale.py index 4bfcede243..52204fbdb1 100644 --- a/modules/sale_extra/sale.py +++ b/modules/sale_extra/sale.py @@ -22,7 +22,7 @@ class Sale(metaclass=PoolMeta): pool = Pool() Line = pool.get('sale.line') - super(Sale, cls).quote(sales) + super().quote(sales) # State must be draft to add or delete lines # because extra must be set after to have correct amount diff --git a/modules/sale_gift_card/account.py b/modules/sale_gift_card/account.py index 6da82c93b8..656f62bc89 100644 --- a/modules/sale_gift_card/account.py +++ b/modules/sale_gift_card/account.py @@ -93,5 +93,5 @@ class InvoiceLine(metaclass=PoolMeta): @classmethod def _account_domain(cls, type_): - domain = super(InvoiceLine, cls)._account_domain(type_) + domain = super()._account_domain(type_) return domain + [('type.gift_card', '=', True)] diff --git a/modules/sale_invoice_grouping/configuration.py b/modules/sale_invoice_grouping/configuration.py index d9dde69f7f..896e2fa103 100644 --- a/modules/sale_invoice_grouping/configuration.py +++ b/modules/sale_invoice_grouping/configuration.py @@ -28,7 +28,7 @@ class Configuration(metaclass=PoolMeta): pool = Pool() if field == 'sale_invoice_grouping_method': return pool.get('sale.configuration.sale_method') - return super(Configuration, cls).multivalue_model(field) + return super().multivalue_model(field) class ConfigurationSaleMethod(metaclass=PoolMeta): diff --git a/modules/sale_invoice_grouping/sale.py b/modules/sale_invoice_grouping/sale.py index 9fedf47be8..63d166a2de 100644 --- a/modules/sale_invoice_grouping/sale.py +++ b/modules/sale_invoice_grouping/sale.py @@ -40,7 +40,7 @@ class Sale(metaclass=PoolMeta): def _get_invoice_sale(self): transaction = Transaction() context = transaction.context - invoice = super(Sale, self)._get_invoice_sale() + invoice = super()._get_invoice_sale() if (not context.get('skip_grouping', False) and self.invoice_grouping_method): with transaction.set_context(skip_grouping=True): diff --git a/modules/sale_opportunity/configuration.py b/modules/sale_opportunity/configuration.py index 87f4da65bc..eba8c9cd18 100644 --- a/modules/sale_opportunity/configuration.py +++ b/modules/sale_opportunity/configuration.py @@ -21,7 +21,7 @@ class Configuration(metaclass=PoolMeta): pool = Pool() if field == 'sale_opportunity_sequence': return pool.get('sale.configuration.sequence') - return super(Configuration, cls).multivalue_model(field) + return super().multivalue_model(field) @classmethod def default_sale_opportunity_sequence(cls, **pattern): diff --git a/modules/sale_opportunity/opportunity.py b/modules/sale_opportunity/opportunity.py index b4c9d5307e..c33730d2e6 100644 --- a/modules/sale_opportunity/opportunity.py +++ b/modules/sale_opportunity/opportunity.py @@ -136,7 +136,7 @@ class SaleOpportunity( table = cls.__table_handler__(module_name) currency_exists = table.column_exist('currency') - super(SaleOpportunity, cls).__register__(module_name) + super().__register__(module_name) # Migration from 5.0: drop required on description table.not_null_action('description', action='remove') @@ -154,7 +154,7 @@ class SaleOpportunity( def __setup__(cls): cls.number.search_unaccented = False cls.reference.search_unaccented = False - super(SaleOpportunity, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_indexes.update({ Index(t, (t.reference, Index.Similarity())), @@ -315,7 +315,7 @@ class SaleOpportunity( vals['number'] = config.get_multivalue( 'sale_opportunity_sequence', company=vals.get('company', default_company)).get() - return super(SaleOpportunity, cls).create(vlist) + return super().create(vlist) @classmethod def copy(cls, opportunities, default=None): @@ -326,7 +326,7 @@ class SaleOpportunity( default.setdefault('number', None) default.setdefault('sales', None) default.setdefault('converted_by') - return super(SaleOpportunity, cls).copy(opportunities, default=default) + return super().copy(opportunities, default=default) @fields.depends('party', 'amount', 'company') def on_change_party(self): @@ -383,7 +383,7 @@ class SaleOpportunity( raise AccessError( gettext('sale_opportunity.msg_opportunity_delete_cancel', opportunity=opportunity.rec_name)) - super(SaleOpportunity, cls).delete(opportunities) + super().delete(opportunities) @classmethod @ModelView.button diff --git a/modules/sale_opportunity/sale.py b/modules/sale_opportunity/sale.py index 8a260b5296..273a8ce45f 100644 --- a/modules/sale_opportunity/sale.py +++ b/modules/sale_opportunity/sale.py @@ -28,7 +28,7 @@ class Sale(metaclass=PoolMeta): @classmethod def _get_origin(cls): - return super(Sale, cls)._get_origin() + ['sale.opportunity'] + return super()._get_origin() + ['sale.opportunity'] @classmethod def write(cls, *args): @@ -52,29 +52,29 @@ class Sale(metaclass=PoolMeta): @classmethod @process_opportunity def delete(cls, sales): - super(Sale, cls).delete(sales) + super().delete(sales) @classmethod @process_opportunity def cancel(cls, sales): - super(Sale, cls).cancel(sales) + super().cancel(sales) @classmethod @process_opportunity def quote(cls, sales): - super(Sale, cls).quote(sales) + super().quote(sales) @classmethod @process_opportunity def confirm(cls, sales): - super(Sale, cls).confirm(sales) + super().confirm(sales) @classmethod @process_opportunity def proceed(cls, sales): - super(Sale, cls).proceed(sales) + super().proceed(sales) @classmethod @process_opportunity def do(cls, sales): - super(Sale, cls).do(sales) + super().do(sales) diff --git a/modules/sale_payment/account.py b/modules/sale_payment/account.py index b746947a92..74513a7635 100644 --- a/modules/sale_payment/account.py +++ b/modules/sale_payment/account.py @@ -40,7 +40,7 @@ class Payment(metaclass=PoolMeta): @classmethod def _get_origin(cls): - return super(Payment, cls)._get_origin() + ['sale.sale'] + return super()._get_origin() + ['sale.sale'] @fields.depends('origin') def on_change_origin(self): @@ -71,7 +71,7 @@ class Payment(metaclass=PoolMeta): @classmethod def create(cls, vlist): - payments = super(Payment, cls).create(vlist) + payments = super().create(vlist) cls.trigger_authorized([p for p in payments if p.is_authorized]) return payments @@ -79,7 +79,7 @@ class Payment(metaclass=PoolMeta): def write(cls, *args): payments = sum(args[0:None:2], []) unauthorized = {p for p in payments if not p.is_authorized} - super(Payment, cls).write(*args) + super().write(*args) authorized = {p for p in payments if p.is_authorized} cls.trigger_authorized(cls.browse(unauthorized & authorized)) diff --git a/modules/sale_payment/sale.py b/modules/sale_payment/sale.py index 0cfab9a35f..de022ff556 100644 --- a/modules/sale_payment/sale.py +++ b/modules/sale_payment/sale.py @@ -45,14 +45,14 @@ class Sale(metaclass=PoolMeta): @Workflow.transition('cancelled') @no_payment('sale_payment.msg_sale_cancel_payment') def cancel(cls, sales): - super(Sale, cls).cancel(sales) + super().cancel(sales) @classmethod @ModelView.button @Workflow.transition('draft') @no_payment('sale_payment.msg_sale_draft_payment') def draft(cls, sales): - super(Sale, cls).draft(sales) + super().draft(sales) @classmethod def copy(cls, sales, default=None): @@ -61,7 +61,7 @@ class Sale(metaclass=PoolMeta): else: default = default.copy() default.setdefault('payments', None) - return super(Sale, cls).copy(sales, default=default) + return super().copy(sales, default=default) @property def payment_amount_authorized(self): diff --git a/modules/sale_point/product.py b/modules/sale_point/product.py index 3e29d41d0e..35b7f162b2 100644 --- a/modules/sale_point/product.py +++ b/modules/sale_point/product.py @@ -24,7 +24,7 @@ class Template(metaclass=PoolMeta): pool = Pool() if field == 'gross_price': return pool.get('product.gross_price') - return super(Template, cls).multivalue_model(field) + return super().multivalue_model(field) @fields.depends( 'gross_price', 'account_category', methods=['customer_taxes_used']) diff --git a/modules/sale_point/stock.py b/modules/sale_point/stock.py index 498dd35364..ca30659e92 100644 --- a/modules/sale_point/stock.py +++ b/modules/sale_point/stock.py @@ -8,4 +8,4 @@ class Move(metaclass=PoolMeta): @classmethod def _get_origin(cls): - return super(Move, cls)._get_origin() + ['sale.point.sale.line'] + return super()._get_origin() + ['sale.point.sale.line'] diff --git a/modules/sale_price_list/sale.py b/modules/sale_price_list/sale.py index aadd048380..17f81e249b 100644 --- a/modules/sale_price_list/sale.py +++ b/modules/sale_price_list/sale.py @@ -17,7 +17,7 @@ class Sale(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Sale, cls).__setup__() + super().__setup__() cls.party.states['readonly'] = (cls.party.states['readonly'] | Eval('lines', [0])) cls.lines.states['readonly'] = (cls.lines.states['readonly'] @@ -27,7 +27,7 @@ class Sale(metaclass=PoolMeta): def on_change_party(self): pool = Pool() Configuration = pool.get('sale.configuration') - super(Sale, self).on_change_party() + super().on_change_party() if self.party and self.party.sale_price_list: self.price_list = self.party.sale_price_list else: diff --git a/modules/sale_promotion/sale.py b/modules/sale_promotion/sale.py index ca8168dee0..c1058926ba 100644 --- a/modules/sale_promotion/sale.py +++ b/modules/sale_promotion/sale.py @@ -64,7 +64,7 @@ class Sale(metaclass=PoolMeta): @ModelView.button @Workflow.transition('draft') def draft(cls, sales): - super(Sale, cls).draft(sales) + super().draft(sales) # Reset to draft unit price for sale in sales: sale.unapply_promotion() @@ -74,7 +74,7 @@ class Sale(metaclass=PoolMeta): @ModelView.button @Workflow.transition('quotation') def quote(cls, sales): - super(Sale, cls).quote(sales) + super().quote(sales) # Store draft unit price before changing it for sale in sales: sale.apply_promotion() diff --git a/modules/sale_promotion_coupon/sale.py b/modules/sale_promotion_coupon/sale.py index 5e1a1278bb..8fa2a0bf20 100644 --- a/modules/sale_promotion_coupon/sale.py +++ b/modules/sale_promotion_coupon/sale.py @@ -31,7 +31,7 @@ class Promotion(metaclass=PoolMeta): ]) def get_pattern(self, sale): - pattern = super(Promotion, self).get_pattern(sale) + pattern = super().get_pattern(sale) if sale.coupons: pattern['coupons'] = [c.coupon.id for c in sale.coupons] return pattern @@ -42,7 +42,7 @@ class Promotion(metaclass=PoolMeta): coupons = pattern.pop('coupons', []) if not set(coupons).intersection({c.id for c in self.coupons}): return False - return super(Promotion, self).match(pattern) + return super().match(pattern) @classmethod def write(cls, *args): @@ -166,7 +166,7 @@ class PromotionCouponNumber(DeactivableMixin, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(PromotionCouponNumber, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_constraints += [ ('dates_number_overlap', @@ -389,7 +389,7 @@ class Sale(metaclass=PoolMeta): if sale.coupons: sale.coupons = [] cls.save(sales) - super(Sale, cls).cancel(sales) + super().cancel(sales) class Sale_PromotionCouponNumber(ModelSQL): diff --git a/modules/sale_shipment_cost/sale.py b/modules/sale_shipment_cost/sale.py index 3ff1d5c923..79e43071ff 100644 --- a/modules/sale_shipment_cost/sale.py +++ b/modules/sale_shipment_cost/sale.py @@ -36,7 +36,7 @@ class Configuration(metaclass=PoolMeta): pool = Pool() if field == 'sale_shipment_cost_method': return pool.get('sale.configuration.sale_method') - return super(Configuration, cls).multivalue_model(field) + return super().multivalue_model(field) @classmethod def default_sale_shipment_cost_method(cls, **pattern): @@ -153,7 +153,7 @@ class Sale(metaclass=PoolMeta): @fields.depends('carrier', methods=['on_change_with_available_carriers']) def on_change_party(self): - super(Sale, self).on_change_party() + super().on_change_party() if self.party and self.party.sale_shipment_cost_method != 'default': self.shipment_cost_method = self.party.sale_shipment_cost_method else: @@ -170,7 +170,7 @@ class Sale(metaclass=PoolMeta): 'carrier', 'shipment_cost_method', methods=['on_change_with_available_carriers']) def on_change_shipment_party(self): - super(Sale, self).on_change_shipment_party() + super().on_change_shipment_party() self.available_carriers = self.on_change_with_available_carriers() if not self.available_carriers: self.carrier = None @@ -187,7 +187,7 @@ class Sale(metaclass=PoolMeta): methods=['on_change_with_available_carriers']) def on_change_shipment_address(self): try: - super_on_change = super(Sale, self).on_change_shipment_address + super_on_change = super().on_change_shipment_address except AttributeError: pass else: @@ -225,7 +225,7 @@ class Sale(metaclass=PoolMeta): removed.extend(sale.set_shipment_cost()) Line.delete(removed) cls.save(sales) - super(Sale, cls).quote(sales) + super().quote(sales) @classmethod @ModelView.button @@ -237,7 +237,7 @@ class Sale(metaclass=PoolMeta): gettext('sale_shipment_cost.msg_sale_invalid_carrier', sale=sale.rec_name, carrier=sale.carrier.rec_name)) - super(Sale, cls).confirm(sales) + super().confirm(sales) @classmethod @ModelView.button @@ -480,7 +480,7 @@ class ReturnSale(metaclass=PoolMeta): pool = Pool() Sale = pool.get('sale.sale') SaleLine = pool.get('sale.line') - action, data = super(ReturnSale, self).do_return_(action) + action, data = super().do_return_(action) return_sales = Sale.browse(data['res_id']) lines = [] @@ -508,7 +508,7 @@ class Promotion(metaclass=PoolMeta): return False def get_context_formula(self, sale_line): - context = super(Promotion, self).get_context_formula(sale_line) + context = super().get_context_formula(sale_line) if sale_line and sale_line.shipment_cost is not None: context['names']['unit_price'] = sale_line.shipment_cost return context diff --git a/modules/sale_shipment_grouping/configuration.py b/modules/sale_shipment_grouping/configuration.py index 81410bd6a5..05197a2187 100644 --- a/modules/sale_shipment_grouping/configuration.py +++ b/modules/sale_shipment_grouping/configuration.py @@ -28,7 +28,7 @@ class Configuration(metaclass=PoolMeta): pool = Pool() if field == 'sale_shipment_grouping_method': return pool.get('sale.configuration.sale_method') - return super(Configuration, cls).multivalue_model(field) + return super().multivalue_model(field) class ConfigurationSaleMethod(metaclass=PoolMeta): diff --git a/modules/sale_shipment_grouping/sale.py b/modules/sale_shipment_grouping/sale.py index c1a7018ab3..886b14cac2 100644 --- a/modules/sale_shipment_grouping/sale.py +++ b/modules/sale_shipment_grouping/sale.py @@ -51,7 +51,7 @@ class Sale(metaclass=PoolMeta): def _get_shipment_sale(self, Shipment, values): transaction = Transaction() context = transaction.context - shipment = super(Sale, self)._get_shipment_sale(Shipment, values) + shipment = super()._get_shipment_sale(Shipment, values) if (not context.get('skip_grouping', False) and self.shipment_grouping_method): with transaction.set_context(skip_grouping=True): diff --git a/modules/sale_shipment_tolerance/configuration.py b/modules/sale_shipment_tolerance/configuration.py index e84420dfe6..233b927e20 100644 --- a/modules/sale_shipment_tolerance/configuration.py +++ b/modules/sale_shipment_tolerance/configuration.py @@ -35,7 +35,7 @@ class Configuration(metaclass=PoolMeta): 'sale_under_shipment_tolerance', 'sale_over_shipment_tolerance'}: return pool.get('sale.configuration.shipment_tolerance') - return super(Configuration, cls).multivalue_model(field) + return super().multivalue_model(field) default_sale_under_shipment_tolerance = default_func( 'sale_under_shipment_tolerance') @@ -50,7 +50,7 @@ class ConfigurationShipmentTolerance(ModelSQL, ValueMixin): @classmethod def __setup__(cls): - super(ConfigurationShipmentTolerance, cls).__setup__() + super().__setup__() cls.sale_under_shipment_tolerance.domain = [ 'OR', ('sale_under_shipment_tolerance', '=', None), diff --git a/modules/sale_shipment_tolerance/stock.py b/modules/sale_shipment_tolerance/stock.py index dc7d125455..7bfc01d777 100644 --- a/modules/sale_shipment_tolerance/stock.py +++ b/modules/sale_shipment_tolerance/stock.py @@ -19,12 +19,12 @@ class Move(metaclass=PoolMeta): @ModelView.button @Workflow.transition('done') def do(cls, moves): - super(Move, cls).do(moves) + super().do(moves) cls.check_over_shipment(moves) @classmethod @ModelView.button @Workflow.transition('assigned') def assign(cls, moves): - super(Move, cls).assign(moves) + super().assign(moves) cls.check_over_shipment(moves) diff --git a/modules/sale_stock_quantity/sale.py b/modules/sale_stock_quantity/sale.py index 7f55756d0a..0e8738c994 100644 --- a/modules/sale_stock_quantity/sale.py +++ b/modules/sale_stock_quantity/sale.py @@ -24,7 +24,7 @@ class Sale(metaclass=PoolMeta): def quote(cls, sales): # Check before setting the number cls._check_stock_quantity(sales) - super(Sale, cls).quote(sales) + super().quote(sales) @classmethod @ModelView.button @@ -32,7 +32,7 @@ class Sale(metaclass=PoolMeta): def confirm(cls, sales): # Check before queueing the process task cls._check_stock_quantity(sales) - super(Sale, cls).confirm(sales) + super().confirm(sales) @classmethod def _check_stock_quantity(cls, sales): diff --git a/modules/sale_subscription/configuration.py b/modules/sale_subscription/configuration.py index 9831ddde3e..21a9f2f474 100644 --- a/modules/sale_subscription/configuration.py +++ b/modules/sale_subscription/configuration.py @@ -22,7 +22,7 @@ class Configuration(metaclass=PoolMeta): pool = Pool() if field == 'subscription_sequence': return pool.get('sale.configuration.sequence') - return super(Configuration, cls).multivalue_model(field) + return super().multivalue_model(field) @classmethod def default_subscription_sequence(cls, **pattern): diff --git a/modules/sale_subscription/invoice.py b/modules/sale_subscription/invoice.py index 07c8b6ae14..77e9906bd6 100644 --- a/modules/sale_subscription/invoice.py +++ b/modules/sale_subscription/invoice.py @@ -10,13 +10,13 @@ class InvoiceLine(metaclass=PoolMeta): def origin_name(self): pool = Pool() SubscriptionLine = pool.get('sale.subscription.line') - name = super(InvoiceLine, self).origin_name + name = super().origin_name if isinstance(self.origin, SubscriptionLine) and self.origin.id >= 0: name = self.origin.subscription.rec_name return name @classmethod def _get_origin(cls): - models = super(InvoiceLine, cls)._get_origin() + models = super()._get_origin() models.append('sale.subscription.line') return models diff --git a/modules/sale_subscription/subscription.py b/modules/sale_subscription/subscription.py index 0afdd0c2a6..b3aed444bc 100644 --- a/modules/sale_subscription/subscription.py +++ b/modules/sale_subscription/subscription.py @@ -162,7 +162,7 @@ class Subscription(Workflow, ModelSQL, ModelView): def __setup__(cls): cls.number.search_unaccented = False cls.reference.search_unaccented = False - super(Subscription, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_indexes.update({ Index(t, (t.reference, Index.Similarity())), @@ -350,7 +350,7 @@ class Subscription(Workflow, ModelSQL, ModelView): default.setdefault('next_invoice_date', None) default.setdefault('quoted_by') default.setdefault('run_by') - return super(Subscription, cls).copy(subscriptions, default=default) + return super().copy(subscriptions, default=default) @classmethod def view_attributes(cls): @@ -618,7 +618,7 @@ class Line(sequence_ordered(), ModelSQL, ModelView): cursor = transaction.connection.cursor() table = cls.__table__() - super(Line, cls).__register__(module) + super().__register__(module) table_h = cls.__table_handler__(module) # Migration from 5.2: replace consumed by consumed_until @@ -866,7 +866,7 @@ class Line(sequence_ordered(), ModelSQL, ModelView): default = default.copy() default.setdefault('next_consumption_date', None) default.setdefault('consumed_until', None) - return super(Line, cls).copy(lines, default=default) + return super().copy(lines, default=default) class LineConsumption(ModelSQL, ModelView): @@ -883,7 +883,7 @@ class LineConsumption(ModelSQL, ModelView): @classmethod def __setup__(cls): - super(LineConsumption, cls).__setup__() + super().__setup__() cls.__access__.add('line') cls._order.insert(0, ('date', 'DESC')) @@ -898,7 +898,7 @@ class LineConsumption(ModelSQL, ModelView): else: default = default.copy() default.setdefault('invoice_line', None) - return super(LineConsumption, cls).copy(consumptions, default=default) + return super().copy(consumptions, default=default) @classmethod def write(cls, *args): @@ -909,7 +909,7 @@ class LineConsumption(ModelSQL, ModelView): gettext('sale_subscription' '.msg_consumption_modify_invoiced', consumption=consumption.rec_name)) - super(LineConsumption, cls).write(*args) + super().write(*args) @classmethod def delete(cls, consumptions): @@ -919,7 +919,7 @@ class LineConsumption(ModelSQL, ModelView): gettext('sale_subscription' '.msg_consumption_modify_invoiced', consumption=consumption.rec_name)) - super(LineConsumption, cls).delete(consumptions) + super().delete(consumptions) @classmethod def get_invoice_lines(cls, consumptions, invoice): diff --git a/modules/sale_subscription_asset/sale.py b/modules/sale_subscription_asset/sale.py index f15b46ee4f..5de65d20e5 100644 --- a/modules/sale_subscription_asset/sale.py +++ b/modules/sale_subscription_asset/sale.py @@ -55,7 +55,7 @@ class Subscription(metaclass=PoolMeta): sub_lines = [l for s in subscriptions for l in s.lines if l.asset_lot] SubscriptionLine.write(sub_lines, {'asset_lot': None}) - super(Subscription, cls).cancel(subscriptions) + super().cancel(subscriptions) @classmethod @ModelView.button @@ -63,7 +63,7 @@ class Subscription(metaclass=PoolMeta): def run(cls, subscriptions): pool = Pool() Line = pool.get('sale.subscription.line') - super(Subscription, cls).run(subscriptions) + super().run(subscriptions) lines = [l for s in subscriptions for l in s.lines] Line._validate(lines, ['asset_lot']) @@ -87,7 +87,7 @@ class SubscriptionLine(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(SubscriptionLine, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_constraints += [ ('dates_asset_lot_overlap', @@ -118,4 +118,4 @@ class SubscriptionLine(metaclass=PoolMeta): else: default = default.copy() default.setdefault('asset_lot') - return super(SubscriptionLine, cls).copy(lines, default) + return super().copy(lines, default) diff --git a/modules/sale_supply/sale.py b/modules/sale_supply/sale.py index 2a33481b91..d12bf3aa46 100644 --- a/modules/sale_supply/sale.py +++ b/modules/sale_supply/sale.py @@ -15,7 +15,7 @@ class Sale(metaclass=PoolMeta): __name__ = 'sale.sale' def is_done(self): - done = super(Sale, self).is_done() + done = super().is_done() if done: if any(l.supply_state == 'requested' for l in self.lines if l.supply_on_sale): diff --git a/modules/sale_supply_drop_shipment/purchase.py b/modules/sale_supply_drop_shipment/purchase.py index 242c3d211b..843d57471c 100644 --- a/modules/sale_supply_drop_shipment/purchase.py +++ b/modules/sale_supply_drop_shipment/purchase.py @@ -106,7 +106,7 @@ class Purchase(metaclass=PoolMeta): @property def delivery_full_address(self): - address = super(Purchase, self).delivery_full_address + address = super().delivery_full_address if self.customer and self.delivery_address: address = self.delivery_address.full_address return address @@ -115,7 +115,7 @@ class Purchase(metaclass=PoolMeta): search_drop_shipments = search_shipments_returns('stock.shipment.drop') def check_for_quotation(self): - super(Purchase, self).check_for_quotation() + super().check_for_quotation() if self.customer and not self.delivery_address: raise RequiredValidationError( gettext('sale_supply_drop_shipment' diff --git a/modules/sale_supply_drop_shipment/stock.py b/modules/sale_supply_drop_shipment/stock.py index 7fd97850dc..91de287abf 100644 --- a/modules/sale_supply_drop_shipment/stock.py +++ b/modules/sale_supply_drop_shipment/stock.py @@ -36,7 +36,7 @@ class Configuration(metaclass=PoolMeta): pool = Pool() if field == 'shipment_drop_sequence': return pool.get('stock.configuration.sequence') - return super(Configuration, cls).multivalue_model(field) + return super().multivalue_model(field) @classmethod def default_shipment_drop_sequence(cls, **pattern): @@ -152,7 +152,7 @@ class ShipmentDrop( if table_h.column_exist('code'): table_h.column_rename('code', 'number') - super(ShipmentDrop, cls).__register__(module_name) + super().__register__(module_name) # Migration from 5.6: rename state cancel to cancelled cursor.execute(*table.update( @@ -161,7 +161,7 @@ class ShipmentDrop( @classmethod def __setup__(cls): - super(ShipmentDrop, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_indexes.update({ Index( @@ -271,13 +271,13 @@ class ShipmentDrop( values['number'] = config.get_multivalue( 'shipment_drop_sequence', company=values.get('company', default_company)).get() - shipments = super(ShipmentDrop, cls).create(vlist) + shipments = super().create(vlist) cls._set_move_planned_date(shipments) return shipments @classmethod def write(cls, *args): - super(ShipmentDrop, cls).write(*args) + super().write(*args) cls._set_move_planned_date(sum(args[::2], [])) @classmethod @@ -289,7 +289,7 @@ class ShipmentDrop( default.setdefault('moves', None) default.setdefault('supplier_moves', None) default.setdefault('customer_moves', None) - return super(ShipmentDrop, cls).copy(shipments, default=default) + return super().copy(shipments, default=default) @classmethod def delete(cls, shipments): @@ -305,7 +305,7 @@ class ShipmentDrop( shipment=shipment.rec_name, )) Move.delete([m for s in shipments for m in s.supplier_moves]) - super(ShipmentDrop, cls).delete(shipments) + super().delete(shipments) @classmethod @ModelView.button @@ -612,7 +612,7 @@ class Move(metaclass=PoolMeta): @classmethod def _get_shipment(cls): - models = super(Move, cls)._get_shipment() + models = super()._get_shipment() models.append('stock.shipment.drop') return models diff --git a/modules/stock/configuration.py b/modules/stock/configuration.py index 62d4fb6e3d..3b362f83a3 100644 --- a/modules/stock/configuration.py +++ b/modules/stock/configuration.py @@ -111,7 +111,7 @@ class Configuration( return pool.get('stock.configuration.sequence') if field == 'shipment_internal_transit': return pool.get('stock.configuration.location') - return super(Configuration, cls).multivalue_model(field) + return super().multivalue_model(field) default_shipment_in_sequence = default_func('shipment_in_sequence') default_shipment_in_return_sequence = default_func( diff --git a/modules/stock/inventory.py b/modules/stock/inventory.py index fdf8227426..3510e4f103 100644 --- a/modules/stock/inventory.py +++ b/modules/stock/inventory.py @@ -68,7 +68,7 @@ class Inventory(Workflow, ModelSQL, ModelView): @classmethod def __setup__(cls): cls.number.search_unaccented = False - super(Inventory, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_indexes.add( Index( @@ -101,7 +101,7 @@ class Inventory(Workflow, ModelSQL, ModelView): @classmethod def __register__(cls, module_name): - super(Inventory, cls).__register__(module_name) + super().__register__(module_name) cursor = Transaction().connection.cursor() table = cls.__table_handler__(module_name) @@ -172,7 +172,7 @@ class Inventory(Workflow, ModelSQL, ModelView): raise AccessError( gettext('stock.msg_inventory_delete_cancel', inventory=inventory.rec_name)) - super(Inventory, cls).delete(inventories) + super().delete(inventories) @classmethod @ModelView.button @@ -242,7 +242,7 @@ class Inventory(Workflow, ModelSQL, ModelView): values['number'] = config.get_multivalue( 'inventory_sequence', company=values.get('company', default_company)).get() - inventories = super(Inventory, cls).create(vlist) + inventories = super().create(vlist) cls.complete_lines(inventories, fill=False) return inventories @@ -406,7 +406,7 @@ class InventoryLine(ModelSQL, ModelView): @classmethod def __setup__(cls): - super(InventoryLine, cls).__setup__() + super().__setup__() cls.__access__.add('inventory') t = cls.__table__() cls._sql_constraints += [ @@ -537,7 +537,7 @@ class InventoryLine(ModelSQL, ModelView): gettext('stock.msg_inventory_line_delete_cancel', line=line.rec_name, inventory=line.inventory.rec_name)) - super(InventoryLine, cls).delete(lines) + super().delete(lines) class Count(Wizard): diff --git a/modules/stock/location.py b/modules/stock/location.py index c8ef715593..10738d8230 100644 --- a/modules/stock/location.py +++ b/modules/stock/location.py @@ -194,7 +194,7 @@ class Location(DeactivableMixin, tree(), ModelSQL, ModelView): @classmethod def __setup__(cls): cls.code.search_unaccented = False - super(Location, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_indexes.update({ Index(t, (t.code, Index.Similarity())), @@ -546,14 +546,14 @@ class Location(DeactivableMixin, tree(), ModelSQL, ModelView): @classmethod def create(cls, vlist): - locations = super(Location, cls).create(vlist) + locations = super().create(vlist) cls._set_warehouse_parent(locations) cls._default_warehouse_cache.clear() return locations @classmethod def write(cls, *args): - super(Location, cls).write(*args) + super().write(*args) locations = sum(args[::2], []) cls._set_warehouse_parent(locations) cls._default_warehouse_cache.clear() @@ -614,7 +614,7 @@ class Location(DeactivableMixin, tree(), ModelSQL, ModelView): wh_default['storage_location'] = None wh_default['childs'] = None - new_location, = super(Location, cls).copy([location], + new_location, = super().copy([location], default=wh_default) with Transaction().set_context( @@ -630,7 +630,7 @@ class Location(DeactivableMixin, tree(), ModelSQL, ModelView): 'type': 'warehouse', }) else: - new_location, = super(Location, cls).copy([location], + new_location, = super().copy([location], default=default) warehouse_locations = Transaction().context.get( 'cp_warehouse_locations') or {} diff --git a/modules/stock/move.py b/modules/stock/move.py index ef9336fab8..8478ce1dda 100644 --- a/modules/stock/move.py +++ b/modules/stock/move.py @@ -391,7 +391,7 @@ class Move(Workflow, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(Move, cls).__setup__() + super().__setup__() cls.product.domain = [ If(Bool(Eval('product_uom_category')) & ~Eval('state').in_(['done', 'cancelled']), @@ -488,7 +488,7 @@ class Move(Workflow, ModelSQL, ModelView): and not table_h.column_exist('unit')): table_h.column_rename('uom', 'unit') - super(Move, cls).__register__(module_name) + super().__register__(module_name) # Migration from 5.6: rename state cancel to cancelled cursor.execute(*sql_table.update( @@ -1008,7 +1008,7 @@ class Move(Workflow, ModelSQL, ModelView): vals['internal_quantity'] = internal_quantity if context.get('_product_replacement', True): vals['product'] = product.replacement.id - moves = super(Move, cls).create(vlist) + moves = super().create(vlist) cls.check_period_closed(moves) return moves @@ -1030,7 +1030,7 @@ class Move(Workflow, ModelSQL, ModelView): gettext('stock.msg_move_modify_%s' % move.state, move=move.rec_name)) - super(Move, cls).write(*args) + super().write(*args) to_write = [] unit_price_update = [] @@ -1065,7 +1065,7 @@ class Move(Workflow, ModelSQL, ModelView): raise AccessError( gettext('stock.msg_move_delete_draft_cancel', move=move.rec_name)) - super(Move, cls).delete(moves) + super().delete(moves) @staticmethod def check_origin_types(): diff --git a/modules/stock/period.py b/modules/stock/period.py index 998fc90518..6d882c78e9 100644 --- a/modules/stock/period.py +++ b/modules/stock/period.py @@ -33,7 +33,7 @@ class Period(Workflow, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(Period, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_indexes.add( Index( diff --git a/modules/stock/product.py b/modules/stock/product.py index 3818cb679a..7cf3e96715 100644 --- a/modules/stock/product.py +++ b/modules/stock/product.py @@ -188,7 +188,7 @@ class Template(metaclass=PoolMeta): @check_no_move @check_no_stock_if_inactive def write(cls, *args): - super(Template, cls).write(*args) + super().write(*args) @classmethod def recompute_cost_price(cls, templates, start=None): @@ -265,7 +265,7 @@ class Product(StockMixin, object, metaclass=PoolMeta): @check_no_move @check_no_stock_if_inactive def write(cls, *args): - super(Product, cls).write(*args) + super().write(*args) def can_be_deactivated(self): pool = Pool() @@ -661,7 +661,7 @@ class ProductQuantitiesByWarehouse(ModelSQL, ModelView): @classmethod def __setup__(cls): - super(ProductQuantitiesByWarehouse, cls).__setup__() + super().__setup__() cls._order.insert(0, ('date', 'ASC')) @classmethod diff --git a/modules/stock/res.py b/modules/stock/res.py index 8d9902cb54..169e0dbf87 100644 --- a/modules/stock/res.py +++ b/modules/stock/res.py @@ -15,7 +15,7 @@ class User(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(User, cls).__setup__() + super().__setup__() cls._context_fields.insert(0, 'warehouse') @classmethod diff --git a/modules/stock/shipment.py b/modules/stock/shipment.py index aa09d8794f..1ff91ade7d 100644 --- a/modules/stock/shipment.py +++ b/modules/stock/shipment.py @@ -450,7 +450,7 @@ class ShipmentIn( @classmethod def __setup__(cls): - super(ShipmentIn, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_indexes.update({ Index( @@ -496,7 +496,7 @@ class ShipmentIn( sql_table = cls.__table__() location = Location.__table__() - super(ShipmentIn, cls).__register__(module_name) + super().__register__(module_name) # Migration from 5.6: rename state cancel to cancelled cursor.execute(*sql_table.update( @@ -626,14 +626,14 @@ class ShipmentIn( @classmethod def create(cls, vlist): - shipments = super(ShipmentIn, cls).create(vlist) + shipments = super().create(vlist) cls.set_number(shipments) cls._set_move_planned_date(shipments) return shipments @classmethod def write(cls, *args): - super(ShipmentIn, cls).write(*args) + super().write(*args) cls._set_move_planned_date(sum(args[::2], [])) @classmethod @@ -645,7 +645,7 @@ class ShipmentIn( default.setdefault('moves.origin', None) default.setdefault('received_by', None) default.setdefault('done_by', None) - return super(ShipmentIn, cls).copy(shipments, default=default) + return super().copy(shipments, default=default) def _get_inventory_move(self, incoming_move): 'Return inventory move for the incoming move' @@ -698,7 +698,7 @@ class ShipmentIn( gettext('stock.msg_shipment_delete_cancel', shipment=shipment.rec_name)) Move.delete([m for s in shipments for m in s.moves]) - super(ShipmentIn, cls).delete(shipments) + super().delete(shipments) @classmethod @ModelView.button @@ -857,7 +857,7 @@ class ShipmentInReturn(ShipmentAssignMixin, Workflow, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(ShipmentInReturn, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_indexes.update({ Index( @@ -918,7 +918,7 @@ class ShipmentInReturn(ShipmentAssignMixin, Workflow, ModelSQL, ModelView): cursor = Transaction().connection.cursor() sql_table = cls.__table__() - super(ShipmentInReturn, cls).__register__(module_name) + super().__register__(module_name) # Migration from 5.6: rename state cancel to cancelled cursor.execute(*sql_table.update( @@ -974,13 +974,13 @@ class ShipmentInReturn(ShipmentAssignMixin, Workflow, ModelSQL, ModelView): @classmethod def create(cls, vlist): - shipments = super(ShipmentInReturn, cls).create(vlist) + shipments = super().create(vlist) cls._set_move_planned_date(shipments) return shipments @classmethod def write(cls, *args): - super(ShipmentInReturn, cls).write(*args) + super().write(*args) cls._set_move_planned_date(sum(args[::2], [])) @classmethod @@ -994,7 +994,7 @@ class ShipmentInReturn(ShipmentAssignMixin, Workflow, ModelSQL, ModelView): gettext('stock.msg_shipment_delete_cancel', shipment=shipment.rec_name)) Move.delete([m for s in shipments for m in s.moves]) - super(ShipmentInReturn, cls).delete(shipments) + super().delete(shipments) @classmethod def copy(cls, shipments, default=None): @@ -1005,7 +1005,7 @@ class ShipmentInReturn(ShipmentAssignMixin, Workflow, ModelSQL, ModelView): default.setdefault('moves.origin', None) default.setdefault('assigned_by', None) default.setdefault('done_by', None) - return super(ShipmentInReturn, cls).copy(shipments, default=default) + return super().copy(shipments, default=default) @classmethod @ModelView.button @@ -1277,7 +1277,7 @@ class ShipmentOut( @classmethod def __setup__(cls): - super(ShipmentOut, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_indexes.update({ Index( @@ -1385,7 +1385,7 @@ class ShipmentOut( if table.column_exist('assigned_by'): table.column_rename('assigned_by', 'picked_by') - super(ShipmentOut, cls).__register__(module_name) + super().__register__(module_name) # Migration from 5.6: rename state cancel to cancelled cursor.execute(*sql_table.update( @@ -1767,13 +1767,13 @@ class ShipmentOut( @classmethod def create(cls, vlist): - shipments = super(ShipmentOut, cls).create(vlist) + shipments = super().create(vlist) cls._set_move_planned_date(shipments) return shipments @classmethod def write(cls, *args): - super(ShipmentOut, cls).write(*args) + super().write(*args) cls._set_move_planned_date(sum(args[::2], [])) @classmethod @@ -1786,7 +1786,7 @@ class ShipmentOut( default.setdefault('picked_by', None) default.setdefault('packed_by', None) default.setdefault('done_by', None) - return super(ShipmentOut, cls).copy(shipments, default=default) + return super().copy(shipments, default=default) @classmethod def delete(cls, shipments): @@ -1799,7 +1799,7 @@ class ShipmentOut( gettext('stock.msg_shipment_delete_cancel', shipment=shipment.rec_name)) Move.delete([m for s in shipments for m in s.moves]) - super(ShipmentOut, cls).delete(shipments) + super().delete(shipments) @classmethod @ModelView.button_action('stock.wizard_shipment_out_assign') @@ -1985,7 +1985,7 @@ class ShipmentOutReturn( @classmethod def __setup__(cls): - super(ShipmentOutReturn, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_indexes.update({ Index( @@ -2033,7 +2033,7 @@ class ShipmentOutReturn( # Migration from 6.4: rename delivery_address to contact_address table.column_rename('delivery_address', 'contact_address') - super(ShipmentOutReturn, cls).__register__(module_name) + super().__register__(module_name) # Migration from 5.6: rename state cancel to cancelled cursor.execute(*sql_table.update( @@ -2156,14 +2156,14 @@ class ShipmentOutReturn( @classmethod def create(cls, vlist): - shipments = super(ShipmentOutReturn, cls).create(vlist) + shipments = super().create(vlist) cls.set_number(shipments) cls._set_move_planned_date(shipments) return shipments @classmethod def write(cls, *args): - super(ShipmentOutReturn, cls).write(*args) + super().write(*args) cls._set_move_planned_date(sum(args[::2], [])) @classmethod @@ -2174,7 +2174,7 @@ class ShipmentOutReturn( default.setdefault('moves.origin', None) default.setdefault('received_by', None) default.setdefault('done_by', None) - return super(ShipmentOutReturn, cls).copy(shipments, default=default) + return super().copy(shipments, default=default) @classmethod def delete(cls, shipments): @@ -2187,7 +2187,7 @@ class ShipmentOutReturn( gettext('stock.msg_shipment_delete_cancel', shipment=shipment.rec_name)) Move.delete([m for s in shipments for m in s.moves]) - super(ShipmentOutReturn, cls).delete(shipments) + super().delete(shipments) @classmethod @ModelView.button @@ -2476,7 +2476,7 @@ class ShipmentInternal( @classmethod def __setup__(cls): - super(ShipmentInternal, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_indexes.update({ Index( @@ -2562,7 +2562,7 @@ class ShipmentInternal( cursor = Transaction().connection.cursor() sql_table = cls.__table__() - super(ShipmentInternal, cls).__register__(module_name) + super().__register__(module_name) # Migration from 5.6: rename state cancel to cancelled cursor.execute(*sql_table.update( [sql_table.state], ['cancelled'], @@ -2676,7 +2676,7 @@ class ShipmentInternal( gettext('stock.msg_shipment_delete_cancel', shipment=shipment.rec_name)) Move.delete([m for s in shipments for m in s.moves]) - super(ShipmentInternal, cls).delete(shipments) + super().delete(shipments) @classmethod def copy(cls, shipments, default=None): @@ -3124,7 +3124,7 @@ class DeliveryNote(ShipmentReport): @classmethod def execute(cls, ids, data): with Transaction().set_context(address_with_party=False): - return super(DeliveryNote, cls).execute(ids, data) + return super().execute(ids, data) @classmethod def moves(cls, shipment): diff --git a/modules/stock_consignment/account.py b/modules/stock_consignment/account.py index 142e566440..d962205357 100644 --- a/modules/stock_consignment/account.py +++ b/modules/stock_consignment/account.py @@ -10,7 +10,7 @@ class InvoiceLine(metaclass=PoolMeta): def origin_name(self): pool = Pool() Move = pool.get('stock.move') - name = super(InvoiceLine, self).origin_name + name = super().origin_name if (isinstance(self.origin, Move) and self.origin.id >= 0 and self.origin.shipment): @@ -19,4 +19,4 @@ class InvoiceLine(metaclass=PoolMeta): @classmethod def _get_origin(cls): - return super(InvoiceLine, cls)._get_origin() + ['stock.move'] + return super()._get_origin() + ['stock.move'] diff --git a/modules/stock_consignment/stock.py b/modules/stock_consignment/stock.py index 839095202e..6ccd861d73 100644 --- a/modules/stock_consignment/stock.py +++ b/modules/stock_consignment/stock.py @@ -26,7 +26,7 @@ class Location(metaclass=PoolMeta): @classmethod def _parent_domain(cls): - domain = super(Location, cls)._parent_domain() + domain = super()._parent_domain() domain['supplier'].append('storage') domain['storage'].append('customer') return domain @@ -49,7 +49,7 @@ class LocationLeadTime(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(LocationLeadTime, cls).__setup__() + super().__setup__() cls.warehouse_to.domain = ['OR', cls.warehouse_to.domain, ('type', '=', 'storage'), @@ -147,11 +147,11 @@ class Move(metaclass=PoolMeta): @classmethod def _get_origin(cls): - return super(Move, cls)._get_origin() + ['account.invoice.line'] + return super()._get_origin() + ['account.invoice.line'] @fields.depends('from_location') def on_change_with_assignation_required(self, name=None): - required = super(Move, self).on_change_with_assignation_required( + required = super().on_change_with_assignation_required( name=name) if self.from_location: if (self.quantity @@ -283,28 +283,28 @@ class Move(metaclass=PoolMeta): @Workflow.transition('draft') @unset_origin_consignment('draft') def draft(cls, moves): - super(Move, cls).draft(moves) + super().draft(moves) @classmethod @ModelView.button @Workflow.transition('assigned') @set_origin_consignment('assigned') def assign(cls, moves): - super(Move, cls).assign(moves) + super().assign(moves) @classmethod @ModelView.button @Workflow.transition('done') @set_origin_consignment('done') def do(cls, moves): - super(Move, cls).do(moves) + super().do(moves) @classmethod @ModelView.button @Workflow.transition('cancelled') @unset_origin_consignment('cancelled') def cancel(cls, moves): - super(Move, cls).cancel(moves) + super().cancel(moves) @classmethod def copy(cls, moves, default=None): @@ -334,7 +334,7 @@ class Move(metaclass=PoolMeta): default['unit_price'] = consigment_moves_cleared('unit_price', default) default['currency'] = consigment_moves_cleared('currency', default) - moves = super(Move, cls).copy(moves, default=default) + moves = super().copy(moves, default=default) if not Transaction().context.get('_stock_move_split'): to_save = [] for move in moves: @@ -351,7 +351,7 @@ class ShipmentInternal(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(ShipmentInternal, cls).__setup__() + super().__setup__() cls.from_location.domain = ['OR', cls.from_location.domain, ('type', '=', 'supplier'), @@ -367,7 +367,7 @@ class ShipmentInternal(metaclass=PoolMeta): pattern = {} if self.to_location and not self.to_location.warehouse: pattern.setdefault('location_to', self.to_location.id) - return super(ShipmentInternal, self).on_change_with_planned_start_date( + return super().on_change_with_planned_start_date( pattern=pattern) @@ -376,7 +376,7 @@ class Inventory(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Inventory, cls).__setup__() + super().__setup__() cls.location.domain = ['OR', cls.location.domain, ('type', '=', 'supplier'), @@ -388,7 +388,7 @@ class OrderPoint(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(OrderPoint, cls).__setup__() + super().__setup__() cls.provisioning_location.domain = ['OR', cls.provisioning_location.domain, ('type', '=', 'supplier'), diff --git a/modules/stock_forecast/forecast.py b/modules/stock_forecast/forecast.py index 82dcceb0e9..435b944005 100644 --- a/modules/stock_forecast/forecast.py +++ b/modules/stock_forecast/forecast.py @@ -64,7 +64,7 @@ class Forecast(Workflow, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(Forecast, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_constraints += [ ('dates_done_overlap', @@ -115,7 +115,7 @@ class Forecast(Workflow, ModelSQL, ModelView): cursor = Transaction().connection.cursor() sql_table = cls.__table__() - super(Forecast, cls).__register__(module_name) + super().__register__(module_name) table = cls.__table_handler__(module_name) @@ -207,7 +207,7 @@ class Forecast(Workflow, ModelSQL, ModelView): raise AccessError( gettext('stock_forecast.msg_forecast_delete_cancel', forecast=forecast.rec_name)) - super(Forecast, cls).delete(forecasts) + super().delete(forecasts) @classmethod @ModelView.button @@ -301,7 +301,7 @@ class ForecastLine(ModelSQL, ModelView): @classmethod def __setup__(cls): - super(ForecastLine, cls).__setup__() + super().__setup__() cls.__access__.add('forecast') t = cls.__table__() cls._sql_constraints += [ @@ -412,7 +412,7 @@ class ForecastLine(ModelSQL, ModelView): else: default = default.copy() default.setdefault('moves', None) - return super(ForecastLine, cls).copy(lines, default=default) + return super().copy(lines, default=default) def get_moves(self): 'Get stock moves for the forecast line' diff --git a/modules/stock_location_move/product.py b/modules/stock_location_move/product.py index 86dfd72965..7a03fe2c09 100644 --- a/modules/stock_location_move/product.py +++ b/modules/stock_location_move/product.py @@ -18,7 +18,7 @@ class Product(metaclass=PoolMeta): if forecast_location_move: date = context.get('stock_date_end') or datetime.date.max restore = Location.forecast_location_move(date) - quantities = super(Product, cls).products_by_location(*args, **kwargs) + quantities = super().products_by_location(*args, **kwargs) if forecast_location_move: restore() return quantities diff --git a/modules/stock_location_move/stock.py b/modules/stock_location_move/stock.py index d833289d66..9253262231 100644 --- a/modules/stock_location_move/stock.py +++ b/modules/stock_location_move/stock.py @@ -125,14 +125,14 @@ class ShipmentInternal(metaclass=PoolMeta): @Workflow.transition('draft') @clear_location_assignation def draft(cls, shipments): - super(ShipmentInternal, cls).draft(shipments) + super().draft(shipments) @classmethod @ModelView.button @Workflow.transition('waiting') @clear_location_assignation def wait(cls, shipments): - super(ShipmentInternal, cls).wait(shipments) + super().wait(shipments) @classmethod @Workflow.transition('assigned') @@ -161,7 +161,7 @@ class ShipmentInternal(metaclass=PoolMeta): }) if locations: Location.save(list(locations)) - super(ShipmentInternal, cls).assign(shipments) + super().assign(shipments) @classmethod @ModelView.button @@ -179,7 +179,7 @@ class ShipmentInternal(metaclass=PoolMeta): }) if to_write: Location.write(*to_write) - super(ShipmentInternal, cls).ship(shipments) + super().ship(shipments) @classmethod @ModelView.button @@ -205,7 +205,7 @@ class ShipmentInternal(metaclass=PoolMeta): @Workflow.transition('cancelled') @clear_location_assignation def cancel(cls, shipments): - super(ShipmentInternal, cls).cancel(shipments) + super().cancel(shipments) class ShipmentInternal_Location(ModelSQL): @@ -263,4 +263,4 @@ class Supply(metaclass=PoolMeta): def transition_create_(self): with Transaction().set_context(forecast_location_move=True): - return super(Supply, self).transition_create_() + return super().transition_create_() diff --git a/modules/stock_lot/stock.py b/modules/stock_lot/stock.py index 315d26fa92..1d67e7713e 100644 --- a/modules/stock_lot/stock.py +++ b/modules/stock_lot/stock.py @@ -95,7 +95,7 @@ class Lot(DeactivableMixin, ModelSQL, ModelView, LotMixin, StockMixin): @classmethod def __setup__(cls): - super(Lot, cls).__setup__() + super().__setup__() cls._modify_no_move = [ ('product', None, 'stock_lot.msg_change_product'), ] @@ -163,7 +163,7 @@ class Lot(DeactivableMixin, ModelSQL, ModelView, LotMixin, StockMixin): @classmethod @check_no_move def write(cls, *args): - super(Lot, cls).write(*args) + super().write(*args) @classmethod @ModelView.button_action('stock_lot.act_lot_trace_upward_relate') @@ -792,12 +792,12 @@ class Period(metaclass=PoolMeta): @classmethod def groupings(cls): - return super(Period, cls).groupings() + [('product', 'lot')] + return super().groupings() + [('product', 'lot')] @classmethod def get_cache(cls, grouping): pool = Pool() - Cache = super(Period, cls).get_cache(grouping) + Cache = super().get_cache(grouping) if grouping == ('product', 'lot'): return pool.get('stock.period.cache.lot') return Cache @@ -841,7 +841,7 @@ class Inventory(metaclass=PoolMeta): @classmethod def grouping(cls): - return super(Inventory, cls).grouping() + ('lot', ) + return super().grouping() + ('lot', ) class InventoryLine(metaclass=PoolMeta): @@ -856,17 +856,17 @@ class InventoryLine(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(InventoryLine, cls).__setup__() + super().__setup__() cls._order.insert(1, ('lot', 'ASC')) def get_rec_name(self, name): - rec_name = super(InventoryLine, self).get_rec_name(name) + rec_name = super().get_rec_name(name) if self.lot: rec_name += ' - %s' % self.lot.rec_name return rec_name def get_move(self): - move = super(InventoryLine, self).get_move() + move = super().get_move() if move: move.lot = self.lot return move @@ -887,7 +887,7 @@ class InventoryCount(metaclass=PoolMeta): raise RequiredValidationError( gettext('stock_lot.msg_only_lot', product=product.rec_name)) - values = super(InventoryCount, self).default_quantity(fields) + values = super().default_quantity(fields) line = InventoryLine(values['line']) values['lot'] = line.lot.id if line.lot else None return values @@ -895,7 +895,7 @@ class InventoryCount(metaclass=PoolMeta): def get_line_domain(self, inventory): pool = Pool() Lot = pool.get('stock.lot') - domain = super(InventoryCount, self).get_line_domain(inventory) + domain = super().get_line_domain(inventory) if isinstance(self.search.search, Lot): domain.append(('lot', '=', self.search.search.id)) return domain @@ -917,7 +917,7 @@ class InventoryCountSearch(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(InventoryCountSearch, cls).__setup__() + super().__setup__() cls.search.selection.append(('stock.lot', "Lot")) diff --git a/modules/stock_lot_sled/stock.py b/modules/stock_lot_sled/stock.py index b225c50769..569a1f2bac 100644 --- a/modules/stock_lot_sled/stock.py +++ b/modules/stock_lot_sled/stock.py @@ -36,7 +36,7 @@ class Configuration(metaclass=PoolMeta): pool = Pool() if field == 'shelf_life_delay': return pool.get('stock.location.lot.shelf_life') - return super(Configuration, cls).multivalue_model(field) + return super().multivalue_model(field) class ConfigurationLotShelfLife(ModelSQL, ValueMixin): @@ -105,7 +105,7 @@ class Lot(LotSledMixin, metaclass=PoolMeta): @classmethod def write(cls, *args): - super(Lot, cls).write(*args) + super().write(*args) actions = iter(args) for lots, values in zip(actions, actions): @@ -165,7 +165,7 @@ class Move(metaclass=PoolMeta): @ModelView.button @Workflow.transition('done') def do(cls, moves): - super(Move, cls).do(moves) + super().do(moves) cls.check_expiration_dates(moves) @classmethod @@ -244,7 +244,7 @@ class Move(metaclass=PoolMeta): Lot = pool.get('stock.lot') Config = pool.get('stock.configuration') - query = super(Move, cls).compute_quantities_query( + query = super().compute_quantities_query( location_ids, with_childs=with_childs, grouping=grouping, grouping_filter=grouping_filter) @@ -376,7 +376,7 @@ class Period(metaclass=PoolMeta): move = Move.__table__() lot = Lot.__table__() - super(Period, cls).close(periods) + super().close(periods) # Don't allow to close a period if all products at this date # are not yet expired diff --git a/modules/stock_lot_unit/stock.py b/modules/stock_lot_unit/stock.py index 2008888340..19bcf46900 100644 --- a/modules/stock_lot_unit/stock.py +++ b/modules/stock_lot_unit/stock.py @@ -57,7 +57,7 @@ class Lot(LotUnitMixin, metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Lot, cls).__setup__() + super().__setup__() cls._modify_no_move += [ ('unit', 'done', 'stock_lot_unit.msg_change_unit'), ('unit_quantity', 'done', @@ -95,7 +95,7 @@ class Move(metaclass=PoolMeta): def check_lot(self): pool = Pool() UoM = pool.get('product.uom') - super(Move, self).check_lot() + super().check_lot() if (self.state == 'done' and self.lot and self.lot.unit): @@ -130,7 +130,7 @@ class Inventory(metaclass=PoolMeta): unit=line.lot.unit.symbol, lot=line.lot.rec_name, name=line.rec_name)) - super(Inventory, cls).confirm(inventories) + super().confirm(inventories) class InventoryCount(metaclass=PoolMeta): @@ -140,7 +140,7 @@ class InventoryCount(metaclass=PoolMeta): pool = Pool() InventoryLine = pool.get('stock.inventory.line') UoM = pool.get('product.uom') - values = super(InventoryCount, self).default_quantity(fields) + values = super().default_quantity(fields) line = InventoryLine(values['line']) if line.lot and line.lot.unit: values['quantity'] = UoM.compute_qty( @@ -158,7 +158,7 @@ class LotUnitMixin(object): pool = Pool() UoM = pool.get('product.uom') - super(LotUnitMixin, cls).validate(shipments) + super().validate(shipments) for shipment in shipments: for move_attribute in cls._lot_unit_moves: diff --git a/modules/stock_package/stock.py b/modules/stock_package/stock.py index a590f7daf2..d70b3ea153 100644 --- a/modules/stock_package/stock.py +++ b/modules/stock_package/stock.py @@ -29,7 +29,7 @@ class Configuration(metaclass=PoolMeta): pool = Pool() if field == 'package_sequence': return pool.get('stock.configuration.sequence') - return super(Configuration, cls).multivalue_model(field) + return super().multivalue_model(field) @classmethod def default_package_sequence(cls, **pattern): @@ -347,7 +347,7 @@ class Package(tree(), MeasurementsMixin, ModelSQL, ModelView): values['number'] = config.get_multivalue( 'package_sequence', company=values.get('company', default_company)).get() - return super(Package, cls).create(vlist) + return super().create(vlist) @classmethod def copy(cls, packages, default=None): @@ -454,7 +454,7 @@ class ShipmentOut(PackageMixin, object, metaclass=PoolMeta): @ModelView.button @Workflow.transition('packed') def pack(cls, shipments): - super(ShipmentOut, cls).pack(shipments) + super().pack(shipments) cls.check_packages(shipments) @classmethod diff --git a/modules/stock_package_shipping/stock.py b/modules/stock_package_shipping/stock.py index 452e357e6d..7cb2497393 100644 --- a/modules/stock_package_shipping/stock.py +++ b/modules/stock_package_shipping/stock.py @@ -106,7 +106,7 @@ class Package(metaclass=PoolMeta): bool_op = 'AND' else: bool_op = 'OR' - domain = super(Package, cls).search_rec_name(name, clause) + domain = super().search_rec_name(name, clause) return [bool_op, domain, ('shipping_reference', *clause[1:]), @@ -120,7 +120,7 @@ class Package(metaclass=PoolMeta): default = default.copy() default.setdefault('shipping_reference', None) default.setdefault('shipping_label', None) - return super(Package, cls).copy(packages, default=default) + return super().copy(packages, default=default) @classmethod @ModelView.button_action('stock_package_shipping.report_shipping_label') diff --git a/modules/stock_package_shipping_dpd/carrier.py b/modules/stock_package_shipping_dpd/carrier.py index 412ac97ba5..70b08d898d 100644 --- a/modules/stock_package_shipping_dpd/carrier.py +++ b/modules/stock_package_shipping_dpd/carrier.py @@ -119,7 +119,7 @@ class Carrier(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Carrier, cls).__setup__() + super().__setup__() cls.shipping_service.selection.append(('dpd', 'DPD')) @classmethod diff --git a/modules/stock_package_shipping_dpd/stock.py b/modules/stock_package_shipping_dpd/stock.py index c0be4b0a70..6a99585564 100644 --- a/modules/stock_package_shipping_dpd/stock.py +++ b/modules/stock_package_shipping_dpd/stock.py @@ -81,7 +81,7 @@ class CreateShipping(metaclass=PoolMeta): 'stock_package_shipping_dpd.act_create_shipping_dpd_wizard') def transition_start(self): - next_state = super(CreateShipping, self).transition_start() + next_state = super().transition_start() if self.record.carrier.shipping_service == 'dpd': next_state = 'dpd' return next_state diff --git a/modules/stock_package_shipping_mygls/carrier.py b/modules/stock_package_shipping_mygls/carrier.py index e2dda5a2d5..03265a9803 100644 --- a/modules/stock_package_shipping_mygls/carrier.py +++ b/modules/stock_package_shipping_mygls/carrier.py @@ -114,7 +114,7 @@ class Carrier(metaclass=PoolMeta): @classmethod def view_attributes(cls): - return super(Carrier, cls).view_attributes() + [ + return super().view_attributes() + [ ("/form/separator[@id='mygls']", 'states', { 'invisible': Eval('shipping_service') != 'mygls', }), diff --git a/modules/stock_package_shipping_sendcloud/carrier.py b/modules/stock_package_shipping_sendcloud/carrier.py index f998fc278b..74c9042c44 100644 --- a/modules/stock_package_shipping_sendcloud/carrier.py +++ b/modules/stock_package_shipping_sendcloud/carrier.py @@ -333,7 +333,7 @@ class Carrier(metaclass=PoolMeta): @classmethod def view_attributes(cls): - return super(Carrier, cls).view_attributes() + [ + return super().view_attributes() + [ ("/form/separator[@id='sendcloud']", 'states', { 'invisible': Eval('shipping_service') != 'sendcloud', }), diff --git a/modules/stock_package_shipping_ups/carrier.py b/modules/stock_package_shipping_ups/carrier.py index 2400c7dcd6..e17de0088b 100644 --- a/modules/stock_package_shipping_ups/carrier.py +++ b/modules/stock_package_shipping_ups/carrier.py @@ -157,12 +157,12 @@ class Carrier(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Carrier, cls).__setup__() + super().__setup__() cls.shipping_service.selection.append(('ups', 'UPS')) @classmethod def view_attributes(cls): - return super(Carrier, cls).view_attributes() + [ + return super().view_attributes() + [ ("/form/separator[@id='ups']", 'states', { 'invisible': Eval('shipping_service') != 'ups', }), diff --git a/modules/stock_package_shipping_ups/stock.py b/modules/stock_package_shipping_ups/stock.py index 8a8cc19d60..c5318dd2c3 100644 --- a/modules/stock_package_shipping_ups/stock.py +++ b/modules/stock_package_shipping_ups/stock.py @@ -124,7 +124,7 @@ class CreateShipping(metaclass=PoolMeta): 'stock_package_shipping_ups.act_create_shipping_ups_wizard') def transition_start(self): - next_state = super(CreateShipping, self).transition_start() + next_state = super().transition_start() if self.record.carrier.shipping_service == 'ups': next_state = 'ups' return next_state diff --git a/modules/stock_shipment_measurements/stock.py b/modules/stock_shipment_measurements/stock.py index 06ed75e828..81efd60315 100644 --- a/modules/stock_shipment_measurements/stock.py +++ b/modules/stock_shipment_measurements/stock.py @@ -143,11 +143,11 @@ class Move(metaclass=PoolMeta): internal_volume = cls._get_internal_volume(quantity, unit, product) if internal_volume is not None: values['internal_volume'] = internal_volume - return super(Move, cls).create(vlist) + return super().create(vlist) @classmethod def write(cls, *args): - super(Move, cls).write(*args) + super().write(*args) to_write = [] actions = iter(args) diff --git a/modules/stock_shipment_measurements/tests/test_module.py b/modules/stock_shipment_measurements/tests/test_module.py index abc37652d1..00b301e2e3 100644 --- a/modules/stock_shipment_measurements/tests/test_module.py +++ b/modules/stock_shipment_measurements/tests/test_module.py @@ -18,7 +18,7 @@ class StockShipmentMeasurementsTestCase(CompanyTestMixin, ModuleTestCase): @classmethod def setUpClass(cls): - super(StockShipmentMeasurementsTestCase, cls).setUpClass() + super().setUpClass() activate_module('stock_package') @with_transaction() diff --git a/modules/stock_split/stock.py b/modules/stock_split/stock.py index d726c9a8f1..24b3502a49 100644 --- a/modules/stock_split/stock.py +++ b/modules/stock_split/stock.py @@ -12,7 +12,7 @@ class Move(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(Move, cls).__setup__() + super().__setup__() cls._buttons.update({ 'split_wizard': { 'readonly': ~Eval('state').in_(['draft', 'assigned']), @@ -113,7 +113,7 @@ class _ShipmentSplit(ModelView): @classmethod def __setup__(cls): - super(_ShipmentSplit, cls).__setup__() + super().__setup__() cls._buttons.update({ 'split_wizard': { 'readonly': Eval('state') != 'draft', diff --git a/modules/stock_supply/purchase_request.py b/modules/stock_supply/purchase_request.py index 25dad369f8..2ad2c6d45a 100644 --- a/modules/stock_supply/purchase_request.py +++ b/modules/stock_supply/purchase_request.py @@ -33,7 +33,7 @@ class PurchaseRequest(metaclass=PoolMeta): @classmethod def _get_origin(cls): - origins = super(PurchaseRequest, cls)._get_origin() + origins = super()._get_origin() return origins | {'stock.order_point'} @classmethod diff --git a/modules/stock_supply_day/purchase.py b/modules/stock_supply_day/purchase.py index 46b95d163d..52b212158f 100644 --- a/modules/stock_supply_day/purchase.py +++ b/modules/stock_supply_day/purchase.py @@ -14,7 +14,7 @@ class ProductSupplier(metaclass=PoolMeta): "Week Days") def compute_supply_date(self, date=None): - date = super(ProductSupplier, self).compute_supply_date(date=date) + date = super().compute_supply_date(date=date) earlier_date = None if date != datetime.date.max: for weekday in self.weekdays: @@ -38,7 +38,7 @@ class ProductSupplier(metaclass=PoolMeta): later_date = new_date if later_date: date = later_date - return super(ProductSupplier, self).compute_purchase_date(date) + return super().compute_purchase_date(date) class ProductSupplierDay(ModelSQL): diff --git a/modules/stock_supply_production/stock.py b/modules/stock_supply_production/stock.py index 4a27ee77ef..ffd3ebc29b 100644 --- a/modules/stock_supply_production/stock.py +++ b/modules/stock_supply_production/stock.py @@ -15,7 +15,7 @@ class OrderPoint(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(OrderPoint, cls).__setup__() + super().__setup__() cls.product.domain = [ cls.product.domain, @@ -45,7 +45,7 @@ class LocationLeadTime(metaclass=PoolMeta): Configuration = pool.get('production.configuration') config = Configuration(1) supply_period = config.get_multivalue('supply_period') - extra = super(LocationLeadTime, cls)._get_extra_lead_times() + extra = super()._get_extra_lead_times() extra.append(supply_period or datetime.timedelta(0)) return extra @@ -57,7 +57,7 @@ class StockSupply(metaclass=PoolMeta): @classmethod def types(cls): - return super(StockSupply, cls).types() + ['production'] + return super().types() + ['production'] def transition_create_(self): pool = Pool() @@ -82,7 +82,7 @@ class StockSupply(metaclass=PoolMeta): raise SupplyWarning( key, gettext('stock_supply_production.msg_late_productions')) - return super(StockSupply, self).transition_create_() + return super().transition_create_() @property def _production_parameters(self): diff --git a/modules/timesheet/line.py b/modules/timesheet/line.py index 1f915b55f0..73566bb77f 100644 --- a/modules/timesheet/line.py +++ b/modules/timesheet/line.py @@ -66,7 +66,7 @@ class Line(ModelSQL, ModelView): @classmethod def __setup__(cls): - super(Line, cls).__setup__() + super().__setup__() cls._order = [ ('date', 'DESC'), ('id', 'DESC'), @@ -260,7 +260,7 @@ class HoursEmployeeWeekly(ModelSQL, ModelView): @classmethod def __setup__(cls): - super(HoursEmployeeWeekly, cls).__setup__() + super().__setup__() cls._order.insert(0, ('year', 'DESC')) cls._order.insert(1, ('week', 'DESC')) cls._order.insert(2, ('employee', 'ASC')) @@ -292,7 +292,7 @@ class HoursEmployeeMonthly(ModelSQL, ModelView): @classmethod def __setup__(cls): - super(HoursEmployeeMonthly, cls).__setup__() + super().__setup__() cls._order.insert(0, ('year', 'DESC')) cls._order.insert(1, ('month.index', 'DESC')) cls._order.insert(2, ('employee', 'ASC')) diff --git a/modules/timesheet/user.py b/modules/timesheet/user.py index 7a5f143f6f..ed23f080da 100644 --- a/modules/timesheet/user.py +++ b/modules/timesheet/user.py @@ -8,5 +8,5 @@ class UserApplication(metaclass=PoolMeta): @classmethod def __setup__(cls): - super(UserApplication, cls).__setup__() + super().__setup__() cls.application.selection.append(('timesheet', 'Timesheet')) diff --git a/modules/timesheet/work.py b/modules/timesheet/work.py index 30c513e7f6..a89939aa62 100644 --- a/modules/timesheet/work.py +++ b/modules/timesheet/work.py @@ -59,7 +59,7 @@ class Work(ModelSQL, ModelView): @classmethod def __setup__(cls): - super(Work, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_constraints += [ ('origin_unique', Unique(t, t.origin, t.company), @@ -145,11 +145,11 @@ class Work(ModelSQL, ModelView): else: default = default.copy() default.setdefault('timesheet_lines', None) - return super(Work, cls).copy(works, default=default) + return super().copy(works, default=default) @classmethod def validate(cls, works): - super(Work, cls).validate(works) + super().validate(works) for work in works: if work.origin and not work._validate_company(): raise CompanyValidationError( @@ -161,7 +161,7 @@ class Work(ModelSQL, ModelView): @classmethod def search_global(cls, text): - for record, rec_name, icon in super(Work, cls).search_global(text): + for record, rec_name, icon in super().search_global(text): icon = icon or 'tryton-clock' yield record, rec_name, icon diff --git a/modules/timesheet_cost/company.py b/modules/timesheet_cost/company.py index c69c672c3d..7f657eac08 100644 --- a/modules/timesheet_cost/company.py +++ b/modules/timesheet_cost/company.py @@ -79,7 +79,7 @@ class EmployeeCostPrice(ModelSQL, ModelView): @classmethod def __setup__(cls): - super(EmployeeCostPrice, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_constraints = [ ('employee_date_cost_price_uniq', @@ -108,18 +108,18 @@ class EmployeeCostPrice(ModelSQL, ModelView): @classmethod def delete(cls, prices): Employee = Pool().get('company.employee') - super(EmployeeCostPrice, cls).delete(prices) + super().delete(prices) Employee._cost_prices_cache.clear() @classmethod def create(cls, vlist): Employee = Pool().get('company.employee') - prices = super(EmployeeCostPrice, cls).create(vlist) + prices = super().create(vlist) Employee._cost_prices_cache.clear() return prices @classmethod def write(cls, *args): Employee = Pool().get('company.employee') - super(EmployeeCostPrice, cls).write(*args) + super().write(*args) Employee._cost_prices_cache.clear() diff --git a/modules/web_user/tests/test_module.py b/modules/web_user/tests/test_module.py index 8fadbf905e..85de5726ce 100644 --- a/modules/web_user/tests/test_module.py +++ b/modules/web_user/tests/test_module.py @@ -19,7 +19,7 @@ class WebUserTestCase(PartyCheckEraseMixin, ModuleTestCase): module = 'web_user' def setUp(self): - super(WebUserTestCase, self).setUp() + super().setUp() validation_url = config.get('web', 'email_validation_url', default='') config.set('web', 'email_validation_url', VALIDATION_URL) self.addCleanup( diff --git a/modules/web_user/user.py b/modules/web_user/user.py index 35b3ff9655..0e4b91ed13 100644 --- a/modules/web_user/user.py +++ b/modules/web_user/user.py @@ -87,7 +87,7 @@ class User(avatar_mixin(100), DeactivableMixin, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(User, cls).__setup__() + super().__setup__() table = cls.__table__() cls._sql_constraints += [ ('email_exclude', @@ -161,13 +161,13 @@ class User(avatar_mixin(100), DeactivableMixin, ModelSQL, ModelView): @classmethod def create(cls, vlist): - users = super(User, cls).create(vlist) + users = super().create(vlist) cls._format_email(users) return users @classmethod def write(cls, *args): - super(User, cls).write(*args) + super().write(*args) users = sum(args[0:None:2], []) cls._format_email(users) @@ -395,7 +395,7 @@ class UserSession(ModelSQL): @classmethod def __setup__(cls): - super(UserSession, cls).__setup__() + super().__setup__() table = cls.__table__() cls.__rpc__ = {} cls._sql_constraints += [ @@ -474,7 +474,7 @@ class UserSession(ModelSQL): # Ensure to get a different key for each record # default methods are called only once values.setdefault('key', cls.default_key()) - return super(UserSession, cls).create(vlist) + return super().create(vlist) class EmailValidation(Report): diff --git a/proteus/proteus/__init__.py b/proteus/proteus/__init__.py index 9dd01c1554..2da0f20a50 100644 --- a/proteus/proteus/__init__.py +++ b/proteus/proteus/__init__.py @@ -21,7 +21,7 @@ class _EvalEnvironment(dict): __slots__ = ('parent', 'eval_type') def __init__(self, parent, eval_type='eval'): - super(_EvalEnvironment, self).__init__() + super().__init__() self.parent = parent assert eval_type in ('eval', 'on_change') self.eval_type = eval_type @@ -49,7 +49,7 @@ class _EvalEnvironment(dict): return self.__getitem__(item) except KeyError: pass - return super(_EvalEnvironment, self).get(item, default) + return super().get(item, default) def __bool__(self): return True @@ -109,7 +109,7 @@ class FieldDescriptor(object): default = None def __init__(self, name, definition): - super(FieldDescriptor, self).__init__() + super().__init__() self.name = name self.definition = definition self.__doc__ = definition['string'] @@ -137,7 +137,7 @@ class BooleanDescriptor(FieldDescriptor): def __set__(self, instance, value): assert isinstance(value, bool) - super(BooleanDescriptor, self).__set__(instance, value) + super().__set__(instance, value) class CharDescriptor(FieldDescriptor): @@ -152,7 +152,7 @@ class CharDescriptor(FieldDescriptor): value = value.rstrip() else: value = value.strip() - super(CharDescriptor, self).__set__(instance, value or '') + super().__set__(instance, value or '') class BinaryDescriptor(FieldDescriptor): @@ -160,14 +160,14 @@ class BinaryDescriptor(FieldDescriptor): def __set__(self, instance, value): assert isinstance(value, (bytes, bytearray)) or value is None - super(BinaryDescriptor, self).__set__(instance, value) + super().__set__(instance, value) class IntegerDescriptor(FieldDescriptor): def __set__(self, instance, value): assert isinstance(value, (int, type(None))) - super(IntegerDescriptor, self).__set__(instance, value) + super().__set__(instance, value) class FloatDescriptor(FieldDescriptor): @@ -176,7 +176,7 @@ class FloatDescriptor(FieldDescriptor): assert isinstance(value, (int, float, Decimal, type(None))) if value is not None: value = float(value) - super(FloatDescriptor, self).__set__(instance, value) + super().__set__(instance, value) class NumericDescriptor(FieldDescriptor): @@ -184,7 +184,7 @@ class NumericDescriptor(FieldDescriptor): def __set__(self, instance, value): assert isinstance(value, (type(None), Decimal)) # TODO add digits validation - super(NumericDescriptor, self).__set__(instance, value) + super().__set__(instance, value) class SelectionDescriptor(FieldDescriptor): @@ -205,7 +205,7 @@ class MultiSelectionDescriptor(FieldDescriptor): class ReferenceDescriptor(FieldDescriptor): def __get__(self, instance, owner): - value = super(ReferenceDescriptor, self).__get__(instance, owner) + value = super().__get__(instance, owner) if isinstance(value, str): model_name, id = value.split(',', 1) if model_name: @@ -223,12 +223,12 @@ class ReferenceDescriptor(FieldDescriptor): assert value.startswith(',') elif isinstance(value, Model): assert value._config == instance._config - super(ReferenceDescriptor, self).__set__(instance, value) + super().__set__(instance, value) class DateDescriptor(FieldDescriptor): def __get__(self, instance, owner): - value = super(DateDescriptor, self).__get__(instance, owner) + value = super().__get__(instance, owner) if isinstance(value, datetime.datetime): value = value.date() instance._values[self.name] = value @@ -236,43 +236,43 @@ class DateDescriptor(FieldDescriptor): def __set__(self, instance, value): assert isinstance(value, datetime.date) or value is None - super(DateDescriptor, self).__set__(instance, value) + super().__set__(instance, value) class DateTimeDescriptor(FieldDescriptor): def __set__(self, instance, value): assert isinstance(value, datetime.datetime) or value is None - super(DateTimeDescriptor, self).__set__(instance, value) + super().__set__(instance, value) class TimeDescriptor(FieldDescriptor): def __set__(self, instance, value): assert isinstance(value, datetime.time) or value is None - super(TimeDescriptor, self).__set__(instance, value) + super().__set__(instance, value) class TimeDeltaDescriptor(FieldDescriptor): def __set__(self, instance, value): assert isinstance(value, datetime.timedelta) or value is None - super(TimeDeltaDescriptor, self).__set__(instance, value) + super().__set__(instance, value) class DictDescriptor(FieldDescriptor): def __get__(self, instance, owner): - value = super(DictDescriptor, self).__get__(instance, owner) + value = super().__get__(instance, owner) if value: value = value.copy() return value def __set__(self, instance, value): assert isinstance(value, dict) or value is None - super(DictDescriptor, self).__set__(instance, value) + super().__set__(instance, value) class Many2OneDescriptor(FieldDescriptor): def __get__(self, instance, owner): Relation = Model.get(self.definition['relation'], instance._config) - value = super(Many2OneDescriptor, self).__get__(instance, owner) + value = super().__get__(instance, owner) if isinstance(value, int): config = Relation._config with config.reset_context(), config.set_context(instance._context): @@ -285,7 +285,7 @@ class Many2OneDescriptor(FieldDescriptor): assert isinstance(value, (Model, type(None))) if value: assert value._config == instance._config - super(Many2OneDescriptor, self).__set__(instance, value) + super().__set__(instance, value) class One2OneDescriptor(Many2OneDescriptor): @@ -298,7 +298,7 @@ class One2ManyDescriptor(FieldDescriptor): def __get__(self, instance, owner): from .pyson import PYSONDecoder Relation = Model.get(self.definition['relation'], instance._config) - value = super(One2ManyDescriptor, self).__get__(instance, owner) + value = super().__get__(instance, owner) if not isinstance(value, ModelList): ctx = instance._context.copy() if instance._context else {} if self.definition.get('context'): @@ -321,7 +321,7 @@ class Many2ManyDescriptor(One2ManyDescriptor): class ValueDescriptor(object): def __init__(self, name, definition): - super(ValueDescriptor, self).__init__() + super().__init__() self.name = name self.definition = definition @@ -331,7 +331,7 @@ class ValueDescriptor(object): class ReferenceValueDescriptor(ValueDescriptor): def __get__(self, instance, owner): - value = super(ReferenceValueDescriptor, self).__get__(instance, owner) + value = super().__get__(instance, owner) if isinstance(value, Model): value = '%s,%s' % (value.__class__.__name__, value.id) return value or None @@ -339,7 +339,7 @@ class ReferenceValueDescriptor(ValueDescriptor): class Many2OneValueDescriptor(ValueDescriptor): def __get__(self, instance, owner): - value = super(Many2OneValueDescriptor, self).__get__(instance, owner) + value = super().__get__(instance, owner) return value and value.id or None @@ -385,7 +385,7 @@ class Many2ManyValueDescriptor(One2ManyValueDescriptor): class EvalDescriptor(object): def __init__(self, name, definition): - super(EvalDescriptor, self).__init__() + super().__init__() self.name = name self.definition = definition @@ -395,7 +395,7 @@ class EvalDescriptor(object): class ReferenceEvalDescriptor(EvalDescriptor): def __get__(self, instance, owner): - value = super(ReferenceEvalDescriptor, self).__get__(instance, owner) + value = super().__get__(instance, owner) if isinstance(value, Model): value = '%s,%s' % (value.__class__.__name__, value.id) return value or None @@ -403,7 +403,7 @@ class ReferenceEvalDescriptor(EvalDescriptor): class Many2OneEvalDescriptor(EvalDescriptor): def __get__(self, instance, owner): - value = super(Many2OneEvalDescriptor, self).__get__(instance, owner) + value = super().__get__(instance, owner) if value: return value.id return None @@ -469,7 +469,7 @@ class MetaModelFactory(object): } def __init__(self, model_name, config=None): - super(MetaModelFactory, self).__init__() + super().__init__() self.model_name = model_name self.config = config or proteus.config.get_config() @@ -537,7 +537,7 @@ class ModelList(list): self.search_context = definition.get('search_context', '{}') self.record_removed = set() self.record_deleted = set() - result = super(ModelList, self).__init__(sequence) + result = super().__init__(sequence) assert len(self) == len(set(self)) self.__check(self, on_change=False) return result @@ -605,7 +605,7 @@ class ModelList(list): def pop(self, index=-1, _changed=True): self.record_removed.add(self[index]) self[index]._group = None - res = super(ModelList, self).pop(index) + res = super().pop(index) if _changed: self._changed() return res @@ -615,7 +615,7 @@ class ModelList(list): if record.id >= 0: self.record_deleted.add(record) record._group = None - res = super(ModelList, self).remove(record) + res = super().remove(record) if _changed: self._changed() return res @@ -698,7 +698,7 @@ class Model(object): _fields = None def __init__(self, id=None, _default=True, _group=None, **kwargs): - super(Model, self).__init__() + super().__init__() if id is not None: assert not kwargs self.__id = id if id is not None else Model.__counter @@ -1208,7 +1208,7 @@ class Wizard(object): context=None): if models: assert len(set(type(x) for x in models)) == 1 - super(Wizard, self).__init__() + super().__init__() self.name = name self.form = None self.form_state = None @@ -1287,7 +1287,7 @@ class Report(object): __slots__ = ('name', '_config', '_context', '_proxy') def __init__(self, name, config=None, context=None): - super(Report, self).__init__() + super().__init__() self.name = name self._config = config or proteus.config.get_config() self._context = self._config.context diff --git a/proteus/proteus/config.py b/proteus/proteus/config.py index c8a11a6cf4..45007ade37 100644 --- a/proteus/proteus/config.py +++ b/proteus/proteus/config.py @@ -143,7 +143,7 @@ class Config(object): 'Config interface' def __init__(self): - super(Config, self).__init__() + super().__init__() self._context = {} @property @@ -175,7 +175,7 @@ class Config(object): class _TrytondMethod(object): def __init__(self, name, model, config): - super(_TrytondMethod, self).__init__() + super().__init__() self._name = name self._object = model self._config = config @@ -238,7 +238,7 @@ class TrytondProxy(object): 'Proxy for function call for trytond' def __init__(self, name, config, type='model'): - super(TrytondProxy, self).__init__() + super().__init__() self._config = config self._object = config.pool.get(name, type=type) __init__.__doc__ = object.__init__.__doc__ @@ -252,7 +252,7 @@ class TrytondConfig(Config): 'Configuration for trytond' def __init__(self, database=None, user='admin', config_file=None): - super(TrytondConfig, self).__init__() + super().__init__() if not database: database = os.environ.get('TRYTOND_DATABASE_URI') elif (os.environ.get('TRYTOND_DATABASE_URI') @@ -337,7 +337,7 @@ class XmlrpcProxy(object): 'Proxy for function call for XML-RPC' def __init__(self, name, config, type='model'): - super(XmlrpcProxy, self).__init__() + super().__init__() self._config = config self._object = getattr(config.server, '%s.%s' % (type, name)) __init__.__doc__ = object.__init__.__doc__ @@ -351,7 +351,7 @@ class XmlrpcConfig(Config): 'Configuration for XML-RPC' def __init__(self, url, **kwargs): - super(XmlrpcConfig, self).__init__() + super().__init__() self.url = url self.server = xmlrpc.client.ServerProxy( url, allow_none=True, use_builtin_types=True, **kwargs) diff --git a/proteus/proteus/pyson.py b/proteus/proteus/pyson.py index 47051776a8..db56cdcc9a 100644 --- a/proteus/proteus/pyson.py +++ b/proteus/proteus/pyson.py @@ -105,7 +105,7 @@ class PYSONEncoder(json.JSONEncoder): return TimeDelta(obj.days, obj.seconds, obj.microseconds) elif isinstance(obj, Decimal): return float(obj) - return super(PYSONEncoder, self).default(obj) + return super().default(obj) class PYSONDecoder(json.JSONDecoder): @@ -113,7 +113,7 @@ class PYSONDecoder(json.JSONDecoder): def __init__(self, context=None, noeval=False): self.__context = context or {} self.noeval = noeval - super(PYSONDecoder, self).__init__(object_hook=self._object_hook) + super().__init__(object_hook=self._object_hook) def _object_hook(self, dct): if '__class__' in dct: @@ -131,7 +131,7 @@ class PYSONDecoder(json.JSONDecoder): class Eval(PYSON): def __init__(self, v, d=''): - super(Eval, self).__init__() + super().__init__() self._value = v self._default = d @@ -175,7 +175,7 @@ class Eval(PYSON): class Not(PYSON): def __init__(self, v): - super(Not, self).__init__() + super().__init__() if isinstance(v, PYSON): if v.types() != {bool}: v = Bool(v) @@ -204,7 +204,7 @@ class Not(PYSON): class Bool(PYSON): def __init__(self, v): - super(Bool, self).__init__() + super().__init__() self._value = v @property @@ -228,7 +228,7 @@ class Bool(PYSON): class And(PYSON): def __init__(self, *statements, **kwargs): - super(And, self).__init__() + super().__init__() statements = list(statements) + kwargs.get('s', []) for i, statement in enumerate(list(statements)): if isinstance(statement, PYSON): @@ -260,7 +260,7 @@ class And(PYSON): class Or(And): def pyson(self): - res = super(Or, self).pyson() + res = super().pyson() res['__class__'] = 'Or' return res @@ -273,7 +273,7 @@ class Equal(PYSON): def __init__(self, s1, s2): statement1, statement2 = s1, s2 - super(Equal, self).__init__() + super().__init__() if isinstance(statement1, PYSON): types1 = statement1.types() else: @@ -309,7 +309,7 @@ class Greater(PYSON): def __init__(self, s1, s2, e=False): statement1, statement2, equal = s1, s2, e - super(Greater, self).__init__() + super().__init__() for i in (statement1, statement2): if isinstance(i, PYSON): assert i.types().issubset({ @@ -379,7 +379,7 @@ class Greater(PYSON): class Less(Greater): def pyson(self): - res = super(Less, self).pyson() + res = super().pyson() res['__class__'] = 'Less' return res @@ -398,7 +398,7 @@ class If(PYSON): def __init__(self, c, t, e=None): condition, then_statement, else_statement = c, t, e - super(If, self).__init__() + super().__init__() if isinstance(condition, PYSON): if condition.types() != {bool}: condition = Bool(condition) @@ -443,7 +443,7 @@ class Get(PYSON): def __init__(self, v, k, d=''): obj, key, default = v, k, d - super(Get, self).__init__() + super().__init__() if isinstance(obj, PYSON): assert obj.types() == {dict}, 'obj must be a dict' else: @@ -483,7 +483,7 @@ class In(PYSON): def __init__(self, k, v): key, obj = k, v - super(In, self).__init__() + super().__init__() if isinstance(key, PYSON): assert key.types().issubset({str, int}), \ 'key must be a string or an integer or a long' @@ -540,7 +540,7 @@ class Date(PYSON): delta_years = kwargs.get('dy', delta_years) delta_months = kwargs.get('dM', delta_months) delta_days = kwargs.get('dd', delta_days) - super(Date, self).__init__() + super().__init__() for i in (year, month, day, delta_years, delta_months, delta_days): if isinstance(i, PYSON): assert i.types().issubset({int, type(None)}), \ @@ -609,7 +609,7 @@ class DateTime(Date): delta_minutes = kwargs.get('dm', delta_minutes) delta_seconds = kwargs.get('ds', delta_seconds) delta_microseconds = kwargs.get('dms', delta_microseconds) - super(DateTime, self).__init__(year=year, month=month, day=day, + super().__init__(year=year, month=month, day=day, delta_years=delta_years, delta_months=delta_months, delta_days=delta_days, start=start, **kwargs) for i in (hour, minute, second, microsecond, @@ -631,7 +631,7 @@ class DateTime(Date): @property def __repr_params__(self): - date_params = super(DateTime, self).__repr_params__ + date_params = super().__repr_params__ return (date_params[:3] + (self._hour, self._minute, self._second, self._microsecond) + date_params[3:-1] @@ -640,7 +640,7 @@ class DateTime(Date): + date_params[-1:]) def pyson(self): - res = super(DateTime, self).pyson() + res = super().pyson() res['__class__'] = 'DateTime' res['h'] = self._hour res['m'] = self._minute @@ -723,7 +723,7 @@ class TimeDelta(PYSON): class Len(PYSON): def __init__(self, v): - super(Len, self).__init__() + super().__init__() if isinstance(v, PYSON): assert v.types().issubset({dict, list, str}), \ 'value must be a dict or a list or a string' diff --git a/tryton/tryton/common/button.py b/tryton/tryton/common/button.py index 17ded2afaa..d6a9a8b4ef 100644 --- a/tryton/tryton/common/button.py +++ b/tryton/tryton/common/button.py @@ -14,7 +14,7 @@ class Button(Gtk.Button): def __init__(self, attrs=None): self.attrs = attrs or {} self.label = '_' + attrs.get('string', '').replace('_', '__') - super(Button, self).__init__(label=self.label, stock=None, + super().__init__(label=self.label, stock=None, use_underline=True) self._set_icon(attrs.get('icon')) diff --git a/tryton/tryton/common/cellrendererfloat.py b/tryton/tryton/common/cellrendererfloat.py index eb6eea275b..049cc560b3 100644 --- a/tryton/tryton/common/cellrendererfloat.py +++ b/tryton/tryton/common/cellrendererfloat.py @@ -10,7 +10,7 @@ from .cellrendererinteger import CellRendererInteger class CellRendererFloat(CellRendererInteger): def __init__(self): - super(CellRendererFloat, self).__init__() + super().__init__() self.digits = None self.monetary = False self.convert = float diff --git a/tryton/tryton/common/cellrenderertext.py b/tryton/tryton/common/cellrenderertext.py index 5f5a6d2c54..6f4a1e7c0f 100644 --- a/tryton/tryton/common/cellrenderertext.py +++ b/tryton/tryton/common/cellrenderertext.py @@ -6,7 +6,7 @@ from gi.repository import GObject, Gtk class CellRendererText(Gtk.CellRendererText): def __init__(self): - super(CellRendererText, self).__init__() + super().__init__() self.connect('editing-started', self.__class__.on_editing_started) def on_editing_started(self, editable, path): @@ -16,7 +16,7 @@ class CellRendererText(Gtk.CellRendererText): class CellRendererTextCompletion(CellRendererText): def __init__(self, set_completion): - super(CellRendererTextCompletion, self).__init__() + super().__init__() self.set_completion = set_completion def on_editing_started(self, editable, path): diff --git a/tryton/tryton/common/common.py b/tryton/tryton/common/common.py index 5535dae878..1892e9113c 100644 --- a/tryton/tryton/common/common.py +++ b/tryton/tryton/common/common.py @@ -387,7 +387,7 @@ class ViewSearch(object): def default(self, obj): if isinstance(obj, Decimal): return float(obj) - return super(Encoder, self).default(obj) + return super().default(obj) self.encoder = Encoder() def load_searches(self): @@ -759,7 +759,7 @@ class MessageDialog(UniqueDialog): return dialog def __call__(self, message, *args, **kwargs): - return super(MessageDialog, self).__call__(message, *args, **kwargs) + return super().__call__(message, *args, **kwargs) message = MessageDialog() @@ -892,7 +892,7 @@ class ConcurrencyDialog(UniqueDialog): return dialog def __call__(self, model, id_, context): - res = super(ConcurrencyDialog, self).__call__() + res = super().__call__() if res == Gtk.ResponseType.OK: return True @@ -970,7 +970,7 @@ class ErrorDialog(UniqueDialog): title = "%s: %s" % (title.__class__.__name__, title) details += '\n' + title logger.error(details) - return super(ErrorDialog, self).__call__(title, details) + return super().__call__(title, details) error = ErrorDialog() @@ -1287,7 +1287,7 @@ def generateColorscheme(masterColor, keys, light=0.1): class RPCException(Exception): def __init__(self, exception): - super(RPCException, self).__init__(exception) + super().__init__(exception) self.exception = exception diff --git a/tryton/tryton/common/environment.py b/tryton/tryton/common/environment.py index 8ccc15b4b7..82c1585e4f 100644 --- a/tryton/tryton/common/environment.py +++ b/tryton/tryton/common/environment.py @@ -5,7 +5,7 @@ class EvalEnvironment(dict): def __init__(self, parent, eval_type='eval'): - super(EvalEnvironment, self).__init__() + super().__init__() self.parent = parent assert eval_type in ('eval', 'on_change') self.eval_type = eval_type @@ -33,7 +33,7 @@ class EvalEnvironment(dict): return self.__getitem__(item) except KeyError: pass - return super(EvalEnvironment, self).get(item, default) + return super().get(item, default) def __bool__(self): return True diff --git a/tryton/tryton/common/selection.py b/tryton/tryton/common/selection.py index 2b4f957642..e900636781 100644 --- a/tryton/tryton/common/selection.py +++ b/tryton/tryton/common/selection.py @@ -11,7 +11,7 @@ from tryton.common import RPCException, RPCExecute, eval_domain class SelectionMixin(object): def __init__(self, *args, **kwargs): - super(SelectionMixin, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) self.nullable_widget = True self.selection = None self.inactive_selection = [] diff --git a/tryton/tryton/gui/window/attachment.py b/tryton/tryton/gui/window/attachment.py index 0a44819f60..c54ec2a39a 100644 --- a/tryton/tryton/gui/window/attachment.py +++ b/tryton/tryton/gui/window/attachment.py @@ -25,13 +25,13 @@ class Attachment(WinForm): screen = Screen('ir.attachment', domain=[ ('resource', '=', self.resource), ], mode=['tree', 'form']) - super(Attachment, self).__init__(screen, self.callback, + super().__init__(screen, self.callback, view_type='tree', title=title) screen.search_filter() def destroy(self): self.prev_view.save_width() - super(Attachment, self).destroy() + super().destroy() def callback(self, result): if result: diff --git a/tryton/tryton/gui/window/board.py b/tryton/tryton/gui/window/board.py index bb1df69a8a..889f9a1442 100644 --- a/tryton/tryton/gui/window/board.py +++ b/tryton/tryton/gui/window/board.py @@ -17,7 +17,7 @@ class Board(TabContent): 'Board' def __init__(self, model, name='', **attributes): - super(Board, self).__init__(**attributes) + super().__init__(**attributes) context = attributes.get('context') self.view_id, = attributes.get('view_ids') diff --git a/tryton/tryton/gui/window/form.py b/tryton/tryton/gui/window/form.py index 5b31984163..b6724df8f5 100644 --- a/tryton/tryton/gui/window/form.py +++ b/tryton/tryton/gui/window/form.py @@ -36,7 +36,7 @@ class Form(TabContent): "Form" def __init__(self, model, res_id=None, name='', **attributes): - super(Form, self).__init__(**attributes) + super().__init__(**attributes) self.model = model self.res_id = res_id @@ -686,7 +686,7 @@ class Form(TabContent): Main().sig_win_close(widget) def create_toolbar(self, toolbars): - gtktoolbar = super(Form, self).create_toolbar(toolbars) + gtktoolbar = super().create_toolbar(toolbars) attach_btn = self.buttons['attach'] attach_btn.drag_dest_set( diff --git a/tryton/tryton/gui/window/note.py b/tryton/tryton/gui/window/note.py index 73128a56e0..0893ea718b 100644 --- a/tryton/tryton/gui/window/note.py +++ b/tryton/tryton/gui/window/note.py @@ -18,13 +18,13 @@ class Note(WinForm): screen = Screen('ir.note', domain=[ ('resource', '=', self.resource), ], mode=['tree', 'form']) - super(Note, self).__init__(screen, self.callback, view_type='tree', + super().__init__(screen, self.callback, view_type='tree', title=title) screen.search_filter() def destroy(self): self.prev_view.save_width() - super(Note, self).destroy() + super().destroy() def callback(self, result): if result: diff --git a/tryton/tryton/gui/window/tabcontent.py b/tryton/tryton/gui/window/tabcontent.py index 0ca4ba87c2..ac29310f50 100644 --- a/tryton/tryton/gui/window/tabcontent.py +++ b/tryton/tryton/gui/window/tabcontent.py @@ -37,7 +37,7 @@ class ToolbarItem(object): class TabContent(InfoBar): def __init__(self, **attributes): - super(TabContent, self).__init__() + super().__init__() self.attributes = attributes.copy() @property diff --git a/tryton/tryton/gui/window/view_board/action.py b/tryton/tryton/gui/window/view_board/action.py index bfa72057d8..47ea7147f2 100644 --- a/tryton/tryton/gui/window/view_board/action.py +++ b/tryton/tryton/gui/window/view_board/action.py @@ -19,7 +19,7 @@ _ = gettext.gettext class Action: def __init__(self, view, attrs=None): - super(Action, self).__init__() + super().__init__() self.name = attrs['name'] self.view = view diff --git a/tryton/tryton/gui/window/view_form/model/field.py b/tryton/tryton/gui/window/view_form/model/field.py index fc5acddb8a..05ca2d1fe4 100644 --- a/tryton/tryton/gui/window/view_form/model/field.py +++ b/tryton/tryton/gui/window/view_form/model/field.py @@ -228,7 +228,7 @@ class CharField(Field): super().set(record, value) def get(self, record): - return super(CharField, self).get(record) or self._default + return super().get(record) or self._default def set_client(self, record, value, force_change=False): if isinstance(value, bytes): @@ -301,11 +301,11 @@ class DateTimeField(Field): value = datetime.datetime.combine(value, time) if value: value = common.untimezoned_date(value) - super(DateTimeField, self).set_client(record, value, + super().set_client(record, value, force_change=force_change) def get_client(self, record): - value = super(DateTimeField, self).get_client(record) + value = super().get_client(record) if value: return common.timezoned_date(value) @@ -325,7 +325,7 @@ class DateField(Field): if isinstance(value, datetime.datetime): assert value.time() == datetime.time() value = value.date() - super(DateField, self).set_client(record, value, + super().set_client(record, value, force_change=force_change) def date_format(self, record): @@ -343,7 +343,7 @@ class TimeField(Field): def set_client(self, record, value, force_change=False): if isinstance(value, datetime.datetime): value = value.time() - super(TimeField, self).set_client(record, value, + super().set_client(record, value, force_change=force_change) def time_format(self, record): @@ -363,11 +363,11 @@ class TimeDeltaField(Field): def set_client(self, record, value, force_change=False): if isinstance(value, str): value = common.timedelta.parse(value, self.converter(record.group)) - super(TimeDeltaField, self).set_client( + super().set_client( record, value, force_change=force_change) def get_client(self, record): - value = super(TimeDeltaField, self).get_client(record) + value = super().get_client(record) return common.timedelta.format(value, self.converter(record.group)) @@ -468,7 +468,7 @@ class FloatField(Field): def set_client(self, record, value, force_change=False, factor=1): value = self.apply_factor(record, self.convert(value), factor) - super(FloatField, self).set_client(record, value, + super().set_client(record, value, force_change=force_change) def get_client(self, record, factor=1, grouping=True): @@ -501,11 +501,11 @@ class NumericField(FloatField): _convert = Decimal def set_client(self, record, value, force_change=False, factor=1): - return super(NumericField, self).set_client(record, value, + return super().set_client(record, value, force_change=force_change, factor=Decimal(str(factor))) def get_client(self, record, factor=1, grouping=True): - return super(NumericField, self).get_client(record, + return super().get_client(record, factor=Decimal(str(factor)), grouping=grouping) @@ -514,11 +514,11 @@ class IntegerField(FloatField): _convert = int def set_client(self, record, value, force_change=False, factor=1): - return super(IntegerField, self).set_client(record, value, + return super().set_client(record, value, force_change=force_change, factor=int(factor)) def get_client(self, record, factor=1, grouping=True): - return super(IntegerField, self).get_client( + return super().get_client( record, factor=int(factor), grouping=grouping) @@ -528,7 +528,7 @@ class BooleanField(Field): def set_client(self, record, value, force_change=False): value = bool(value) - super(BooleanField, self).set_client(record, value, + super().set_client(record, value, force_change=force_change) def get(self, record): @@ -567,7 +567,7 @@ class M2OField(Field): if value and value < 0 and self.name != record.parent_name: value, rec_name = None, '' record.value.setdefault(self.name + '.', {})['rec_name'] = rec_name - super(M2OField, self).set_client(record, value, + super().set_client(record, value, force_change=force_change) def set(self, record, value): @@ -583,7 +583,7 @@ class M2OField(Field): record.value[self.name] = value def get_context(self, record, record_context=None, local=False): - context = super(M2OField, self).get_context( + context = super().get_context( record, record_context=record_context, local=local) if self.attrs.get('datetime_field'): context['_datetime'] = record.get_eval( @@ -603,7 +603,7 @@ class M2OField(Field): if record.parent_name == self.name and record.parent: return record.parent.get_on_change_value( skip={record.group.child_name}) - return super(M2OField, self).get_on_change_value(record) + return super().get_on_change_value(record) class O2OField(M2OField): @@ -619,7 +619,7 @@ class O2MField(Field): _single_value = False def __init__(self, attrs): - super(O2MField, self).__init__(attrs) + super().__init__(attrs) def _set_default_value(self, record, fields=None): if record.value.get(self.name) is not None: @@ -910,7 +910,7 @@ class O2MField(Field): if not record2.validate(softvalidation=softvalidation, pre_validate=ldomain): invalid = 'children' - test = super(O2MField, self).validate(record, softvalidation, + test = super().validate(record, softvalidation, pre_validate) if test and invalid: self.get_state_attrs(record)['invalid'] = invalid @@ -919,7 +919,7 @@ class O2MField(Field): def state_set(self, record, states=('readonly', 'required', 'invisible')): self._set_default_value(record) - super(O2MField, self).state_set(record, states=states) + super().state_set(record, states=states) def get_removed_ids(self, record): return [x.id for x in record.value[self.name].record_removed] @@ -942,7 +942,7 @@ class ReferenceField(Field): _default = None def _is_empty(self, record): - result = super(ReferenceField, self)._is_empty(record) + result = super()._is_empty(record) if not result and (record.value[self.name] is None or record.value[self.name][1] < 0): result = True @@ -984,7 +984,7 @@ class ReferenceField(Field): rec_name = '' record.value.setdefault(self.name + '.', {})['rec_name'] = rec_name value = (ref_model, ref_id) - super(ReferenceField, self).set_client(record, value, + super().set_client(record, value, force_change=force_change) def set(self, record, value): @@ -1019,7 +1019,7 @@ class ReferenceField(Field): record.value.setdefault(self.name + '.', {})['rec_name'] = rec_name def get_context(self, record, record_context=None, local=False): - context = super(ReferenceField, self).get_context( + context = super().get_context( record, record_context, local=local) if self.attrs.get('datetime_field'): context['_datetime'] = record.get_eval( @@ -1030,7 +1030,7 @@ class ReferenceField(Field): if record.parent_name == self.name and record.parent: return record.parent.model_name, record.parent.get_on_change_value( skip={record.group.child_name}) - return super(ReferenceField, self).get_on_change_value(record) + return super().get_on_change_value(record) def validation_domains(self, record, pre_validate=None): screen_domain, attr_domain = self.domains_get(record, pre_validate) @@ -1178,7 +1178,7 @@ class DictField(Field): _single_value = False def __init__(self, attrs): - super(DictField, self).__init__(attrs) + super().__init__(attrs) self.keys = {} def get(self, record): @@ -1237,7 +1237,7 @@ class DictField(Field): return new_keys def validate(self, record, softvalidation=False, pre_validate=None): - valid = super(DictField, self).validate( + valid = super().validate( record, softvalidation, pre_validate) if self.attrs.get('readonly'): diff --git a/tryton/tryton/gui/window/view_form/model/group.py b/tryton/tryton/gui/window/view_form/model/group.py index d823437cc7..ab9d431108 100644 --- a/tryton/tryton/gui/window/view_form/model/group.py +++ b/tryton/tryton/gui/window/view_form/model/group.py @@ -15,7 +15,7 @@ class Group(list): def __init__(self, model_name, fields, ids=None, parent=None, parent_name='', child_name='', context=None, domain=None, readonly=False, parent_datetime_field=None): - super(Group, self).__init__() + super().__init__() if domain is None: domain = [] self.__domain = domain @@ -101,7 +101,7 @@ class Group(list): record.next[id(self)] = self.__getitem__(pos) else: record.next[id(self)] = None - super(Group, self).insert(pos, record) + super().insert(pos, record) self.__id2record[record.id] = record if not self.lock_signal: self._group_list_changed('record-added', record, pos) @@ -111,7 +111,7 @@ class Group(list): if self.__len__() >= 1: self.__getitem__(self.__len__() - 1).next[id(self)] = record record.next[id(self)] = None - super(Group, self).append(record) + super().append(record) self.__id2record[record.id] = record if not self.lock_signal: self._group_list_changed( @@ -126,7 +126,7 @@ class Group(list): else: self.__getitem__(idx - 1).next[id(self)] = None self._group_list_changed('record-removed', record, idx) - super(Group, self).remove(record) + super().remove(record) del self.__id2record[record.id] record.destroy() diff --git a/tryton/tryton/gui/window/view_form/model/record.py b/tryton/tryton/gui/window/view_form/model/record.py index a626dc4db1..42665f9cf8 100644 --- a/tryton/tryton/gui/window/view_form/model/record.py +++ b/tryton/tryton/gui/window/view_form/model/record.py @@ -43,7 +43,7 @@ class Record: id = -1 def __init__(self, model_name, obj_id, group=None): - super(Record, self).__init__() + super().__init__() self.model_name = model_name if obj_id is None: self.id = Record.id diff --git a/tryton/tryton/gui/window/view_form/view/calendar_gtk/calendar_.py b/tryton/tryton/gui/window/view_form/view/calendar_gtk/calendar_.py index 6686347200..23eb090b42 100644 --- a/tryton/tryton/gui/window/view_form/view/calendar_gtk/calendar_.py +++ b/tryton/tryton/gui/window/view_form/view/calendar_gtk/calendar_.py @@ -17,7 +17,7 @@ class Calendar_(goocalendar.Calendar): 'Calendar' def __init__(self, attrs, view, fields, event_store=None): - super(Calendar_, self).__init__( + super().__init__( event_store, attrs.get('mode', 'month')) self.props.selected_border_color = _colors[1] if hasattr(self.props, 'selected_text_color'): diff --git a/tryton/tryton/gui/window/view_form/view/calendar_gtk/toolbar.py b/tryton/tryton/gui/window/view_form/view/calendar_gtk/toolbar.py index 3d47ea708f..cceb88f97b 100644 --- a/tryton/tryton/gui/window/view_form/view/calendar_gtk/toolbar.py +++ b/tryton/tryton/gui/window/view_form/view/calendar_gtk/toolbar.py @@ -16,7 +16,7 @@ _ = gettext.gettext class Toolbar(Gtk.Toolbar): def __init__(self, goocalendar): - super(Toolbar, self).__init__() + super().__init__() self.goocalendar = goocalendar self.accel_group = Main().accel_group diff --git a/tryton/tryton/gui/window/view_form/view/form_gtk/binary.py b/tryton/tryton/gui/window/view_form/view/form_gtk/binary.py index a9a87a3f5f..7cd2e5e821 100644 --- a/tryton/tryton/gui/window/view_form/view/form_gtk/binary.py +++ b/tryton/tryton/gui/window/view_form/view/form_gtk/binary.py @@ -18,7 +18,7 @@ _ = gettext.gettext class BinaryMixin(Widget): def __init__(self, view, attrs): - super(BinaryMixin, self).__init__(view, attrs) + super().__init__(view, attrs) self.filename = attrs.get('filename') def toolbar(self): @@ -148,7 +148,7 @@ class Binary(BinaryMixin, Widget): "Binary" def __init__(self, view, attrs): - super(Binary, self).__init__(view, attrs) + super().__init__(view, attrs) self.widget = Gtk.HBox(spacing=0) self.wid_size = Gtk.Entry() @@ -198,7 +198,7 @@ class Binary(BinaryMixin, Widget): self.open_() def display(self): - super(Binary, self).display() + super().display() if not self.field: if self.wid_text: self.wid_text.set_text('') diff --git a/tryton/tryton/gui/window/view_form/view/form_gtk/calendar_.py b/tryton/tryton/gui/window/view_form/view/form_gtk/calendar_.py index debbcb7f45..4c0dd6a873 100644 --- a/tryton/tryton/gui/window/view_form/view/form_gtk/calendar_.py +++ b/tryton/tryton/gui/window/view_form/view/form_gtk/calendar_.py @@ -20,7 +20,7 @@ class Date(Widget): _changed_signal = 'date-changed' def __init__(self, view, attrs, _entry=DateEntry): - super(Date, self).__init__(view, attrs) + super().__init__(view, attrs) self.widget = Gtk.HBox() self.entry = self.mnemonic_widget = add_operators(_entry()) @@ -83,7 +83,7 @@ class Date(Widget): self.entry.props.format = format_ def display(self): - super(Date, self).display() + super().display() if self.field and self.record: value = self.field.get_client(self.record) else: @@ -101,7 +101,7 @@ class Time(Date): _changed_signal = 'time-changed' def __init__(self, view, attrs): - super(Time, self).__init__(view, attrs, _entry=TimeEntry) + super().__init__(view, attrs, _entry=TimeEntry) self.entry.connect('move-active', _move_active) self.entry.connect( 'scroll-event', @@ -121,7 +121,7 @@ class Time(Date): return self.entry.get_child() def display(self): - super(Time, self).display() + super().display() def set_format(self): if self.field and self.record: diff --git a/tryton/tryton/gui/window/view_form/view/form_gtk/char.py b/tryton/tryton/gui/window/view_form/view/form_gtk/char.py index 963b75d6c0..1c329c6ce6 100644 --- a/tryton/tryton/gui/window/view_form/view/form_gtk/char.py +++ b/tryton/tryton/gui/window/view_form/view/form_gtk/char.py @@ -17,7 +17,7 @@ class Char(Widget, TranslateMixin, PopdownMixin): "Char" def __init__(self, view, attrs): - super(Char, self).__init__(view, attrs) + super().__init__(view, attrs) self.widget = Gtk.HBox() self.autocomplete = bool(attrs.get('autocomplete')) @@ -105,7 +105,7 @@ class Char(Widget, TranslateMixin, PopdownMixin): return value def display(self): - super(Char, self).display() + super().display() if self.autocomplete: if self.record: if self.field_name not in self.record.autocompletion: @@ -150,7 +150,7 @@ class Char(Widget, TranslateMixin, PopdownMixin): True: Gtk.SensitivityType.OFF, False: Gtk.SensitivityType.AUTO, } - super(Char, self)._readonly_set(value) + super()._readonly_set(value) if self.autocomplete: entry_editable = self.entry.get_child() self.entry.set_button_sensitivity(sensitivity[value]) @@ -162,7 +162,7 @@ class Char(Widget, TranslateMixin, PopdownMixin): class Password(Char): def __init__(self, view, attrs): - super(Password, self).__init__(view, attrs) + super().__init__(view, attrs) self.entry.props.visibility = False self.visibility_checkbox = Gtk.CheckButton() diff --git a/tryton/tryton/gui/window/view_form/view/form_gtk/checkbox.py b/tryton/tryton/gui/window/view_form/view/form_gtk/checkbox.py index 3498c6ee8e..635d895530 100644 --- a/tryton/tryton/gui/window/view_form/view/form_gtk/checkbox.py +++ b/tryton/tryton/gui/window/view_form/view/form_gtk/checkbox.py @@ -12,13 +12,13 @@ _ = gettext.gettext class CheckBox(Widget): def __init__(self, view, attrs): - super(CheckBox, self).__init__(view, attrs) + super().__init__(view, attrs) self.widget = self.mnemonic_widget = Gtk.CheckButton() self.widget.connect('focus-out-event', lambda x, y: self._focus_out()) self.widget.connect_after('toggled', self.sig_activate) def _readonly_set(self, value): - super(CheckBox, self)._readonly_set(value) + super()._readonly_set(value) # TODO find a better solution to accept focus self.widget.set_sensitive(not value) @@ -26,7 +26,7 @@ class CheckBox(Widget): self.field.set_client(self.record, self.widget.get_active()) def display(self): - super(CheckBox, self).display() + super().display() if not self.field: self.widget.set_active(False) return False diff --git a/tryton/tryton/gui/window/view_form/view/form_gtk/dictionary.py b/tryton/tryton/gui/window/view_form/view/form_gtk/dictionary.py index d2ac3b1611..a5569f47da 100644 --- a/tryton/tryton/gui/window/view_form/view/form_gtk/dictionary.py +++ b/tryton/tryton/gui/window/view_form/view/form_gtk/dictionary.py @@ -468,7 +468,7 @@ DICT_ENTRIES = { class DictWidget(Widget): def __init__(self, view, attrs): - super(DictWidget, self).__init__(view, attrs) + super().__init__(view, attrs) self.schema_model = attrs['schema_model'] self.fields = {} self.buttons = {} @@ -641,7 +641,7 @@ class DictWidget(Widget): self.buttons[key] = remove_but def display(self): - super(DictWidget, self).display() + super().display() if not self.field: return diff --git a/tryton/tryton/gui/window/view_form/view/form_gtk/float.py b/tryton/tryton/gui/window/view_form/view/form_gtk/float.py index cc34742487..5ac2c41538 100644 --- a/tryton/tryton/gui/window/view_form/view/form_gtk/float.py +++ b/tryton/tryton/gui/window/view_form/view/form_gtk/float.py @@ -21,4 +21,4 @@ class Float(Integer): def display(self): self.entry.digits = self.digits - super(Float, self).display() + super().display() diff --git a/tryton/tryton/gui/window/view_form/view/form_gtk/image.py b/tryton/tryton/gui/window/view_form/view/form_gtk/image.py index 1cf1b92b52..f456aa8077 100644 --- a/tryton/tryton/gui/window/view_form/view/form_gtk/image.py +++ b/tryton/tryton/gui/window/view_form/view/form_gtk/image.py @@ -16,7 +16,7 @@ _ = gettext.gettext class Image(BinaryMixin, Widget): def __init__(self, view, attrs): - super(Image, self).__init__(view, attrs) + super().__init__(view, attrs) self.height = int(attrs.get('height', 100)) self.width = int(attrs.get('width', 300)) @@ -49,7 +49,7 @@ class Image(BinaryMixin, Widget): @property def filters(self): - filters = super(Image, self).filters + filters = super().filters filter_image = Gtk.FileFilter() filter_image.set_name(_('Images')) for mime in ("image/png", "image/jpeg", "image/gif"): @@ -65,7 +65,7 @@ class Image(BinaryMixin, Widget): self.but_clear.set_sensitive(not value) def clear(self, widget=None): - super(Image, self).clear(widget=widget) + super().clear(widget=widget) self.update_img() def drag_motion(self, widget, context, x, y, timestamp): @@ -110,6 +110,6 @@ class Image(BinaryMixin, Widget): return bool(value) def display(self): - super(Image, self).display() + super().display() value = self.update_img() self.update_buttons(bool(value)) diff --git a/tryton/tryton/gui/window/view_form/view/form_gtk/integer.py b/tryton/tryton/gui/window/view_form/view/form_gtk/integer.py index 945b424766..92ce838769 100644 --- a/tryton/tryton/gui/window/view_form/view/form_gtk/integer.py +++ b/tryton/tryton/gui/window/view_form/view/form_gtk/integer.py @@ -12,7 +12,7 @@ class Integer(Widget): "Integer" def __init__(self, view, attrs): - super(Integer, self).__init__(view, attrs) + super().__init__(view, attrs) self.widget = Gtk.HBox() self.entry = self.mnemonic_widget = NumberEntry( monetary=attrs.get('monetary', False)) diff --git a/tryton/tryton/gui/window/view_form/view/form_gtk/many2many.py b/tryton/tryton/gui/window/view_form/view/form_gtk/many2many.py index 9a1400baa4..b85c9b6247 100644 --- a/tryton/tryton/gui/window/view_form/view/form_gtk/many2many.py +++ b/tryton/tryton/gui/window/view_form/view/form_gtk/many2many.py @@ -21,7 +21,7 @@ class Many2Many(Widget): expand = True def __init__(self, view, attrs): - super(Many2Many, self).__init__(view, attrs) + super().__init__(view, attrs) self.widget = Gtk.Frame() self.widget.set_shadow_type(Gtk.ShadowType.NONE) @@ -330,7 +330,7 @@ class Many2Many(Widget): self._set_button_sensitive() def display(self): - super(Many2Many, self).display() + super().display() if not self.field: self.screen.new_group() self.screen.current_record = None diff --git a/tryton/tryton/gui/window/view_form/view/form_gtk/many2one.py b/tryton/tryton/gui/window/view_form/view/form_gtk/many2one.py index 4269002eab..079614deda 100644 --- a/tryton/tryton/gui/window/view_form/view/form_gtk/many2one.py +++ b/tryton/tryton/gui/window/view_form/view/form_gtk/many2one.py @@ -22,7 +22,7 @@ class Many2One(Widget): default_width_chars = 12 def __init__(self, view, attrs): - super(Many2One, self).__init__(view, attrs) + super().__init__(view, attrs) self.widget = Gtk.HBox(spacing=0) self.widget.set_property('sensitive', True) @@ -306,7 +306,7 @@ class Many2One(Widget): def display(self): self.changed = False - super(Many2One, self).display() + super().display() self._set_button_sensitive() self._set_completion() diff --git a/tryton/tryton/gui/window/view_form/view/form_gtk/multiselection.py b/tryton/tryton/gui/window/view_form/view/form_gtk/multiselection.py index 5034bab413..6b974beec0 100644 --- a/tryton/tryton/gui/window/view_form/view/form_gtk/multiselection.py +++ b/tryton/tryton/gui/window/view_form/view/form_gtk/multiselection.py @@ -11,7 +11,7 @@ class MultiSelection(Widget, SelectionMixin): expand = True def __init__(self, view, attrs): - super(MultiSelection, self).__init__(view, attrs) + super().__init__(view, attrs) if int(attrs.get('yexpand', self.expand)): self.widget = Gtk.ScrolledWindow() @@ -51,7 +51,7 @@ class MultiSelection(Widget, SelectionMixin): cell.set_property('active', selection.iter_is_selected(iter_)) def _readonly_set(self, readonly): - super(MultiSelection, self)._readonly_set(readonly) + super()._readonly_set(readonly) selection = self.tree.get_selection() selection.set_select_function(lambda *a: not readonly) @@ -101,6 +101,6 @@ class MultiSelection(Widget, SelectionMixin): values = self.field.get_eval(self.record) for value in values: selection.select_path(value2path[value]) - super(MultiSelection, self).display() + super().display() finally: selection.handler_unblock_by_func(self.changed) diff --git a/tryton/tryton/gui/window/view_form/view/form_gtk/one2many.py b/tryton/tryton/gui/window/view_form/view/form_gtk/one2many.py index 64ddf70d24..c098efe850 100644 --- a/tryton/tryton/gui/window/view_form/view/form_gtk/one2many.py +++ b/tryton/tryton/gui/window/view_form/view/form_gtk/one2many.py @@ -22,7 +22,7 @@ class One2Many(Widget): expand = True def __init__(self, view, attrs): - super(One2Many, self).__init__(view, attrs) + super().__init__(view, attrs) self.widget = Gtk.Frame() self.widget.set_shadow_type(Gtk.ShadowType.NONE) @@ -557,7 +557,7 @@ class One2Many(Widget): self._set_button_sensitive() def display(self): - super(One2Many, self).display() + super().display() self._set_button_sensitive() diff --git a/tryton/tryton/gui/window/view_form/view/form_gtk/progressbar.py b/tryton/tryton/gui/window/view_form/view/form_gtk/progressbar.py index 8d3a554686..5430404b25 100644 --- a/tryton/tryton/gui/window/view_form/view/form_gtk/progressbar.py +++ b/tryton/tryton/gui/window/view_form/view/form_gtk/progressbar.py @@ -19,7 +19,7 @@ class ProgressBar(Widget): } def __init__(self, view, attrs): - super(ProgressBar, self).__init__(view, attrs) + super().__init__(view, attrs) self.widget = self.mnemonic_widget = Gtk.ProgressBar() orientation, inverted = self.orientations.get( attrs.get('orientation', 'left_to_right')) @@ -28,7 +28,7 @@ class ProgressBar(Widget): self.widget.set_show_text(True) def display(self): - super(ProgressBar, self).display() + super().display() if not self.field: self.widget.set_text('') self.widget.set_fraction(0.0) diff --git a/tryton/tryton/gui/window/view_form/view/form_gtk/pyson.py b/tryton/tryton/gui/window/view_form/view/form_gtk/pyson.py index fcc999fcdd..38694ced6d 100644 --- a/tryton/tryton/gui/window/view_form/view/form_gtk/pyson.py +++ b/tryton/tryton/gui/window/view_form/view/form_gtk/pyson.py @@ -11,7 +11,7 @@ from .char import Char class PYSON(Char): def __init__(self, view, attrs): - super(PYSON, self).__init__(view, attrs) + super().__init__(view, attrs) self.encoder = PYSONEncoder() self.decoder = PYSONDecoder(noeval=True) self.entry.connect('key-release-event', self.validate_pyson) @@ -36,7 +36,7 @@ class PYSON(Char): self.field.set_client(self.record, value) def get_client_value(self): - value = super(PYSON, self).get_client_value() + value = super().get_client_value() if value: value = repr(self.decoder.decode(value)) return value @@ -51,4 +51,4 @@ class PYSON(Char): def _focus_out(self): self.validate_pyson() - super(PYSON, self)._focus_out() + super()._focus_out() diff --git a/tryton/tryton/gui/window/view_form/view/form_gtk/reference.py b/tryton/tryton/gui/window/view_form/view/form_gtk/reference.py index 885a6c81d9..8adc0effa3 100644 --- a/tryton/tryton/gui/window/view_form/view/form_gtk/reference.py +++ b/tryton/tryton/gui/window/view_form/view/form_gtk/reference.py @@ -15,7 +15,7 @@ _ = gettext.gettext class Reference(Many2One, SelectionMixin, PopdownMixin): def __init__(self, view, attrs): - super(Reference, self).__init__(view, attrs) + super().__init__(view, attrs) self.widget_combo = Gtk.ComboBox(has_entry=True) child = self.widget_combo.get_child() @@ -54,7 +54,7 @@ class Reference(Many2One, SelectionMixin, PopdownMixin): combobox.stop_emission_by_name('move-active') def _set_button_sensitive(self): - super(Reference, self)._set_button_sensitive() + super()._set_button_sensitive() self.widget_combo.get_child().set_editable(not self._readonly) self.widget_combo.set_button_sensitivity( Gtk.SensitivityType.OFF if self._readonly @@ -129,7 +129,7 @@ class Reference(Many2One, SelectionMixin, PopdownMixin): model, value = value else: model, value = None, None - super(Reference, self).set_text(value) + super().set_text(value) self.widget_combo.handler_block_by_func(self.sig_changed_combo) if not self.set_popdown_value(self.widget_combo, model): text = self.get_inactive_selection(model) @@ -141,4 +141,4 @@ class Reference(Many2One, SelectionMixin, PopdownMixin): def display(self): self.update_selection(self.record, self.field) self.set_popdown(self.selection, self.widget_combo) - super(Reference, self).display() + super().display() diff --git a/tryton/tryton/gui/window/view_form/view/form_gtk/richtextbox.py b/tryton/tryton/gui/window/view_form/view/form_gtk/richtextbox.py index 52f47b8e30..9153221ce8 100644 --- a/tryton/tryton/gui/window/view_form/view/form_gtk/richtextbox.py +++ b/tryton/tryton/gui/window/view_form/view/form_gtk/richtextbox.py @@ -15,7 +15,7 @@ from .textbox import TextBox class RichTextBox(TextBox): def __init__(self, view, attrs): - super(RichTextBox, self).__init__(view, attrs) + super().__init__(view, attrs) self.toolbar = None self.tag_widgets = WeakKeyDictionary() self.tags = {} @@ -32,12 +32,12 @@ class RichTextBox(TextBox): self.toolbar, expand=False, fill=True, padding=0) def _get_textview(self): - textview = super(RichTextBox, self)._get_textview() + textview = super()._get_textview() register_format(textview) return textview def translate_widget(self): - widget = super(RichTextBox, self).translate_widget() + widget = super().translate_widget() textview = widget.get_children()[-1].get_child() if self.toolbar: widget.pack_start( @@ -45,7 +45,7 @@ class RichTextBox(TextBox): return widget def translate_widget_set_readonly(self, widget, value): - super(RichTextBox, self).translate_widget_set_readonly(widget, value) + super().translate_widget_set_readonly(widget, value) if self.toolbar: toolbar = widget.get_children()[0] for n in range(toolbar.get_n_items()): @@ -74,6 +74,6 @@ class RichTextBox(TextBox): return get_content(textview) def _readonly_set(self, value): - super(RichTextBox, self)._readonly_set(value) + super()._readonly_set(value) if self.toolbar: self.toolbar.set_sensitive(not value) diff --git a/tryton/tryton/gui/window/view_form/view/form_gtk/selection.py b/tryton/tryton/gui/window/view_form/view/form_gtk/selection.py index aef115212d..f127ddd684 100644 --- a/tryton/tryton/gui/window/view_form/view/form_gtk/selection.py +++ b/tryton/tryton/gui/window/view_form/view/form_gtk/selection.py @@ -11,7 +11,7 @@ from .widget import Widget class Selection(Widget, SelectionMixin, PopdownMixin): def __init__(self, view, attrs): - super(Selection, self).__init__(view, attrs) + super().__init__(view, attrs) self.widget = Gtk.HBox(spacing=3) self.entry = Gtk.ComboBox(has_entry=True) @@ -47,7 +47,7 @@ class Selection(Widget, SelectionMixin, PopdownMixin): combobox.stop_emission_by_name('move-active') def _readonly_set(self, value): - super(Selection, self)._readonly_set(value) + super()._readonly_set(value) self.entry.get_child().set_editable(not value) self.entry.set_button_sensitivity( Gtk.SensitivityType.OFF if value else Gtk.SensitivityType.AUTO) @@ -77,7 +77,7 @@ class Selection(Widget, SelectionMixin, PopdownMixin): # When setting no item GTK doesn't clear the entry self.entry.get_child().set_text('') return - super(Selection, self).display() + super().display() value = self.field.get(self.record) if isinstance(value, (list, tuple)): # Compatibility with Many2One diff --git a/tryton/tryton/gui/window/view_form/view/form_gtk/state_widget.py b/tryton/tryton/gui/window/view_form/view/form_gtk/state_widget.py index 07f8d4078f..f3ffb9bcba 100644 --- a/tryton/tryton/gui/window/view_form/view/form_gtk/state_widget.py +++ b/tryton/tryton/gui/window/view_form/view/form_gtk/state_widget.py @@ -14,7 +14,7 @@ class StateMixin(object): def __init__(self, *args, **kwargs): self.attrs = kwargs.pop('attrs') - super(StateMixin, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) def state_set(self, record): if record: @@ -30,7 +30,7 @@ class StateMixin(object): class Label(StateMixin, Gtk.Label): def state_set(self, record): - super(Label, self).state_set(record) + super().state_set(record) if 'name' in self.attrs and record: field = record.group.fields[self.attrs['name']] else: @@ -61,7 +61,7 @@ class VBox(StateMixin, Gtk.VBox): class Image(StateMixin, Gtk.Image): def state_set(self, record): - super(Image, self).state_set(record) + super().state_set(record) if not record: return name = self.attrs['name'] @@ -84,7 +84,7 @@ class Frame(StateMixin, Gtk.Frame): def __init__(self, label=None, attrs=None): if not label: # label must be None to have no label widget label = None - super(Frame, self).__init__(label=label, attrs=attrs) + super().__init__(label=label, attrs=attrs) if not label: self.set_shadow_type(Gtk.ShadowType.NONE) self.set_border_width(0) @@ -95,7 +95,7 @@ class ScrolledWindow(StateMixin, Gtk.ScrolledWindow): def state_set(self, record): # Force to show first to ensure it is displayed in the Notebook self.show() - super(ScrolledWindow, self).state_set(record) + super().state_set(record) class Notebook(StateMixin, Gtk.Notebook): @@ -107,7 +107,7 @@ class Expander(StateMixin, Gtk.Expander): def __init__(self, label=None, attrs=None): if not label: label = None - super(Expander, self).__init__(label=label, attrs=attrs) + super().__init__(label=label, attrs=attrs) class Link(StateMixin, Gtk.Button): diff --git a/tryton/tryton/gui/window/view_form/view/form_gtk/textbox.py b/tryton/tryton/gui/window/view_form/view/form_gtk/textbox.py index 3be8ff8aed..48ce67592a 100644 --- a/tryton/tryton/gui/window/view_form/view/form_gtk/textbox.py +++ b/tryton/tryton/gui/window/view_form/view/form_gtk/textbox.py @@ -20,7 +20,7 @@ class TextBox(Widget, TranslateMixin): expand = True def __init__(self, view, attrs): - super(TextBox, self).__init__(view, attrs) + super().__init__(view, attrs) self.widget = Gtk.VBox() self.scrolledwindow = Gtk.ScrolledWindow() @@ -92,7 +92,7 @@ class TextBox(Widget, TranslateMixin): textview.props.sensitive = not value def _readonly_set(self, value): - super(TextBox, self)._readonly_set(value) + super()._readonly_set(value) self.textview.set_editable(not value) @property @@ -120,7 +120,7 @@ class TextBox(Widget, TranslateMixin): return buf.get_text(iter_start, iter_end, False) def display(self): - super(TextBox, self).display() + super().display() value = self.field and self.field.get(self.record) if not value: value = '' @@ -153,7 +153,7 @@ class TextBufferLimitSize(Gtk.TextBuffer): } def __init__(self, max_length): - super(TextBufferLimitSize, self).__init__() + super().__init__() self.max_length = max_length def do_insert_text(self, iter, text, length): diff --git a/tryton/tryton/gui/window/view_form/view/form_gtk/timedelta.py b/tryton/tryton/gui/window/view_form/view/form_gtk/timedelta.py index ea08d47cb8..0d3bb16d85 100644 --- a/tryton/tryton/gui/window/view_form/view/form_gtk/timedelta.py +++ b/tryton/tryton/gui/window/view_form/view/form_gtk/timedelta.py @@ -10,7 +10,7 @@ from .widget import Widget class TimeDelta(Widget): def __init__(self, view, attrs): - super(TimeDelta, self).__init__(view, attrs) + super().__init__(view, attrs) self.widget = Gtk.HBox() self.entry = self.mnemonic_widget = Gtk.Entry() @@ -37,7 +37,7 @@ class TimeDelta(Widget): return self.entry.get_text() def display(self): - super(TimeDelta, self).display() + super().display() if not self.field: value = '' else: @@ -46,5 +46,5 @@ class TimeDelta(Widget): reset_position(self.entry) def _readonly_set(self, value): - super(TimeDelta, self)._readonly_set(value) + super()._readonly_set(value) self.entry.set_editable(not value) diff --git a/tryton/tryton/gui/window/view_form/view/form_gtk/url.py b/tryton/tryton/gui/window/view_form/view/form_gtk/url.py index 2d5a2b2d6f..6f7f0dcbda 100644 --- a/tryton/tryton/gui/window/view_form/view/form_gtk/url.py +++ b/tryton/tryton/gui/window/view_form/view/form_gtk/url.py @@ -22,7 +22,7 @@ class URL(Char): "url" def __init__(self, view, attrs): - super(URL, self).__init__(view, attrs) + super().__init__(view, attrs) self.tooltips = common.Tooltips() self.button = Gtk.Button() @@ -34,7 +34,7 @@ class URL(Char): self.button, expand=False, fill=False, padding=0) def display(self): - super(URL, self).display() + super().display() self.set_tooltips() if self.record and 'icon' in self.attrs: icon = self.attrs['icon'] diff --git a/tryton/tryton/gui/window/view_form/view/form_gtk/widget.py b/tryton/tryton/gui/window/view_form/view/form_gtk/widget.py index 31c2e956b6..d4077ece1d 100644 --- a/tryton/tryton/gui/window/view_form/view/form_gtk/widget.py +++ b/tryton/tryton/gui/window/view_form/view/form_gtk/widget.py @@ -19,7 +19,7 @@ class Widget(object): default_width_chars = 8 def __init__(self, view, attrs): - super(Widget, self).__init__() + super().__init__() self.view = view self.attrs = attrs self.widget = None diff --git a/tryton/tryton/gui/window/view_form/view/graph_gtk/bar.py b/tryton/tryton/gui/window/view_form/view/graph_gtk/bar.py index ab49ab56b1..cfe019a0ea 100644 --- a/tryton/tryton/gui/window/view_form/view/graph_gtk/bar.py +++ b/tryton/tryton/gui/window/view_form/view/graph_gtk/bar.py @@ -17,7 +17,7 @@ from .graph import Graph class Bar(Graph): def __init__(self, *args, **kwargs): - super(Bar, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) self.bars = [] def drawGraph(self, cr, width, height): @@ -63,7 +63,7 @@ class Bar(Graph): return linear def motion(self, widget, event): - super(Bar, self).motion(widget, event) + super().motion(widget, event) if not getattr(self, 'area', None): return @@ -127,7 +127,7 @@ class Bar(Graph): maxx - minx + 2, maxy - miny + 2) def action(self): - super(Bar, self).action() + super().action() for bar in self.bars: if bar.highlight: ids = self.ids[bar.xname] @@ -171,11 +171,11 @@ class VerticalBar(Bar): i += 1 def XLabels(self): - xlabels = super(VerticalBar, self).XLabels() + xlabels = super().XLabels() return [(x[0] + (self.xscale / 2), x[1]) for x in xlabels] def YLabels(self): - ylabels = super(VerticalBar, self).YLabels() + ylabels = super().YLabels() if all('timedelta' in f for f in self.yfields): converter = {f.get('timedelta') for f in self.yfields} if len(converter) == 1: @@ -227,11 +227,11 @@ class HorizontalBar(Bar): i += 1 def YLabels(self): - xlabels = super(HorizontalBar, self).XLabels() + xlabels = super().XLabels() return [(1 - (x[0] + (self.xscale / 2)), x[1]) for x in xlabels] def XLabels(self): - ylabels = super(HorizontalBar, self).YLabels() + ylabels = super().YLabels() if all('timedelta' in f for f in self.yfields): converter = {f.get('timedelta') for f in self.yfields} if len(converter) == 1: diff --git a/tryton/tryton/gui/window/view_form/view/graph_gtk/graph.py b/tryton/tryton/gui/window/view_form/view/graph_gtk/graph.py index 16dc3fa83b..9055f260f7 100644 --- a/tryton/tryton/gui/window/view_form/view/graph_gtk/graph.py +++ b/tryton/tryton/gui/window/view_form/view/graph_gtk/graph.py @@ -75,7 +75,7 @@ class Graph(Gtk.DrawingArea): __gsignals__ = {"draw": "override"} def __init__(self, view, xfield, yfields): - super(Graph, self).__init__() + super().__init__() self.view = view self.xfield = xfield self.yfields = yfields @@ -99,7 +99,7 @@ class Graph(Gtk.DrawingArea): def destroy(self): self.popup.destroy() - super(Graph, self).destroy() + super().destroy() def motion(self, widget, event): self.popup.set_position(self, event.x, event.y) diff --git a/tryton/tryton/gui/window/view_form/view/graph_gtk/line.py b/tryton/tryton/gui/window/view_form/view/graph_gtk/line.py index ee9ad56015..f773cd4bca 100644 --- a/tryton/tryton/gui/window/view_form/view/graph_gtk/line.py +++ b/tryton/tryton/gui/window/view_form/view/graph_gtk/line.py @@ -145,7 +145,7 @@ class Line(Graph): cr.restore() def drawLegend(self, cr, widht, height): - super(Line, self).drawLegend(cr, widht, height) + super().drawLegend(cr, widht, height) cr.save() for point in self.points: if point.highlight: @@ -237,7 +237,7 @@ class Line(Graph): int(maxx - minx + 1), int(maxy - miny + 1)) def updateXY(self): - super(Line, self).updateXY() + super().updateXY() if self.xrange != 0: self.xrange -= 1 if self.xrange == 0: @@ -246,18 +246,18 @@ class Line(Graph): self.xscale = 1.0 / self.xrange def drawAxis(self, cr, width, height): - super(Line, self).drawAxis(cr, width, height) + super().drawAxis(cr, width, height) self.drawLine(cr, 1.0, 0) def action(self): - super(Line, self).action() + super().action() for point in self.points: if point.highlight: ids = self.ids[point.xname] self.action_keyword(ids) def YLabels(self): - ylabels = super(Line, self).YLabels() + ylabels = super().YLabels() if all('timedelta' in f for f in self.yfields): converter = {f.get('timedelta') for f in self.yfields} if len(converter) == 1: diff --git a/tryton/tryton/gui/window/view_form/view/graph_gtk/pie.py b/tryton/tryton/gui/window/view_form/view/graph_gtk/pie.py index 8a1cb08416..7c87606706 100644 --- a/tryton/tryton/gui/window/view_form/view/graph_gtk/pie.py +++ b/tryton/tryton/gui/window/view_form/view/graph_gtk/pie.py @@ -110,7 +110,7 @@ class Pie(Graph): cr.restore() def motion(self, widget, event): - super(Pie, self).motion(widget, event) + super().motion(widget, event) if not getattr(self, 'area', None): return @@ -172,7 +172,7 @@ class Pie(Graph): self.queue_draw() def action(self): - super(Pie, self).action() + super().action() for slice in self.slices: if slice.highlight: ids = self.ids[slice.xname] diff --git a/tryton/tryton/gui/window/view_form/view/list_gtk/editabletree.py b/tryton/tryton/gui/window/view_form/view/list_gtk/editabletree.py index 45b5d51a70..3805970055 100644 --- a/tryton/tryton/gui/window/view_form/view/list_gtk/editabletree.py +++ b/tryton/tryton/gui/window/view_form/view/list_gtk/editabletree.py @@ -29,7 +29,7 @@ class TreeView(Gtk.TreeView): display_counter = 0 def __init__(self, view): - super(TreeView, self).__init__() + super().__init__() self.view = view def next_column( @@ -153,7 +153,7 @@ class EditableTreeView(TreeView): if cell: self.set_cursor_on_cell(path, focus_column, cell, start_editing) else: - super(EditableTreeView, self).set_cursor( + super().set_cursor( path, focus_column, start_editing) def set_value(self): diff --git a/tryton/tryton/gui/window/view_form/view/list_gtk/widget.py b/tryton/tryton/gui/window/view_form/view/list_gtk/widget.py index 5bcd928eeb..057ecce114 100644 --- a/tryton/tryton/gui/window/view_form/view/list_gtk/widget.py +++ b/tryton/tryton/gui/window/view_form/view/list_gtk/widget.py @@ -186,7 +186,7 @@ class Affix(Cell): expand = False def __init__(self, view, attrs, protocol=None): - super(Affix, self).__init__() + super().__init__() self.attrs = attrs self.protocol = protocol self.icon = attrs.get('icon') @@ -286,7 +286,7 @@ class GenericText(Cell): editing = None def __init__(self, view, attrs, renderer=None): - super(GenericText, self).__init__() + super().__init__() self.attrs = attrs if renderer is None: renderer = CellRendererText @@ -397,7 +397,7 @@ class Char(GenericText): @realized @CellCache.cache def setter(self, column, cell, store, iter_, user_data=None): - super(Char, self).setter(column, cell, store, iter_, user_data) + super().setter(column, cell, store, iter_, user_data) cell.set_property('single-paragraph-mode', True) @@ -411,7 +411,7 @@ class Int(GenericText): def __init__(self, view, attrs, renderer=None): if renderer is None: renderer = CellRendererInteger - super(Int, self).__init__(view, attrs, renderer=renderer) + super().__init__(view, attrs, renderer=renderer) self.factor = float(attrs.get('factor', 1)) self.symbol = attrs.get('symbol') self.grouping = bool(int(attrs.get('grouping', 1))) @@ -451,7 +451,7 @@ class Boolean(GenericText): renderer=None): if renderer is None: renderer = CellRendererToggle - super(Boolean, self).__init__(view, attrs, renderer=renderer) + super().__init__(view, attrs, renderer=renderer) self.renderer.connect('toggled', self._sig_toggled) def _sig_toggled(self, renderer, path): @@ -473,7 +473,7 @@ class URL(Char): @realized @CellCache.cache def setter(self, column, cell, store, iter_, user_data=None): - super(URL, self).setter(column, cell, store, iter_, user_data) + super().setter(column, cell, store, iter_, user_data) record, field = self._get_record_field_from_iter(iter_, store) field.state_set(record, states=('readonly',)) readonly = field.get_state_attrs(record).get('readonly', False) @@ -485,13 +485,13 @@ class Date(GenericText): def __init__(self, view, attrs, renderer=None): if renderer is None: renderer = CellRendererDate - super(Date, self).__init__(view, attrs, renderer=renderer) + super().__init__(view, attrs, renderer=renderer) @realized def setter(self, column, cell, store, iter_, user_data=None): record, field = self._get_record_field_from_iter(iter_, store) self.renderer.props.format = self.get_format(record, field) - super(Date, self).setter(column, cell, store, iter_, user_data) + super().setter(column, cell, store, iter_, user_data) def get_format(self, record, field): if field and record: @@ -525,7 +525,7 @@ class Time(Date): def __init__(self, view, attrs, renderer=None): if renderer is None: renderer = CellRendererTime - super(Time, self).__init__(view, attrs, renderer=renderer) + super().__init__(view, attrs, renderer=renderer) def get_format(self, record, field): if field and record: @@ -560,12 +560,12 @@ class Float(Int): def __init__(self, view, attrs, renderer=None): if renderer is None: renderer = CellRendererFloat - super(Float, self).__init__(view, attrs, renderer=renderer) + super().__init__(view, attrs, renderer=renderer) self.renderer.monetary = attrs.get('monetary', False) @realized def setter(self, column, cell, store, iter_, user_data=None): - super(Float, self).setter(column, cell, store, iter_, user_data) + super().setter(column, cell, store, iter_, user_data) record, field = self._get_record_field_from_iter(iter_, store) digits = field.digits(record, factor=self.factor) cell.digits = digits @@ -577,7 +577,7 @@ class Binary(GenericText): def __init__(self, view, attrs, renderer=None): if renderer is None: renderer = CellRendererText - super(Binary, self).__init__(view, attrs, renderer=renderer) + super().__init__(view, attrs, renderer=renderer) self.renderer.set_property('editable', False) self.renderer.set_property('xalign', self.align) self._cell_save = _BinarySave(self) @@ -784,7 +784,7 @@ class Image(GenericText): def __init__(self, view, attrs=None, renderer=None): if renderer is None: renderer = Gtk.CellRendererPixbuf - super(Image, self).__init__(view, attrs, renderer) + super().__init__(view, attrs, renderer) self.height = int(attrs.get('height', 100)) self.width = int(attrs.get('width', 300)) self.renderer.set_fixed_size(self.width, self.height) @@ -827,7 +827,7 @@ class M2O(GenericText): def __init__(self, view, attrs, renderer=None): if renderer is None and int(attrs.get('completion', 1)): renderer = partial(CellRendererTextCompletion, self.set_completion) - super(M2O, self).__init__(view, attrs, renderer=renderer) + super().__init__(view, attrs, renderer=renderer) self._popup = False def get_model(self, record, field): @@ -861,7 +861,7 @@ class M2O(GenericText): win.show() def editing_started(self, cell, editable, path): - super(M2O, self).editing_started(cell, editable, path) + super().editing_started(cell, editable, path) record, field = self._get_record_field_from_path(path) model = self.get_model(record, field) @@ -1142,7 +1142,7 @@ class Selection(GenericText, SelectionMixin, PopdownMixin): def __init__(self, *args, **kwargs): if 'renderer' not in kwargs: kwargs['renderer'] = CellRendererCombo - super(Selection, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) if self.view and self.view.editable: self.init_selection() # Use a variable let Python holding reference when calling @@ -1182,7 +1182,7 @@ class Selection(GenericText, SelectionMixin, PopdownMixin): self.set_popdown_value(self.editable, value) def editing_started(self, cell, editable, path): - super(Selection, self).editing_started(cell, editable, path) + super().editing_started(cell, editable, path) record, field = self._get_record_field_from_path(path) gdk_backend = get_gdk_backend() if gdk_backend == 'x11': @@ -1268,7 +1268,7 @@ class MultiSelection(GenericText, SelectionMixin): class Reference(M2O): def __init__(self, view, attrs, renderer=None): - super(Reference, self).__init__(view, attrs, renderer=renderer) + super().__init__(view, attrs, renderer=renderer) self._cell_selection = _ReferenceSelection(view, attrs) @property @@ -1359,7 +1359,7 @@ class ProgressBar(Cell): } def __init__(self, view, attrs): - super(ProgressBar, self).__init__() + super().__init__() self.view = view self.attrs = attrs self.renderer = Gtk.CellRendererProgress() @@ -1404,7 +1404,7 @@ class ProgressBar(Cell): class Button(Cell): def __init__(self, view, attrs): - super(Button, self).__init__() + super().__init__() self.attrs = attrs self.renderer = CellRendererButton(attrs.get('string', _('Unknown'))) self.view = view diff --git a/tryton/tryton/gui/window/view_form/view/screen_container.py b/tryton/tryton/gui/window/view_form/view/screen_container.py index 3dff2b2aa6..aa45d36b14 100644 --- a/tryton/tryton/gui/window/view_form/view/screen_container.py +++ b/tryton/tryton/gui/window/view_form/view/screen_container.py @@ -151,7 +151,7 @@ class Numbers(Between): class Selection(Gtk.ScrolledWindow): def __init__(self, selections): - super(Selection, self).__init__() + super().__init__() self.treeview = Gtk.TreeView() model = Gtk.ListStore(GObject.TYPE_STRING) for selection in selections: diff --git a/tryton/tryton/gui/window/win_csv.py b/tryton/tryton/gui/window/win_csv.py index d40b5e9eb0..360a3d4892 100644 --- a/tryton/tryton/gui/window/win_csv.py +++ b/tryton/tryton/gui/window/win_csv.py @@ -33,7 +33,7 @@ encodings = ["ascii", "big5", "big5hkscs", "cp037", "cp424", "cp437", "cp500", class WinCSV(NoModal): def __init__(self, *args, **kwargs): - super(WinCSV, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) self.languages = RPCExecute( 'model', 'ir.lang', 'search_read', [ @@ -310,7 +310,7 @@ class WinCSV(NoModal): return self.csv_enc.get_active_text() or 'utf_8' def destroy(self): - super(WinCSV, self).destroy() + super().destroy() self.dialog.destroy() def show(self): diff --git a/tryton/tryton/gui/window/win_export.py b/tryton/tryton/gui/window/win_export.py index ea4fda802e..c093885acc 100644 --- a/tryton/tryton/gui/window/win_export.py +++ b/tryton/tryton/gui/window/win_export.py @@ -34,7 +34,7 @@ class WinExport(WinCSV, InfoBar): self.name = name self.screen = screen self.fields = {} - super(WinExport, self).__init__() + super().__init__() self.dialog.set_title(_('CSV Export: %s') % name) self.dialog.vbox.pack_start( self.create_info_bar(), expand=False, fill=True, padding=0) diff --git a/tryton/tryton/gui/window/win_import.py b/tryton/tryton/gui/window/win_import.py index 9705e95b4f..b26f836dcd 100644 --- a/tryton/tryton/gui/window/win_import.py +++ b/tryton/tryton/gui/window/win_import.py @@ -28,7 +28,7 @@ class WinImport(WinCSV): self.fields_data = {} self.fields = {} self.fields_invert = {} - super(WinImport, self).__init__() + super().__init__() self.dialog.set_title(_('CSV Import: %s') % name) button_cancel = self.dialog.add_button( diff --git a/tryton/tryton/gui/window/wizard.py b/tryton/tryton/gui/window/wizard.py index 24791855e9..dce983d666 100644 --- a/tryton/tryton/gui/window/wizard.py +++ b/tryton/tryton/gui/window/wizard.py @@ -25,7 +25,7 @@ logger = logging.getLogger(__name__) class Wizard(InfoBar): def __init__(self, name=''): - super(Wizard, self).__init__() + super().__init__() self.widget = Gtk.VBox(spacing=3) self.widget.show() self.name = name or _('Wizard') @@ -255,7 +255,7 @@ class WizardForm(Wizard, TabContent): "Wizard" def __init__(self, name=''): - super(WizardForm, self).__init__(name=name) + super().__init__(name=name) self.hbuttonbox = Gtk.HButtonBox() self.hbuttonbox.set_spacing(5) self.hbuttonbox.set_layout(Gtk.ButtonBoxStyle.END) @@ -267,19 +267,19 @@ class WizardForm(Wizard, TabContent): } def clean(self): - super(WizardForm, self).clean() + super().clean() for button in self.hbuttonbox.get_children(): self.hbuttonbox.remove(button) def _get_button(self, state): - button = super(WizardForm, self)._get_button(state) + button = super()._get_button(state) response = len(self.states) button.connect('clicked', self.response, response) self.hbuttonbox.pack_start(button, expand=True, fill=True, padding=0) return button def update(self, view, buttons): - super(WizardForm, self).update(view, buttons) + super().update(view, buttons) self.widget.pack_start( self.hbuttonbox, expand=False, fill=True, padding=0) @@ -289,14 +289,14 @@ class WizardForm(Wizard, TabContent): return self.state == self.end_state def destroy(self, action=None): - super(WizardForm, self).destroy(action=action) + super().destroy(action=action) if action == 'reload menu': RPCContextReload(Main().sig_win_menu) elif action == 'reload context': RPCContextReload() def end(self, callback=None): - super(WizardForm, self).end(callback=callback) + super().end(callback=callback) Main()._win_del(self.widget) def set_cursor(self): @@ -331,13 +331,13 @@ class WizardDialog(Wizard, NoModal): self.register() def clean(self): - super(WizardDialog, self).clean() + super().clean() while self._buttons: button = self._buttons.pop() button.get_parent().remove(button) def _get_button(self, definition): - button = super(WizardDialog, self)._get_button(definition) + button = super()._get_button(definition) response = len(self.states) self.dia.add_action_widget(button, response) self._buttons.add(button) @@ -353,7 +353,7 @@ class WizardDialog(Wizard, NoModal): return button def update(self, view, buttons): - super(WizardDialog, self).update(view, buttons) + super().update(view, buttons) current_view = self.screen.current_view self.scrolledwindow.set_policy( Gtk.PolicyType.NEVER, Gtk.PolicyType.NEVER) @@ -368,7 +368,7 @@ class WizardDialog(Wizard, NoModal): Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC) def destroy(self, action=None): - super(WizardDialog, self).destroy(action=action) + super().destroy(action=action) self.dia.destroy() NoModal.destroy(self) main = Main() diff --git a/tryton/tryton/jsonrpc.py b/tryton/tryton/jsonrpc.py index 1267e46ed5..b3d3c2ab3a 100644 --- a/tryton/tryton/jsonrpc.py +++ b/tryton/tryton/jsonrpc.py @@ -51,7 +51,7 @@ class ResponseError(xmlrpc.client.ResponseError): class Fault(xmlrpc.client.Fault): def __init__(self, faultCode, faultString='', **extra): - super(Fault, self).__init__(faultCode, faultString, **extra) + super().__init__(faultCode, faultString, **extra) self.args = faultString def __str__(self): @@ -119,7 +119,7 @@ class JSONEncoder(json.JSONEncoder): return {'__class__': 'Decimal', 'decimal': str(obj), } - return super(JSONEncoder, self).default(obj) + return super().default(obj) class JSONParser(object): diff --git a/tryton/tryton/pyson.py b/tryton/tryton/pyson.py index 83c08e9f82..251b53179f 100644 --- a/tryton/tryton/pyson.py +++ b/tryton/tryton/pyson.py @@ -116,7 +116,7 @@ class PYSONEncoder(json.JSONEncoder): return TimeDelta(obj.days, obj.seconds, obj.microseconds) elif isinstance(obj, Decimal): return float(obj) - return super(PYSONEncoder, self).default(obj) + return super().default(obj) class PYSONDecoder(json.JSONDecoder): @@ -124,7 +124,7 @@ class PYSONDecoder(json.JSONDecoder): def __init__(self, context=None, noeval=False): self.__context = context or {} self.noeval = noeval - super(PYSONDecoder, self).__init__(object_hook=self._object_hook) + super().__init__(object_hook=self._object_hook) def _object_hook(self, dct): if '__class__' in dct: @@ -142,7 +142,7 @@ class PYSONDecoder(json.JSONDecoder): class Eval(PYSON): def __init__(self, v, d=''): - super(Eval, self).__init__() + super().__init__() self._value = v self._default = d @@ -189,7 +189,7 @@ class Eval(PYSON): class Not(PYSON): def __init__(self, v): - super(Not, self).__init__() + super().__init__() if isinstance(v, PYSON): if v.types() != {bool}: v = Bool(v) @@ -229,7 +229,7 @@ class Not(PYSON): class Bool(PYSON): def __init__(self, v): - super(Bool, self).__init__() + super().__init__() self._value = v @property @@ -255,7 +255,7 @@ class And(PYSON): _binary_operator = '&' def __init__(self, *statements, **kwargs): - super(And, self).__init__() + super().__init__() statements = list(statements) + kwargs.get('s', []) for i, statement in enumerate(list(statements)): if isinstance(statement, PYSON): @@ -288,7 +288,7 @@ class Or(And): _binary_operator = '|' def pyson(self): - res = super(Or, self).pyson() + res = super().pyson() res['__class__'] = 'Or' return res @@ -302,7 +302,7 @@ class Equal(PYSON): def __init__(self, s1, s2): statement1, statement2 = s1, s2 - super(Equal, self).__init__() + super().__init__() if isinstance(statement1, PYSON): types1 = statement1.types() else: @@ -338,7 +338,7 @@ class Greater(PYSON): def __init__(self, s1, s2, e=False): statement1, statement2, equal = s1, s2, e - super(Greater, self).__init__() + super().__init__() for i in (statement1, statement2): if isinstance(i, PYSON): assert i.types().issubset({ @@ -416,7 +416,7 @@ class Less(Greater): return '<=' if self._equal else '<' def pyson(self): - res = super(Less, self).pyson() + res = super().pyson() res['__class__'] = 'Less' return res @@ -435,7 +435,7 @@ class If(PYSON): def __init__(self, c, t, e=None): condition, then_statement, else_statement = c, t, e - super(If, self).__init__() + super().__init__() if isinstance(condition, PYSON): if condition.types() != {bool}: condition = Bool(condition) @@ -481,7 +481,7 @@ class Get(PYSON): def __init__(self, v, k, d=''): obj, key, default = v, k, d - super(Get, self).__init__() + super().__init__() if isinstance(obj, PYSON): assert obj.types() == {dict}, 'obj must be a dict' else: @@ -525,7 +525,7 @@ class In(PYSON): def __init__(self, k, v): key, obj = k, v - super(In, self).__init__() + super().__init__() if isinstance(key, PYSON): assert key.types().issubset({str, int}), \ 'key must be a string or an integer or a long' @@ -590,7 +590,7 @@ class Date(PYSON): delta_years = kwargs.get('dy', delta_years) delta_months = kwargs.get('dM', delta_months) delta_days = kwargs.get('dd', delta_days) - super(Date, self).__init__() + super().__init__() for i in (year, month, day, delta_years, delta_months, delta_days): if isinstance(i, PYSON): assert i.types().issubset({int, type(None)}), \ @@ -659,7 +659,7 @@ class DateTime(Date): delta_minutes = kwargs.get('dm', delta_minutes) delta_seconds = kwargs.get('ds', delta_seconds) delta_microseconds = kwargs.get('dms', delta_microseconds) - super(DateTime, self).__init__(year=year, month=month, day=day, + super().__init__(year=year, month=month, day=day, delta_years=delta_years, delta_months=delta_months, delta_days=delta_days, start=start, **kwargs) for i in (hour, minute, second, microsecond, @@ -681,7 +681,7 @@ class DateTime(Date): @property def __repr_params__(self): - date_params = super(DateTime, self).__repr_params__ + date_params = super().__repr_params__ return (date_params[:3] + (self._hour, self._minute, self._second, self._microsecond) + date_params[3:-1] @@ -690,7 +690,7 @@ class DateTime(Date): + date_params[-1:]) def pyson(self): - res = super(DateTime, self).pyson() + res = super().pyson() res['__class__'] = 'DateTime' res['h'] = self._hour res['m'] = self._minute @@ -773,7 +773,7 @@ class TimeDelta(PYSON): class Len(PYSON): def __init__(self, v): - super(Len, self).__init__() + super().__init__() if isinstance(v, PYSON): assert v.types().issubset({dict, list, str}), \ 'value must be a dict or a list or a string' diff --git a/trytond-gis/trytond_gis/__init__.py b/trytond-gis/trytond_gis/__init__.py index a6e2d1e6ff..22fe20172e 100644 --- a/trytond-gis/trytond_gis/__init__.py +++ b/trytond-gis/trytond_gis/__init__.py @@ -10,7 +10,7 @@ __version__ = "7.5.0" class _GeoJSON(dict): def __init__(self, *args, **kwargs): - super(_GeoJSON, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) if 'meta' not in self: self['meta'] = {} if 'srid' not in self['meta']: diff --git a/trytond-gis/trytond_gis/fields.py b/trytond-gis/trytond_gis/fields.py index 53e873308e..c0dc234dcd 100644 --- a/trytond-gis/trytond_gis/fields.py +++ b/trytond-gis/trytond_gis/fields.py @@ -21,7 +21,7 @@ class Geometry(fields.Field): _geometry_type = 'GEOMETRY' def __init__(self, string="", dimension=2, loading='lazy', **kwargs): - super(Geometry, self).__init__( + super().__init__( string=string, loading=loading, **kwargs) self.dimension = dimension @@ -34,7 +34,7 @@ class Geometry(fields.Field): def sql_format(self, value): if isinstance(value, dict): return _GeoJSON(value) - return super(Geometry, self).sql_format(value) + return super().sql_format(value) def convert_domain(self, domain, tables, Model): table, _ = tables[None] diff --git a/trytond-gis/trytond_gis/postgis/database.py b/trytond-gis/trytond_gis/postgis/database.py index f52bf5dfa0..8bb69537d9 100644 --- a/trytond-gis/trytond_gis/postgis/database.py +++ b/trytond-gis/trytond_gis/postgis/database.py @@ -23,7 +23,7 @@ class Database(PGDatabase): @classmethod def create(cls, connection, database_name): - super(Database, cls).create(connection, database_name) + super().create(connection, database_name) database = cls(database_name) with database.get_connection() as db_connection: diff --git a/trytond-gis/trytond_gis/postgis/table.py b/trytond-gis/trytond_gis/postgis/table.py index b09953aa88..b51fc5aeea 100644 --- a/trytond-gis/trytond_gis/postgis/table.py +++ b/trytond-gis/trytond_gis/postgis/table.py @@ -16,7 +16,7 @@ class TableHandler(PGTableHandler): if abstract_type.startswith('GIS_'): column_adder = self.add_geometry_column else: - column_adder = super(TableHandler, self).add_column + column_adder = super().add_column column_adder(column_name, abstract_type, default, comment) def add_geometry_column(self, column_name, abstract_type, default_fun=None, diff --git a/trytond/trytond/backend/postgresql/database.py b/trytond/trytond/backend/postgresql/database.py index 62b5a4283c..9af0e2b0df 100644 --- a/trytond/trytond/backend/postgresql/database.py +++ b/trytond/trytond/backend/postgresql/database.py @@ -247,7 +247,7 @@ class Database(DatabaseInterface): return inst def __init__(self, name=_default_name): - super(Database, self).__init__(name) + super().__init__(name) @classmethod def _connection_params(cls, name): diff --git a/trytond/trytond/backend/sqlite/database.py b/trytond/trytond/backend/sqlite/database.py index c7906ec91c..ee2b64613e 100644 --- a/trytond/trytond/backend/sqlite/database.py +++ b/trytond/trytond/backend/sqlite/database.py @@ -433,7 +433,7 @@ class SQLiteCursor(sqlite.Cursor): class SQLiteConnection(sqlite.Connection): def cursor(self): - return super(SQLiteConnection, self).cursor(SQLiteCursor) + return super().cursor(SQLiteCursor) class Database(DatabaseInterface): @@ -462,7 +462,7 @@ class Database(DatabaseInterface): return DatabaseInterface.__new__(cls, name=name) def __init__(self, name=_default_name): - super(Database, self).__init__(name=name) + super().__init__(name=name) if name == ':memory:': Database._local.memory_database = self diff --git a/trytond/trytond/backend/table.py b/trytond/trytond/backend/table.py index cdcdf2f119..9230fdca89 100644 --- a/trytond/trytond/backend/table.py +++ b/trytond/trytond/backend/table.py @@ -29,7 +29,7 @@ class TableHandlerInterface(object): :param module_name: the module name :param history: a boolean to define if it is a history table ''' - super(TableHandlerInterface, self).__init__() + super().__init__() if history: self.table_name = model._table + '__history' else: diff --git a/trytond/trytond/cache.py b/trytond/trytond/cache.py index ded38be98e..4ba831ce43 100644 --- a/trytond/trytond/cache.py +++ b/trytond/trytond/cache.py @@ -161,7 +161,7 @@ class MemoryCache(BaseCache): _channel = _table def __init__(self, *args, **kwargs): - super(MemoryCache, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) self._database_cache = defaultdict(lambda: LRUDict(self.size_limit)) self._transaction_cache = WeakKeyDictionary() self._transaction_lower = {} @@ -452,13 +452,13 @@ class LRUDict(OrderedDict): *args, **kwargs): assert size_limit > 0 self.size_limit = size_limit - super(LRUDict, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) self.default_factory = default_factory self.default_factory_with_key = default_factory_with_key self._check_size_limit() def __setitem__(self, key, value): - super(LRUDict, self).__setitem__(key, value) + super().__setitem__(key, value) self._check_size_limit() def __missing__(self, key): @@ -472,11 +472,11 @@ class LRUDict(OrderedDict): return value def update(self, *args, **kwargs): - super(LRUDict, self).update(*args, **kwargs) + super().update(*args, **kwargs) self._check_size_limit() def setdefault(self, key, default=None): - default = super(LRUDict, self).setdefault(key, default=default) + default = super().setdefault(key, default=default) self._check_size_limit() return default @@ -493,12 +493,12 @@ class LRUDictTransaction(LRUDict): __slots__ = ('transaction', 'counter') def __init__(self, *args, **kwargs): - super(LRUDictTransaction, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) self.transaction = Transaction() self.counter = self.transaction.counter def clear(self): - super(LRUDictTransaction, self).clear() + super().clear() self.counter = self.transaction.counter def refresh(self): diff --git a/trytond/trytond/exceptions.py b/trytond/trytond/exceptions.py index 9151b994d9..5a2673e7dd 100644 --- a/trytond/trytond/exceptions.py +++ b/trytond/trytond/exceptions.py @@ -23,7 +23,7 @@ class UserWarning(TrytonException): "Exception that will be displayed as a warning message in the client." def __init__(self, name, message, description=''): - super(UserWarning, self).__init__('UserWarning', (name, message, + super().__init__('UserWarning', (name, message, description)) self.name = name self.message = message @@ -40,7 +40,7 @@ class LoginException(TrytonException): """ def __init__(self, name, message, type='password'): - super(LoginException, self).__init__( + super().__init__( 'LoginException', (name, message, type)) self.name = name self.message = message @@ -51,7 +51,7 @@ class LoginException(TrytonException): class ConcurrencyException(TrytonException): def __init__(self, message): - super(ConcurrencyException, self).__init__('ConcurrencyException', + super().__init__('ConcurrencyException', message) self.message = message self.code = 4 diff --git a/trytond/trytond/ir/action.py b/trytond/trytond/ir/action.py index b5dac87d05..f8cc239732 100644 --- a/trytond/trytond/ir/action.py +++ b/trytond/trytond/ir/action.py @@ -72,7 +72,7 @@ class Action(DeactivableMixin, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(Action, cls).__setup__() + super().__setup__() cls.__rpc__.update({ 'get_action_value': RPC(instantiate=0, cache=dict(days=1)), }) @@ -91,7 +91,7 @@ class Action(DeactivableMixin, ModelSQL, ModelView): @classmethod def write(cls, actions, values, *args): pool = Pool() - super(Action, cls).write(actions, values, *args) + super().write(actions, values, *args) pool.get('ir.action.keyword')._get_keyword_cache.clear() @classmethod @@ -212,7 +212,7 @@ class ActionKeyword(ModelSQL, ModelView): @classmethod def __setup__(cls): - super(ActionKeyword, cls).__setup__() + super().__setup__() cls.__access__.add('action') table = cls.__table__() @@ -277,7 +277,7 @@ class ActionKeyword(ModelSQL, ModelView): def delete(cls, keywords): ModelView._view_toolbar_get_cache.clear() cls._get_keyword_cache.clear() - super(ActionKeyword, cls).delete(keywords) + super().delete(keywords) @classmethod def create(cls, vlist): @@ -286,7 +286,7 @@ class ActionKeyword(ModelSQL, ModelView): new_vlist = [] for vals in vlist: new_vlist.append(cls._convert_vals(vals)) - return super(ActionKeyword, cls).create(new_vlist) + return super().create(new_vlist) @classmethod def write(cls, keywords, values, *args): @@ -294,7 +294,7 @@ class ActionKeyword(ModelSQL, ModelView): args = [] for keywords, values in zip(actions, actions): args.extend((keywords, cls._convert_vals(values))) - super(ActionKeyword, cls).write(*args) + super().write(*args) ModelView._view_toolbar_get_cache.clear() cls._get_keyword_cache.clear() @@ -373,7 +373,7 @@ class ActionMixin(ModelSQL): @classmethod def __setup__(cls): pool = Pool() - super(ActionMixin, cls).__setup__() + super().__setup__() cls.__access__.add('action') cls.action.domain = [ ('type', '=', cls.__name__), @@ -486,7 +486,7 @@ class ActionMixin(ModelSQL): values['action'] = action.id else: action = Action(values['action']) - record, = super(ActionMixin, cls).create([values]) + record, = super().create([values]) cursor.execute(*ir_action.update( [ir_action.id], [action.id], where=ir_action.id == record.id)) @@ -501,7 +501,7 @@ class ActionMixin(ModelSQL): def write(cls, records, values, *args): pool = Pool() ActionKeyword = pool.get('ir.action.keyword') - super(ActionMixin, cls).write(records, values, *args) + super().write(records, values, *args) ModelView._view_toolbar_get_cache.clear() ActionKeyword._get_keyword_cache.clear() @@ -511,7 +511,7 @@ class ActionMixin(ModelSQL): ModelView._view_toolbar_get_cache.clear() Action = pool.get('ir.action') actions = [x.action for x in records] - super(ActionMixin, cls).delete(records) + super().delete(records) Action.delete(actions) @classmethod @@ -524,7 +524,7 @@ class ActionMixin(ModelSQL): new_records = [] for record in records: default['action'] = Action.copy([record.action])[0].id - new_records.extend(super(ActionMixin, cls).copy([record], + new_records.extend(super().copy([record], default=default)) return new_records @@ -769,7 +769,7 @@ class ActionReport( reports, values = args[:2] args = args[2:] cls._template_cache.clear() - super(ActionReport, cls).write(reports, values, *args) + super().write(reports, values, *args) def get_template_cached(self): return self._template_cache.get(self.id) @@ -833,7 +833,7 @@ class ActionActWindow( @classmethod def __setup__(cls): - super(ActionActWindow, cls).__setup__() + super().__setup__() cls.__rpc__.update({ 'get': RPC(cache=dict(days=1)), }) @@ -852,7 +852,7 @@ class ActionActWindow( @classmethod def validate(cls, actions): - super(ActionActWindow, cls).validate(actions) + super().validate(actions) cls.check_views(actions) @classmethod @@ -1039,20 +1039,20 @@ class ActionActWindowView( @classmethod def create(cls, vlist): pool = Pool() - windows = super(ActionActWindowView, cls).create(vlist) + windows = super().create(vlist) pool.get('ir.action.keyword')._get_keyword_cache.clear() return windows @classmethod def write(cls, windows, values, *args): pool = Pool() - super(ActionActWindowView, cls).write(windows, values, *args) + super().write(windows, values, *args) pool.get('ir.action.keyword')._get_keyword_cache.clear() @classmethod def delete(cls, windows): pool = Pool() - super(ActionActWindowView, cls).delete(windows) + super().delete(windows) pool.get('ir.action.keyword')._get_keyword_cache.clear() @@ -1125,20 +1125,20 @@ class ActionActWindowDomain( @classmethod def create(cls, vlist): pool = Pool() - domains = super(ActionActWindowDomain, cls).create(vlist) + domains = super().create(vlist) pool.get('ir.action.keyword')._get_keyword_cache.clear() return domains @classmethod def write(cls, domains, values, *args): pool = Pool() - super(ActionActWindowDomain, cls).write(domains, values, *args) + super().write(domains, values, *args) pool.get('ir.action.keyword')._get_keyword_cache.clear() @classmethod def delete(cls, domains): pool = Pool() - super(ActionActWindowDomain, cls).delete(domains) + super().delete(domains) pool.get('ir.action.keyword')._get_keyword_cache.clear() diff --git a/trytond/trytond/ir/cron.py b/trytond/trytond/ir/cron.py index 21da45fdc8..04946a38b3 100644 --- a/trytond/trytond/ir/cron.py +++ b/trytond/trytond/ir/cron.py @@ -103,7 +103,7 @@ class Cron(DeactivableMixin, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(Cron, cls).__setup__() + super().__setup__() table = cls.__table__() cls._buttons.update({ diff --git a/trytond/trytond/ir/date.py b/trytond/trytond/ir/date.py index 4030d9c369..14cdc5d88e 100644 --- a/trytond/trytond/ir/date.py +++ b/trytond/trytond/ir/date.py @@ -11,7 +11,7 @@ class Date(Model): @classmethod def __setup__(cls): - super(Date, cls).__setup__() + super().__setup__() cls.__rpc__.update({ 'today': RPC(), }) diff --git a/trytond/trytond/ir/lang.py b/trytond/trytond/ir/lang.py index 8fa74ad9a6..3c44fd4dd0 100644 --- a/trytond/trytond/ir/lang.py +++ b/trytond/trytond/ir/lang.py @@ -131,7 +131,7 @@ class Lang(DeactivableMixin, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(Lang, cls).__setup__() + super().__setup__() table = cls.__table__() cls._sql_constraints += [ @@ -161,7 +161,7 @@ class Lang(DeactivableMixin, ModelSQL, ModelView): pool = Pool() Translation = pool.get('ir.translation') Config = pool.get('ir.configuration') - res = super(Lang, cls).read(ids, fields_names) + res = super().read(ids, fields_names) if (Transaction().context.get('translate_name') and (not fields_names or 'name' in fields_names)): with Transaction().set_context( @@ -401,7 +401,7 @@ class Lang(DeactivableMixin, ModelSQL, ModelView): Translation = pool.get('ir.translation') # Clear cache cls._lang_cache.clear() - languages = super(Lang, cls).create(vlist) + languages = super().create(vlist) Translation._get_language_cache.clear() _parents.clear() return languages @@ -413,7 +413,7 @@ class Lang(DeactivableMixin, ModelSQL, ModelView): # Clear cache cls._lang_cache.clear() cls._code_cache.clear() - super(Lang, cls).write(langs, values, *args) + super().write(langs, values, *args) Translation._get_language_cache.clear() _parents.clear() @@ -430,7 +430,7 @@ class Lang(DeactivableMixin, ModelSQL, ModelView): # Clear cache cls._lang_cache.clear() cls._code_cache.clear() - super(Lang, cls).delete(langs) + super().delete(langs) Translation._get_language_cache.clear() _parents.clear() diff --git a/trytond/trytond/ir/message.py b/trytond/trytond/ir/message.py index b9d702b0b0..135b3618a2 100644 --- a/trytond/trytond/ir/message.py +++ b/trytond/trytond/ir/message.py @@ -150,7 +150,7 @@ class Message(ModelSQL, ModelView): @classmethod def write(cls, messages, values, *args): - super(Message, cls).write(messages, values, *args) + super().write(messages, values, *args) cls._set_translations(messages) cls._message_cache.clear() @@ -159,7 +159,7 @@ class Message(ModelSQL, ModelView): pool = Pool() Translation = pool.get('ir.translation') ids = [m.id for m in messages] - super(Message, cls).delete(messages) + super().delete(messages) Translation.delete_ids(cls.__name__, 'model', ids) cls._message_cache.clear() diff --git a/trytond/trytond/ir/model.py b/trytond/trytond/ir/model.py index d499e9cb2e..41000f60cd 100644 --- a/trytond/trytond/ir/model.py +++ b/trytond/trytond/ir/model.py @@ -64,7 +64,7 @@ class Model( @classmethod def __setup__(cls): - super(Model, cls).__setup__() + super().__setup__() table = cls.__table__() cls._sql_constraints += [ ('name_unique', Unique(table, table.name), @@ -307,7 +307,7 @@ class ModelField( @classmethod def __setup__(cls): - super(ModelField, cls).__setup__() + super().__setup__() cls.__access__.add('model_ref') table = cls.__table__() cls._sql_constraints += [ @@ -488,7 +488,7 @@ class ModelField( fields_names.append('name') to_delete.append('name') - res = super(ModelField, cls).read(ids, fields_names) + res = super().read(ids, fields_names) if (Transaction().context.get('language') and ('string' in fields_names @@ -543,7 +543,7 @@ class ModelAccess( @classmethod def __setup__(cls): - super(ModelAccess, cls).__setup__() + super().__setup__() cls.__access__.add('model_ref') cls.__rpc__.update({ 'get_access': RPC(), @@ -755,14 +755,14 @@ class ModelAccess( @classmethod def write(cls, accesses, values, *args): - super(ModelAccess, cls).write(accesses, values, *args) + super().write(accesses, values, *args) # Restart the cache cls._get_access_cache.clear() ModelView._fields_view_get_cache.clear() @classmethod def create(cls, vlist): - res = super(ModelAccess, cls).create(vlist) + res = super().create(vlist) # Restart the cache cls._get_access_cache.clear() ModelView._fields_view_get_cache.clear() @@ -770,7 +770,7 @@ class ModelAccess( @classmethod def delete(cls, accesses): - super(ModelAccess, cls).delete(accesses) + super().delete(accesses) # Restart the cache cls._get_access_cache.clear() ModelView._fields_view_get_cache.clear() @@ -948,14 +948,14 @@ class ModelFieldAccess( @classmethod def write(cls, field_accesses, values, *args): - super(ModelFieldAccess, cls).write(field_accesses, values, *args) + super().write(field_accesses, values, *args) # Restart the cache cls._get_access_cache.clear() ModelView._fields_view_get_cache.clear() @classmethod def create(cls, vlist): - res = super(ModelFieldAccess, cls).create(vlist) + res = super().create(vlist) # Restart the cache cls._get_access_cache.clear() ModelView._fields_view_get_cache.clear() @@ -963,7 +963,7 @@ class ModelFieldAccess( @classmethod def delete(cls, field_accesses): - super(ModelFieldAccess, cls).delete(field_accesses) + super().delete(field_accesses) # Restart the cache cls._get_access_cache.clear() ModelView._fields_view_get_cache.clear() @@ -1032,7 +1032,7 @@ class ModelButton( @classmethod def __setup__(cls): - super(ModelButton, cls).__setup__() + super().__setup__() cls.__access__.add('model_ref') t = cls.__table__() cls._sql_constraints += [ @@ -1045,7 +1045,7 @@ class ModelButton( @classmethod def create(cls, vlist): - result = super(ModelButton, cls).create(vlist) + result = super().create(vlist) cls._rules_cache.clear() cls._reset_cache.clear() cls._groups_cache.clear() @@ -1054,7 +1054,7 @@ class ModelButton( @classmethod def write(cls, buttons, values, *args): - super(ModelButton, cls).write(buttons, values, *args) + super().write(buttons, values, *args) cls._rules_cache.clear() cls._reset_cache.clear() cls._groups_cache.clear() @@ -1062,7 +1062,7 @@ class ModelButton( @classmethod def delete(cls, buttons): - super(ModelButton, cls).delete(buttons) + super().delete(buttons) cls._rules_cache.clear() cls._reset_cache.clear() cls._groups_cache.clear() @@ -1075,7 +1075,7 @@ class ModelButton( else: default = default.copy() default.setdefault('clicks') - return super(ModelButton, cls).copy(buttons, default=default) + return super().copy(buttons, default=default) @classmethod @without_check_access @@ -1252,7 +1252,7 @@ class ModelButtonRule(ModelSQL, ModelView): def create(cls, vlist): pool = Pool() ModelButton = pool.get('ir.model.button') - result = super(ModelButtonRule, cls).create(vlist) + result = super().create(vlist) # Restart the cache for get_rules ModelButton._rules_cache.clear() return result @@ -1261,7 +1261,7 @@ class ModelButtonRule(ModelSQL, ModelView): def write(cls, buttons, values, *args): pool = Pool() ModelButton = pool.get('ir.model.button') - super(ModelButtonRule, cls).write(buttons, values, *args) + super().write(buttons, values, *args) # Restart the cache for get_rules ModelButton._rules_cache.clear() @@ -1269,7 +1269,7 @@ class ModelButtonRule(ModelSQL, ModelView): def delete(cls, buttons): pool = Pool() ModelButton = pool.get('ir.model.button') - super(ModelButtonRule, cls).delete(buttons) + super().delete(buttons) # Restart the cache for get_rules ModelButton._rules_cache.clear() @@ -1283,7 +1283,7 @@ class ModelButtonClick(DeactivableMixin, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(ModelButtonClick, cls).__setup__() + super().__setup__() cls.__access__.add('button') cls.__rpc__.update({ 'get_click': RPC(), @@ -1380,7 +1380,7 @@ class ModelData( @classmethod def __setup__(cls): - super(ModelData, cls).__setup__() + super().__setup__() table = cls.__table__() cls._sql_constraints = [ ('fs_id_module_unique', @@ -1412,7 +1412,7 @@ class ModelData( @classmethod def __register__(cls, module_name): - super(ModelData, cls).__register__(module_name) + super().__register__(module_name) table_h = cls.__table_handler__(module_name) @@ -1434,20 +1434,20 @@ class ModelData( @classmethod def create(cls, *args): - records = super(ModelData, cls).create(*args) + records = super().create(*args) cls._has_model_cache.clear() return records @classmethod def write(cls, data, values, *args): - super(ModelData, cls).write(data, values, *args) + super().write(data, values, *args) # Restart the cache for get_id cls._get_id_cache.clear() cls._has_model_cache.clear() @classmethod def delete(cls, records): - super(ModelData, cls).delete(records) + super().delete(records) cls._has_model_cache.clear() @classmethod diff --git a/trytond/trytond/ir/module.py b/trytond/trytond/ir/module.py index 29db8cecd4..77497c2d29 100644 --- a/trytond/trytond/ir/module.py +++ b/trytond/trytond/ir/module.py @@ -54,7 +54,7 @@ class Module(ModelSQL, ModelView): @classmethod def __setup__(cls): - super(Module, cls).__setup__() + super().__setup__() table = cls.__table__() cls._sql_constraints = [ ('name_uniq', Unique(table, table.name), @@ -132,7 +132,7 @@ class Module(ModelSQL, ModelView): 'to activate', ): raise AccessError(gettext('ir.msg_module_delete_state')) - return super(Module, cls).delete(records) + return super().delete(records) @classmethod def on_write(cls, modules): @@ -285,7 +285,7 @@ class ModuleDependency(ModelSQL, ModelView): @classmethod def __setup__(cls): - super(ModuleDependency, cls).__setup__() + super().__setup__() cls.__access__.add('module') table = cls.__table__() cls._sql_constraints += [ @@ -319,7 +319,7 @@ class ModuleConfigWizardItem(sequence_ordered(), ModelSQL, ModelView): @classmethod def __register__(cls, module_name): - super(ModuleConfigWizardItem, cls).__register__(module_name) + super().__register__(module_name) table = cls.__table_handler__(module_name) @@ -458,7 +458,7 @@ class ModuleActivateUpgrade(Wizard): def check_access(cls): # Use new transaction to prevent lock when activating modules with Transaction().new_transaction(): - super(ModuleActivateUpgrade, cls).check_access() + super().check_access() @staticmethod def default_start(fields): diff --git a/trytond/trytond/ir/note.py b/trytond/trytond/ir/note.py index 53e4b950d7..8494684995 100644 --- a/trytond/trytond/ir/note.py +++ b/trytond/trytond/ir/note.py @@ -102,7 +102,7 @@ class Note(ResourceMixin, ModelSQL, ModelView): def write(cls, notes, values, *args): # Avoid changing write meta data if only unread is set if args or set(values.keys()) != {'unread'}: - super(Note, cls).write(notes, values, *args) + super().write(notes, values, *args) else: # Check access write and clean cache # Use __func__ to directly access ModelStorage's write method and diff --git a/trytond/trytond/ir/queue_.py b/trytond/trytond/ir/queue_.py index 99b58298de..398f431cd5 100644 --- a/trytond/trytond/ir/queue_.py +++ b/trytond/trytond/ir/queue_.py @@ -59,7 +59,7 @@ class Queue(ModelSQL): default.setdefault('enqueued_at') default.setdefault('dequeued_at') default.setdefault('finished_at') - return super(Queue, cls).copy(records, default=default) + return super().copy(records, default=default) @classmethod def push(cls, name, data, scheduled_at=None, expected_at=None): diff --git a/trytond/trytond/ir/resource.py b/trytond/trytond/ir/resource.py index 3264aa13c0..0762000935 100644 --- a/trytond/trytond/ir/resource.py +++ b/trytond/trytond/ir/resource.py @@ -156,7 +156,7 @@ class ResourceMixin(ResourceAccessMixin, ModelStorage, ModelView): @classmethod def __setup__(cls): - super(ResourceMixin, cls).__setup__() + super().__setup__() cls._order.insert(0, ('last_modification', 'DESC')) cls.resource.required = True diff --git a/trytond/trytond/ir/rule.py b/trytond/trytond/ir/rule.py index 37c91ccdf8..43071d5f79 100644 --- a/trytond/trytond/ir/rule.py +++ b/trytond/trytond/ir/rule.py @@ -79,7 +79,7 @@ class RuleGroup( @classmethod def __setup__(cls): - super(RuleGroup, cls).__setup__() + super().__setup__() t = cls.__table__() cls._order.insert(0, ('model', 'ASC')) @@ -145,20 +145,20 @@ class RuleGroup( @classmethod def delete(cls, groups): - super(RuleGroup, cls).delete(groups) + super().delete(groups) # Restart the cache on the domain_get method of ir.rule Pool().get('ir.rule')._domain_get_cache.clear() @classmethod def create(cls, vlist): - res = super(RuleGroup, cls).create(vlist) + res = super().create(vlist) # Restart the cache on the domain_get method of ir.rule Pool().get('ir.rule')._domain_get_cache.clear() return res @classmethod def write(cls, groups, vals, *args): - super(RuleGroup, cls).write(groups, vals, *args) + super().write(groups, vals, *args) # Restart the cache on the domain_get method of ir.rule Pool().get('ir.rule')._domain_get_cache.clear() @@ -396,19 +396,19 @@ class Rule(ModelSQL, ModelView): @classmethod def delete(cls, rules): - super(Rule, cls).delete(rules) + super().delete(rules) # Restart the cache on the domain_get method of ir.rule cls._domain_get_cache.clear() @classmethod def create(cls, vlist): - res = super(Rule, cls).create(vlist) + res = super().create(vlist) # Restart the cache on the domain_get method of ir.rule cls._domain_get_cache.clear() return res @classmethod def write(cls, rules, vals, *args): - super(Rule, cls).write(rules, vals, *args) + super().write(rules, vals, *args) # Restart the cache on the domain_get method cls._domain_get_cache.clear() diff --git a/trytond/trytond/ir/sequence.py b/trytond/trytond/ir/sequence.py index c5fca40b7d..1ce8930d77 100644 --- a/trytond/trytond/ir/sequence.py +++ b/trytond/trytond/ir/sequence.py @@ -124,7 +124,7 @@ class Sequence(DeactivableMixin, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(Sequence, cls).__setup__() + super().__setup__() table = cls.__table__() cls._sql_constraints += [ ('check_timestamp_rounding', @@ -196,7 +196,7 @@ class Sequence(DeactivableMixin, ModelSQL, ModelView): @classmethod def set_number_next(cls, sequences, name, value): - super(Sequence, cls).write(sequences, { + super().write(sequences, { 'number_next_internal': value, }) @@ -214,7 +214,7 @@ class Sequence(DeactivableMixin, ModelSQL, ModelView): @classmethod def create(cls, vlist): - sequences = super(Sequence, cls).create(vlist) + sequences = super().create(vlist) for sequence, values in zip(sequences, vlist): if sql_sequence and not cls._strict: sequence.update_sql_sequence(values.get('number_next', @@ -241,7 +241,7 @@ class Sequence(DeactivableMixin, ModelSQL, ModelView): if sql_sequence and not cls._strict: for sequence in sequences: sequence.delete_sql_sequence() - return super(Sequence, cls).delete(sequences) + return super().delete(sequences) @classmethod def validate(cls, sequences): diff --git a/trytond/trytond/ir/session.py b/trytond/trytond/ir/session.py index f31e5f4048..850de0429a 100644 --- a/trytond/trytond/ir/session.py +++ b/trytond/trytond/ir/session.py @@ -22,7 +22,7 @@ class Session(ModelSQL): @classmethod def __setup__(cls): - super(Session, cls).__setup__() + super().__setup__() table = cls.__table__() cls.__rpc__ = {} cls._sql_indexes.update({ @@ -154,7 +154,7 @@ class Session(ModelSQL): # Ensure to get a different key for each record # default methods are called only once values.setdefault('key', cls.default_key()) - return super(Session, cls).create(vlist) + return super().create(vlist) class SessionWizard(ModelSQL): @@ -164,7 +164,7 @@ class SessionWizard(ModelSQL): @classmethod def __setup__(cls): - super(SessionWizard, cls).__setup__() + super().__setup__() cls.__rpc__ = {} @staticmethod diff --git a/trytond/trytond/ir/translation.py b/trytond/trytond/ir/translation.py index dc03d2861b..8f1e3d0c6c 100644 --- a/trytond/trytond/ir/translation.py +++ b/trytond/trytond/ir/translation.py @@ -52,7 +52,7 @@ class OverriddenError(UserError): class TrytonPOFile(polib.POFile): def sort(self): - return super(TrytonPOFile, self).sort( + return super().sort( key=lambda x: (x.msgctxt, x.msgid)) @@ -142,7 +142,7 @@ class Translation( table.drop_constraint('translation_md5_uniq') table.drop_column('src_md5') - super(Translation, cls).__register__(module_name) + super().__register__(module_name) @classmethod def register_model(cls, model, module_name): diff --git a/trytond/trytond/ir/trigger.py b/trytond/trytond/ir/trigger.py index 33b898d3d9..56d1d6b4f8 100644 --- a/trytond/trytond/ir/trigger.py +++ b/trytond/trytond/ir/trigger.py @@ -78,7 +78,7 @@ class Trigger(DeactivableMixin, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(Trigger, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_constraints += [ ('on_exclusive', @@ -92,7 +92,7 @@ class Trigger(DeactivableMixin, ModelSQL, ModelView): @classmethod def __register__(cls, module_name): - super(Trigger, cls).__register__(module_name) + super().__register__(module_name) cursor = Transaction().connection.cursor() table_h = cls.__table_handler__(module_name) @@ -293,20 +293,20 @@ class Trigger(DeactivableMixin, ModelSQL, ModelView): @classmethod def create(cls, vlist): - res = super(Trigger, cls).create(vlist) + res = super().create(vlist) # Restart the cache on the get_triggers method of ir.trigger cls._get_triggers_cache.clear() return res @classmethod def write(cls, triggers, values, *args): - super(Trigger, cls).write(triggers, values, *args) + super().write(triggers, values, *args) # Restart the cache on the get_triggers method of ir.trigger cls._get_triggers_cache.clear() @classmethod def delete(cls, records): - super(Trigger, cls).delete(records) + super().delete(records) # Restart the cache on the get_triggers method of ir.trigger cls._get_triggers_cache.clear() diff --git a/trytond/trytond/ir/ui/icon.py b/trytond/trytond/ir/ui/icon.py index b01eb8831b..19fa102e5d 100644 --- a/trytond/trytond/ir/ui/icon.py +++ b/trytond/trytond/ir/ui/icon.py @@ -25,7 +25,7 @@ class Icon( @classmethod def __setup__(cls): - super(Icon, cls).__setup__() + super().__setup__() cls.__rpc__.update({ 'list_icons': RPC(), }) diff --git a/trytond/trytond/ir/ui/menu.py b/trytond/trytond/ir/ui/menu.py index 0df68cb1ea..f687cf89b5 100644 --- a/trytond/trytond/ir/ui/menu.py +++ b/trytond/trytond/ir/ui/menu.py @@ -160,7 +160,7 @@ class UIMenu( return False return True - menus = super(UIMenu, cls).search(domain, offset=offset, limit=limit, + menus = super().search(domain, offset=offset, limit=limit, order=order, count=False, query=query) if query: return menus @@ -281,7 +281,7 @@ class UIMenuFavorite(ModelSQL): @classmethod def __setup__(cls): - super(UIMenuFavorite, cls).__setup__() + super().__setup__() cls.__rpc__.update({ 'get': RPC(check_access=False), 'set': RPC(check_access=False, readonly=False), diff --git a/trytond/trytond/ir/ui/view.py b/trytond/trytond/ir/ui/view.py index a53779d5dd..65c36d36bc 100644 --- a/trytond/trytond/ir/ui/view.py +++ b/trytond/trytond/ir/ui/view.py @@ -101,7 +101,7 @@ class View( @classmethod def __setup__(cls): - super(View, cls).__setup__() + super().__setup__() table = cls.__table__() cls.priority.required = True @@ -199,7 +199,7 @@ class View( @classmethod def validate(cls, views): - super(View, cls).validate(views) + super().validate(views) cls.check_xml(views) @classmethod @@ -267,14 +267,14 @@ class View( @classmethod def delete(cls, views): - super(View, cls).delete(views) + super().delete(views) # Restart the cache cls._view_get_cache.clear() ModelView._fields_view_get_cache.clear() @classmethod def create(cls, vlist): - views = super(View, cls).create(vlist) + views = super().create(vlist) # Restart the cache cls._view_get_cache.clear() ModelView._fields_view_get_cache.clear() @@ -282,7 +282,7 @@ class View( @classmethod def write(cls, views, values, *args): - super(View, cls).write(views, values, *args) + super().write(views, values, *args) # Restart the cache cls._view_get_cache.clear() ModelView._fields_view_get_cache.clear() @@ -464,7 +464,7 @@ class ViewTreeWidth( @classmethod def __setup__(cls): - super(ViewTreeWidth, cls).__setup__() + super().__setup__() table = cls.__table__() cls.__rpc__.update({ 'set_width': RPC(readonly=False), @@ -494,17 +494,17 @@ class ViewTreeWidth( @classmethod def delete(cls, records): ModelView._fields_view_get_cache.clear() - super(ViewTreeWidth, cls).delete(records) + super().delete(records) @classmethod def create(cls, vlist): - res = super(ViewTreeWidth, cls).create(vlist) + res = super().create(vlist) ModelView._fields_view_get_cache.clear() return res @classmethod def write(cls, records, values, *args): - super(ViewTreeWidth, cls).write(records, values, *args) + super().write(records, values, *args) ModelView._fields_view_get_cache.clear() @classmethod @@ -667,7 +667,7 @@ class ViewTreeState( @classmethod def __setup__(cls): - super(ViewTreeState, cls).__setup__() + super().__setup__() cls.__rpc__.update({ 'set': RPC(readonly=False, check_access=False), 'get': RPC(check_access=False, cache=dict(days=1)), @@ -746,7 +746,7 @@ class ViewSearch( @classmethod def __setup__(cls): - super(ViewSearch, cls).__setup__() + super().__setup__() cls.__rpc__.update({ 'get': RPC(check_access=False), 'set': RPC(check_access=False, readonly=False), diff --git a/trytond/trytond/model/dictschema.py b/trytond/trytond/model/dictschema.py index d78b573f87..a72ae49e1c 100644 --- a/trytond/trytond/model/dictschema.py +++ b/trytond/trytond/model/dictschema.py @@ -92,7 +92,7 @@ class DictSchemaMixin(object): @classmethod def __setup__(cls): - super(DictSchemaMixin, cls).__setup__() + super().__setup__() cls.__rpc__.update({ 'get_keys': RPC( instantiate=0, diff --git a/trytond/trytond/model/fields/binary.py b/trytond/trytond/model/fields/binary.py index 026564b154..94919c0b69 100644 --- a/trytond/trytond/model/fields/binary.py +++ b/trytond/trytond/model/fields/binary.py @@ -30,7 +30,7 @@ class Binary(Field): self.filename = filename self.file_id = file_id self.store_prefix = store_prefix - super(Binary, self).__init__(string=string, help=help, + super().__init__(string=string, help=help, required=required, readonly=readonly, domain=domain, states=states, on_change=on_change, on_change_with=on_change_with, depends=depends, context=context, loading=loading) diff --git a/trytond/trytond/model/fields/boolean.py b/trytond/trytond/model/fields/boolean.py index e089bbc8dc..bcef0f88a6 100644 --- a/trytond/trytond/model/fields/boolean.py +++ b/trytond/trytond/model/fields/boolean.py @@ -12,7 +12,7 @@ class Boolean(Field): def __init__(self, string='', help='', readonly=False, domain=None, states=None, on_change=None, on_change_with=None, depends=None, context=None, loading='eager'): - super(Boolean, self).__init__(string=string, help=help, required=False, + super().__init__(string=string, help=help, required=False, readonly=readonly, domain=domain, states=states, on_change=on_change, on_change_with=on_change_with, depends=depends, context=context, loading=loading) @@ -21,7 +21,7 @@ class Boolean(Field): __init__.__doc__ = Field.__init__.__doc__ def _domain_add_null(self, column, operator, value, expression): - expression = super(Boolean, self)._domain_add_null( + expression = super()._domain_add_null( column, operator, value, expression) if operator in ('=', '!='): conv = { diff --git a/trytond/trytond/model/fields/char.py b/trytond/trytond/model/fields/char.py index 9ad5efc0d3..698cb9de65 100644 --- a/trytond/trytond/model/fields/char.py +++ b/trytond/trytond/model/fields/char.py @@ -32,7 +32,7 @@ class Char(FieldTranslate): ''' if loading is None: loading = 'lazy' if translate else 'eager' - super(Char, self).__init__(string=string, help=help, required=required, + super().__init__(string=string, help=help, required=required, readonly=readonly, domain=domain, states=states, on_change=on_change, on_change_with=on_change_with, depends=depends, context=context, loading=loading) @@ -105,7 +105,7 @@ class Char(FieldTranslate): return super().sql_format(value) def set_rpc(self, model): - super(Char, self).set_rpc(model) + super().set_rpc(model) if self.autocomplete: func_name = 'autocomplete_%s' % self.name assert hasattr(model, func_name), \ @@ -113,7 +113,7 @@ class Char(FieldTranslate): model.__rpc__.setdefault(func_name, RPC(instantiate=0)) def _domain_column(self, operator, column): - column = super(Char, self)._domain_column(operator, column) + column = super()._domain_column(operator, column) column = Coalesce(column, '') if self.search_unaccented and operator.endswith('ilike'): database = Transaction().database @@ -125,7 +125,7 @@ class Char(FieldTranslate): value = [v if v is not None else '' for v in value] elif value is None: value = '' - value = super(Char, self)._domain_value(operator, value) + value = super()._domain_value(operator, value) if self.search_unaccented and operator.endswith('ilike'): database = Transaction().database value = database.unaccent(value) diff --git a/trytond/trytond/model/fields/date.py b/trytond/trytond/model/fields/date.py index d2e9737915..329466d5a9 100644 --- a/trytond/trytond/model/fields/date.py +++ b/trytond/trytond/model/fields/date.py @@ -44,7 +44,7 @@ class Date(Field): if timezone: expression = AtTimeZone(expression, 'utc') expression = AtTimeZone(expression, timezone) - return super(Date, self).sql_cast(expression) + return super().sql_cast(expression) def __set__(self, inst, value): if isinstance(value, str): @@ -111,7 +111,7 @@ class DateTime(Timestamp): ''' :param format: The validation format as used by strftime. ''' - super(DateTime, self).__init__(string=string, help=help, + super().__init__(string=string, help=help, required=required, readonly=readonly, domain=domain, states=states, on_change=on_change, on_change_with=on_change_with, depends=depends, context=context, loading=loading) @@ -156,7 +156,7 @@ class Time(FormatMixin, Field): def sql_cast(self, expression): if backend.name == 'sqlite': return SQLite_Time(expression) - return super(Time, self).sql_cast(expression) + return super().sql_cast(expression) def __set__(self, inst, value): if isinstance(value, str): @@ -177,7 +177,7 @@ class TimeDelta(Field): :param converter: The name of the context key containing the time converter. ''' - super(TimeDelta, self).__init__(string=string, help=help, + super().__init__(string=string, help=help, required=required, readonly=readonly, domain=domain, states=states, on_change=on_change, on_change_with=on_change_with, depends=depends, context=context, loading=loading) diff --git a/trytond/trytond/model/fields/dict.py b/trytond/trytond/model/fields/dict.py index ea1b614f94..b24a2c4e65 100644 --- a/trytond/trytond/model/fields/dict.py +++ b/trytond/trytond/model/fields/dict.py @@ -29,7 +29,7 @@ class Dict(Field): readonly=False, domain=None, states=None, on_change=None, on_change_with=None, depends=None, context=None, loading='lazy'): - super(Dict, self).__init__(string, help, required, readonly, domain, + super().__init__(string, help, required, readonly, domain, states, on_change, on_change_with, depends, context, loading) self.schema_model = schema_model self.search_unaccented = True diff --git a/trytond/trytond/model/fields/field.py b/trytond/trytond/model/fields/field.py index c9532812ee..b8aea5cda9 100644 --- a/trytond/trytond/model/fields/field.py +++ b/trytond/trytond/model/fields/field.py @@ -675,7 +675,7 @@ class FieldTranslate(Field): @domain_method def convert_domain(self, domain, tables, Model): if not self.translate: - return super(FieldTranslate, self).convert_domain( + return super().convert_domain( domain, tables, Model) table, _ = tables[None] name, operator, value = domain diff --git a/trytond/trytond/model/fields/float.py b/trytond/trytond/model/fields/float.py index 23a3a8a90b..06a2bd68a1 100644 --- a/trytond/trytond/model/fields/float.py +++ b/trytond/trytond/model/fields/float.py @@ -39,7 +39,7 @@ class Float(Field): :param digits: a list of two integers defining the total of digits and the number of decimals of the float. ''' - super(Float, self).__init__(string=string, help=help, + super().__init__(string=string, help=help, required=required, readonly=readonly, domain=domain, states=states, on_change=on_change, on_change_with=on_change_with, depends=depends, context=context, loading=loading) diff --git a/trytond/trytond/model/fields/function.py b/trytond/trytond/model/fields/function.py index eeb7f691f4..135b991007 100644 --- a/trytond/trytond/model/fields/function.py +++ b/trytond/trytond/model/fields/function.py @@ -246,7 +246,7 @@ for name in [ class MultiValue(Function): def __init__(self, field, loading='lazy'): - super(MultiValue, self).__init__( + super().__init__( field, '_multivalue_getter', setter='_multivalue_setter', loading=loading) diff --git a/trytond/trytond/model/fields/many2many.py b/trytond/trytond/model/fields/many2many.py index 816f297f38..1647ba2503 100644 --- a/trytond/trytond/model/fields/many2many.py +++ b/trytond/trytond/model/fields/many2many.py @@ -41,7 +41,7 @@ class Many2Many(Field): :param search_context: The context to use when searching for a record :param filter: A domain to filter target records. ''' - super(Many2Many, self).__init__(string=string, help=help, + super().__init__(string=string, help=help, required=required, readonly=readonly, domain=domain, states=states, on_change=on_change, on_change_with=on_change_with, depends=depends, context=context, loading=loading) @@ -317,7 +317,7 @@ class Many2Many(Field): ctx = instantiate_context(self, inst) with Transaction().set_context(ctx): records = instanciate_values(Target, value) - super(Many2Many, self).__set__(inst, records) + super().__set__(inst, records) def delete(self, inst, records): records = set(records) diff --git a/trytond/trytond/model/fields/many2one.py b/trytond/trytond/model/fields/many2one.py index 3c6ec233e6..2fcf6f0411 100644 --- a/trytond/trytond/model/fields/many2one.py +++ b/trytond/trytond/model/fields/many2one.py @@ -49,7 +49,7 @@ class Many2One(Field): if ondelete not in ('CASCADE', 'RESTRICT', 'SET NULL'): raise Exception('Bad arguments') self.ondelete = ondelete - super(Many2One, self).__init__(string=string, help=help, + super().__init__(string=string, help=help, required=required, readonly=readonly, domain=domain, states=states, on_change=on_change, on_change_with=on_change_with, depends=depends, context=context, loading=loading) @@ -115,7 +115,7 @@ class Many2One(Field): elif isinstance(value, int): value = Target(value) assert isinstance(value, (Target, type(None))) - super(Many2One, self).__set__(inst, value) + super().__set__(inst, value) def sql_format(self, value): from ..model import Model @@ -257,7 +257,7 @@ class Many2One(Field): return expression if not isinstance(value, str): - return super(Many2One, self).convert_domain(domain, tables, + return super().convert_domain(domain, tables, Model) else: warnings.warn( diff --git a/trytond/trytond/model/fields/numeric.py b/trytond/trytond/model/fields/numeric.py index b015703591..9cad184005 100644 --- a/trytond/trytond/model/fields/numeric.py +++ b/trytond/trytond/model/fields/numeric.py @@ -31,7 +31,7 @@ class Numeric(Float): return column def _domain_value(self, operator, value): - value = super(Numeric, self)._domain_value(operator, value) + value = super()._domain_value(operator, value) if backend.name == 'sqlite': if isinstance(value, (Select, CombiningQuery)): return value diff --git a/trytond/trytond/model/fields/one2many.py b/trytond/trytond/model/fields/one2many.py index 5dc043c07b..02d55c0c35 100644 --- a/trytond/trytond/model/fields/one2many.py +++ b/trytond/trytond/model/fields/one2many.py @@ -46,7 +46,7 @@ class One2Many(Field): :param search_context: The context to use when searching for a record :param filter: A domain to filter target records. ''' - super(One2Many, self).__init__(string=string, help=help, + super().__init__(string=string, help=help, required=required, readonly=readonly, domain=domain, states=states, on_change=on_change, on_change_with=on_change_with, depends=depends, context=context, loading=loading) @@ -310,7 +310,7 @@ class One2Many(Field): extra[self.field] = inst with Transaction().set_context(ctx): records = instanciate_values(Target, value, **extra) - super(One2Many, self).__set__(inst, records) + super().__set__(inst, records) def remove(self, inst, records): records = set(records) diff --git a/trytond/trytond/model/fields/one2one.py b/trytond/trytond/model/fields/one2one.py index 0a2bbf2452..7a07e8c022 100644 --- a/trytond/trytond/model/fields/one2one.py +++ b/trytond/trytond/model/fields/one2one.py @@ -21,7 +21,7 @@ class One2One(Many2Many): :param values: a dictionary with the read values :return: a dictionary with ids as key and target id as value ''' - res = super(One2One, self).get(ids, model, name, values=values) + res = super().get(ids, model, name, values=values) for i, vals in res.items(): res[i] = vals[0] if vals else None return res diff --git a/trytond/trytond/model/fields/reference.py b/trytond/trytond/model/fields/reference.py index 232e3a0b88..d4f8b370ec 100644 --- a/trytond/trytond/model/fields/reference.py +++ b/trytond/trytond/model/fields/reference.py @@ -38,7 +38,7 @@ class Reference(SelectionMixin, Field): :param search_order: The order to use when searching for a record :param search_context: The context to use when searching for a record ''' - super(Reference, self).__init__(string=string, help=help, + super().__init__(string=string, help=help, required=required, readonly=readonly, domain=domain, states=states, on_change=on_change, on_change_with=on_change_with, depends=depends, context=context, loading=loading) @@ -107,7 +107,7 @@ class Reference(SelectionMixin, Field): return depends def set_rpc(self, model): - super(Reference, self).set_rpc(model) + super().set_rpc(model) if not isinstance(self.selection, (list, tuple)): assert hasattr(model, self.selection), \ 'Missing %s on model %s' % (self.selection, model.__name__) @@ -180,7 +180,7 @@ class Reference(SelectionMixin, Field): value = Target(**value) else: value = Target(value) - super(Reference, self).__set__(inst, value) + super().__set__(inst, value) def sql_format(self, value): if value and not isinstance(value, (str, Query, Expression)): @@ -188,7 +188,7 @@ class Reference(SelectionMixin, Field): value = '%s,%s' % tuple(value) except TypeError: value = str(value) - return super(Reference, self).sql_format(value) + return super().sql_format(value) def sql_id(self, column, Model): "Return SQL expression for the id part of the field" @@ -200,7 +200,7 @@ class Reference(SelectionMixin, Field): @domain_method def convert_domain(self, domain, tables, Model): if '.' not in domain[0]: - return super(Reference, self).convert_domain(domain, tables, Model) + return super().convert_domain(domain, tables, Model) pool = Pool() name, operator, value, target = domain[:4] Target = pool.get(target) diff --git a/trytond/trytond/model/fields/selection.py b/trytond/trytond/model/fields/selection.py index a4b42786e9..349d92facf 100644 --- a/trytond/trytond/model/fields/selection.py +++ b/trytond/trytond/model/fields/selection.py @@ -109,7 +109,7 @@ class Selection(SelectionMixin, Field): to store and the second is the value to display. :param sort: A boolean to sort or not the selections. ''' - super(Selection, self).__init__(string=string, help=help, + super().__init__(string=string, help=help, required=required, readonly=readonly, domain=domain, states=states, on_change=on_change, on_change_with=on_change_with, depends=depends, context=context, loading=loading) @@ -131,7 +131,7 @@ class Selection(SelectionMixin, Field): __init__.__doc__ += Field.__init__.__doc__ def set_rpc(self, model): - super(Selection, self).set_rpc(model) + super().set_rpc(model) if not isinstance(self.selection, (list, tuple)): assert hasattr(model, self.selection), \ 'Missing %s on model %s' % (self.selection, model.__name__) diff --git a/trytond/trytond/model/model.py b/trytond/trytond/model/model.py index 2df691b422..3571818510 100644 --- a/trytond/trytond/model/model.py +++ b/trytond/trytond/model/model.py @@ -51,7 +51,7 @@ class Model(URLMixin, PoolBase, metaclass=ModelMeta): @classmethod def __setup__(cls): - super(Model, cls).__setup__() + super().__setup__() if not cls.__string__: cls.__string__ = humanize(cls.__name__) cls.__rpc__ = { @@ -84,7 +84,7 @@ class Model(URLMixin, PoolBase, metaclass=ModelMeta): @classmethod def __post_setup__(cls): - super(Model, cls).__post_setup__() + super().__post_setup__() # Set _fields cls._fields = {} @@ -122,7 +122,7 @@ class Model(URLMixin, PoolBase, metaclass=ModelMeta): """ Add model in ir.model and ir.model.field. """ - super(Model, cls).__register__(module_name) + super().__register__(module_name) pool = Pool() Translation = pool.get('ir.translation') Model_ = pool.get('ir.model') @@ -308,7 +308,7 @@ class Model(URLMixin, PoolBase, metaclass=ModelMeta): return names def __init__(self, id=None, **kwargs): - super(Model, self).__init__() + super().__init__() if id is not None: id = int(id) self._id = id diff --git a/trytond/trytond/model/modelsingleton.py b/trytond/trytond/model/modelsingleton.py index 0c2d7b431d..b88ca7e1b6 100644 --- a/trytond/trytond/model/modelsingleton.py +++ b/trytond/trytond/model/modelsingleton.py @@ -31,7 +31,7 @@ class ModelSingleton(ModelStorage): ''' Return the instance of the unique record if there is one. ''' - singletons = super(ModelSingleton, cls).search([], limit=1) + singletons = super().search([], limit=1) if singletons: return singletons[0] @@ -42,7 +42,7 @@ class ModelSingleton(ModelStorage): if not singleton: if issubclass(cls, ModelSQL): cls.lock() - return super(ModelSingleton, cls).create(vlist) + return super().create(vlist) cls.write([singleton], vlist[0]) return [singleton] @@ -62,7 +62,7 @@ class ModelSingleton(ModelStorage): res['_write'] = True res['_delete'] = True return [res] - res = super(ModelSingleton, cls).read([singleton.id], fields_names) + res = super().read([singleton.id], fields_names) res[0]['id'] = ids[0] return res @@ -78,7 +78,7 @@ class ModelSingleton(ModelStorage): args = [] for values in actions[1:None:2]: args.extend(([singleton], values)) - super(ModelSingleton, cls).write(*args) + super().write(*args) # Clean local cache of original records for record in sum(actions[0:None:2], []): record._local_cache.pop(record.id, None) @@ -91,7 +91,7 @@ class ModelSingleton(ModelStorage): def delete(cls, records): singleton = cls.get_singleton() if singleton: - super(ModelSingleton, cls).delete([singleton]) + super().delete([singleton]) # Clean transaction cache of all ids for cache in Transaction().cache.values(): if cls.__name__ in cache: @@ -105,7 +105,7 @@ class ModelSingleton(ModelStorage): @classmethod def search(cls, domain, offset=0, limit=None, order=None, count=False): - res = super(ModelSingleton, cls).search(domain, offset=offset, + res = super().search(domain, offset=offset, limit=limit, order=order, count=count) if not res and not domain: if count: @@ -118,7 +118,7 @@ class ModelSingleton(ModelStorage): if '_timestamp' in fields_names: fields_names = list(fields_names) fields_names.remove('_timestamp') - default = super(ModelSingleton, cls).default_get(fields_names, + default = super().default_get(fields_names, with_rec_name=with_rec_name) singleton = cls.get_singleton() if singleton: diff --git a/trytond/trytond/model/modelsql.py b/trytond/trytond/model/modelsql.py index 30962557d3..17c80b411e 100644 --- a/trytond/trytond/model/modelsql.py +++ b/trytond/trytond/model/modelsql.py @@ -68,7 +68,7 @@ class Check(Constraint): __slots__ = ('_expression',) def __init__(self, table, expression): - super(Check, self).__init__(table) + super().__init__(table) assert isinstance(expression, Expression) self._expression = expression @@ -88,7 +88,7 @@ class Unique(Constraint): __slots__ = ('_columns',) def __init__(self, table, *columns): - super(Unique, self).__init__(table) + super().__init__(table) assert all(isinstance(col, Column) for col in columns) self._columns = tuple(columns) @@ -115,7 +115,7 @@ class Exclude(Constraint): __slots__ = ('_excludes', '_where') def __init__(self, table, *excludes, **kwargs): - super(Exclude, self).__init__(table) + super().__init__(table) assert all(isinstance(c, Expression) and issubclass(o, Operator) for c, o in excludes), excludes self._excludes = tuple(excludes) @@ -333,7 +333,7 @@ class ModelSQL(ModelStorage): assert cls._table[-9:] != '__history', \ 'Model _table %s cannot end with "__history"' % cls._table - super(ModelSQL, cls).__setup__() + super().__setup__() cls._sql_constraints = [] cls._sql_indexes = set() @@ -449,7 +449,7 @@ class ModelSQL(ModelStorage): @classmethod def __register__(cls, module_name): cursor = Transaction().connection.cursor() - super(ModelSQL, cls).__register__(module_name) + super().__register__(module_name) if callable(cls.table_query): return @@ -876,7 +876,7 @@ class ModelSQL(ModelStorage): pool = Pool() Translation = pool.get('ir.translation') - super(ModelSQL, cls).create(vlist) + super().create(vlist) table = cls.__table__() modified_fields = set() @@ -1062,7 +1062,7 @@ class ModelSQL(ModelStorage): pool = Pool() Rule = pool.get('ir.rule') Translation = pool.get('ir.translation') - super(ModelSQL, cls).read(ids, fields_names=fields_names) + super().read(ids, fields_names=fields_names) transaction = Transaction() cursor = Transaction().connection.cursor() @@ -1403,7 +1403,7 @@ class ModelSQL(ModelStorage): # Call before cursor cache cleaning trigger_eligibles = cls.trigger_write_get_eligibles(all_records) - super(ModelSQL, cls).write(records, values, *args) + super().write(records, values, *args) table = cls.__table__() @@ -1612,7 +1612,7 @@ class ModelSQL(ModelStorage): gettext('ir.msg_foreign_model_exist', **error_args)) - super(ModelSQL, cls).delete(list(sub_records)) + super().delete(list(sub_records)) try: cursor.execute(*table.delete(where=red_sql)) @@ -1862,7 +1862,7 @@ class ModelSQL(ModelStorage): transaction = Transaction() cursor = transaction.connection.cursor() - super(ModelSQL, cls).search( + super().search( domain, offset=offset, limit=limit, order=order, count=count) if order is None or order is False: @@ -2222,7 +2222,7 @@ class ModelSQL(ModelStorage): @classmethod def validate(cls, records): - super(ModelSQL, cls).validate(records) + super().validate(records) transaction = Transaction() database = transaction.database has_constraint = database.has_constraint diff --git a/trytond/trytond/model/modelstorage.py b/trytond/trytond/model/modelstorage.py index c06965236c..2b5183fd4a 100644 --- a/trytond/trytond/model/modelstorage.py +++ b/trytond/trytond/model/modelstorage.py @@ -130,7 +130,7 @@ class ModelStorage(Model): @classmethod def __setup__(cls): from .modelview import ModelView - super(ModelStorage, cls).__setup__() + super().__setup__() if issubclass(cls, ModelView): cls.__rpc__.update({ 'create': RPC( @@ -1690,7 +1690,7 @@ class ModelStorage(Model): else: self._local_cache = local_cache(self.__class__, transaction) - super(ModelStorage, self).__init__(id, **kwargs) + super().__init__(id, **kwargs) @property def _cache(self): @@ -1698,7 +1698,7 @@ class ModelStorage(Model): def __getattr__(self, name): try: - return super(ModelStorage, self).__getattr__(name) + return super().__getattr__(name) except AttributeError: if name.startswith('_') or self.id is None or self.id < 0: raise @@ -2094,7 +2094,7 @@ class EvalEnvironment(dict): __slots__ = ('_record', '_model') def __init__(self, record, Model): - super(EvalEnvironment, self).__init__() + super().__init__() self._record = record self._model = Model @@ -2115,7 +2115,7 @@ class EvalEnvironment(dict): return [r.id for r in value] else: return value - return super(EvalEnvironment, self).__getitem__(item) + return super().__getitem__(item) def __getattr__(self, item): try: @@ -2128,7 +2128,7 @@ class EvalEnvironment(dict): return self.__getitem__(item) except Exception: pass - return super(EvalEnvironment, self).get(item, default) + return super().get(item, default) def __bool__(self): return bool(self._record) diff --git a/trytond/trytond/model/modelview.py b/trytond/trytond/model/modelview.py index 4e52fb0fc9..75eab9ecc0 100644 --- a/trytond/trytond/model/modelview.py +++ b/trytond/trytond/model/modelview.py @@ -85,7 +85,7 @@ class ModelView(Model): @classmethod def __setup__(cls): - super(ModelView, cls).__setup__() + super().__setup__() cls.__rpc__.update({ 'fields_view_get': RPC( cache=dict(days=1), @@ -116,7 +116,7 @@ class ModelView(Model): @classmethod def __post_setup__(cls): - super(ModelView, cls).__post_setup__() + super().__post_setup__() methods = { '_done': set(), diff --git a/trytond/trytond/model/multivalue.py b/trytond/trytond/model/multivalue.py index 7f0b3172e9..6ff065ef67 100644 --- a/trytond/trytond/model/multivalue.py +++ b/trytond/trytond/model/multivalue.py @@ -113,7 +113,7 @@ class ValueMixin(MatchMixin, ModelStorage): __caches_lock = Lock() def match(self, pattern, match_none=True): - return super(ValueMixin, self).match(pattern, match_none=match_none) + return super().match(pattern, match_none=match_none) @classmethod def _values_cache(cls): diff --git a/trytond/trytond/model/order.py b/trytond/trytond/model/order.py index 3287780334..ba5ba1eb3d 100644 --- a/trytond/trytond/model/order.py +++ b/trytond/trytond/model/order.py @@ -22,7 +22,7 @@ def sequence_ordered( @classmethod def __setup__(cls): - super(SequenceOrderedMixin, cls).__setup__() + super().__setup__() table = cls.__table__() cls._order = [(field_name, order)] + cls._order cls._sql_indexes.add( diff --git a/trytond/trytond/model/tree.py b/trytond/trytond/model/tree.py index 9b4be5f380..643a60efe5 100644 --- a/trytond/trytond/model/tree.py +++ b/trytond/trytond/model/tree.py @@ -21,7 +21,7 @@ def tree(parent='parent', name='name', separator=None): if separator: @classmethod def __setup__(cls): - super(TreeMixin, cls).__setup__() + super().__setup__() field = getattr(cls, name) clause = ['OR', (name, 'not like', '%' + escape_wildcard(separator) + '%'), @@ -101,8 +101,8 @@ def tree(parent='parent', name='name', separator=None): Function that checks if there is no recursion in the tree composed with parent as parent field name. ''' - if hasattr(super(TreeMixin, cls), 'check_recursion'): - super(TreeMixin, cls).check_recursion(records, field_names) + if hasattr(super(), 'check_recursion'): + super().check_recursion(records, field_names) if field_names and parent not in field_names: return diff --git a/trytond/trytond/model/workflow.py b/trytond/trytond/model/workflow.py index ec3cef11e1..39dd49ed14 100644 --- a/trytond/trytond/model/workflow.py +++ b/trytond/trytond/model/workflow.py @@ -13,7 +13,7 @@ class Workflow(object): @classmethod def __setup__(cls): - super(Workflow, cls).__setup__() + super().__setup__() cls._transitions = set() @staticmethod diff --git a/trytond/trytond/modules/__init__.py b/trytond/trytond/modules/__init__.py index 9ee7c69c17..70ec223d95 100644 --- a/trytond/trytond/modules/__init__.py +++ b/trytond/trytond/modules/__init__.py @@ -65,7 +65,7 @@ class Graph(dict): class Node(list): def __init__(self, name): - super(Node, self).__init__() + super().__init__() self.name = name self.info = None self.__depth = 0 @@ -87,7 +87,7 @@ class Node(list): def append(self, node): assert isinstance(node, Node) node.depth = self.depth + 1 - super(Node, self).append(node) + super().append(node) def create_graph(modules): diff --git a/trytond/trytond/protocols/jsonrpc.py b/trytond/trytond/protocols/jsonrpc.py index 37df1ce11a..50b35a7f34 100644 --- a/trytond/trytond/protocols/jsonrpc.py +++ b/trytond/trytond/protocols/jsonrpc.py @@ -65,7 +65,7 @@ class JSONEncoder(json.JSONEncoder): def default(self, obj): marshaller = self.serializers.get(type(obj), - super(JSONEncoder, self).default) + super().default) return marshaller(obj) diff --git a/trytond/trytond/protocols/wrappers.py b/trytond/trytond/protocols/wrappers.py index 9b5140899b..9b3cd99e03 100644 --- a/trytond/trytond/protocols/wrappers.py +++ b/trytond/trytond/protocols/wrappers.py @@ -93,7 +93,7 @@ class Request(_Request): @cached_property def authorization(self): - authorization = super(Request, self).authorization + authorization = super().authorization if authorization is None: header = self.headers.get('Authorization') return parse_authorization_header(header) diff --git a/trytond/trytond/pyson.py b/trytond/trytond/pyson.py index 1f5d186c7e..c016aa3fa3 100644 --- a/trytond/trytond/pyson.py +++ b/trytond/trytond/pyson.py @@ -116,7 +116,7 @@ class PYSONEncoder(json.JSONEncoder): return TimeDelta(obj.days, obj.seconds, obj.microseconds) elif isinstance(obj, Decimal): return float(obj) - return super(PYSONEncoder, self).default(obj) + return super().default(obj) class PYSONDecoder(json.JSONDecoder): @@ -124,7 +124,7 @@ class PYSONDecoder(json.JSONDecoder): def __init__(self, context=None, noeval=False): self.__context = context or {} self.noeval = noeval - super(PYSONDecoder, self).__init__(object_hook=self._object_hook) + super().__init__(object_hook=self._object_hook) def _object_hook(self, dct): if '__class__' in dct: @@ -142,7 +142,7 @@ class PYSONDecoder(json.JSONDecoder): class Eval(PYSON): def __init__(self, v, d=''): - super(Eval, self).__init__() + super().__init__() self._value = v self._default = d @@ -189,7 +189,7 @@ class Eval(PYSON): class Not(PYSON): def __init__(self, v): - super(Not, self).__init__() + super().__init__() if isinstance(v, PYSON): if v.types() != {bool}: v = Bool(v) @@ -229,7 +229,7 @@ class Not(PYSON): class Bool(PYSON): def __init__(self, v): - super(Bool, self).__init__() + super().__init__() self._value = v @property @@ -255,7 +255,7 @@ class And(PYSON): _binary_operator = '&' def __init__(self, *statements, **kwargs): - super(And, self).__init__() + super().__init__() statements = list(statements) + kwargs.get('s', []) for i, statement in enumerate(list(statements)): if isinstance(statement, PYSON): @@ -288,7 +288,7 @@ class Or(And): _binary_operator = '|' def pyson(self): - res = super(Or, self).pyson() + res = super().pyson() res['__class__'] = 'Or' return res @@ -302,7 +302,7 @@ class Equal(PYSON): def __init__(self, s1, s2): statement1, statement2 = s1, s2 - super(Equal, self).__init__() + super().__init__() if isinstance(statement1, PYSON): types1 = statement1.types() else: @@ -338,7 +338,7 @@ class Greater(PYSON): def __init__(self, s1, s2, e=False): statement1, statement2, equal = s1, s2, e - super(Greater, self).__init__() + super().__init__() for i in (statement1, statement2): if isinstance(i, PYSON): assert i.types().issubset({ @@ -416,7 +416,7 @@ class Less(Greater): return '<=' if self._equal else '<' def pyson(self): - res = super(Less, self).pyson() + res = super().pyson() res['__class__'] = 'Less' return res @@ -435,7 +435,7 @@ class If(PYSON): def __init__(self, c, t, e=None): condition, then_statement, else_statement = c, t, e - super(If, self).__init__() + super().__init__() if isinstance(condition, PYSON): if condition.types() != {bool}: condition = Bool(condition) @@ -481,7 +481,7 @@ class Get(PYSON): def __init__(self, v, k, d=''): obj, key, default = v, k, d - super(Get, self).__init__() + super().__init__() if isinstance(obj, PYSON): assert obj.types() == {dict}, 'obj must be a dict' else: @@ -525,7 +525,7 @@ class In(PYSON): def __init__(self, k, v): key, obj = k, v - super(In, self).__init__() + super().__init__() if isinstance(key, PYSON): assert key.types().issubset({str, int}), \ 'key must be a string or an integer or a long' @@ -590,7 +590,7 @@ class Date(PYSON): delta_years = kwargs.get('dy', delta_years) delta_months = kwargs.get('dM', delta_months) delta_days = kwargs.get('dd', delta_days) - super(Date, self).__init__() + super().__init__() for i in (year, month, day, delta_years, delta_months, delta_days): if isinstance(i, PYSON): assert i.types().issubset({int, type(None)}), \ @@ -659,7 +659,7 @@ class DateTime(Date): delta_minutes = kwargs.get('dm', delta_minutes) delta_seconds = kwargs.get('ds', delta_seconds) delta_microseconds = kwargs.get('dms', delta_microseconds) - super(DateTime, self).__init__(year=year, month=month, day=day, + super().__init__(year=year, month=month, day=day, delta_years=delta_years, delta_months=delta_months, delta_days=delta_days, start=start, **kwargs) for i in (hour, minute, second, microsecond, @@ -681,7 +681,7 @@ class DateTime(Date): @property def __repr_params__(self): - date_params = super(DateTime, self).__repr_params__ + date_params = super().__repr_params__ return (date_params[:3] + (self._hour, self._minute, self._second, self._microsecond) + date_params[3:-1] @@ -690,7 +690,7 @@ class DateTime(Date): + date_params[-1:]) def pyson(self): - res = super(DateTime, self).pyson() + res = super().pyson() res['__class__'] = 'DateTime' res['h'] = self._hour res['m'] = self._minute @@ -773,7 +773,7 @@ class TimeDelta(PYSON): class Len(PYSON): def __init__(self, v): - super(Len, self).__init__() + super().__init__() if isinstance(v, PYSON): assert v.types().issubset({dict, list, str}), \ 'value must be a dict or a list or a string' @@ -804,7 +804,7 @@ class Id(PYSON): """The database id for filesystem id""" def __init__(self, module, fs_id): - super(Id, self).__init__() + super().__init__() self._module = module self._fs_id = fs_id diff --git a/trytond/trytond/report/report.py b/trytond/trytond/report/report.py index 1483af8e74..e58effa495 100644 --- a/trytond/trytond/report/report.py +++ b/trytond/trytond/report/report.py @@ -140,7 +140,7 @@ class Report(URLMixin, PoolBase): @classmethod def __setup__(cls): - super(Report, cls).__setup__() + super().__setup__() cls.__rpc__ = { 'execute': RPC(), } diff --git a/trytond/trytond/res/group.py b/trytond/trytond/res/group.py index fe1d9e31fc..c2b995808a 100644 --- a/trytond/trytond/res/group.py +++ b/trytond/trytond/res/group.py @@ -14,7 +14,7 @@ class MenuMany2Many(fields.Many2Many): def get(self, ids, model, name, values=None): Menu = self.get_target() - res = super(MenuMany2Many, self).get(ids, model, name, + res = super().get(ids, model, name, values=values) menu_ids = list(set(chain(*res.values()))) test_ids = [] @@ -49,7 +49,7 @@ class Group(DeactivableMixin, tree(), ModelSQL, ModelView): @classmethod def __setup__(cls): - super(Group, cls).__setup__() + super().__setup__() table = cls.__table__() cls._sql_constraints += [ ('name_uniq', Unique(table, table.name), @@ -79,7 +79,7 @@ class Group(DeactivableMixin, tree(), ModelSQL, ModelView): break i += 1 default['name'] = name - new_groups.extend(super(Group, cls).copy([group], default=default)) + new_groups.extend(super().copy([group], default=default)) return new_groups @classmethod diff --git a/trytond/trytond/res/user.py b/trytond/trytond/res/user.py index 04fc8388e5..e2242e7c52 100644 --- a/trytond/trytond/res/user.py +++ b/trytond/trytond/res/user.py @@ -152,7 +152,7 @@ class User(avatar_mixin(100, 'login'), DeactivableMixin, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(User, cls).__setup__() + super().__setup__() cls.__rpc__.update({ 'get_preferences': RPC(check_access=False), 'set_preferences': RPC( @@ -198,7 +198,7 @@ class User(avatar_mixin(100, 'login'), DeactivableMixin, ModelSQL, ModelView): model_data = ModelData.__table__() table_h = cls.__table_handler__(module_name) cursor = Transaction().connection.cursor() - super(User, cls).__register__(module_name) + super().__register__(module_name) # Migration from 5.6: Set noupdate to admin cursor.execute(*model_data.update( @@ -356,7 +356,7 @@ class User(avatar_mixin(100, 'login'), DeactivableMixin, ModelSQL, ModelView): @classmethod def read(cls, ids, fields_names): - result = super(User, cls).read(ids, fields_names) + result = super().read(ids, fields_names) cache = Transaction().get_cache().get(cls.__name__) for values in result: if 'password_hash' in values: @@ -383,7 +383,7 @@ class User(avatar_mixin(100, 'login'), DeactivableMixin, ModelSQL, ModelView): @classmethod def create(cls, vlist): vlist = [cls._convert_vals(vals) for vals in vlist] - return super(User, cls).create(vlist) + return super().create(vlist) @classmethod def write(cls, users, values, *args): @@ -404,7 +404,7 @@ class User(avatar_mixin(100, 'login'), DeactivableMixin, ModelSQL, ModelView): session_to_clear += users users_to_clear += [u.login for u in users] - super(User, cls).write(*args) + super().write(*args) Session.clear(session_to_clear) UserDevice.clear(users_to_clear) @@ -447,7 +447,7 @@ class User(avatar_mixin(100, 'login'), DeactivableMixin, ModelSQL, ModelView): new_users = [] for user in users: default['login'] = user.login + ' (copy)' - new_user, = super(User, cls).copy([user], default) + new_user, = super().copy([user], default) new_users.append(new_user) return new_users @@ -934,7 +934,7 @@ class UserAction(ModelSQL): @classmethod def create(cls, vlist): vlist = [cls._convert_values(values) for values in vlist] - return super(UserAction, cls).create(vlist) + return super().create(vlist) @classmethod def write(cls, records, values, *args): @@ -942,7 +942,7 @@ class UserAction(ModelSQL): args = [] for records, values in zip(actions, actions): args.extend((records, cls._convert_values(values))) - super(UserAction, cls).write(*args) + super().write(*args) class UserGroup(ModelSQL): @@ -1055,7 +1055,7 @@ class UserApplication(Workflow, ModelSQL, ModelView): @classmethod def __setup__(cls): - super(UserApplication, cls).__setup__() + super().__setup__() cls._transitions |= set(( ('requested', 'validated'), ('requested', 'cancelled'), @@ -1134,7 +1134,7 @@ class UserApplication(Workflow, ModelSQL, ModelView): # Ensure we get a different key for each record # default methods are called only once values.setdefault('key', cls.default_key()) - applications = super(UserApplication, cls).create(vlist) + applications = super().create(vlist) return applications diff --git a/trytond/trytond/tests/field_char.py b/trytond/trytond/tests/field_char.py index 422419d75b..09f9ec4182 100644 --- a/trytond/trytond/tests/field_char.py +++ b/trytond/trytond/tests/field_char.py @@ -61,7 +61,7 @@ class CharUnaccentedOff(ModelSQL): @classmethod def __setup__(cls): - super(CharUnaccentedOff, cls).__setup__() + super().__setup__() cls.char.search_unaccented = False diff --git a/trytond/trytond/tests/field_one2one.py b/trytond/trytond/tests/field_one2one.py index ac41893e20..b4a4023d01 100644 --- a/trytond/trytond/tests/field_one2one.py +++ b/trytond/trytond/tests/field_one2one.py @@ -24,7 +24,7 @@ class One2OneRelation(ModelSQL): @classmethod def __setup__(cls): - super(One2OneRelation, cls).__setup__() + super().__setup__() table = cls.__table__() cls._sql_constraints += [ ('origin_unique', Unique(table, table.origin), @@ -47,7 +47,7 @@ class One2OneRequiredRelation(ModelSQL): @classmethod def __setup__(cls): - super(One2OneRequiredRelation, cls).__setup__() + super().__setup__() table = cls.__table__() cls._sql_constraints += [ ('origin_unique', Unique(table, table.origin), @@ -71,7 +71,7 @@ class One2OneDomainRelation(ModelSQL): @classmethod def __setup__(cls): - super(One2OneDomainRelation, cls).__setup__() + super().__setup__() table = cls.__table__() cls._sql_constraints += [ ('origin_unique', Unique(table, table.origin), diff --git a/trytond/trytond/tests/modelsql.py b/trytond/trytond/tests/modelsql.py index 36a858a308..956dfc2bd4 100644 --- a/trytond/trytond/tests/modelsql.py +++ b/trytond/trytond/tests/modelsql.py @@ -223,7 +223,7 @@ class ModelCheck(ModelSQL): @classmethod def __setup__(cls): - super(ModelCheck, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_constraints = [ ('check', Check(t, (t.value > 42)), 'tests.msg_modelsql_check'), @@ -236,7 +236,7 @@ class ModelUnique(ModelSQL): @classmethod def __setup__(cls): - super(ModelUnique, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_constraints = [ ('unique', Unique(t, t.value), 'tests.msg_modelsql_unique'), @@ -254,7 +254,7 @@ class ModelExclude(ModelSQL): @classmethod def __setup__(cls): - super(ModelExclude, cls).__setup__() + super().__setup__() t = cls.__table__() cls._sql_constraints = [ ('exclude', Exclude(t, (t.value, Equal), diff --git a/trytond/trytond/tests/modelview.py b/trytond/trytond/tests/modelview.py index 664b63ddc9..62d7b10ddb 100644 --- a/trytond/trytond/tests/modelview.py +++ b/trytond/trytond/tests/modelview.py @@ -65,7 +65,7 @@ class ModelViewButton(ModelView): @classmethod def __setup__(cls): - super(ModelViewButton, cls).__setup__() + super().__setup__() cls._buttons = { 'test': {}, } @@ -86,7 +86,7 @@ class ModelViewButtonDepends(ModelView): @classmethod def __setup__(cls): - super(ModelViewButtonDepends, cls).__setup__() + super().__setup__() cls._buttons = { 'test': { 'depends': ['value'], diff --git a/trytond/trytond/tests/test_field_depends.py b/trytond/trytond/tests/test_field_depends.py index 1b5f2d80ba..3d0adc12af 100644 --- a/trytond/trytond/tests/test_field_depends.py +++ b/trytond/trytond/tests/test_field_depends.py @@ -118,7 +118,7 @@ class FieldDependsTestCase(TestCase): @fields.depends('bar') def on_change_name(self): - super(Model, self).on_change_name() + super().on_change_name() Model.__setup__() Model.__post_setup__() diff --git a/trytond/trytond/tests/test_tryton.py b/trytond/trytond/tests/test_tryton.py index 8d7a39fc8a..16b877f015 100644 --- a/trytond/trytond/tests/test_tryton.py +++ b/trytond/trytond/tests/test_tryton.py @@ -1329,7 +1329,7 @@ class TestSuite(unittest.TestSuite): # Retry on connection error sys.stderr.write(str(err)) time.sleep(1) - result = super(TestSuite, self).run(*args, **kwargs) + result = super().run(*args, **kwargs) if not exist: drop_db() return result diff --git a/trytond/trytond/tests/workflow.py b/trytond/trytond/tests/workflow.py index 71d098bcd1..a0560f1ef1 100644 --- a/trytond/trytond/tests/workflow.py +++ b/trytond/trytond/tests/workflow.py @@ -15,7 +15,7 @@ class WorkflowedModel(Workflow, ModelSQL): @classmethod def __setup__(cls): - super(WorkflowedModel, cls).__setup__() + super().__setup__() cls._transitions |= set(( ('start', 'running'), )) diff --git a/trytond/trytond/tools/singleton.py b/trytond/trytond/tools/singleton.py index 00669907ea..88ce6b0b95 100644 --- a/trytond/trytond/tools/singleton.py +++ b/trytond/trytond/tools/singleton.py @@ -7,10 +7,10 @@ class Singleton(type): Metaclass for singleton pattern ''' def __init__(cls, name, bases, dict): - super(Singleton, cls).__init__(name, bases, dict) + super().__init__(name, bases, dict) cls.instance = None def __call__(cls, *args, **kwargs): if cls.instance is None: - cls.instance = super(Singleton, cls).__call__(*args, **kwargs) + cls.instance = super().__call__(*args, **kwargs) return cls.instance diff --git a/trytond/trytond/transaction.py b/trytond/trytond/transaction.py index de1e9bda66..d529bdeadd 100644 --- a/trytond/trytond/transaction.py +++ b/trytond/trytond/transaction.py @@ -108,7 +108,7 @@ class Transaction(object): def __new__(cls, new=False): transactions = cls._local.transactions if new or not transactions: - instance = super(Transaction, cls).__new__(cls) + instance = super().__new__(cls) instance.database = None instance.readonly = False instance.connection = None diff --git a/trytond/trytond/wizard/wizard.py b/trytond/trytond/wizard/wizard.py index 958fe43f73..fc19ab8a3a 100644 --- a/trytond/trytond/wizard/wizard.py +++ b/trytond/trytond/wizard/wizard.py @@ -159,7 +159,7 @@ class StateAction(StateTransition): ''' action_id is a string containing ``module.xml_id`` ''' - super(StateAction, self).__init__() + super().__init__() self.action_id = action_id def get_action(self): @@ -178,7 +178,7 @@ class StateReport(StateAction): 'An report state of a wizard' def __init__(self, report_name): - super(StateReport, self).__init__(None) + super().__init__(None) self.report_name = report_name def get_action(self): @@ -201,7 +201,7 @@ class Wizard(URLMixin, PoolBase): @classmethod def __setup__(cls): - super(Wizard, cls).__setup__() + super().__setup__() cls.__rpc__ = { 'create': RPC(readonly=False), 'delete': RPC(readonly=False), @@ -225,7 +225,7 @@ class Wizard(URLMixin, PoolBase): @classmethod def __post_setup__(cls): - super(Wizard, cls).__post_setup__() + super().__post_setup__() # Set states cls.states = {} for attr in dir(cls): @@ -236,7 +236,7 @@ class Wizard(URLMixin, PoolBase): @classmethod def __register__(cls, module_name): - super(Wizard, cls).__register__(module_name) + super().__register__(module_name) pool = Pool() Translation = pool.get('ir.translation') Translation.register_wizard(cls, module_name) diff --git a/trytond/trytond/wsgi.py b/trytond/trytond/wsgi.py index 2a94f2629a..53e23128af 100644 --- a/trytond/trytond/wsgi.py +++ b/trytond/trytond/wsgi.py @@ -204,7 +204,7 @@ class SharedDataMiddlewareIndex(SharedDataMiddleware): def __call__(self, environ, start_response): if environ['REQUEST_METHOD'] not in {'GET', 'HEAD'}: return self.app(environ, start_response) - return super(SharedDataMiddlewareIndex, self).__call__( + return super().__call__( environ, start_response) def get_directory_loader(self, directory):