Use decorator before ModelView.button to set default records for cron task
Closes #15076 (grafted from e92eb501cc50ea906fa839596f2c533b787126d6) --HG-- branch : 7.0
This commit is contained in:
@@ -5,6 +5,7 @@ import datetime
|
||||
import logging
|
||||
import posixpath
|
||||
from collections import defaultdict
|
||||
from functools import wraps
|
||||
|
||||
from oauthlib.oauth2 import BackendApplicationClient, TokenExpiredError
|
||||
from requests_oauthlib import OAuth2Session
|
||||
@@ -181,6 +182,22 @@ class Invoice(metaclass=PoolMeta):
|
||||
InvoiceChorus.save(invoices_chorus)
|
||||
|
||||
|
||||
def default_records(state):
|
||||
def decorator(func):
|
||||
@wraps(func)
|
||||
def wrapper(cls, records=None):
|
||||
transaction = Transaction()
|
||||
if records is None:
|
||||
records = cls.search([
|
||||
('invoice.company', '=',
|
||||
transaction.context.get('company')),
|
||||
('state', '=', state),
|
||||
])
|
||||
return func(cls, records)
|
||||
return wrapper
|
||||
return decorator
|
||||
|
||||
|
||||
class InvoiceChorus(
|
||||
Workflow, ModelSQL, ModelView, _SyntaxMixin, metaclass=PoolMeta):
|
||||
"Invoice Chorus"
|
||||
@@ -310,20 +327,10 @@ class InvoiceChorus(
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def send(cls, records=None):
|
||||
transaction = Transaction()
|
||||
if not records:
|
||||
records = cls.search([
|
||||
('invoice.company', '=',
|
||||
transaction.context.get('company')),
|
||||
('state', '=', 'draft'),
|
||||
])
|
||||
cls.send_button(records)
|
||||
|
||||
@classmethod
|
||||
@default_records('draft')
|
||||
@ModelView.button
|
||||
@Workflow.transition('sent')
|
||||
def send_button(cls, records=None):
|
||||
def send(cls, records=None):
|
||||
"""Send invoice to Chorus
|
||||
|
||||
The transaction is committed after each invoice.
|
||||
@@ -369,20 +376,9 @@ class InvoiceChorus(
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def update(cls, records=None):
|
||||
transaction = Transaction()
|
||||
|
||||
if not records:
|
||||
records = cls.search([
|
||||
('invoice.company', '=',
|
||||
transaction.context.get('company')),
|
||||
('state', '=', 'sent'),
|
||||
])
|
||||
cls.update_button(records)
|
||||
|
||||
@classmethod
|
||||
@default_records('sent')
|
||||
@ModelView.button
|
||||
def update_button(cls, records=None):
|
||||
def update(cls, records=None):
|
||||
"Update state from Chorus"
|
||||
pool = Pool()
|
||||
Credential = pool.get('account.credential.chorus')
|
||||
|
||||
Reference in New Issue
Block a user