Commit fb001fd5 authored by Luca Cristaldi's avatar Luca Cristaldi

First Commit,

Please ignore
parents
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}"
volumes:
- cache:/root/.cache
services:
postgresql:
image: postgres
when:
matrix:
DATABASE: postgresql
matrix:
include:
- 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
- IMAGE: python:3.7
TOXENV: py37
DATABASE: sqlite
- IMAGE: python:3.7
TOXENV: py37
DATABASE: postgresql
Copyright (C) 2018 Luca Cristaldi
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Installing mittelab_party_italy
===============================
Prerequisites
-------------
* Python 3.4 or later (http://www.python.org/)
* trytond (http://www.tryton.org/)
Installation
------------
Once you've downloaded and unpacked the mittelab_party_italy source
release, enter the directory where the archive was unpacked, and run:
python setup.py install
Note that you may need administrator/root privileges for this step, as
this command will by default attempt to install module to the Python
site-packages directory on your system.
For advanced options, please refer to the easy_install and/or the distutils
documentation:
http://setuptools.readthedocs.io/en/latest/easy_install.html
http://docs.python.org/inst/inst.html
To use without installation, extract the archive into ``trytond/modules`` with
the directory name party_italy.
This diff is collapsed.
include INSTALL
include README
include COPYRIGHT
include CHANGELOG
include LICENSE
include doc/*
from trytond.model import ModelView, fields
from stdnum.it import codicefiscale, iva
class Party(metaclass=PoolMeta, ModelView):
"Party"
__name__ = "party.party"
class PartyIdentifier(metaclass=PoolMeta):
__name__ = 'party.identifier'
@classmethod
def __setup__(cls):
super(PartyIdentifier, cls).__setup__()
cls.type.selection.append(('it_fiscal', 'Italian Fiscal code'))
cls.type.selection.append(('it_iva', 'Italian Fiscal code'))
cls._error_messages.update({
'unique_fiscal': ('Party "%(party)s" has more than one '
'Fiscal Code'),
'unique_iva': ('Party "%(party)s" has more than one '
'P.IVA'),
'fiscal_invalid': ('The Fiscal Code identifier "%(code)s" on party '
'"%(party)s" is not valid.'),
'iva_invalid': ('The P.IVA identifier "%(code)s" on party '
'"%(party)s" is not valid.'),
})
def check_code(self):
super(PartyIdentifier, self).check_code()
if self.type == 'it_fiscal':
for identifier in self.party.identifiers:
if identifier.type == 'it_fiscal' and self != identifier:
self.raise_user_error('unique_fiscal', {
'fiscal_invalid': self.code,
'party': self.party.rec_name,
})
if not codicefiscale.is_valid(self.code):
# Called from pre_validate so party may not be saved yet
if self.party and self.party.id > 0:
party = self.party.rec_name
else:
party = ''
self.raise_user_error('fiscal_invalid', {
'code': self.code,
'party': party,
})
if self.type == 'it_iva':
for identifier in self.party.identifiers:
if identifier.type == 'it_iva' and self != identifier:
self.raise_user_error('unique_iva', {
'iva_invalid': self.code,
'party': self.party.rec_name,
})
if not iva.is_valid(self.code):
# Called from pre_validate so party may not be saved yet
if self.party and self.party.id > 0:
party = self.party.rec_name
else:
party = ''
self.raise_user_error('iva_invalid', {
'code': self.code,
'party': party,
})
@fields.depends('type', 'code')
def on_change_with_code(self):
code = super(PartyIdentifier, self).on_change_with_code()
if self.type == 'it_fiscal':
try:
return codicefiscale.compact(self.code)
except stdnum.exceptions.ValidationError:
pass
if self.type == 'it_iva':
try:
return iva.compact(self.code)
except stdnum.exceptions.ValidationError:
pass
return code
\ No newline at end of file
mittelab_party_italy
====================
The party_italy module of the Tryton application platform.
Installing
----------
See INSTALL
License
-------
See LICENSE
Copyright
---------
See COPYRIGHT
from trytond.pool import Pool
__all__ = ['register']
def register():
Pool.register(
module='party_italy', type_='model')
Pool.register(
module='party_italy', type_='wizard')
Pool.register(
module='party_italy', type_='report')
Party Italy Module
##################
#!/usr/bin/env python3
import io
import os
import re
from configparser import ConfigParser
from setuptools import setup, find_packages
MODULE2PREFIX = {}
def read(fname):
return io.open(
os.path.join(os.path.dirname(__file__), fname),
'r', encoding='utf-8').read()
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()
version = info.get('version', '0.0.1')
major_version, minor_version, _ = version.split('.', 2)
major_version = int(major_version)
minor_version = int(minor_version)
name = 'mittelab_party_italy'
requires = []
for dep in info.get('depends', []):
if not re.match(r'(ir|res)(\W|$)', dep):
prefix = MODULE2PREFIX.get(dep, 'trytond')
requires.append(get_require_version('%s_%s' % (prefix, dep)))
requires.append(get_require_version('trytond'))
tests_require = []
dependency_links = []
if minor_version % 2:
dependency_links.append('https://trydevpi.tryton.org/')
setup(name=name,
version=version,
description='Add support for italian P.IVA and C.F.',
long_description=read('README'),
author='wifasoi',
author_email='wifasoi@gmail.com',
url='www.mittelab.org',
keywords='',
package_dir={'trytond.modules.party_italy': '.'},
packages=(
['trytond.modules.party_italy'] +
['trytond.modules.party_italy.%s' % p for p in find_packages()]
),
package_data={
'trytond.modules.party_italy': (info.get('xml', [])
+ ['tryton.cfg', 'view/*.xml', 'locale/*.po', '*.fodt',
'icons/*.svg', 'tests/*.rst']),
},
classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: Plugins',
'Framework :: Tryton',
'Intended Audience :: Developers',
'Intended Audience :: Financial and Insurance Industry',
'Intended Audience :: Legal Industry',
'License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)',
'Natural Language :: Bulgarian',
'Natural Language :: Catalan',
'Natural Language :: Chinese (Simplified)',
'Natural Language :: Czech',
'Natural Language :: Dutch',
'Natural Language :: English',
'Natural Language :: French',
'Natural Language :: German',
'Natural Language :: Hungarian',
'Natural Language :: Italian',
'Natural Language :: Persian',
'Natural Language :: Polish',
'Natural Language :: Portuguese (Brazilian)',
'Natural Language :: Russian',
'Natural Language :: Slovenian',
'Natural Language :: Spanish',
'Operating System :: OS Independent',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: Implementation :: CPython',
'Programming Language :: Python :: Implementation :: PyPy',
'Topic :: Office/Business',
],
license='GPL-3',
python_requires='>=3.4',
install_requires=requires,
dependency_links=dependency_links,
zip_safe=False,
entry_points="""
[trytond.modules]
party_italy = trytond.modules.party_italy
""",
test_suite='tests',
test_loader='trytond.test_loader:Loader',
tests_require=tests_require,
)
try:
from trytond.modules.party_italy.tests.test_party_italy import suite
except ImportError:
from .test_party_italy import suite
__all__ = ['suite']
import unittest
from trytond.tests.test_tryton import ModuleTestCase
from trytond.tests.test_tryton import suite as test_suite
class PartyItalyTestCase(ModuleTestCase):
'Test Party Italy module'
module = 'party_italy'
def suite():
suite = test_suite()
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(
PartyItalyTestCase))
return suite
[tox]
envlist = {py34,py35,py36,py37}-{sqlite,postgresql},pypy3-{sqlite,postgresql}
[testenv]
commands = {envpython} setup.py test
deps =
{py34,py35,py36,py37}-postgresql: psycopg2 >= 2.5
pypy3-postgresql: psycopg2cffi >= 2.5
sqlite: sqlitebck
setenv =
sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://}
postgresql: TRYTOND_DATABASE_URI={env:POSTGRESQL_URI:postgresql://}
sqlite: DB_NAME={env:SQLITE_NAME::memory:}
postgresql: DB_NAME={env:POSTGRESQL_NAME:test}
install_command = pip install --pre --process-dependency-links {opts} {packages}
[tryton]
version=0.1
depends:
ir
party
xml:
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment