Update to 4.7

This commit is contained in:
C?dric Krier 2018-02-02 16:16:07 +01:00
parent af4045e2b5
commit 6dd1269b9b
9 changed files with 87 additions and 37 deletions

View file

@ -1,9 +1,49 @@
image: python:all clone:
env: hg:
- POSTGRESQL_URI=postgresql://postgres@127.0.0.1:5432/ image: plugins/hg
- MYSQL_URI=mysql://root@127.0.0.1:3306/
script: pipeline:
- pip install tox tox:
- tox -e "{py27,py33,py34,py35}-{sqlite,postgresql}" --skip-missing-interpreters 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: services:
- postgres 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

View file

@ -2,13 +2,13 @@
# The COPYRIGHT file at the top level of this repository contains # The COPYRIGHT file at the top level of this repository contains
# the full copyright notices and license terms. # the full copyright notices and license terms.
from trytond.pool import Pool from trytond.pool import Pool
from .product_oneclick import * from . import product_oneclick
def register(): def register():
Pool.register( Pool.register(
ProductOneClickView, product_oneclick.ProductOneClickView,
module='product_oneclick', type_='model') module='product_oneclick', type_='model')
Pool.register( Pool.register(
ProductOneClick, product_oneclick.ProductOneClick,
module='product_oneclick', type_='wizard') module='product_oneclick', type_='wizard')

View file

@ -44,20 +44,20 @@ class ProductOneClickView(ModelView):
salable = fields.Boolean('Salable') salable = fields.Boolean('Salable')
sale_uom = fields.Many2One('product.uom', 'Sale UOM', sale_uom = fields.Many2One('product.uom', 'Sale UOM',
states={ states={
'invisible':~Eval('salable', False), 'invisible': ~Eval('salable', False),
'required': Eval('salable', False), 'required': Eval('salable', False),
}, },
#~ domain=[ domain=[
#~ ('category', '=', Eval('default_uom_category')), ('category', '=', Eval('default_uom_category')),
#~ ], ],
depends=['salable', 'default_uom_category']) depends=['salable', 'default_uom_category'])
purchasable = fields.Boolean('Purchasable') purchasable = fields.Boolean('Purchasable')
purchase_uom = fields.Many2One('product.uom', 'Purchase UOM', purchase_uom = fields.Many2One('product.uom', 'Purchase UOM',
states={ states={
'invisible':~Eval('purchasable'), 'invisible': ~Eval('purchasable'),
'required': Eval('purchasable', False), 'required': Eval('purchasable', False),
}, },
#~ domain=[('category', '=', Eval('default_uom_category'))], domain=[('category', '=', Eval('default_uom_category'))],
depends=['purchasable', 'default_uom_category']) depends=['purchasable', 'default_uom_category'])
@staticmethod @staticmethod
@ -92,6 +92,11 @@ class ProductOneClickView(ModelView):
self.sale_uom = template.sale_uom self.sale_uom = template.sale_uom
self.purchase_uom = template.purchase_uom self.purchase_uom = template.purchase_uom
@fields.depends('default_uom')
def on_change_with_default_uom_category(self):
if self.default_uom:
return self.default_uom.category.id
@classmethod @classmethod
def view_attributes(cls): def view_attributes(cls):
return super(ProductOneClickView, cls).view_attributes() + [ return super(ProductOneClickView, cls).view_attributes() + [

View file

@ -12,7 +12,10 @@ try:
except ImportError: except ImportError:
from ConfigParser import ConfigParser from ConfigParser import ConfigParser
MODULE2PREFIX = {} MODULE = 'product_oneclick'
PREFIX = 'trytonzz'
MODULE2PREFIX = {
}
def read(fname): def read(fname):
@ -20,6 +23,7 @@ def read(fname):
os.path.join(os.path.dirname(__file__), fname), os.path.join(os.path.dirname(__file__), fname),
'r', encoding='utf-8').read() 'r', encoding='utf-8').read()
def get_require_version(name): def get_require_version(name):
if minor_version % 2: if minor_version % 2:
require = '%s >= %s.%s.dev0, < %s.%s' require = '%s >= %s.%s.dev0, < %s.%s'
@ -39,8 +43,6 @@ version = info.get('version', '0.0.1')
major_version, minor_version, _ = version.split('.', 2) major_version, minor_version, _ = version.split('.', 2)
major_version = int(major_version) major_version = int(major_version)
minor_version = int(minor_version) minor_version = int(minor_version)
name = 'trytonzz_product_oneclick'
download_url = 'https://bitbucket.org/zikzakmedia/trytond-product_oneclick'
requires = [] requires = []
for dep in info.get('depends', []): for dep in info.get('depends', []):
@ -55,22 +57,22 @@ if minor_version % 2:
# Add development index for testing with proteus # Add development index for testing with proteus
dependency_links.append('https://trydevpi.tryton.org/') dependency_links.append('https://trydevpi.tryton.org/')
setup(name=name, setup(name='%s_%s' % (PREFIX, MODULE),
version=version, version=version,
description='Tryton Product Oneclick Module', description='Tryton Product Oneclick Module',
long_description=read('README'), long_description=read('README'),
author='Zikzakmedia SL', author='Zikzakmedia SL',
author_email='zikzak@zikzakmedia.com', author_email='zikzak@zikzakmedia.com',
url='https://bitbucket.org/zikzakmedia/', url='https://bitbucket.org/zikzakmedia/',
download_url=download_url, download_url='https://bitbucket.org/zikzakmedia/trytond-%s' % MODULE,
keywords='', keywords='',
package_dir={'trytond.modules.product_oneclick': '.'}, package_dir={'trytond.modules.%s' % MODULE: '.'},
packages=[ packages=[
'trytond.modules.product_oneclick', 'trytond.modules.%s' % MODULE,
'trytond.modules.product_oneclick.tests', 'trytond.modules.%s.tests' % MODULE,
], ],
package_data={ package_data={
'trytond.modules.product_oneclick': (info.get('xml', []) 'trytond.modules.%s' % MODULE: (info.get('xml', [])
+ ['tryton.cfg', 'view/*.xml', 'locale/*.po', '*.odt', + ['tryton.cfg', 'view/*.xml', 'locale/*.po', '*.odt',
'icons/*.svg', 'tests/*.rst']), 'icons/*.svg', 'tests/*.rst']),
}, },
@ -97,9 +99,9 @@ setup(name=name,
'Natural Language :: Spanish', 'Natural Language :: Spanish',
'Operating System :: OS Independent', 'Operating System :: OS Independent',
'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: Implementation :: CPython', 'Programming Language :: Python :: Implementation :: CPython',
'Programming Language :: Python :: Implementation :: PyPy', 'Programming Language :: Python :: Implementation :: PyPy',
'Topic :: Office/Business', 'Topic :: Office/Business',
@ -110,8 +112,8 @@ setup(name=name,
zip_safe=False, zip_safe=False,
entry_points=""" entry_points="""
[trytond.modules] [trytond.modules]
product_oneclick = trytond.modules.product_oneclick %s = trytond.modules.%s
""", """ % (MODULE, MODULE),
test_suite='tests', test_suite='tests',
test_loader='trytond.test_loader:Loader', test_loader='trytond.test_loader:Loader',
tests_require=tests_require, tests_require=tests_require,

View file

@ -1,7 +1,9 @@
# This file is part of product_oneclick module for Tryton. # This file is part of product_oneclick module for Tryton.
# The COPYRIGHT file at the top level of this repository contains # The COPYRIGHT file at the top level of this repository contains
# the full copyright notices and license terms. # the full copyright notices and license terms.
try:
from .test_product_oneclick import suite from trytond.modules.product_oneclick.tests.test_product_oneclick import suite
except ImportError:
from .test_product_oneclick import suite
__all__ = ['suite'] __all__ = ['suite']

View file

@ -1,12 +1,13 @@
[tox] [tox]
envlist = {py27,py33,py34,py35}-{sqlite,postgresql,mysql},pypy-{sqlite,postgresql} envlist = {py27,py34,py35,py36}-{sqlite,postgresql,mysql},pypy-{sqlite,postgresql}
[testenv] [testenv]
commands = {envpython} setup.py test commands = {envpython} setup.py test
deps = deps =
{py27,py33,py34,py35}-postgresql: psycopg2 >= 2.5 {py27,py34,py35,py36}-postgresql: psycopg2 >= 2.5
pypy-postgresql: psycopg2cffi >= 2.5 pypy-postgresql: psycopg2cffi >= 2.5
mysql: MySQL-python mysql: MySQL-python
sqlite: sqlitebck
setenv = setenv =
sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://} sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://}
postgresql: TRYTOND_DATABASE_URI={env:POSTGRESQL_URI:postgresql://} postgresql: TRYTOND_DATABASE_URI={env:POSTGRESQL_URI:postgresql://}
@ -14,4 +15,4 @@ setenv =
sqlite: DB_NAME={env:SQLITE_NAME::memory:} sqlite: DB_NAME={env:SQLITE_NAME::memory:}
postgresql: DB_NAME={env:POSTGRESQL_NAME:test} postgresql: DB_NAME={env:POSTGRESQL_NAME:test}
mysql: DB_NAME={env:MYSQL_NAME:test} mysql: DB_NAME={env:MYSQL_NAME:test}
install_command = pip install --pre --find-links https://trydevpi.tryton.org/ {opts} {packages} install_command = pip install --pre --find-links https://trydevpi.tryton.org/ --process-dependency-links {opts} {packages}

View file

@ -1,5 +1,5 @@
[tryton] [tryton]
version=4.1.0 version=4.7.0
depends: depends:
ir ir
res res

View file

@ -1,7 +1,7 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<!-- This file is part of product_oneclick module for Tryton. <!-- This file is part of product_oneclick module for Tryton.
The COPYRIGHT file at the top level of this repository contains the full copyright notices and license terms. --> The COPYRIGHT file at the top level of this repository contains the full copyright notices and license terms. -->
<form string="Create product" col="4"> <form col="4">
<label name="name"/> <label name="name"/>
<field name="name"/> <field name="name"/>
<label name="code"/> <label name="code"/>