From 7874c4e28e2df9ecd84d2fd2ce0279caeec04a1c Mon Sep 17 00:00:00 2001 From: C?dric Krier Date: Fri, 2 Feb 2018 13:13:15 +0100 Subject: [PATCH] Update to 4.7 --- .drone.yml | 49 +++++++++++++++++++++++++++++++++++++++++++++ __init__.py | 10 +++++----- setup.py | 51 ++++++++++++++++++++++++++++++++++------------- stock.py | 13 +++++++----- tests/__init__.py | 6 ++++-- tox.ini | 18 +++++++++++++++++ tryton.cfg | 2 +- 7 files changed, 122 insertions(+), 27 deletions(-) create mode 100644 .drone.yml create mode 100644 tox.ini diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..9f91ecb --- /dev/null +++ b/.drone.yml @@ -0,0 +1,49 @@ +clone: + hg: + image: plugins/hg + +pipeline: + tox: + image: ${IMAGE} + environment: + - CFLAGS=-O0 + - DB_CACHE=/cache + - TOX_TESTENV_PASSENV=CFLAGS DB_CACHE + - POSTGRESQL_URI=postgresql://postgres@postgresql:5432/ + commands: + - pip install tox + - tox -e "${TOXENV}-${DATABASE}" + +services: + postgresql: + image: postgres + when: + matrix: + DATABASE: postgresql + +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 + - IMAGE: python:3.4 + TOXENV: py34 + DATABASE: postgresql + - IMAGE: python:3.5 + TOXENV: py35 + DATABASE: sqlite + - IMAGE: python:3.5 + TOXENV: py35 + DATABASE: postgresql + - IMAGE: python:3.6 + TOXENV: py36 + DATABASE: sqlite + - IMAGE: python:3.6 + TOXENV: py36 + DATABASE: postgresql diff --git a/__init__.py b/__init__.py index 179c892..a7c4bf2 100644 --- a/__init__.py +++ b/__init__.py @@ -1,13 +1,13 @@ # The COPYRIGHT file at the top level of this repository contains the full # copyright notices and license terms. from trytond.pool import Pool -from .stock import * +from . import stock def register(): Pool.register( - Template, - Lot, - Location, - Move, + stock.Template, + stock.Lot, + stock.Location, + stock.Move, module='stock_lot_expiry', type_='model') diff --git a/setup.py b/setup.py index ec1fa51..54d22a7 100644 --- a/setup.py +++ b/setup.py @@ -4,7 +4,11 @@ from setuptools import setup import re import os -import ConfigParser +import io +try: + from configparser import ConfigParser +except ImportError: + from ConfigParser import ConfigParser MODULE = 'stock_lot_expiry' PREFIX = 'nantic' @@ -12,33 +16,46 @@ MODULE2PREFIX = {} def read(fname): - return open(os.path.join(os.path.dirname(__file__), fname)).read() + return io.open( + os.path.join(os.path.dirname(__file__), fname), + 'r', encoding='utf-8').read() -config = ConfigParser.ConfigParser() + +def get_require_version(name): + if minor_version % 2: + require = '%s >= %s.%s.dev0, < %s.%s' + else: + require = '%s >= %s.%s, < %s.%s' + require %= (name, major_version, minor_version, + major_version, minor_version + 1) + return require + +config = ConfigParser() config.readfp(open('tryton.cfg')) info = dict(config.items('tryton')) for key in ('depends', 'extras_depend', 'xml'): if key in info: info[key] = info[key].strip().splitlines() -major_version, minor_version, _ = info.get('version', '0.0.1').split('.', 2) +version = info.get('version', '0.0.1') +major_version, minor_version, _ = version.split('.', 2) major_version = int(major_version) minor_version = int(minor_version) requires = [] for dep in info.get('depends', []): - if not re.match(r'(ir|res|webdav)(\W|$)', dep): + if not re.match(r'(ir|res)(\W|$)', dep): prefix = MODULE2PREFIX.get(dep, 'trytond') - requires.append('%s_%s >= %s.%s, < %s.%s' % - (prefix, dep, major_version, minor_version, - major_version, minor_version + 1)) -requires.append('trytond >= %s.%s, < %s.%s' % - (major_version, minor_version, major_version, minor_version + 1)) + requires.append(get_require_version('%s_%s' % (prefix, dep))) +requires.append(get_require_version('trytond')) -tests_require = ['proteus >= %s.%s, < %s.%s' % - (major_version, minor_version, major_version, minor_version + 1)] +tests_require = [get_require_version('proteus')] +dependency_links = [] +if minor_version % 2: + # Add development index for testing with proteus + dependency_links.append('https://trydevpi.tryton.org/') setup(name='%s_%s' % (PREFIX, MODULE), - version=info.get('version', '0.0.1'), + version=version, description='Tryton module stock lot expiry', long_description=read('README'), author='NaN·tic', @@ -71,12 +88,17 @@ setup(name='%s_%s' % (PREFIX, MODULE), 'Natural Language :: Russian', 'Natural Language :: Spanish', 'Operating System :: OS Independent', - 'Programming Language :: Python :: 2.6', 'Programming Language :: Python :: 2.7', + 'Programming Language :: Python :: 3.4', + 'Programming Language :: Python :: 3.5', + 'Programming Language :: Python :: 3.6', + 'Programming Language :: Python :: Implementation :: CPython', + 'Programming Language :: Python :: Implementation :: PyPy', 'Topic :: Office/Business', ], license='GPL-3', install_requires=requires, + dependency_links=dependency_links, zip_safe=False, entry_points=""" [trytond.modules] @@ -85,4 +107,5 @@ setup(name='%s_%s' % (PREFIX, MODULE), test_suite='tests', test_loader='trytond.test_loader:Loader', tests_require=tests_require, + use_2to3=True, ) diff --git a/stock.py b/stock.py index 6679eca..425ba6c 100644 --- a/stock.py +++ b/stock.py @@ -4,14 +4,14 @@ from datetime import date, timedelta from trytond.model import Workflow, ModelView, fields from trytond.pool import Pool, PoolMeta -from trytond.pyson import And, Bool, Equal, Eval, If, Not +from trytond.pyson import Bool, Eval, If from trytond.transaction import Transaction __all__ = ['Template', 'Lot', 'Location', 'Move'] -__metaclass__ = PoolMeta class Template: + __metaclass__ = PoolMeta __name__ = 'product.template' life_time = fields.Integer('Life Time', @@ -28,6 +28,7 @@ class Template: class Lot: + __metaclass__ = PoolMeta __name__ = 'stock.lot' life_date = fields.Date('End of Life Date', @@ -120,6 +121,7 @@ class Lot: class Location: + __metaclass__ = PoolMeta __name__ = 'stock.location' expired = fields.Boolean('Expired Products\' Location', @@ -158,6 +160,7 @@ class Location: class Move: + __metaclass__ = PoolMeta __name__ = 'stock.move' to_location_allow_expired = fields.Function( @@ -168,8 +171,8 @@ class Move: def __setup__(cls): super(Move, cls).__setup__() cls.lot.domain.append( - If(And(Equal(Eval('state', 'draft'), 'draft'), - Not(Bool(Eval('to_location_allow_expired', True)))), + If((Eval('state', 'draft') == 'draft') + & ~Eval('to_location_allow_expired'), ('expired', '=', False), ()), ) @@ -181,7 +184,7 @@ class Move: Eval('planned_date')) cls.lot.loading = 'lazy' - + for fname in ('state', 'to_location_allow_expired', 'effective_date', 'planned_date'): if fname not in cls.lot.depends: diff --git a/tests/__init__.py b/tests/__init__.py index 7b84093..9af3611 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,6 +1,8 @@ # The COPYRIGHT file at the top level of this repository contains the full # copyright notices and license terms. - -from .test_stock_lot_expiry import suite +try: + from trytond.modules.stock_lot_expiry.tests.test_stock_lot_expiry import suite +except ImportError: + from .test_stock_lot_expiry import suite __all__ = ['suite'] diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..ad44320 --- /dev/null +++ b/tox.ini @@ -0,0 +1,18 @@ +[tox] +envlist = {py27,py34,py35,py36}-{sqlite,postgresql,mysql},pypy-{sqlite,postgresql} + +[testenv] +commands = {envpython} setup.py test +deps = + {py27,py34,py35,py36}-postgresql: psycopg2 >= 2.5 + pypy-postgresql: psycopg2cffi >= 2.5 + mysql: MySQL-python + sqlite: sqlitebck +setenv = + sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://} + postgresql: TRYTOND_DATABASE_URI={env:POSTGRESQL_URI:postgresql://} + mysql: TRYTOND_DATABASE_URI={env:MYSQL_URI:mysql://} + sqlite: DB_NAME={env:SQLITE_NAME::memory:} + postgresql: DB_NAME={env:POSTGRESQL_NAME:test} + mysql: DB_NAME={env:MYSQL_NAME:test} +install_command = pip install --pre --find-links https://trydevpi.tryton.org/ --process-dependency-links {opts} {packages} diff --git a/tryton.cfg b/tryton.cfg index 4503a7f..75301f0 100644 --- a/tryton.cfg +++ b/tryton.cfg @@ -1,5 +1,5 @@ [tryton] -version=4.1.0 +version=4.7.0 depends: product stock_lot