Commit Graph
105 Commits
Author SHA1 Message Date
Olivier Dony 3db7956b4c [IMP] assets: switch to optimized rjsmin minification
The C implementation of the JS minification gives speedups between 6
and 55 times faster than the regex-based Python port, depending on
how compressed the input it (which is what our default implementation
does).

This is measurable when generating compiled assets bundle from scratch,
e.g. after installing/updating modules or source code.

As an illustration, the minification of a 2MB JS bundle can be 50x
faster:

```py
import rjsmin
from odoo.addons.base.models.assetsbundle import rjsmin as rjsm
js_source = open("web.assets_common_lazy.js").read() # 2MB JS
%timeit rjsm(js_source)
 # -> 339 ms ± 495 µs per loop (mean ± std. dev. of 7 runs, 1 loop each)
%timeit rjsmin.jsmin(js_source)
 # -> 6.88 ms ± 213 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
```

It's also a drop-in replacement, as long as you rjsmin 1.1.0 or better
is available (to support format strings properly, a.o.).

See also the documentation of rjsmin: http://opensource.perlig.de/rjsmin/

closes odoo/odoo#104283

Signed-off-by: Xavier Dollé (xdo) <xdo@odoo.com>
2023-06-05 16:16:57 +02:00
Julien Castiaux c59750d824 [IMP] core: smarter geoip
Maxmind offers multiple ip-geolocalization databases, historically we
have been using the City database which contains records on a
city-basis. Many years later it turns out we are primary using geoip to
know the country of the user. Geolocalization in the City database is
considered slow by our standard and we have been clever in order not to
geolocate each request by saving the info in the session.

On the other hand, the Country database that is offered by Maxmind is
much more lightweight and geoip using that country is considered a fast
operation by our standard.

In this work we make Odoo compatible with both the City and the Country
databases. Using multiple database at the same time, we can be smart and
only query each of the two on-demand. If a user ask for its country,
we'll use the fast Country db. If a user ask for its city/timezone we'll
use the slower City db.

By default it loads both database from the `/usr/share/GeoIP/` folder,
respectively the files `GeoLite2-City.mmdb` and `GeoLite2-Country.mmdb`,
you can provide alternative paths using the `--geoip-city-db` and
`--geoip-country-db` CLI options.

In the same mindset as #86015, geoip is still lazy. It is done on-demand
and the result is cached on the current request. The different with the
related PR is that as we know consider geoip to be fast, we no longer
cache the result in the session.

Task: 2848206
Part-of: odoo/odoo#91337
2023-01-03 13:16:02 +01:00
Thibault Delavallée 37db926fe8 [REF] various: remove usage and dependency on html2text library
We have our own html2plaintext, already used in lot of use cases instead of
just a few for the html2txt library.

Notably for emails: most emails going through Odoo stack use our simple
html2plaintext to format the body alternative. When no body alternative
is given to ``build_email`` an alternative is built using the library to
remove. Using our own parser allows to have the same results compared to
using ``MailMail.send()``. Difference lies in spaces and new lines as well
as markdown. Our html2plaintext is a bit simple and does not try to generate
Markdown but generates a simple plaintext version.

This also helps solving some issues with depending on that library.

Task-2702034

closes odoo/odoo#82486

X-original-commit: b3b9627b655cd7cb928925affed6cc8d92661e8d
Related: odoo/enterprise#23364
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2022-01-12 16:43:16 +00:00
Christophe Monniez 858505517a [FIX] packaging: add explicit depends on multilingual fonts
A bug[0] was detected in the Odoo Docker image 15.0 when trying to print
invoices with arabic fonts (and probably other languages that need
specific font) . It appears that the necessary fonts are not available
in the container image.

Strangely, the issue did not exists in previous Odoo Docker images.

It appears that `fonts-dejavu-core` package was installed incidentally
by `wkhtmltox`[1] which is installed from the official website.
Note that the Debian version of `wkhtmltopdf`[2] does not provide this
dependency.

In the 15.0 Docker image, while the `wkhtmltox` is installed the same
way, the `fonts-dejavu-core` package was not installed because the
dependency of `fontconfig-config`[3] was already fulfilled by the
`python3-renderpm`[4] from Debian Bullseye.

Finally, to add more confusion, the Odoo package have an indirect
dependency on `fonts-dejavu-core` through the `python3-pydot`[5] package.
This explains why the issue was not found before.

In order to avoid all this spaghetti dependency hell, this commit adds
an explicit dependency on one of the multilingual fonts available in the
Debian packages.

[0] https://github.com/odoo/docker/issues/400
[1] https://github.com/wkhtmltopdf/wkhtmltopdf/releases/0.12.5/
[2] https://packages.debian.org/bullseye/wkhtmltopdf
[3] https://packages.debian.org/bullseye/fontconfig-config
[4] https://packages.debian.org/bullseye/python3-renderpm
[5] https://packages.debian.org/bullseye/python3-pydot

closes odoo/odoo#81742

X-original-commit: 3d6043a7356b90e5a69a5b535ec6c651d0860711
Signed-off-by: Christophe Monniez (moc) <moc@odoo.com>
2021-12-22 08:47:41 +00:00
Christophe Monniez 01949f9419 [FIX] packaging: remove mako
Mako is not used anymore for a long time.

closes odoo/odoo#78781

X-original-commit: fb9f89afbc7a22e82309150617e8b5de5c995ff9
Signed-off-by: Christophe Monniez (moc) <moc@odoo.com>
2021-10-21 19:09:48 +00:00
Christophe Monniez f78b6d00af [FIX] packaging: add missing dependencies
A dependency on python pyopenssl package was added in #61853 and flew
under the radar. As this package is pure python, it should not cause any
arm.

Also, it seems that the gsfonts package is needed on Debian to print
things like barcode badges. Previously, the gsfonts package was a
dependency of python3-renderm package which is itself a dependency of
odoo. The gsfonts dependency was removed in the python3-renderpm Bullseye package.

With this commit the gsfonts dependency is set on the odoo Debian
package directly.

X-original-commit: 248762c80fbf3396d44ea9b55153dcd1d36d3490
Part-of: odoo/odoo#78097
2021-10-08 22:11:47 +00:00
Nils Hamerlinck 22faf86089 [REM] packaging: remove obsolete dependency feedparser
- Up to odoo 10.0, feedparser dependency was optionally used in the cli of vendored html2text.py
  (see https://github.com/odoo/odoo/blob/10.0/addons/mail/models/html2text.py#L437)
- Since 11.0 (67c17cb3), vendored html2text.py has been removed in favor of maintained package
- Turns out the feedparser part in html2text was dead code for a long time anyway
  (see https://github.com/Alir3z4/html2text/issues/220)
- So we can safely drop this dependency

closes odoo/odoo#76571

X-original-commit: 153ecbba47079982a2ec399f33bb246ba95550ba
Signed-off-by: Christophe Monniez (moc) <moc@odoo.com>
2021-09-15 14:05:04 +00:00
Christophe Monniez 3a27ef6cbc [FIX] packaging: add num2words debian depends
The num2words Debian package exists in Debian Buster [0] and Ubuntu
Focal [1].

[0]: https://packages.debian.org/buster/python3-num2words
[1]: https://packages.ubuntu.com/focal/python3-num2words

closes odoo/odoo#70666

X-original-commit: f882512fea32784944ecccdd921c96576869b2e6
Signed-off-by: Christophe Monniez (moc) <moc@odoo.com>
2021-05-11 11:19:11 +00:00
Christophe Monniez abdc518194 [FIX] packaging: add python3-renderpm in debian package
In Debian and Ubuntu distros, the python reportlab package provides
multiple binary packages among which python3-reportlab [0] [1] and
python3-renderpm [2] [3]. The latter is only recommended, but is mandatory for
odoo because it's needed for rendering barcode with the `asString` method.

[0] https://packages.debian.org/buster/python3-reportlab
[1] https://packages.ubuntu.com/focal/python3-reportlab
[2] https://packages.debian.org/buster/python3-renderpm
[3] https://packages.ubuntu.com/focal/python3-renderpm

closes odoo/odoo#67418

X-original-commit: 73e9926435f0b3c6eb4fe06457231aa60c8bb557
Signed-off-by: Xavier Dollé (xdo) <xdo@odoo.com>
Signed-off-by: Christophe Monniez (moc) <moc@odoo.com>
2021-03-06 11:54:06 +00:00
Christophe Monniez 766717d3fc [FIX] packaging: fix typo in control file
During the resolution of conflicts in odoo/odoo#66784, a typo was
introduced in debian/control file.

closes odoo/odoo#66916

X-original-commit: ccadcba6f0828aff43e94eb59ac97238eef7a4b3
Signed-off-by: Christophe Monniez (moc) <moc@odoo.com>
2021-02-26 11:43:08 +00:00
Christophe Monniez 62f9449dbb [FIX] packaging: add zeep and ofxparse in deb and rpm packaging
Zeep replaced suds but Debian and Rpm packaging were not updated.
Ofxparse is required but did not appear in Debian nor Rpm packaging.

closes odoo/odoo#66814

X-original-commit: 280df5ac282ad3f75b74dd3e6d172ee314693c99
Signed-off-by: Christophe Monniez (moc) <moc@odoo.com>
2021-02-25 11:00:46 +00:00
Christophe Monniez 2d4c38343e [FIX] packaging: update rpm packaging for fedora 32
As Fedora 32 was the current release when Odoo 14.0 was released, this
should be the supported version.

Also, a few  old libs were still in mentioned in the packaging files.
They flew under the radar because they never broke the packaging.
This is not the case anymore, those libs disappeared from the Fedora
repos.

It seems that pyparsing is not used anymore since 5a1c06a19 and thus can
be safely removed from `requirements.txt` too.

pychart is not used anymore since 3425752ea.

While at it, remove mix of tabs and spaces in package.dffedora, also add
missing packages to avoid installation at test time.

Now that I started down the slippery slope, also removed some `-dev`
packages in package.dfsrc as wheel's are available.

Finally, the rpm install script now detects the python ABI version in
order to avoid update this file at each ABI change in Fedora.

Fixes #63719

closes odoo/odoo#65288

X-original-commit: a8deb1dd433e3a1690d593e83ade6af46326a26b
Signed-off-by: Christophe Monniez (moc) <moc@odoo.com>
2021-01-29 16:11:43 +00:00
Sébastien Delafond 43fb019fe3 [FIX] packaging: update debian file for 14.0.0 release
X-original-commit: af29d603d721c4a6960096abad9b971f65c998b8
2020-10-14 11:24:12 +00:00
qdp-odoo 92a7f8c13f [IMP] base, tests: use freezegun lib to mock dates and datetimes
closes odoo/odoo#54227

Related: odoo/enterprise#11742
Signed-off-by: Olivier Dony (odo) <odo@openerp.com>
2020-07-10 08:20:13 +00:00
Adrian Torres 5952928b42 [REM] *: remove various unused import shims
Before this commit, a lot of leftover import shims existed in the
codebase for py2-py3 compatibility, these are no longer needed since
Odoo 13.0+ doesn't support Python 2 anymore and is (finally) in EOL.

With this commit, these shims are dropped, making the code cleaner,
easier to read and with one less dependency.

Queue -> queue -> py2-py3 compatibility
xmlrpclib -> xmlrpc.client -> py2-py3 compatibility
ConfigParser -> configparser -> py2-py3 compatibility
itertools.izip_longest -> itertools.zip_longest -> py2-py3 compatibility
urllib -> urllib.request -> py2-py3 compatibility
__builtins__ -> builtins -> py2-py3 compatibility
_winreg -> winreg -> py2-py3 compatibility

mock -> unittest.mock -> merged into CPython

The debian/fedora packages and requirements.txt have been updated accordingly

closes odoo/odoo#44601

Related: odoo/enterprise#8141
Signed-off-by: Xavier Morel (xmo) <xmo@odoo.com>
2020-04-01 12:45:40 +00:00
Hardik Prajapati a43f857423 [IMP] base_vat: replace vatnumver by stdnum library.
Python module vatnumber doesn't seem maintained anymore. Therefore, we should:
    - call directly stdnum (which is maintained and mostly used everywhere in vatnumber)

Also improve stdnum import, vat fix method and vat expected formats

task-1915371

closes odoo/odoo#36978

Signed-off-by: Quentin De Paoli (qdp) <qdp@openerp.com>
2020-02-05 10:39:39 +00:00
Martin Trigaux 9aef423d4d [FIX] auth_ldap: replace the deprecated library by one up to date
At 795c7b0a94 the external dependencies was changed from trying
to import 'ldap' to checking than 'pyldap' package was installed.
The problem is that pyldap is a unmaintained library that should no
longer be used, as explained on the package page:
https://pypi.org/project/pyldap/
"The pyldap fork was merged back into python-ldap, and released as
 python-ldap 3.0.0."

Having pyldap version >= 3.0 installs python-ldap automatically and
will not cause any issue.

The Debian control file package name is adapted to use the latest.

The "ldap" externalm dependency defined in __manifest__.py will cause
pkg_resources.get_distribution() to fail in both case ("python-lap" or
"pyldap"), but the "import" fallback will succeed. For that reason, the
log warning is turned into a log info.

closes odoo/odoo#43769

Note: This library should be replaced by the pure python "ldap3" library.
X-original-commit: 1afd0ccf20881ba97e3c07dffb33e9a3a0b2cda4
Signed-off-by: Christophe Monniez (moc) <moc@odoo.com>
2020-01-22 14:09:46 +00:00
Christophe Monniez ec48a8341d [FIX] packaging: include python3-xlrd in debian package
As the python3-xlrd package is available in Debian stretch and Ubuntu
bionic, there is no reason to not include it in Odoo debian package.

However, it cannot be used in Odoo 11.0 package as it does not exists in
Ubuntu Xenial.

ubuntu package:
https://packages.ubuntu.com/bionic/python3-xlrd

debian package:
https://packages.debian.org/stretch/python3-xlrd

closes odoo/docker#276

closes odoo/odoo#38746

X-original-commit: acf413df14f3206b9c852db98247631f297b7c9c
Signed-off-by: Christophe Monniez (moc) <moc@odoo.com>
2019-10-14 17:58:31 +00:00
Martin Trigaux 632fa044c3 [IMP] tools: remove custom pofile reader
Use polib library that handles this correctly
The complexity of the parser is moved to the library
2019-06-05 09:44:11 +00:00
Christophe Monniez 2ff49c5fcb [FIX] packaging: make Debian package depends on qrcode and vobject
As stated in issue #27752, some Debian packages are only recommended.
As a consequence, these packages are not installed on the Official
Docker image. In that case, if the user wants to install an Odoo module
that needs one of these package, the Docker container has to be
modified.

python3-qrcode and python3-vobject are now part of the latest Debian
stable (stretch) and the latest Ubuntu LTS (Bionic Beaver).
Also, they are pure python, and very small.

Thus, the Debian package can depends on them.

co-author: @sbidoul
Fixes #27752
Closes #28588
Closes #28371
Closes #28372
2018-11-13 09:00:30 +00:00
Adrian Torres a277bfb44a [REM] packaging: drop PyYAML dependency
Commit cf853a785b removed all yml tests
and the yml import engine from Odoo forever, however PyYAML remains a
dependency even though it's not used anymore.

This commit removes any reference to this lib that could be found.

closes odoo/odoo#27563
2018-10-09 12:56:03 +00:00
Christophe Monniez ae87467d8c [FIX] packaging: make debian package depends on python3-chardet
Since b60de0db41 Odoo requires chardet to
be installed.

With this commit, the Debian package will depends on python3-chardet.
2018-07-18 09:30:14 +02:00
Christophe Monniez ddf601d443 [FIX] packaging: remove libsass dependency in debian package
A dependency to libsass was added in debian package and in the docker
file. The Odoo nightly builds of the deb package was failing because
this lib is named libsass0 in Debian.

Finally, this dependency is not required because python3-libsass already depends on libsass0.
2018-04-24 13:51:13 +02:00
qsm-odoo bf3193ac5e [REF] setup: review dependencies
Include libsass instead of node-less

Thank you to @d-fence for testing this.
2018-04-18 15:58:34 +02:00
Christophe Monniez 347acbb4c2 [IMP] packaging: remove some packages dependencies
On Ubuntu Xenian, the Odoo package was difficult to install because
three Debian packages were required but could not be found in Ubuntu
repositories. As those packages are not really crucial, they are
now only suggegsted by the Debian package which is therefore
installable on Ubuntu Xenial. One can manually install them as
explained in the documentation.

Closes #20000
2017-10-12 08:51:17 +02:00
Christophe Monniez fc76b1d565 [REM] remove any openid reference
Purpose: openid is not used anymore in Odoo, therefore it can be
safely removed.
2017-10-12 08:43:21 +02:00
Christophe Monniez 25cae52b4f [IMP] debian: build package for python 3.5
* Add a minimum systemd service file
2017-10-03 12:01:52 +02:00
Olivier Dony 345f1d4b86 [FIX] packaging: update dependency for pyPdf2
Complements 021de21e8c and #16918
2017-05-26 15:45:39 +02:00
Christophe Simonis 3bb022d57c [MERGE] forward port branch saas-12 up to 6f8e40c 2016-10-27 18:17:59 +02:00
Christophe Simonis 1304d13c7f [MERGE] forward port branch 9.0 up to 25616b9 2016-10-27 17:35:49 +02:00
Christophe Simonis 477e69d850 [MERGE] forward port branch saas-6 up to 3c3ce75 2016-10-27 14:42:57 +02:00
Christophe Simonis 3c3ce750f7 [MERGE] forward port branch 8.0 up to 5ee4344 2016-10-27 14:11:46 +02:00
Simon Lejeune 097f46e09a [REF] packaging: debian: depend on python-babel
Before this patch, the debian package depends on `python-pybabel`.
According to the documentation, this is a dummy package for transition
from `python-pybabel` to `python-babel`[1].

This dummy package has thus been removed in debian stretch in favor of
`python-babel`, and the odoo package is thus not installable in debian
stretch.

To fix this, we depend directly on `python-babel`, which is available in
all debian releases[2].

Closes #13905

[1] https://packages.debian.org/jessie/python-pybabel
[2] https://packages.debian.org/jessie/python-babel
2016-10-24 16:22:17 +02:00
Simon Lejeune bc04ec942f [REF] packaging: debian: remove unneeded recommanded dependencies
They were there since long time but to allow some obscure test
to run. As they don't bring anything let's just drop them.
2016-09-30 12:05:48 +02:00
Christophe Simonis f9072c789d [MERGE] forward port of branch 9.0 up to bfbe2d6
# Conflicts:
#	addons/marketing/i18n/es_PE.po
#	addons/marketing/i18n/hu.po
2016-06-14 19:27:16 +02:00
Simon Lejeune 123e51f4d5 [REF] ir_qweb: less webasset: compress output instead of minifying it
* Remove dependency on less-plugin-clean-css which distribution
  packages are broken on debian stretch and derivated.
* Updated documentation.
* Lessc provides a `--compress` argument that could solve this issue.
  According to the documentation at http://lesscss.org/usage/: "[...]
  Compress using less built-in compression. This does an okay job but
  does not utilise all the tricks of dedicated css compression[...]"
  However, using this argument works on lessc 2.5.3 but not on 1.4.2
  (`--compress` arg is present but seems to be break some rules
  i haven't been able to put my finger on).
* Finally, use the minification of the StylesheetAsset that takes care
  of removing the spaces, the comments and the sourcemap with regexes.

fixes issue #9113
2016-06-10 17:22:03 +02:00
Simon Lejeune dc41163e77 [FIX] packaging: debian: missing comma in control file
introduced by rev c1ff5d894c
2015-12-01 15:24:42 +01:00
Simon Lejeune c1ff5d894c [REF] packaging: depends on XlsxWriter 2015-11-26 14:37:33 +01:00
Simon Lejeune 038949f395 [REF] packaging: debian: don't require ofxparse
because it's available in debian stable but not in ubuntu 14.04 (lts)
2015-11-10 14:43:41 +01:00
Leonardo Rochael Almeida 60af7cac02 [IMP] replace simplejson with stdlib json
The stdlib version of the json library is more recent than the 3.5.3
version we are pinning in `requirements.txt`

There is no reason to use it.

Closes #6940
2015-09-28 10:53:32 +02:00
Leonardo Rochael Almeida 06b3026bcd [IMP] unittest2 > unittest
The `unittest2` package is simply a backport of `unittest` from the
Standard Library of Python 2.7 to previous versions.

There is no reason to use it any longer.

Closes #6941
2015-09-28 10:37:27 +02:00
Simon Lejeune b2f573d95c [FIX] packaging: debian: depends on node-less & node-clean-css 2015-09-11 18:10:55 +02:00
Olivier Dony a3732aef6e [LEGAL] Switch to LGPLv3 License
99% of the contributors have signed the CLA
The rest of them have been contacted by email
and are free to either sign the CLA or ask
for their contributions to be removed from
Odoo Community Edition.

See also:
- https://www.odoo.com/cla
- https://www.odoo.com/blog/odoo-news-5/post/adapting-our-open-source-license-245
2015-09-08 17:58:38 +02:00
Simon Lejeune 9f3b26c1ca [REF] packaging: ofxparse as "hard" dependency 2015-07-31 14:11:16 +02:00
Richard Mathot 6dfbca2ba0 [ADD] Activate 'suds' library for Python
This library is a SOAP client. It will be used to integrate Odoo with
external web services that use SOAP based protocols.
2015-07-14 16:04:31 +02:00
Aaron Bohy b3aca1d825 [FIX] Packaging: Debian: lintian errors and warnings
- control:
	- duplicated Section entry removed
	- X-Python-Version added
	- Uploaders added
- init:
	- set odoo.py as deamon instead of openerp-server
	- source /lib/lsb/init-functions to fix Debian lintian warning
	  init.d-script-does-not-source-init-functions
- copyright: machine-readable (dep5) copyright
2015-01-23 11:07:50 +01:00
Aaron Bohy a8a8beb294 [IMP] Packaging: debian: package maintainer/descriptions updated
Mainly renaming of OpenERP into Odoo
2015-01-05 12:15:05 +01:00
Simon Lejeune d9e72a3716 [FIX] Package: Debian, Windows: more odooification; Debian: correct Packages.gz 2014-09-18 00:17:32 +02:00
Simon Lejeune f668f9c6cd [FIX] Debian: updated informations and dependencies, refactored debhelpers scripts to allow easy name change, simplified debhelper rules 2014-09-02 14:13:01 +02:00
Saverio Trioni 6ddb3f77da Added required python-pypdf package
It's needed because fc8592adf2 is now loading the `pyPdf` package.
2014-07-02 18:10:48 +02:00