2
0

pep8 line length to 80, activate pep8 check in travis, and add noqa on scenario while waiting improvement of quality-tools

This commit is contained in:
Nicolas Bessi 2014-08-20 15:46:23 +02:00 committed by Abraham Anes
parent 603b2b86b3
commit aba790be58
4 changed files with 98 additions and 33 deletions

View File

@ -27,9 +27,15 @@
Templates for Journal Entries Templates for Journal Entries
User can configure journal entries templates, useful for recurring entries. User can configure journal entries templates, useful for recurring entries.
The amount of each template line can be computed (through python code) or kept as user input.
If user input, when using the template, user has to fill the amount of every input lines. The amount of each template line can be computed (through python code)
The journal entry form allows lo load, through a wizard, the template to use and the amounts to fill. or kept as user input.
If user input, when using the template, user has to fill
the amount of every input lines.
The journal entry form allows lo load, through a wizard,
the template to use and the amounts to fill.
""", """,
'author': 'Agile Business Group', 'author': 'Agile Business Group',

View File

@ -51,21 +51,27 @@ class account_document_template(orm.Model):
def _generate_empty_lines(self, cr, uid, template_id): def _generate_empty_lines(self, cr, uid, template_id):
lines = {} lines = {}
for template_line in self.browse(cr, uid, template_id).template_line_ids: t_lines = self.browse(cr, uid, template_id).template_line_ids
for template_line in t_lines:
lines[template_line.sequence] = None lines[template_line.sequence] = None
return lines return lines
def lines(self, line_number): def lines(self, line_number):
if self._computed_lines[line_number] is not None: if self._computed_lines[line_number] is not None:
return self._computed_lines[line_number] return self._computed_lines[line_number]
line = self._get_template_line(self._cr, self._uid, self._current_template_id, line_number) line = self._get_template_line(self._cr,
self._uid,
self._current_template_id,
line_number)
if re.match('L\( *' + str(line_number) + ' *\)', line.python_code): if re.match('L\( *' + str(line_number) + ' *\)', line.python_code):
raise orm.except_orm( raise orm.except_orm(
_('Error'), _('Error'),
_('Line %s can\'t refer to itself') % str(line_number) _('Line %s can\'t refer to itself') % str(line_number)
) )
try: try:
self._computed_lines[line_number] = eval(line.python_code.replace('L', 'self.lines')) self._computed_lines[line_number] = eval(
line.python_code.replace('L', 'self.lines')
)
except KeyError: except KeyError:
raise orm.except_orm( raise orm.except_orm(
_('Error'), _('Error'),
@ -74,12 +80,14 @@ class account_document_template(orm.Model):
def compute_lines(self, cr, uid, template_id, input_lines): def compute_lines(self, cr, uid, template_id, input_lines):
# input_lines: dictionary in the form {line_number: line_amount} # input_lines: dictionary in the form {line_number: line_amount}
# returns all the lines (included input lines) in the form {line_number: line_amount} # returns all the lines (included input lines)
# in the form {line_number: line_amount}
template = self.browse(cr, uid, template_id) template = self.browse(cr, uid, template_id)
if len(input_lines) != self._input_lines(cr, uid, template): if len(input_lines) != self._input_lines(cr, uid, template):
raise orm.except_orm( raise orm.except_orm(
_('Error'), _('Error'),
_('Inconsistency between input lines and filled lines for template %s') % template.name _('Inconsistency between input lines and '
'filled lines for template %s') % template.name
) )
self._current_template_id = template.id self._current_template_id = template.id
self._cr = cr self._cr = cr
@ -106,6 +114,10 @@ class account_document_template_line(orm.Model):
_columns = { _columns = {
'name': fields.char('Name', size=64, required=True), 'name': fields.char('Name', size=64, required=True),
'sequence': fields.integer('Sequence', required=True), 'sequence': fields.integer('Sequence', required=True),
'type': fields.selection([('computed', 'Computed'), ('input', 'User input')], 'Type', required=True), 'type': fields.selection(
[('computed', 'Computed'), ('input', 'User input')],
'Type',
required=True
),
'python_code': fields.text('Python Code'), 'python_code': fields.text('Python Code'),
} }

View File

@ -28,23 +28,40 @@ class account_move_template(orm.Model):
_name = 'account.move.template' _name = 'account.move.template'
_columns = { _columns = {
'company_id': fields.many2one('res.company', 'Company', required=True, change_default=True), 'company_id': fields.many2one(
'template_line_ids': fields.one2many('account.move.template.line', 'template_id', 'Template Lines'), 'res.company',
'Company',
required=True,
change_default=True
),
'template_line_ids': fields.one2many(
'account.move.template.line',
'template_id',
'Template Lines'
),
'cross_journals': fields.boolean('Cross-Journals'), 'cross_journals': fields.boolean('Cross-Journals'),
'transitory_acc_id': fields.many2one('account.account', 'Transitory account', required=False), 'transitory_acc_id': fields.many2one(
} 'account.account',
'Transitory account',
_defaults = { required=False
'company_id': lambda self, cr, uid, c: self.pool.get('res.company')._company_default_get(
cr, uid, 'account.move.template', context=c
), ),
} }
def _get_default(self, cr, uid, context=None):
self.pool.get('res.company')._company_default_get(
cr, uid, 'account.move.template', context=context
)
_defaults = {
'company_id': _get_default
}
def _check_different_journal(self, cr, uid, ids, context=None): def _check_different_journal(self, cr, uid, ids, context=None):
# Check that the journal on these lines are different/same in the case of cross journals/single journal # Check that the journal on these lines are different/same in the case
# of cross journals/single journal
journal_ids = [] journal_ids = []
all_journal_ids = [] all_journal_ids = []
move_template = self.pool.get('account.move.template').browse(cr, uid, ids)[0] move_template = self.pool.get('account.move.template').browse(
cr, uid, ids)[0]
if not move_template.template_line_ids: if not move_template.template_line_ids:
return True return True
for template_line in move_template.template_line_ids: for template_line in move_template.template_line_ids:
@ -59,7 +76,8 @@ class account_move_template(orm.Model):
_constraints = [ _constraints = [
(_check_different_journal, (_check_different_journal,
'If the template is "cross-journals", the Journals must be different,' 'If the template is "cross-journals", the Journals must be different,'
'if the template does not "cross-journals" the Journals must be the same!', 'if the template does not "cross-journals" '
'the Journals must be the same!',
['journal_id']) ['journal_id'])
] ]
@ -69,16 +87,28 @@ class account_move_template_line(orm.Model):
_inherit = 'account.document.template.line' _inherit = 'account.document.template.line'
_columns = { _columns = {
'journal_id': fields.many2one('account.journal', 'Journal', required=True), 'journal_id': fields.many2one(
'account_id': fields.many2one('account.account', 'Account', 'account.journal',
required=True, ondelete="cascade"), 'Journal',
required=True
),
'account_id': fields.many2one(
'account.account',
'Account',
required=True,
ondelete="cascade"
),
'move_line_type': fields.selection( 'move_line_type': fields.selection(
[('cr', 'Credit'), [('cr', 'Credit'),
('dr', 'Debit')], ('dr', 'Debit')],
'Move Line Type', 'Move Line Type',
required=True required=True
), ),
'analytic_account_id': fields.many2one('account.analytic.account', 'Analytic Account', ondelete="cascade"), 'analytic_account_id': fields.many2one(
'account.analytic.account',
'Analytic Account',
ondelete="cascade"
),
'template_id': fields.many2one('account.move.template', 'Template'), 'template_id': fields.many2one('account.move.template', 'Template'),
'account_tax_id': fields.many2one('account.tax', 'Tax'), 'account_tax_id': fields.many2one('account.tax', 'Tax'),
} }

View File

@ -86,7 +86,8 @@ class wizard_select_template(orm.TransientModel):
return self.load_template(cr, uid, ids) return self.load_template(cr, uid, ids)
wizard.write({'state': 'template_selected'}) wizard.write({'state': 'template_selected'})
view_rec = model_data_obj.get_object_reference(cr, uid, 'account_move_template', 'wizard_select_template') view_rec = model_data_obj.get_object_reference(
cr, uid, 'account_move_template', 'wizard_select_template')
view_id = view_rec and view_rec[1] or False view_id = view_rec and view_rec[1] or False
return { return {
@ -106,7 +107,10 @@ class wizard_select_template(orm.TransientModel):
wizard = self.browse(cr, uid, ids, context=context)[0] wizard = self.browse(cr, uid, ids, context=context)[0]
if not template_obj.check_zero_lines(cr, uid, wizard): if not template_obj.check_zero_lines(cr, uid, wizard):
raise orm.except_orm(_('Error !'), _('At least one amount has to be non-zero!')) raise orm.except_orm(
_('Error !'),
_('At least one amount has to be non-zero!')
)
input_lines = {} input_lines = {}
for template_line in wizard.line_ids: for template_line in wizard.line_ids:
@ -114,10 +118,14 @@ class wizard_select_template(orm.TransientModel):
period_id = account_period_obj.find(cr, uid, context=context) period_id = account_period_obj.find(cr, uid, context=context)
if not period_id: if not period_id:
raise orm.except_orm(_('No period found !'), _('Unable to find a valid period !')) raise orm.except_orm(
_('No period found !'),
_('Unable to find a valid period !')
)
period_id = period_id[0] period_id = period_id[0]
computed_lines = template_obj.compute_lines(cr, uid, wizard.template_id.id, input_lines) computed_lines = template_obj.compute_lines(
cr, uid, wizard.template_id.id, input_lines)
moves = {} moves = {}
for line in wizard.template_id.template_line_ids: for line in wizard.template_id.template_line_ids:
@ -171,14 +179,16 @@ class wizard_select_template(orm.TransientModel):
}) })
return move_id return move_id
def _make_move_line(self, cr, uid, line, computed_lines, move_id, period_id, partner_id): def _make_move_line(self, cr, uid, line, computed_lines,
move_id, period_id, partner_id):
account_move_line_obj = self.pool.get('account.move.line') account_move_line_obj = self.pool.get('account.move.line')
analytic_account_id = False analytic_account_id = False
if line.analytic_account_id: if line.analytic_account_id:
if not line.journal_id.analytic_journal_id: if not line.journal_id.analytic_journal_id:
raise orm.except_orm( raise orm.except_orm(
_('No Analytic Journal !'), _('No Analytic Journal !'),
_("You have to dfine an analytic journal on the '%s' journal!") _("You have to define an analytic "
"journal on the '%s' journal!")
% (line.journal_id.name,) % (line.journal_id.name,)
) )
@ -212,7 +222,8 @@ class wizard_select_template(orm.TransientModel):
if not line.journal_id.analytic_journal_id: if not line.journal_id.analytic_journal_id:
raise orm.except_orm( raise orm.except_orm(
_('No Analytic Journal !'), _('No Analytic Journal !'),
_("You have to define an analytic journal on the '%s' journal!") _("You have to define an analytic journal "
"on the '%s' journal!")
% (line.template_id.journal_id.name,) % (line.template_id.journal_id.name,)
) )
analytic_account_id = line.analytic_account_id.id analytic_account_id = line.analytic_account_id.id
@ -238,10 +249,16 @@ class wizard_select_template_line(orm.TransientModel):
_description = 'Template Lines' _description = 'Template Lines'
_name = "wizard.select.move.template.line" _name = "wizard.select.move.template.line"
_columns = { _columns = {
'template_id': fields.many2one('wizard.select.move.template', 'Template'), 'template_id': fields.many2one('wizard.select.move.template',
'Template'),
'sequence': fields.integer('Number', required=True), 'sequence': fields.integer('Number', required=True),
'name': fields.char('Name', size=64, required=True, readonly=True), 'name': fields.char('Name', size=64, required=True, readonly=True),
'account_id': fields.many2one('account.account', 'Account', required=True, readonly=True), 'account_id': fields.many2one(
'account.account',
'Account',
required=True,
readonly=True
),
'move_line_type': fields.selection( 'move_line_type': fields.selection(
[('cr', 'Credit'), [('cr', 'Credit'),
('dr', 'Debit')], ('dr', 'Debit')],