-
165muk_fields_lobject/LICENSE
-
134muk_fields_lobject/README.rst
-
27muk_fields_lobject/__init__.py
-
38muk_fields_lobject/__manifest__.py
-
22muk_fields_lobject/doc/changelog.rst
-
134muk_fields_lobject/doc/index.rst
-
23muk_fields_lobject/fields/__init__.py
-
95muk_fields_lobject/fields/lobject.py
-
116muk_fields_lobject/i18n/ar.po
-
116muk_fields_lobject/i18n/de.po
-
116muk_fields_lobject/i18n/es.po
-
116muk_fields_lobject/i18n/fr.po
-
116muk_fields_lobject/i18n/hi.po
-
116muk_fields_lobject/i18n/muk_fields_lobject.pot
-
116muk_fields_lobject/i18n/nl.po
-
116muk_fields_lobject/i18n/pt.po
-
116muk_fields_lobject/i18n/ru.po
-
23muk_fields_lobject/models/__init__.py
-
46muk_fields_lobject/models/base.py
-
41muk_fields_lobject/models/ir_http.py
-
30muk_fields_lobject/models/ir_model_fields.py
-
23muk_fields_lobject/patch/__init__.py
-
26muk_fields_lobject/patch/fields.py
-
BINmuk_fields_lobject/static/description/banner.png
-
BINmuk_fields_lobject/static/description/icon.png
-
1muk_fields_lobject/static/description/icon.svg
-
227muk_fields_lobject/static/description/index.html
-
BINmuk_fields_lobject/static/description/logo.png
-
BINmuk_fields_lobject/static/description/preview.png
-
BINmuk_fields_lobject/static/description/service_customization.png
-
BINmuk_fields_lobject/static/description/service_development.png
-
BINmuk_fields_lobject/static/description/service_implementation.png
-
BINmuk_fields_lobject/static/description/service_integration.png
-
BINmuk_fields_lobject/static/description/service_support.png
-
23muk_fields_lobject/tests/__init__.py
-
41muk_fields_lobject/tests/test_lobject.py
@ -0,0 +1,165 @@ |
|||
GNU LESSER GENERAL PUBLIC LICENSE |
|||
Version 3, 29 June 2007 |
|||
|
|||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> |
|||
Everyone is permitted to copy and distribute verbatim copies |
|||
of this license document, but changing it is not allowed. |
|||
|
|||
|
|||
This version of the GNU Lesser General Public License incorporates |
|||
the terms and conditions of version 3 of the GNU General Public |
|||
License, supplemented by the additional permissions listed below. |
|||
|
|||
0. Additional Definitions. |
|||
|
|||
As used herein, "this License" refers to version 3 of the GNU Lesser |
|||
General Public License, and the "GNU GPL" refers to version 3 of the GNU |
|||
General Public License. |
|||
|
|||
"The Library" refers to a covered work governed by this License, |
|||
other than an Application or a Combined Work as defined below. |
|||
|
|||
An "Application" is any work that makes use of an interface provided |
|||
by the Library, but which is not otherwise based on the Library. |
|||
Defining a subclass of a class defined by the Library is deemed a mode |
|||
of using an interface provided by the Library. |
|||
|
|||
A "Combined Work" is a work produced by combining or linking an |
|||
Application with the Library. The particular version of the Library |
|||
with which the Combined Work was made is also called the "Linked |
|||
Version". |
|||
|
|||
The "Minimal Corresponding Source" for a Combined Work means the |
|||
Corresponding Source for the Combined Work, excluding any source code |
|||
for portions of the Combined Work that, considered in isolation, are |
|||
based on the Application, and not on the Linked Version. |
|||
|
|||
The "Corresponding Application Code" for a Combined Work means the |
|||
object code and/or source code for the Application, including any data |
|||
and utility programs needed for reproducing the Combined Work from the |
|||
Application, but excluding the System Libraries of the Combined Work. |
|||
|
|||
1. Exception to Section 3 of the GNU GPL. |
|||
|
|||
You may convey a covered work under sections 3 and 4 of this License |
|||
without being bound by section 3 of the GNU GPL. |
|||
|
|||
2. Conveying Modified Versions. |
|||
|
|||
If you modify a copy of the Library, and, in your modifications, a |
|||
facility refers to a function or data to be supplied by an Application |
|||
that uses the facility (other than as an argument passed when the |
|||
facility is invoked), then you may convey a copy of the modified |
|||
version: |
|||
|
|||
a) under this License, provided that you make a good faith effort to |
|||
ensure that, in the event an Application does not supply the |
|||
function or data, the facility still operates, and performs |
|||
whatever part of its purpose remains meaningful, or |
|||
|
|||
b) under the GNU GPL, with none of the additional permissions of |
|||
this License applicable to that copy. |
|||
|
|||
3. Object Code Incorporating Material from Library Header Files. |
|||
|
|||
The object code form of an Application may incorporate material from |
|||
a header file that is part of the Library. You may convey such object |
|||
code under terms of your choice, provided that, if the incorporated |
|||
material is not limited to numerical parameters, data structure |
|||
layouts and accessors, or small macros, inline functions and templates |
|||
(ten or fewer lines in length), you do both of the following: |
|||
|
|||
a) Give prominent notice with each copy of the object code that the |
|||
Library is used in it and that the Library and its use are |
|||
covered by this License. |
|||
|
|||
b) Accompany the object code with a copy of the GNU GPL and this license |
|||
document. |
|||
|
|||
4. Combined Works. |
|||
|
|||
You may convey a Combined Work under terms of your choice that, |
|||
taken together, effectively do not restrict modification of the |
|||
portions of the Library contained in the Combined Work and reverse |
|||
engineering for debugging such modifications, if you also do each of |
|||
the following: |
|||
|
|||
a) Give prominent notice with each copy of the Combined Work that |
|||
the Library is used in it and that the Library and its use are |
|||
covered by this License. |
|||
|
|||
b) Accompany the Combined Work with a copy of the GNU GPL and this license |
|||
document. |
|||
|
|||
c) For a Combined Work that displays copyright notices during |
|||
execution, include the copyright notice for the Library among |
|||
these notices, as well as a reference directing the user to the |
|||
copies of the GNU GPL and this license document. |
|||
|
|||
d) Do one of the following: |
|||
|
|||
0) Convey the Minimal Corresponding Source under the terms of this |
|||
License, and the Corresponding Application Code in a form |
|||
suitable for, and under terms that permit, the user to |
|||
recombine or relink the Application with a modified version of |
|||
the Linked Version to produce a modified Combined Work, in the |
|||
manner specified by section 6 of the GNU GPL for conveying |
|||
Corresponding Source. |
|||
|
|||
1) Use a suitable shared library mechanism for linking with the |
|||
Library. A suitable mechanism is one that (a) uses at run time |
|||
a copy of the Library already present on the user's computer |
|||
system, and (b) will operate properly with a modified version |
|||
of the Library that is interface-compatible with the Linked |
|||
Version. |
|||
|
|||
e) Provide Installation Information, but only if you would otherwise |
|||
be required to provide such information under section 6 of the |
|||
GNU GPL, and only to the extent that such information is |
|||
necessary to install and execute a modified version of the |
|||
Combined Work produced by recombining or relinking the |
|||
Application with a modified version of the Linked Version. (If |
|||
you use option 4d0, the Installation Information must accompany |
|||
the Minimal Corresponding Source and Corresponding Application |
|||
Code. If you use option 4d1, you must provide the Installation |
|||
Information in the manner specified by section 6 of the GNU GPL |
|||
for conveying Corresponding Source.) |
|||
|
|||
5. Combined Libraries. |
|||
|
|||
You may place library facilities that are a work based on the |
|||
Library side by side in a single library together with other library |
|||
facilities that are not Applications and are not covered by this |
|||
License, and convey such a combined library under terms of your |
|||
choice, if you do both of the following: |
|||
|
|||
a) Accompany the combined library with a copy of the same work based |
|||
on the Library, uncombined with any other library facilities, |
|||
conveyed under the terms of this License. |
|||
|
|||
b) Give prominent notice with the combined library that part of it |
|||
is a work based on the Library, and explaining where to find the |
|||
accompanying uncombined form of the same work. |
|||
|
|||
6. Revised Versions of the GNU Lesser General Public License. |
|||
|
|||
The Free Software Foundation may publish revised and/or new versions |
|||
of the GNU Lesser General Public License from time to time. Such new |
|||
versions will be similar in spirit to the present version, but may |
|||
differ in detail to address new problems or concerns. |
|||
|
|||
Each version is given a distinguishing version number. If the |
|||
Library as you received it specifies that a certain numbered version |
|||
of the GNU Lesser General Public License "or any later version" |
|||
applies to it, you have the option of following the terms and |
|||
conditions either of that published version or of any later version |
|||
published by the Free Software Foundation. If the Library as you |
|||
received it does not specify a version number of the GNU Lesser |
|||
General Public License, you may choose any version of the GNU Lesser |
|||
General Public License ever published by the Free Software Foundation. |
|||
|
|||
If the Library as you received it specifies that a proxy can decide |
|||
whether future versions of the GNU Lesser General Public License shall |
|||
apply, that proxy's public statement of acceptance of any version is |
|||
permanent authorization for you to choose that version for the |
|||
Library. |
@ -0,0 +1,134 @@ |
|||
======================= |
|||
MuK Large Objects Field |
|||
======================= |
|||
|
|||
PostgreSQL offers support for large objects, which provide stream-style access |
|||
to user data that is stored in a special large-object structure. They are useful |
|||
with data values too large to be manipulated conveniently as a whole. |
|||
|
|||
Psycopg allows access to the large object using the `lobject` class. Objects are |
|||
generated using the `connection.lobject()` factory method. Data can be retrieved |
|||
either as bytes or as Unicode strings. |
|||
|
|||
Psycopg large object support efficient import/export with file system files using |
|||
the `lo_import()` and `lo_export()` libpq functions. |
|||
|
|||
Changed in version 2.6: added support for large objects greated than 2GB. Note |
|||
that the support is enabled only if all the following conditions are verified: |
|||
|
|||
* the Python build is 64 bits; |
|||
* the extension was built against at least libpq 9.3; |
|||
* the server version is at least PostgreSQL 9.3 (server_version must be >= 90300). |
|||
|
|||
If Psycopg was built with 64 bits large objects support (i.e. the first two |
|||
contidions above are verified), the `psycopg2.__version__` constant will contain |
|||
the lo64 flag. If any of the contition is not met several lobject methods will |
|||
fail if the arguments exceed 2GB. |
|||
|
|||
Installation |
|||
============ |
|||
|
|||
To install this module, you need to: |
|||
|
|||
Download the module and add it to your Odoo addons folder. Afterward, log on to |
|||
your Odoo server and go to the Apps menu. Trigger the debug mode and update the |
|||
list by clicking on the "Update Apps List" link. Now install the module by |
|||
clicking on the install button. |
|||
|
|||
Another way to install this module is via the package management for Python |
|||
(`PyPI <https://pypi.org/project/pip/>`_). |
|||
|
|||
To install our modules using the package manager make sure |
|||
`odoo-autodiscover <https://pypi.org/project/odoo-autodiscover/>`_ is installed |
|||
correctly. Note that for Odoo version 11.0 and later this is not necessary anymore. |
|||
Then open a console and install the module by entering the following command: |
|||
|
|||
``pip install --extra-index-url https://nexus.mukit.at/repository/odoo/simple <module>`` |
|||
|
|||
The module name consists of the Odoo version and the module name, where |
|||
underscores are replaced by a dash. |
|||
|
|||
**Module:** |
|||
|
|||
``odoo<version>-addon-<module_name>`` |
|||
|
|||
**Example:** |
|||
|
|||
``sudo -H pip3 install --extra-index-url https://nexus.mukit.at/repository/odoo/simple odoo13-addon-muk-utils`` |
|||
|
|||
Once the installation has been successfully completed, the app is already in the |
|||
correct folder. Log on to your Odoo server and go to the Apps menu. Trigger the |
|||
debug mode and update the list by clicking on the "Update Apps List" link. Now |
|||
install the module by clicking on the install button. |
|||
|
|||
The biggest advantage of this variant is that you can now also update the app |
|||
using the "pip" command. To do this, enter the following command in your console: |
|||
|
|||
``pip install --upgrade --extra-index-url https://nexus.mukit.at/repository/odoo/simple <module>`` |
|||
|
|||
When the process is finished, restart your server and update the application in |
|||
Odoo. The steps are the same as for the installation only the button has changed |
|||
from "Install" to "Upgrade". |
|||
|
|||
You can also view available Apps directly in our `repository <https://nexus.mukit.at/#browse/browse:odoo>`_ |
|||
and find a more detailed installation guide on our `website <https://mukit.at/page/open-source>`_. |
|||
|
|||
For modules licensed under a proprietary license, you will receive the access data after you purchased |
|||
the module. If the purchase were made at the Odoo store please contact our `support <support@mukit.at>`_ |
|||
with a confirmation of the purchase to receive the corresponding access data. |
|||
|
|||
Upgrade |
|||
============ |
|||
|
|||
To upgrade this module, you need to: |
|||
|
|||
Download the module and add it to your Odoo addons folder. Restart the server |
|||
and log on to your Odoo server. Select the Apps menu and upgrade the module by |
|||
clicking on the upgrade button. |
|||
|
|||
If you installed the module using the "pip" command, you can also update the |
|||
module in the same way. Just type the following command into the console: |
|||
|
|||
``pip install --upgrade --extra-index-url https://nexus.mukit.at/repository/odoo/simple <module>`` |
|||
|
|||
When the process is finished, restart your server and update the application in |
|||
Odoo, just like you would normally. |
|||
|
|||
|
|||
Configuration |
|||
============= |
|||
|
|||
No additional configuration is needed to use this module. |
|||
|
|||
Usage |
|||
===== |
|||
|
|||
This module has no direct visible effect on the system. It adds a new field type, |
|||
which can be used in other modules. |
|||
|
|||
Credit |
|||
====== |
|||
|
|||
Contributors |
|||
------------ |
|||
|
|||
* Mathias Markl <mathias.markl@mukit.at> |
|||
|
|||
Images |
|||
------ |
|||
|
|||
Some pictures are based on or inspired by the icon set of Font Awesome: |
|||
|
|||
* `Font Awesome <https://fontawesome.com>`_ |
|||
|
|||
Author & Maintainer |
|||
------------------- |
|||
|
|||
This module is maintained by the `MuK IT GmbH <https://www.mukit.at/>`_. |
|||
|
|||
MuK IT is an Austrian company specialized in customizing and extending Odoo. |
|||
We develop custom solutions for your individual needs to help you focus on |
|||
your strength and expertise to grow your business. |
|||
|
|||
If you want to get in touch please contact us via `mail <sale@mukit.at>`_ |
|||
or visit our `website <https://mukit.at>`_. |
@ -0,0 +1,27 @@ |
|||
################################################################################### |
|||
# |
|||
# Copyright (c) 2017-2019 MuK IT GmbH. |
|||
# |
|||
# This file is part of MuK Large Objects Field |
|||
# (see https://mukit.at). |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU Lesser 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 Lesser General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Lesser General Public License |
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
################################################################################### |
|||
|
|||
from . import fields, models |
|||
|
|||
|
|||
def _patch_system(): |
|||
from . import patch |
@ -0,0 +1,38 @@ |
|||
################################################################################### |
|||
# |
|||
# Copyright (c) 2017-2019 MuK IT GmbH. |
|||
# |
|||
# This file is part of MuK Large Objects Field |
|||
# (see https://mukit.at). |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU Lesser 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 Lesser General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Lesser General Public License |
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
################################################################################### |
|||
|
|||
{ |
|||
"name": "MuK Large Objects Field", |
|||
"summary": """PGSQL Large Objects Support for Fields""", |
|||
"version": "13.0.1.0.0", |
|||
"category": "Extra Tools", |
|||
"license": "LGPL-3", |
|||
"website": "https://www.mukit.at", |
|||
"author": "MuK IT", |
|||
"contributors": ["Mathias Markl <mathias.markl@mukit.at>"], |
|||
"depends": ["muk_fields_stream"], |
|||
"images": ["static/description/banner.png"], |
|||
"auto_install": False, |
|||
"application": False, |
|||
"installable": True, |
|||
"post_load": "_patch_system", |
|||
} |
@ -0,0 +1,22 @@ |
|||
`2.2.0` |
|||
------- |
|||
|
|||
- Monkey Patch Methods |
|||
|
|||
`2.1.0` |
|||
------- |
|||
|
|||
- Added XML View Support |
|||
|
|||
`2.0.0` |
|||
------- |
|||
|
|||
- Migrated to Python 3 |
|||
- Can handle Base64 input |
|||
- Can return value as Base64 |
|||
- Can return value as Checksum |
|||
|
|||
`1.0.0` |
|||
------- |
|||
|
|||
- Init version |
@ -0,0 +1,134 @@ |
|||
======================= |
|||
MuK Large Objects Field |
|||
======================= |
|||
|
|||
PostgreSQL offers support for large objects, which provide stream-style access |
|||
to user data that is stored in a special large-object structure. They are useful |
|||
with data values too large to be manipulated conveniently as a whole. |
|||
|
|||
Psycopg allows access to the large object using the `lobject` class. Objects are |
|||
generated using the `connection.lobject()` factory method. Data can be retrieved |
|||
either as bytes or as Unicode strings. |
|||
|
|||
Psycopg large object support efficient import/export with file system files using |
|||
the `lo_import()` and `lo_export()` libpq functions. |
|||
|
|||
Changed in version 2.6: added support for large objects greated than 2GB. Note |
|||
that the support is enabled only if all the following conditions are verified: |
|||
|
|||
* the Python build is 64 bits; |
|||
* the extension was built against at least libpq 9.3; |
|||
* the server version is at least PostgreSQL 9.3 (server_version must be >= 90300). |
|||
|
|||
If Psycopg was built with 64 bits large objects support (i.e. the first two |
|||
contidions above are verified), the `psycopg2.__version__` constant will contain |
|||
the lo64 flag. If any of the contition is not met several lobject methods will |
|||
fail if the arguments exceed 2GB. |
|||
|
|||
Installation |
|||
============ |
|||
|
|||
To install this module, you need to: |
|||
|
|||
Download the module and add it to your Odoo addons folder. Afterward, log on to |
|||
your Odoo server and go to the Apps menu. Trigger the debug mode and update the |
|||
list by clicking on the "Update Apps List" link. Now install the module by |
|||
clicking on the install button. |
|||
|
|||
Another way to install this module is via the package management for Python |
|||
(`PyPI <https://pypi.org/project/pip/>`_). |
|||
|
|||
To install our modules using the package manager make sure |
|||
`odoo-autodiscover <https://pypi.org/project/odoo-autodiscover/>`_ is installed |
|||
correctly. Note that for Odoo version 11.0 and later this is not necessary anymore. |
|||
Then open a console and install the module by entering the following command: |
|||
|
|||
``pip install --extra-index-url https://nexus.mukit.at/repository/odoo/simple <module>`` |
|||
|
|||
The module name consists of the Odoo version and the module name, where |
|||
underscores are replaced by a dash. |
|||
|
|||
**Module:** |
|||
|
|||
``odoo<version>-addon-<module_name>`` |
|||
|
|||
**Example:** |
|||
|
|||
``sudo -H pip3 install --extra-index-url https://nexus.mukit.at/repository/odoo/simple odoo13-addon-muk-utils`` |
|||
|
|||
Once the installation has been successfully completed, the app is already in the |
|||
correct folder. Log on to your Odoo server and go to the Apps menu. Trigger the |
|||
debug mode and update the list by clicking on the "Update Apps List" link. Now |
|||
install the module by clicking on the install button. |
|||
|
|||
The biggest advantage of this variant is that you can now also update the app |
|||
using the "pip" command. To do this, enter the following command in your console: |
|||
|
|||
``pip install --upgrade --extra-index-url https://nexus.mukit.at/repository/odoo/simple <module>`` |
|||
|
|||
When the process is finished, restart your server and update the application in |
|||
Odoo. The steps are the same as for the installation only the button has changed |
|||
from "Install" to "Upgrade". |
|||
|
|||
You can also view available Apps directly in our `repository <https://nexus.mukit.at/#browse/browse:odoo>`_ |
|||
and find a more detailed installation guide on our `website <https://mukit.at/page/open-source>`_. |
|||
|
|||
For modules licensed under a proprietary license, you will receive the access data after you purchased |
|||
the module. If the purchase were made at the Odoo store please contact our `support <support@mukit.at>`_ |
|||
with a confirmation of the purchase to receive the corresponding access data. |
|||
|
|||
Upgrade |
|||
============ |
|||
|
|||
To upgrade this module, you need to: |
|||
|
|||
Download the module and add it to your Odoo addons folder. Restart the server |
|||
and log on to your Odoo server. Select the Apps menu and upgrade the module by |
|||
clicking on the upgrade button. |
|||
|
|||
If you installed the module using the "pip" command, you can also update the |
|||
module in the same way. Just type the following command into the console: |
|||
|
|||
``pip install --upgrade --extra-index-url https://nexus.mukit.at/repository/odoo/simple <module>`` |
|||
|
|||
When the process is finished, restart your server and update the application in |
|||
Odoo, just like you would normally. |
|||
|
|||
|
|||
Configuration |
|||
============= |
|||
|
|||
No additional configuration is needed to use this module. |
|||
|
|||
Usage |
|||
===== |
|||
|
|||
This module has no direct visible effect on the system. It adds a new field type, |
|||
which can be used in other modules. |
|||
|
|||
Credit |
|||
====== |
|||
|
|||
Contributors |
|||
------------ |
|||
|
|||
* Mathias Markl <mathias.markl@mukit.at> |
|||
|
|||
Images |
|||
------ |
|||
|
|||
Some pictures are based on or inspired by the icon set of Font Awesome: |
|||
|
|||
* `Font Awesome <https://fontawesome.com>`_ |
|||
|
|||
Author & Maintainer |
|||
------------------- |
|||
|
|||
This module is maintained by the `MuK IT GmbH <https://www.mukit.at/>`_. |
|||
|
|||
MuK IT is an Austrian company specialized in customizing and extending Odoo. |
|||
We develop custom solutions for your individual needs to help you focus on |
|||
your strength and expertise to grow your business. |
|||
|
|||
If you want to get in touch please contact us via `mail <sale@mukit.at>`_ |
|||
or visit our `website <https://mukit.at>`_. |
@ -0,0 +1,23 @@ |
|||
################################################################################### |
|||
# |
|||
# Copyright (c) 2017-2019 MuK IT GmbH. |
|||
# |
|||
# This file is part of MuK Large Objects Field |
|||
# (see https://mukit.at). |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU Lesser 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 Lesser General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Lesser General Public License |
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
################################################################################### |
|||
|
|||
from . import lobject |
@ -0,0 +1,95 @@ |
|||
################################################################################### |
|||
# |
|||
# Copyright (c) 2017-2019 MuK IT GmbH. |
|||
# |
|||
# This file is part of MuK Large Objects Field |
|||
# (see https://mukit.at). |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU Lesser 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 Lesser General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Lesser General Public License |
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
################################################################################### |
|||
|
|||
import base64 |
|||
import hashlib |
|||
import logging |
|||
import tempfile |
|||
|
|||
from odoo import fields |
|||
from odoo.tools import human_size |
|||
|
|||
_logger = logging.getLogger(__name__) |
|||
|
|||
|
|||
class LargeObject(fields.Field): |
|||
|
|||
type = "lobject" |
|||
column_type = ("oid", "oid") |
|||
_slots = {"prefetch": False, "context_dependent": True} |
|||
|
|||
def convert_to_column(self, value, record, values=None, validate=True): |
|||
oid = record.with_context({"oid": True})[self.name] |
|||
if oid: |
|||
record.env.cr._cnx.lobject(oid, "rb").unlink() |
|||
if not value: |
|||
return None |
|||
lobject = record.env.cr._cnx.lobject(0, "wb") |
|||
if isinstance(value, bytes): |
|||
lobject.write(value) |
|||
elif isinstance(value, str): |
|||
lobject.write(base64.b64decode(value)) |
|||
else: |
|||
while True: |
|||
chunk = value.read(4096) |
|||
if not chunk: |
|||
break |
|||
lobject.write(chunk) |
|||
return lobject.oid |
|||
|
|||
def convert_to_cache(self, value, record, validate=True): |
|||
if value and isinstance(value, int): |
|||
lobject = record.env.cr._cnx.lobject(value, "rb") |
|||
if record._context.get("human_size"): |
|||
return human_size(lobject.seek(0, 2)) |
|||
elif record._context.get("bin_size"): |
|||
return lobject.seek(0, 2) |
|||
elif record._context.get("oid"): |
|||
return lobject.oid |
|||
elif record._context.get("base64"): |
|||
return base64.b64encode(lobject.read()) |
|||
elif record._context.get("stream"): |
|||
file = tempfile.TemporaryFile() |
|||
while True: |
|||
chunk = lobject.read(4096) |
|||
if not chunk: |
|||
file.seek(0) |
|||
return file |
|||
file.write(chunk) |
|||
elif record._context.get("checksum"): |
|||
checksum = hashlib.sha1() |
|||
while True: |
|||
chunk = lobject.read(4096) |
|||
if not chunk: |
|||
return checksum.hexdigest() |
|||
checksum.update(chunk) |
|||
else: |
|||
return lobject.read() |
|||
return None if value is False else value |
|||
|
|||
def convert_to_export(self, value, record): |
|||
if value: |
|||
lobject = record.env.cr._cnx.lobject(value, "rb") |
|||
if record._context.get("export_raw_data"): |
|||
return lobject.read() |
|||
return base64.b64encode(lobject.read()) |
|||
return "" |
@ -0,0 +1,116 @@ |
|||
# Translation of Odoo Server. |
|||
# This file contains the translation of the following modules: |
|||
# * muk_fields_lobject |
|||
# |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: Odoo Server 12.0-20190522\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2019-07-13 00:18+0000\n" |
|||
"PO-Revision-Date: 2019-07-13 00:18+0000\n" |
|||
"Last-Translator: <>\n" |
|||
"Language-Team: \n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=UTF-8\n" |
|||
"Content-Transfer-Encoding: \n" |
|||
"Plural-Forms: \n" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model,name:muk_fields_lobject.model_base |
|||
msgid "Base" |
|||
msgstr "الأساس" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model.fields,field_description:muk_fields_lobject.field_ir_model_fields__ttype |
|||
msgid "Field Type" |
|||
msgstr "نوع الحقل" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model,name:muk_fields_lobject.model_ir_model_fields |
|||
msgid "Fields" |
|||
msgstr "الحقول" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model,name:muk_fields_lobject.model_ir_http |
|||
msgid "HTTP Routing" |
|||
msgstr "مسار HTTP" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "binary" |
|||
msgstr "بيانات ثنائية" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "boolean" |
|||
msgstr "قيمة منطقية" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "char" |
|||
msgstr "محارف" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "date" |
|||
msgstr "تاريخ" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "datetime" |
|||
msgstr "التاريخ والوقت" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "float" |
|||
msgstr "فاصلة عائمة" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "html" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "integer" |
|||
msgstr "عدد صحيح" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "lobject" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "many2many" |
|||
msgstr "علاقة متعدد لمتعدد" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "many2one" |
|||
msgstr "علاقة متعدد لواحد" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "monetary" |
|||
msgstr "قيمة نقدية" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "one2many" |
|||
msgstr "علاقة واحد لمتعدد" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "reference" |
|||
msgstr "المرجع" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "selection" |
|||
msgstr "قائمة خيارات" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "text" |
|||
msgstr "نص" |
@ -0,0 +1,116 @@ |
|||
# Translation of Odoo Server. |
|||
# This file contains the translation of the following modules: |
|||
# * muk_fields_lobject |
|||
# |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: Odoo Server 12.0-20190522\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2019-07-13 00:18+0000\n" |
|||
"PO-Revision-Date: 2019-07-13 00:18+0000\n" |
|||
"Last-Translator: <>\n" |
|||
"Language-Team: \n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=UTF-8\n" |
|||
"Content-Transfer-Encoding: \n" |
|||
"Plural-Forms: \n" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model,name:muk_fields_lobject.model_base |
|||
msgid "Base" |
|||
msgstr "Basis" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model.fields,field_description:muk_fields_lobject.field_ir_model_fields__ttype |
|||
msgid "Field Type" |
|||
msgstr "Typfeld-Text" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model,name:muk_fields_lobject.model_ir_model_fields |
|||
msgid "Fields" |
|||
msgstr "Felder" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model,name:muk_fields_lobject.model_ir_http |
|||
msgid "HTTP Routing" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "binary" |
|||
msgstr "Binär" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "boolean" |
|||
msgstr "Boolean" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "char" |
|||
msgstr "Zeichen" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "date" |
|||
msgstr "Datum" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "datetime" |
|||
msgstr "Datum/Zeit" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "float" |
|||
msgstr "Gleitkommazahl" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "html" |
|||
msgstr "HTML" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "integer" |
|||
msgstr "Ganzzahl" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "lobject" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "many2many" |
|||
msgstr "Many2many" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "many2one" |
|||
msgstr "Many2One" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "monetary" |
|||
msgstr "monetär" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "one2many" |
|||
msgstr "One2many" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "reference" |
|||
msgstr "Referenz" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "selection" |
|||
msgstr "Auswahl" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "text" |
|||
msgstr "Text" |
@ -0,0 +1,116 @@ |
|||
# Translation of Odoo Server. |
|||
# This file contains the translation of the following modules: |
|||
# * muk_fields_lobject |
|||
# |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: Odoo Server 12.0-20190522\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2019-07-13 00:18+0000\n" |
|||
"PO-Revision-Date: 2019-07-13 00:18+0000\n" |
|||
"Last-Translator: <>\n" |
|||
"Language-Team: \n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=UTF-8\n" |
|||
"Content-Transfer-Encoding: \n" |
|||
"Plural-Forms: \n" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model,name:muk_fields_lobject.model_base |
|||
msgid "Base" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model.fields,field_description:muk_fields_lobject.field_ir_model_fields__ttype |
|||
msgid "Field Type" |
|||
msgstr "Tipo de campo" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model,name:muk_fields_lobject.model_ir_model_fields |
|||
msgid "Fields" |
|||
msgstr "Campos" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model,name:muk_fields_lobject.model_ir_http |
|||
msgid "HTTP Routing" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "binary" |
|||
msgstr "binario" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "boolean" |
|||
msgstr "booleano" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "char" |
|||
msgstr "Carácter" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "date" |
|||
msgstr "fecha" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "datetime" |
|||
msgstr "Fecha y hora" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "float" |
|||
msgstr "número flotante" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "html" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "integer" |
|||
msgstr "entero" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "lobject" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "many2many" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "many2one" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "monetary" |
|||
msgstr "Monetario" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "one2many" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "reference" |
|||
msgstr "Referencia" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "selection" |
|||
msgstr "Selección" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "text" |
|||
msgstr "texto" |
@ -0,0 +1,116 @@ |
|||
# Translation of Odoo Server. |
|||
# This file contains the translation of the following modules: |
|||
# * muk_fields_lobject |
|||
# |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: Odoo Server 12.0-20190522\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2019-07-13 00:19+0000\n" |
|||
"PO-Revision-Date: 2019-07-13 00:19+0000\n" |
|||
"Last-Translator: <>\n" |
|||
"Language-Team: \n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=UTF-8\n" |
|||
"Content-Transfer-Encoding: \n" |
|||
"Plural-Forms: \n" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model,name:muk_fields_lobject.model_base |
|||
msgid "Base" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model.fields,field_description:muk_fields_lobject.field_ir_model_fields__ttype |
|||
msgid "Field Type" |
|||
msgstr "Type de Champ" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model,name:muk_fields_lobject.model_ir_model_fields |
|||
msgid "Fields" |
|||
msgstr "Champs" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model,name:muk_fields_lobject.model_ir_http |
|||
msgid "HTTP Routing" |
|||
msgstr "Routage HTTP" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "binary" |
|||
msgstr "binaire" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "boolean" |
|||
msgstr "booléen" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "char" |
|||
msgstr "caractère" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "date" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "datetime" |
|||
msgstr "date/heure" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "float" |
|||
msgstr "flottant" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "html" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "integer" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "lobject" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "many2many" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "many2one" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "monetary" |
|||
msgstr "monétaire" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "one2many" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "reference" |
|||
msgstr "référence" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "selection" |
|||
msgstr "sélection" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "text" |
|||
msgstr "texte" |
@ -0,0 +1,116 @@ |
|||
# Translation of Odoo Server. |
|||
# This file contains the translation of the following modules: |
|||
# * muk_fields_lobject |
|||
# |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: Odoo Server 12.0-20190522\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2019-07-13 00:19+0000\n" |
|||
"PO-Revision-Date: 2019-07-13 00:19+0000\n" |
|||
"Last-Translator: <>\n" |
|||
"Language-Team: \n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=UTF-8\n" |
|||
"Content-Transfer-Encoding: \n" |
|||
"Plural-Forms: \n" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model,name:muk_fields_lobject.model_base |
|||
msgid "Base" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model.fields,field_description:muk_fields_lobject.field_ir_model_fields__ttype |
|||
msgid "Field Type" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model,name:muk_fields_lobject.model_ir_model_fields |
|||
msgid "Fields" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model,name:muk_fields_lobject.model_ir_http |
|||
msgid "HTTP Routing" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "binary" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "boolean" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "char" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "date" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "datetime" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "float" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "html" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "integer" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "lobject" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "many2many" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "many2one" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "monetary" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "one2many" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "reference" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "selection" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "text" |
|||
msgstr "" |
@ -0,0 +1,116 @@ |
|||
# Translation of Odoo Server. |
|||
# This file contains the translation of the following modules: |
|||
# * muk_fields_lobject |
|||
# |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: Odoo Server 12.0-20190522\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2019-07-13 00:18+0000\n" |
|||
"PO-Revision-Date: 2019-07-13 00:18+0000\n" |
|||
"Last-Translator: <>\n" |
|||
"Language-Team: \n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=UTF-8\n" |
|||
"Content-Transfer-Encoding: \n" |
|||
"Plural-Forms: \n" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model,name:muk_fields_lobject.model_base |
|||
msgid "Base" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model.fields,field_description:muk_fields_lobject.field_ir_model_fields__ttype |
|||
msgid "Field Type" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model,name:muk_fields_lobject.model_ir_model_fields |
|||
msgid "Fields" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model,name:muk_fields_lobject.model_ir_http |
|||
msgid "HTTP Routing" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "binary" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "boolean" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "char" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "date" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "datetime" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "float" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "html" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "integer" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "lobject" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "many2many" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "many2one" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "monetary" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "one2many" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "reference" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "selection" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "text" |
|||
msgstr "" |
@ -0,0 +1,116 @@ |
|||
# Translation of Odoo Server. |
|||
# This file contains the translation of the following modules: |
|||
# * muk_fields_lobject |
|||
# |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: Odoo Server 12.0-20190522\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2019-07-13 00:19+0000\n" |
|||
"PO-Revision-Date: 2019-07-13 00:19+0000\n" |
|||
"Last-Translator: <>\n" |
|||
"Language-Team: \n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=UTF-8\n" |
|||
"Content-Transfer-Encoding: \n" |
|||
"Plural-Forms: \n" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model,name:muk_fields_lobject.model_base |
|||
msgid "Base" |
|||
msgstr "Basis" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model.fields,field_description:muk_fields_lobject.field_ir_model_fields__ttype |
|||
msgid "Field Type" |
|||
msgstr "Soort veld" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model,name:muk_fields_lobject.model_ir_model_fields |
|||
msgid "Fields" |
|||
msgstr "Velden" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model,name:muk_fields_lobject.model_ir_http |
|||
msgid "HTTP Routing" |
|||
msgstr "HTTP routing" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "binary" |
|||
msgstr "binair" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "boolean" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "char" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "date" |
|||
msgstr "datum" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "datetime" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "float" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "html" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "integer" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "lobject" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "many2many" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "many2one" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "monetary" |
|||
msgstr "monetair" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "one2many" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "reference" |
|||
msgstr "referentie" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "selection" |
|||
msgstr "selectie" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "text" |
|||
msgstr "tekst" |
@ -0,0 +1,116 @@ |
|||
# Translation of Odoo Server. |
|||
# This file contains the translation of the following modules: |
|||
# * muk_fields_lobject |
|||
# |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: Odoo Server 12.0-20190522\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2019-07-13 00:19+0000\n" |
|||
"PO-Revision-Date: 2019-07-13 00:19+0000\n" |
|||
"Last-Translator: <>\n" |
|||
"Language-Team: \n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=UTF-8\n" |
|||
"Content-Transfer-Encoding: \n" |
|||
"Plural-Forms: \n" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model,name:muk_fields_lobject.model_base |
|||
msgid "Base" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model.fields,field_description:muk_fields_lobject.field_ir_model_fields__ttype |
|||
msgid "Field Type" |
|||
msgstr "Tipo de Campo" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model,name:muk_fields_lobject.model_ir_model_fields |
|||
msgid "Fields" |
|||
msgstr "Campos" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model,name:muk_fields_lobject.model_ir_http |
|||
msgid "HTTP Routing" |
|||
msgstr "Rota HTTP" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "binary" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "boolean" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "char" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "date" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "datetime" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "float" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "html" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "integer" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "lobject" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "many2many" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "many2one" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "monetary" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "one2many" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "reference" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "selection" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "text" |
|||
msgstr "Texto" |
@ -0,0 +1,116 @@ |
|||
# Translation of Odoo Server. |
|||
# This file contains the translation of the following modules: |
|||
# * muk_fields_lobject |
|||
# |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: Odoo Server 12.0-20190522\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2019-07-13 00:20+0000\n" |
|||
"PO-Revision-Date: 2019-07-13 00:20+0000\n" |
|||
"Last-Translator: <>\n" |
|||
"Language-Team: \n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=UTF-8\n" |
|||
"Content-Transfer-Encoding: \n" |
|||
"Plural-Forms: \n" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model,name:muk_fields_lobject.model_base |
|||
msgid "Base" |
|||
msgstr "Базовый" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model.fields,field_description:muk_fields_lobject.field_ir_model_fields__ttype |
|||
msgid "Field Type" |
|||
msgstr "Тип поля" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model,name:muk_fields_lobject.model_ir_model_fields |
|||
msgid "Fields" |
|||
msgstr "Поля" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: model:ir.model,name:muk_fields_lobject.model_ir_http |
|||
msgid "HTTP Routing" |
|||
msgstr "Маршрутизация HTTP" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "binary" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "boolean" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "char" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "date" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "datetime" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "float" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "html" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "integer" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "lobject" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "many2many" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "many2one" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "monetary" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "one2many" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "reference" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "selection" |
|||
msgstr "" |
|||
|
|||
#. module: muk_fields_lobject |
|||
#: selection:ir.model.fields,ttype:0 |
|||
msgid "text" |
|||
msgstr "" |
@ -0,0 +1,23 @@ |
|||
################################################################################### |
|||
# |
|||
# Copyright (c) 2017-2019 MuK IT GmbH. |
|||
# |
|||
# This file is part of MuK Large Objects Field |
|||
# (see https://mukit.at). |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU Lesser 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 Lesser General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Lesser General Public License |
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
################################################################################### |
|||
|
|||
from . import base, ir_http, ir_model_fields |
@ -0,0 +1,46 @@ |
|||
################################################################################### |
|||
# |
|||
# Copyright (c) 2017-2019 MuK IT GmbH. |
|||
# |
|||
# This file is part of MuK Large Objects Field |
|||
# (see https://mukit.at). |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU Lesser 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 Lesser General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Lesser General Public License |
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
################################################################################### |
|||
|
|||
import logging |
|||
|
|||
from odoo import api, models |
|||
|
|||
_logger = logging.getLogger(__name__) |
|||
|
|||
|
|||
class Base(models.AbstractModel): |
|||
|
|||
_inherit = "base" |
|||
|
|||
@api.multi |
|||
def unlink(self): |
|||
oids = [] |
|||
for name in self._fields: |
|||
field = self._fields[name] |
|||
if field.type == "lobject" and field.store: |
|||
for record in self: |
|||
oid = record.with_context({"oid": True})[name] |
|||
if oid: |
|||
oids.append(oid) |
|||
super(Base, self).unlink() |
|||
for oid in oids: |
|||
self.env.cr._cnx.lobject(oid, "rb").unlink() |
@ -0,0 +1,41 @@ |
|||
################################################################################### |
|||
# |
|||
# Copyright (c) 2017-2019 MuK IT GmbH. |
|||
# |
|||
# This file is part of MuK Large Objects Field |
|||
# (see https://mukit.at). |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU Lesser 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 Lesser General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Lesser General Public License |
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
################################################################################### |
|||
|
|||
import logging |
|||
|
|||
from odoo import models |
|||
|
|||
_logger = logging.getLogger(__name__) |
|||
|
|||
|
|||
class IrHttp(models.AbstractModel): |
|||
|
|||
_inherit = "ir.http" |
|||
|
|||
# ---------------------------------------------------------- |
|||
# Helper |
|||
# ---------------------------------------------------------- |
|||
|
|||
def _check_streamable(record, field): |
|||
if record._fields[field].type == "lobject": |
|||
return True |
|||
return super(IrHttp, self)._check_streamable(record, field) |
@ -0,0 +1,30 @@ |
|||
################################################################################### |
|||
# |
|||
# Copyright (c) 2017-2019 MuK IT GmbH. |
|||
# |
|||
# This file is part of MuK Large Objects Field |
|||
# (see https://mukit.at). |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU Lesser 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 Lesser General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Lesser General Public License |
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
################################################################################### |
|||
|
|||
from odoo import fields, models |
|||
|
|||
|
|||
class IrModelField(models.Model): |
|||
|
|||
_inherit = "ir.model.fields" |
|||
|
|||
ttype = fields.Selection(selection_add=[("lobject", "lobject")]) |
@ -0,0 +1,23 @@ |
|||
################################################################################### |
|||
# |
|||
# Copyright (c) 2017-2019 MuK IT GmbH. |
|||
# |
|||
# This file is part of MuK Large Objects Field |
|||
# (see https://mukit.at). |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU Lesser 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 Lesser General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Lesser General Public License |
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
################################################################################### |
|||
|
|||
from . import fields |
@ -0,0 +1,26 @@ |
|||
################################################################################### |
|||
# |
|||
# Copyright (c) 2017-2019 MuK IT GmbH. |
|||
# |
|||
# This file is part of MuK Large Objects Field |
|||
# (see https://mukit.at). |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU Lesser 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 Lesser General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Lesser General Public License |
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
################################################################################### |
|||
|
|||
from odoo import fields |
|||
from odoo.addons.muk_fields_lobject.fields.lobject import LargeObject |
|||
|
|||
fields.LargeObject = LargeObject |
After Width: 880 | Height: 440 | Size: 47 KiB |
After Width: 250 | Height: 250 | Size: 17 KiB |
@ -0,0 +1 @@ |
|||
<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 250 250" width="250" height="250"><defs><clipPath id="_clipPath_bVTFFzgdQtqBVauFVa4gl8SuMnZSELw9"><rect width="250" height="250"/></clipPath></defs><g clip-path="url(#_clipPath_bVTFFzgdQtqBVauFVa4gl8SuMnZSELw9)"><rect width="250" height="250" style="fill:rgb(0,0,0)" fill-opacity="0"/><defs><filter id="cQFGrgQAP8MwrgRZtV5OiRvwK1oSmzpI" x="-200%" y="-200%" width="400%" height="400%" filterUnits="objectBoundingBox" color-interpolation-filters="sRGB"><feOffset xmlns="http://www.w3.org/2000/svg" in="SourceGraphic" dx="0" dy="3"/><feGaussianBlur xmlns="http://www.w3.org/2000/svg" stdDeviation="2.146804531419514" result="pf_100_offsetBlur"/><feComposite xmlns="http://www.w3.org/2000/svg" in="SourceGraphic" in2="pf_100_offsetBlur" result="pf_100_inverse" operator="out"/><feFlood xmlns="http://www.w3.org/2000/svg" flood-color="#FFFFFF" flood-opacity="0.5" result="pf_100_color"/><feComposite xmlns="http://www.w3.org/2000/svg" in="pf_100_color" in2="pf_100_inverse" operator="in" result="pf_100_shadow"/><feComposite xmlns="http://www.w3.org/2000/svg" in="pf_100_shadow" in2="SourceGraphic" operator="over" result="_out_A5ouivfeYKRMLswAromsWzoB0ajdzu2m"/><feOffset xmlns="http://www.w3.org/2000/svg" in="_out_A5ouivfeYKRMLswAromsWzoB0ajdzu2m" dx="0" dy="-3"/><feGaussianBlur xmlns="http://www.w3.org/2000/svg" stdDeviation="2.146804531419514" result="pf_101_offsetBlur"/><feComposite xmlns="http://www.w3.org/2000/svg" in="_out_A5ouivfeYKRMLswAromsWzoB0ajdzu2m" in2="pf_101_offsetBlur" result="pf_101_inverse" operator="out"/><feFlood xmlns="http://www.w3.org/2000/svg" flood-color="#000000" flood-opacity="0.5" result="pf_101_color"/><feComposite xmlns="http://www.w3.org/2000/svg" in="pf_101_color" in2="pf_101_inverse" operator="in" result="pf_101_shadow"/><feComposite xmlns="http://www.w3.org/2000/svg" in="pf_101_shadow" in2="_out_A5ouivfeYKRMLswAromsWzoB0ajdzu2m" operator="over" result="_out_zUzdzOlaNabpJMcDZbhcwXYlGZAiAXfF"/><feMerge><feMergeNode in="_out_zUzdzOlaNabpJMcDZbhcwXYlGZAiAXfF"/></feMerge></filter></defs><g filter="url(#cQFGrgQAP8MwrgRZtV5OiRvwK1oSmzpI)"><path d="M 15 0 L 235 0 C 243.279 0 250 6.721 250 15 L 250 235 C 250 243.279 243.279 250 235 250 L 15 250 C 6.721 250 0 243.279 0 235 L 0 15 C 0 6.721 6.721 0 15 0 Z" style="stroke:none;fill:#243742;stroke-miterlimit:10;"/></g><defs><filter id="JwqxAGncfVu5hBmKteCL2oeKx0DFLaFk" x="-200%" y="-200%" width="400%" height="400%" filterUnits="objectBoundingBox" color-interpolation-filters="sRGB"><feGaussianBlur xmlns="http://www.w3.org/2000/svg" in="SourceGraphic" stdDeviation="2.146804531419514"/><feOffset xmlns="http://www.w3.org/2000/svg" dx="-5" dy="5" result="pf_100_offsetBlur"/><feFlood xmlns="http://www.w3.org/2000/svg" flood-color="#000000" flood-opacity="0.65"/><feComposite xmlns="http://www.w3.org/2000/svg" in2="pf_100_offsetBlur" operator="in" result="pf_100_dropShadow"/><feBlend xmlns="http://www.w3.org/2000/svg" in="SourceGraphic" in2="pf_100_dropShadow" mode="normal"/></filter></defs><g filter="url(#JwqxAGncfVu5hBmKteCL2oeKx0DFLaFk)"><path d=" M 125 113.319 Q 146.628 113.319 165.427 109.395 Q 184.226 105.471 195.085 97.806 L 195.085 113.319 Q 195.085 119.616 185.686 125 Q 176.286 130.384 160.134 133.532 Q 143.981 136.681 125 136.681 Q 106.019 136.681 89.866 133.532 Q 73.714 130.384 64.314 125 Q 54.915 119.616 54.915 113.319 L 54.915 97.806 Q 65.774 105.471 84.573 109.395 Q 103.372 113.319 125 113.319 Z M 125 183.404 Q 146.628 183.404 165.427 179.48 Q 184.226 175.556 195.085 167.891 L 195.085 183.404 Q 195.085 189.701 185.686 195.085 Q 176.286 200.469 160.134 203.618 Q 143.981 206.766 125 206.766 Q 106.019 206.766 89.866 203.618 Q 73.714 200.469 64.314 195.085 Q 54.915 189.701 54.915 183.404 L 54.915 167.891 Q 65.774 175.556 84.573 179.48 Q 103.372 183.404 125 183.404 Z M 125 148.362 Q 146.628 148.362 165.427 144.438 Q 184.226 140.514 195.085 132.848 L 195.085 148.362 Q 195.085 154.658 185.686 160.043 Q 176.286 165.427 160.134 168.575 Q 143.981 171.723 125 171.723 Q 106.019 171.723 89.866 168.575 Q 73.714 165.427 64.314 160.043 Q 54.915 154.658 54.915 148.362 L 54.915 132.848 Q 65.774 140.514 84.573 144.438 Q 103.372 148.362 125 148.362 Z M 125 43.234 Q 143.981 43.234 160.134 46.382 Q 176.286 49.531 185.686 54.915 Q 195.085 60.299 195.085 66.596 L 195.085 78.277 Q 195.085 84.573 185.686 89.957 Q 176.286 95.342 160.134 98.49 Q 143.981 101.638 125 101.638 Q 106.019 101.638 89.866 98.49 Q 73.714 95.342 64.314 89.957 Q 54.915 84.573 54.915 78.277 L 54.915 66.596 Q 54.915 60.299 64.314 54.915 Q 73.714 49.531 89.866 46.382 Q 106.019 43.234 125 43.234 Z " id="Download" fill="rgb(255,255,255)"/></g></g></svg> |
@ -0,0 +1,227 @@ |
|||
<section class="oe_container"> |
|||
<div class="oe_row oe_spaced"> |
|||
<h2 class="oe_slogan">MuK Large Objects Field</h2> |
|||
<h3 class="oe_slogan">PGSQL Large Objects Support for Fields</h3> |
|||
<h4 class="oe_slogan" style="font-size: 23px;"> |
|||
MuK IT GmbH - www.mukit.at |
|||
</h4> |
|||
</div> |
|||
</section> |
|||
|
|||
<section class="oe_container"> |
|||
<div class="oe_row oe_spaced"> |
|||
<div class="text-justify" style="max-width: 84%; margin: 16px 8%;"> |
|||
<h3 class="oe_slogan">Overview</h3> |
|||
<div class="oe_mt32" style="padding-bottom: 10px; text-align: justify;"> |
|||
<p> |
|||
Provides a field to store bytes as PostgreSQL large objects. |
|||
PostgreSQL offers support for large objects, which provide |
|||
stream-style access to user data that is stored in a special |
|||
large-object structure. They are useful with data values too large to |
|||
be manipulated conveniently as a whole. |
|||
</p> |
|||
<h5 style="padding-top: 10px;">Psycopg2 for Python</h5> |
|||
<p> |
|||
Psycopg allows access to the large object using the |
|||
<code>lobject</code> |
|||
class. Objects are generated using the |
|||
<code>connection.lobject()</code> |
|||
factory method. Data can be retrieved either as bytes or as Unicode |
|||
strings. |
|||
</p> |
|||
<p> |
|||
Psycopg large object support efficient import/export with file system |
|||
files using the |
|||
<code>lo_import()</code> |
|||
and |
|||
<code>lo_export()</code> |
|||
libpq functions. |
|||
</p> |
|||
<p> |
|||
Changed in version 2.6: added support for large objects greated than |
|||
2GB. Note that the support is enabled only if all the following |
|||
conditions are verified: |
|||
</p> |
|||
<ul> |
|||
<li>the Python build is 64 bits;</li> |
|||
<li>the extension was built against at least libpq 9.3;</li> |
|||
<li> |
|||
the server version is at least PostgreSQL 9.3 (server_version must |
|||
be >= 90300). |
|||
</li> |
|||
</ul> |
|||
<p> |
|||
If Psycopg was built with 64 bits large objects support (i.e. the |
|||
first two contidions above are verified), the |
|||
<code>psycopg2.__version__</code> |
|||
constant will contain the lo64 flag. If any of the contition is not |
|||
met several lobject methods will fail if the arguments exceed 2GB. |
|||
</p> |
|||
</div> |
|||
|
|||
<pre> |
|||
<code> |
|||
from odoo.addons.muk_fields_lobject.fields.lobject import LargeObject |
|||
|
|||
class LargeObjectModel(models.Model): |
|||
|
|||
data_content = LargeObject(string="Data") |
|||
|
|||
@api.multi |
|||
def data(self): |
|||
for record in self: |
|||
bytes = record.data_content |
|||
oid = record.with_context({'oid': True}).data_content |
|||
size = record.with_context({'bin_size': True}).data_content |
|||
stream = record.with_context({'stream': True}).data_content |
|||
</code> |
|||
</pre> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
|
|||
<section class="oe_container oe_dark"> |
|||
<div class="oe_row oe_spaced"> |
|||
<h3 class="oe_slogan">Our Services</h3> |
|||
<div |
|||
style="display: flex; padding-top: 20px; justify-content: space-between;" |
|||
> |
|||
<div style="flex-basis: 18%;"> |
|||
<a href="https://mukit.at/r/MQ5" target="_blank"> |
|||
<div |
|||
style="width: 75px; height: 75px; border-radius: 100%; margin: auto;" |
|||
> |
|||
<img |
|||
src="service_implementation.png" |
|||
style="width: 100%; border-radius: 100%;" |
|||
/> |
|||
</div> |
|||
<h3 |
|||
class="oe_slogan" |
|||
style="text-align: center; font-size: 14px; width: 100%; margin: 0; margin-top: 14px; color: #000 !important; margin-top: 5px; opacity: 1 !important; line-height: 17px;" |
|||
> |
|||
Odoo <br />Implementation |
|||
</h3> |
|||
</a> |
|||
</div> |
|||
<div style="flex-basis: 18%;"> |
|||
<a href="https://mukit.at/r/u7c" target="_blank"> |
|||
<div |
|||
style="width: 75px; height: 75px; border-radius: 100%; margin: auto;" |
|||
> |
|||
<img |
|||
src="service_integration.png" |
|||
style="width: 100%; border-radius: 100%;" |
|||
/> |
|||
</div> |
|||
<h3 |
|||
class="oe_slogan" |
|||
style="text-align: center; font-size: 14px; width: 100%; margin: 0; margin-top: 14px; color: #000 !important; margin-top: 5px; opacity: 1 !important; line-height: 17px;" |
|||
> |
|||
Odoo <br />Integration |
|||
</h3> |
|||
</a> |
|||
</div> |
|||
<div style="flex-basis: 18%;"> |
|||
<a href="https://mukit.at/r/xDJ" target="_blank"> |
|||
<div |
|||
style="width: 75px; height: 75px; border-radius: 100%; margin: auto;" |
|||
> |
|||
<img |
|||
src="service_customization.png" |
|||
style="width: 100%; border-radius: 100%;" |
|||
/> |
|||
</div> |
|||
<h3 |
|||
class="oe_slogan" |
|||
style="text-align: center; font-size: 14px; width: 100%; margin: 0; margin-top: 14px; color: #000 !important; margin-top: 5px; opacity: 1 !important; line-height: 17px;" |
|||
> |
|||
Odoo <br />Customization |
|||
</h3> |
|||
</a> |
|||
</div> |
|||
<div style="flex-basis: 18%;"> |
|||
<a href=" https://mukit.at/r/J3A" target="_blank"> |
|||
<div |
|||
style="width: 75px; height: 75px; border-radius: 100%; margin: auto;" |
|||
> |
|||
<img |
|||
src="service_development.png" |
|||
style="width: 100%; border-radius: 100%;" |
|||
/> |
|||
</div> |
|||
<h3 |
|||
class="oe_slogan" |
|||
style="text-align: center; font-size: 14px; width: 100%; margin: 0; margin-top: 14px; color: #000 !important; margin-top: 5px; opacity: 1 !important; line-height: 17px;" |
|||
> |
|||
Odoo <br />Development |
|||
</h3> |
|||
</a> |
|||
</div> |
|||
<div style="flex-basis: 18%;"> |
|||
<a href=" https://mukit.at/r/R1v" target="_blank"> |
|||
<div |
|||
style="width: 75px; height: 75px; border-radius: 100%; margin: auto;" |
|||
> |
|||
<img |
|||
src="service_support.png" |
|||
style="width: 100%; border-radius: 100%;" |
|||
/> |
|||
</div> |
|||
<h3 |
|||
class="oe_slogan" |
|||
style="text-align: center; font-size: 14px; width: 100%; margin: 0; margin-top: 14px; color: #000 !important; margin-top: 5px; opacity: 1 !important; line-height: 17px;" |
|||
> |
|||
Odoo <br />Support |
|||
</h3> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
|
|||
<section class="oe_container" style="padding: 32px 0;"> |
|||
<div class="oe_row oe_spaced" style="margin: auto;"> |
|||
<div class="oe_demo oe_picture oe_screenshot"> |
|||
<a href="https://mukit.at/r/SgN" target="_blank"> |
|||
<img src="preview.png" /> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
|
|||
<section class="oe_container oe_dark"> |
|||
<h3 class="oe_slogan">Help and Support</h3> |
|||
<h5 class="oe_slogan" style="font-size: 20px;"> |
|||
Feel free to contact us, if you need any help with your Odoo integration or |
|||
addiontal features. |
|||
</h5> |
|||
<div class="oe_slogan"> |
|||
<a |
|||
class="btn btn-primary btn-lg mt8" |
|||
href="https://mukit.at" |
|||
target="_blank" |
|||
> |
|||
<i class="fa fa-globe"></i> Website |
|||
</a> |
|||
<a |
|||
class="btn btn-primary btn-lg mt8" |
|||
href="https://mukit.at/page/contactus" |
|||
target="_blank" |
|||
> |
|||
<i class="fa fa-envelope"></i> Contact Us |
|||
</a> |
|||
<a |
|||
class="btn btn-primary btn-lg mt8" |
|||
href="https://github.com/muk-it" |
|||
target="_blank" |
|||
> |
|||
<i class="fa fa-github"></i> Issues |
|||
</a> |
|||
</div> |
|||
<img |
|||
src="logo.png" |
|||
style="width: 200px; margin-bottom: 20px; display: block;" |
|||
class="mx-auto center-block" |
|||
/> |
|||
</section> |
After Width: 500 | Height: 500 | Size: 37 KiB |
After Width: 1000 | Height: 200 | Size: 32 KiB |
After Width: 250 | Height: 250 | Size: 27 KiB |
After Width: 250 | Height: 250 | Size: 28 KiB |
After Width: 250 | Height: 250 | Size: 26 KiB |
After Width: 250 | Height: 250 | Size: 24 KiB |
After Width: 250 | Height: 250 | Size: 24 KiB |
@ -0,0 +1,23 @@ |
|||
################################################################################### |
|||
# |
|||
# Copyright (c) 2017-2019 MuK IT GmbH. |
|||
# |
|||
# This file is part of MuK Large Objects Field |
|||
# (see https://mukit.at). |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU Lesser 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 Lesser General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Lesser General Public License |
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
################################################################################### |
|||
|
|||
from . import test_lobject |
@ -0,0 +1,41 @@ |
|||
################################################################################### |
|||
# |
|||
# Copyright (c) 2017-2019 MuK IT GmbH. |
|||
# |
|||
# This file is part of MuK Large Objects Field |
|||
# (see https://mukit.at). |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU Lesser 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 Lesser General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Lesser General Public License |
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
################################################################################### |
|||
|
|||
import logging |
|||
import os |
|||
|
|||
from odoo.addons.muk_fields_lobject.fields.lobject import LargeObject |
|||
from odoo.tests import common |
|||
|
|||
_path = os.path.dirname(os.path.dirname(__file__)) |
|||
_logger = logging.getLogger(__name__) |
|||
|
|||
|
|||
class LargeObjectTestCase(common.TransactionCase): |
|||
def setUp(self): |
|||
super(LargeObjectTestCase, self).setUp() |
|||
|
|||
def tearDown(self): |
|||
super(LargeObjectTestCase, self).tearDown() |
|||
|
|||
def test_import(self): |
|||
self.assertEqual(LargeObject.type, "lobject") |