Remove support for Python 2.7
issue7497 review53261002
This commit is contained in:
@@ -25,12 +25,6 @@ services:
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- IMAGE: python:2.7
|
||||
TOXENV: py27
|
||||
DATABASE: sqlite
|
||||
- IMAGE: python:2.7
|
||||
TOXENV: py27
|
||||
DATABASE: postgresql
|
||||
- IMAGE: python:3.4
|
||||
TOXENV: py34
|
||||
DATABASE: sqlite
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
* Remove support for Python 2.7
|
||||
|
||||
Version 4.8.0 - 2018-04-23
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
* Check pending commission to erase party
|
||||
|
||||
@@ -4,7 +4,7 @@ Installing trytond_commission
|
||||
Prerequisites
|
||||
-------------
|
||||
|
||||
* Python 2.7 or later (http://www.python.org/)
|
||||
* Python 3.4 or later (http://www.python.org/)
|
||||
* simpleeval (https://github.com/danthedeckie/simpleeval)
|
||||
* trytond (http://www.tryton.org/)
|
||||
* trytond_account_invoice (http://www.tryton.org/)
|
||||
|
||||
+1
-2
@@ -5,8 +5,7 @@ from trytond.pool import PoolMeta
|
||||
__all__ = ['Journal']
|
||||
|
||||
|
||||
class Journal:
|
||||
__metaclass__ = PoolMeta
|
||||
class Journal(metaclass=PoolMeta):
|
||||
__name__ = 'account.journal'
|
||||
|
||||
@classmethod
|
||||
|
||||
+3
-3
@@ -1,6 +1,6 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from decimal import Decimal
|
||||
from itertools import groupby
|
||||
|
||||
@@ -93,7 +93,7 @@ class Agent(ModelSQL, ModelView):
|
||||
amounts.update(dict(cursor.fetchall()))
|
||||
digits = cls.pending_amount.digits
|
||||
exp = Decimal(str(10.0 ** -digits[1]))
|
||||
for agent_id, amount in amounts.iteritems():
|
||||
for agent_id, amount in amounts.items():
|
||||
if amount:
|
||||
# SQLite uses float for SUM
|
||||
if not isinstance(amount, Decimal):
|
||||
@@ -199,7 +199,7 @@ class PlanLines(sequence_ordered(), ModelSQL, ModelView, MatchMixin):
|
||||
try:
|
||||
if not isinstance(self.get_amount(**context), Decimal):
|
||||
raise ValueError
|
||||
except ValueError, exception:
|
||||
except ValueError as exception:
|
||||
self.raise_user_error('invalid_formula', {
|
||||
'formula': self.formula,
|
||||
'line': self.rec_name,
|
||||
|
||||
+3
-5
@@ -1,6 +1,6 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from decimal import Decimal
|
||||
|
||||
from trytond.pool import PoolMeta, Pool
|
||||
@@ -12,8 +12,7 @@ from trytond.tools import grouped_slice
|
||||
__all__ = ['Invoice', 'InvoiceLine']
|
||||
|
||||
|
||||
class Invoice:
|
||||
__metaclass__ = PoolMeta
|
||||
class Invoice(metaclass=PoolMeta):
|
||||
__name__ = 'account.invoice'
|
||||
agent = fields.Many2One('commission.agent', 'Commission Agent',
|
||||
domain=[
|
||||
@@ -105,8 +104,7 @@ class Invoice:
|
||||
return credit
|
||||
|
||||
|
||||
class InvoiceLine:
|
||||
__metaclass__ = PoolMeta
|
||||
class InvoiceLine(metaclass=PoolMeta):
|
||||
__name__ = 'account.invoice.line'
|
||||
principal = fields.Many2One('commission.agent', 'Commission Principal',
|
||||
domain=[
|
||||
|
||||
@@ -5,8 +5,7 @@ from trytond.pool import PoolMeta, Pool
|
||||
__all__ = ['PartyReplace', 'PartyErase']
|
||||
|
||||
|
||||
class PartyReplace:
|
||||
__metaclass__ = PoolMeta
|
||||
class PartyReplace(metaclass=PoolMeta):
|
||||
__name__ = 'party.replace'
|
||||
|
||||
@classmethod
|
||||
@@ -16,8 +15,7 @@ class PartyReplace:
|
||||
]
|
||||
|
||||
|
||||
class PartyErase:
|
||||
__metaclass__ = PoolMeta
|
||||
class PartyErase(metaclass=PoolMeta):
|
||||
__name__ = 'party.erase'
|
||||
|
||||
@classmethod
|
||||
|
||||
+2
-5
@@ -1,6 +1,5 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from trytond.pool import PoolMeta
|
||||
from trytond.model import ModelSQL, fields
|
||||
@@ -9,8 +8,7 @@ from trytond.model import ModelSQL, fields
|
||||
__all__ = ['Template', 'Template_Agent', 'Product']
|
||||
|
||||
|
||||
class Template:
|
||||
__metaclass__ = PoolMeta
|
||||
class Template(metaclass=PoolMeta):
|
||||
__name__ = 'product.template'
|
||||
principals = fields.Many2Many('product.template-commission.agent',
|
||||
'template', 'agent', 'Commission Principals',
|
||||
@@ -36,8 +34,7 @@ class Template_Agent(ModelSQL):
|
||||
])
|
||||
|
||||
|
||||
class Product:
|
||||
__metaclass__ = PoolMeta
|
||||
class Product(metaclass=PoolMeta):
|
||||
__name__ = 'product.product'
|
||||
|
||||
@property
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
from __future__ import unicode_literals
|
||||
|
||||
|
||||
from trytond.pool import PoolMeta
|
||||
from trytond.model import fields
|
||||
@@ -10,8 +10,7 @@ from trytond.pyson import Eval
|
||||
__all__ = ['Sale', 'SaleLine']
|
||||
|
||||
|
||||
class Sale:
|
||||
__metaclass__ = PoolMeta
|
||||
class Sale(metaclass=PoolMeta):
|
||||
__name__ = 'sale.sale'
|
||||
agent = fields.Many2One('commission.agent', 'Commission Agent',
|
||||
domain=[
|
||||
@@ -31,8 +30,7 @@ class Sale:
|
||||
return invoice
|
||||
|
||||
|
||||
class SaleLine:
|
||||
__metaclass__ = PoolMeta
|
||||
class SaleLine(metaclass=PoolMeta):
|
||||
__name__ = 'sale.line'
|
||||
principal = fields.Many2One('commission.agent', 'Commission Principal',
|
||||
domain=[
|
||||
|
||||
@@ -1,15 +1,12 @@
|
||||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python3
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
from setuptools import setup
|
||||
import re
|
||||
import os
|
||||
import io
|
||||
try:
|
||||
from configparser import ConfigParser
|
||||
except ImportError:
|
||||
from ConfigParser import ConfigParser
|
||||
import os
|
||||
import re
|
||||
from configparser import ConfigParser
|
||||
from setuptools import setup
|
||||
|
||||
|
||||
def read(fname):
|
||||
@@ -27,6 +24,7 @@ def get_require_version(name):
|
||||
major_version, minor_version + 1)
|
||||
return require
|
||||
|
||||
|
||||
config = ConfigParser()
|
||||
config.readfp(open('tryton.cfg'))
|
||||
info = dict(config.items('tryton'))
|
||||
@@ -101,7 +99,6 @@ setup(name=name,
|
||||
'Natural Language :: Slovenian',
|
||||
'Natural Language :: Spanish',
|
||||
'Operating System :: OS Independent',
|
||||
'Programming Language :: Python :: 2.7',
|
||||
'Programming Language :: Python :: 3.4',
|
||||
'Programming Language :: Python :: 3.5',
|
||||
'Programming Language :: Python :: 3.6',
|
||||
@@ -111,6 +108,7 @@ setup(name=name,
|
||||
'Topic :: Office/Business :: Financial :: Accounting',
|
||||
],
|
||||
license='GPL-3',
|
||||
python_requires='>=3.4',
|
||||
install_requires=requires,
|
||||
dependency_links=dependency_links,
|
||||
zip_safe=False,
|
||||
@@ -121,6 +119,4 @@ setup(name=name,
|
||||
test_suite='tests',
|
||||
test_loader='trytond.test_loader:Loader',
|
||||
tests_require=tests_require,
|
||||
use_2to3=True,
|
||||
convert_2to3_doctests=['tests/scenario_commission.rst'],
|
||||
)
|
||||
|
||||
@@ -139,7 +139,7 @@ Post invoice::
|
||||
>>> [c.amount for c in line.commissions]
|
||||
[Decimal('10.0000'), Decimal('10.0000')]
|
||||
>>> [c.invoice_state for c in line.commissions]
|
||||
[u'', u'']
|
||||
['', '']
|
||||
|
||||
Pending amount for agent::
|
||||
|
||||
@@ -181,7 +181,7 @@ Create commission invoices::
|
||||
>>> Commission = Model.get('commission')
|
||||
>>> commissions = Commission.find([])
|
||||
>>> [c.invoice_state for c in commissions]
|
||||
[u'invoiced', u'invoiced']
|
||||
['invoiced', 'invoiced']
|
||||
|
||||
Credit invoice::
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import unittest
|
||||
import doctest
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
[tox]
|
||||
envlist = {py27,py34,py35,py36}-{sqlite,postgresql},pypy-{sqlite,postgresql}
|
||||
envlist = {py34,py35,py36}-{sqlite,postgresql},pypy3-{sqlite,postgresql}
|
||||
|
||||
[testenv]
|
||||
commands = {envpython} setup.py test
|
||||
deps =
|
||||
{py27,py34,py35,py36}-postgresql: psycopg2 >= 2.5
|
||||
pypy-postgresql: psycopg2cffi >= 2.5
|
||||
{py34,py35,py36}-postgresql: psycopg2 >= 2.5
|
||||
pypy3-postgresql: psycopg2cffi >= 2.5
|
||||
sqlite: sqlitebck
|
||||
setenv =
|
||||
sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://}
|
||||
|
||||
Reference in New Issue
Block a user