diff --git a/muk_fields_lobject/LICENSE b/muk_fields_lobject/LICENSE new file mode 100644 index 0000000..0a04128 --- /dev/null +++ b/muk_fields_lobject/LICENSE @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + 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. diff --git a/muk_fields_lobject/README.rst b/muk_fields_lobject/README.rst new file mode 100644 index 0000000..7c7f6ff --- /dev/null +++ b/muk_fields_lobject/README.rst @@ -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 `_). + +To install our modules using the package manager make sure +`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 `` + +The module name consists of the Odoo version and the module name, where +underscores are replaced by a dash. + +**Module:** + +``odoo-addon-`` + +**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 `` + +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 `_ +and find a more detailed installation guide on our `website `_. + +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 `_ +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 `` + +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 + +Images +------ + +Some pictures are based on or inspired by the icon set of Font Awesome: + +* `Font Awesome `_ + +Author & Maintainer +------------------- + +This module is maintained by the `MuK IT GmbH `_. + +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 `_ +or visit our `website `_. diff --git a/muk_fields_lobject/__init__.py b/muk_fields_lobject/__init__.py new file mode 100644 index 0000000..20e7159 --- /dev/null +++ b/muk_fields_lobject/__init__.py @@ -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 . +# +################################################################################### + +from . import fields, models + + +def _patch_system(): + from . import patch diff --git a/muk_fields_lobject/__manifest__.py b/muk_fields_lobject/__manifest__.py new file mode 100644 index 0000000..6ab72c1 --- /dev/null +++ b/muk_fields_lobject/__manifest__.py @@ -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 . +# +################################################################################### + +{ + "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 "], + "depends": ["muk_fields_stream"], + "images": ["static/description/banner.png"], + "auto_install": False, + "application": False, + "installable": True, + "post_load": "_patch_system", +} diff --git a/muk_fields_lobject/doc/changelog.rst b/muk_fields_lobject/doc/changelog.rst new file mode 100644 index 0000000..8466ee4 --- /dev/null +++ b/muk_fields_lobject/doc/changelog.rst @@ -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 diff --git a/muk_fields_lobject/doc/index.rst b/muk_fields_lobject/doc/index.rst new file mode 100644 index 0000000..7c7f6ff --- /dev/null +++ b/muk_fields_lobject/doc/index.rst @@ -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 `_). + +To install our modules using the package manager make sure +`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 `` + +The module name consists of the Odoo version and the module name, where +underscores are replaced by a dash. + +**Module:** + +``odoo-addon-`` + +**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 `` + +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 `_ +and find a more detailed installation guide on our `website `_. + +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 `_ +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 `` + +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 + +Images +------ + +Some pictures are based on or inspired by the icon set of Font Awesome: + +* `Font Awesome `_ + +Author & Maintainer +------------------- + +This module is maintained by the `MuK IT GmbH `_. + +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 `_ +or visit our `website `_. diff --git a/muk_fields_lobject/fields/__init__.py b/muk_fields_lobject/fields/__init__.py new file mode 100644 index 0000000..cdb4cd5 --- /dev/null +++ b/muk_fields_lobject/fields/__init__.py @@ -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 . +# +################################################################################### + +from . import lobject diff --git a/muk_fields_lobject/fields/lobject.py b/muk_fields_lobject/fields/lobject.py new file mode 100644 index 0000000..da10b63 --- /dev/null +++ b/muk_fields_lobject/fields/lobject.py @@ -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 . +# +################################################################################### + +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 "" diff --git a/muk_fields_lobject/i18n/ar.po b/muk_fields_lobject/i18n/ar.po new file mode 100644 index 0000000..588e101 --- /dev/null +++ b/muk_fields_lobject/i18n/ar.po @@ -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 "نص" diff --git a/muk_fields_lobject/i18n/de.po b/muk_fields_lobject/i18n/de.po new file mode 100644 index 0000000..17e33aa --- /dev/null +++ b/muk_fields_lobject/i18n/de.po @@ -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" diff --git a/muk_fields_lobject/i18n/es.po b/muk_fields_lobject/i18n/es.po new file mode 100644 index 0000000..be901bc --- /dev/null +++ b/muk_fields_lobject/i18n/es.po @@ -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" diff --git a/muk_fields_lobject/i18n/fr.po b/muk_fields_lobject/i18n/fr.po new file mode 100644 index 0000000..179b91e --- /dev/null +++ b/muk_fields_lobject/i18n/fr.po @@ -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" diff --git a/muk_fields_lobject/i18n/hi.po b/muk_fields_lobject/i18n/hi.po new file mode 100644 index 0000000..5b8a024 --- /dev/null +++ b/muk_fields_lobject/i18n/hi.po @@ -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 "" diff --git a/muk_fields_lobject/i18n/muk_fields_lobject.pot b/muk_fields_lobject/i18n/muk_fields_lobject.pot new file mode 100644 index 0000000..860ad1f --- /dev/null +++ b/muk_fields_lobject/i18n/muk_fields_lobject.pot @@ -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 "" diff --git a/muk_fields_lobject/i18n/nl.po b/muk_fields_lobject/i18n/nl.po new file mode 100644 index 0000000..414ba58 --- /dev/null +++ b/muk_fields_lobject/i18n/nl.po @@ -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" diff --git a/muk_fields_lobject/i18n/pt.po b/muk_fields_lobject/i18n/pt.po new file mode 100644 index 0000000..d9c17c8 --- /dev/null +++ b/muk_fields_lobject/i18n/pt.po @@ -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" diff --git a/muk_fields_lobject/i18n/ru.po b/muk_fields_lobject/i18n/ru.po new file mode 100644 index 0000000..c6d8980 --- /dev/null +++ b/muk_fields_lobject/i18n/ru.po @@ -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 "" diff --git a/muk_fields_lobject/models/__init__.py b/muk_fields_lobject/models/__init__.py new file mode 100644 index 0000000..3b6ae6c --- /dev/null +++ b/muk_fields_lobject/models/__init__.py @@ -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 . +# +################################################################################### + +from . import base, ir_http, ir_model_fields diff --git a/muk_fields_lobject/models/base.py b/muk_fields_lobject/models/base.py new file mode 100644 index 0000000..baf1bc9 --- /dev/null +++ b/muk_fields_lobject/models/base.py @@ -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 . +# +################################################################################### + +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() diff --git a/muk_fields_lobject/models/ir_http.py b/muk_fields_lobject/models/ir_http.py new file mode 100644 index 0000000..3854ae6 --- /dev/null +++ b/muk_fields_lobject/models/ir_http.py @@ -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 . +# +################################################################################### + +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) diff --git a/muk_fields_lobject/models/ir_model_fields.py b/muk_fields_lobject/models/ir_model_fields.py new file mode 100644 index 0000000..d9db799 --- /dev/null +++ b/muk_fields_lobject/models/ir_model_fields.py @@ -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 . +# +################################################################################### + +from odoo import fields, models + + +class IrModelField(models.Model): + + _inherit = "ir.model.fields" + + ttype = fields.Selection(selection_add=[("lobject", "lobject")]) diff --git a/muk_fields_lobject/patch/__init__.py b/muk_fields_lobject/patch/__init__.py new file mode 100644 index 0000000..93be9e8 --- /dev/null +++ b/muk_fields_lobject/patch/__init__.py @@ -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 . +# +################################################################################### + +from . import fields diff --git a/muk_fields_lobject/patch/fields.py b/muk_fields_lobject/patch/fields.py new file mode 100644 index 0000000..7a8394d --- /dev/null +++ b/muk_fields_lobject/patch/fields.py @@ -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 . +# +################################################################################### + +from odoo import fields +from odoo.addons.muk_fields_lobject.fields.lobject import LargeObject + +fields.LargeObject = LargeObject diff --git a/muk_fields_lobject/static/description/banner.png b/muk_fields_lobject/static/description/banner.png new file mode 100644 index 0000000..6a008b7 Binary files /dev/null and b/muk_fields_lobject/static/description/banner.png differ diff --git a/muk_fields_lobject/static/description/icon.png b/muk_fields_lobject/static/description/icon.png new file mode 100644 index 0000000..9fff4f9 Binary files /dev/null and b/muk_fields_lobject/static/description/icon.png differ diff --git a/muk_fields_lobject/static/description/icon.svg b/muk_fields_lobject/static/description/icon.svg new file mode 100644 index 0000000..6bcc961 --- /dev/null +++ b/muk_fields_lobject/static/description/icon.svg @@ -0,0 +1 @@ + diff --git a/muk_fields_lobject/static/description/index.html b/muk_fields_lobject/static/description/index.html new file mode 100644 index 0000000..a283ee4 --- /dev/null +++ b/muk_fields_lobject/static/description/index.html @@ -0,0 +1,227 @@ +
+
+

MuK Large Objects Field

+

PGSQL Large Objects Support for Fields

+

+ MuK IT GmbH - www.mukit.at +

+
+
+ +
+
+
+

Overview

+
+

+ 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. +

+
Psycopg2 for Python
+

+ 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. +

+
+ +
+		    	
+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
+		    	
+			
+
+
+
+ +
+ +
+ +
+
+
+ + + +
+
+
+ +
+

Help and Support

+
+ Feel free to contact us, if you need any help with your Odoo integration or + addiontal features. +
+ + +
diff --git a/muk_fields_lobject/static/description/logo.png b/muk_fields_lobject/static/description/logo.png new file mode 100644 index 0000000..9427ce3 Binary files /dev/null and b/muk_fields_lobject/static/description/logo.png differ diff --git a/muk_fields_lobject/static/description/preview.png b/muk_fields_lobject/static/description/preview.png new file mode 100644 index 0000000..1deb1cc Binary files /dev/null and b/muk_fields_lobject/static/description/preview.png differ diff --git a/muk_fields_lobject/static/description/service_customization.png b/muk_fields_lobject/static/description/service_customization.png new file mode 100644 index 0000000..3eac664 Binary files /dev/null and b/muk_fields_lobject/static/description/service_customization.png differ diff --git a/muk_fields_lobject/static/description/service_development.png b/muk_fields_lobject/static/description/service_development.png new file mode 100644 index 0000000..580d460 Binary files /dev/null and b/muk_fields_lobject/static/description/service_development.png differ diff --git a/muk_fields_lobject/static/description/service_implementation.png b/muk_fields_lobject/static/description/service_implementation.png new file mode 100644 index 0000000..d64b66b Binary files /dev/null and b/muk_fields_lobject/static/description/service_implementation.png differ diff --git a/muk_fields_lobject/static/description/service_integration.png b/muk_fields_lobject/static/description/service_integration.png new file mode 100644 index 0000000..76c5e80 Binary files /dev/null and b/muk_fields_lobject/static/description/service_integration.png differ diff --git a/muk_fields_lobject/static/description/service_support.png b/muk_fields_lobject/static/description/service_support.png new file mode 100644 index 0000000..4c530fa Binary files /dev/null and b/muk_fields_lobject/static/description/service_support.png differ diff --git a/muk_fields_lobject/tests/__init__.py b/muk_fields_lobject/tests/__init__.py new file mode 100644 index 0000000..759fa03 --- /dev/null +++ b/muk_fields_lobject/tests/__init__.py @@ -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 . +# +################################################################################### + +from . import test_lobject diff --git a/muk_fields_lobject/tests/test_lobject.py b/muk_fields_lobject/tests/test_lobject.py new file mode 100644 index 0000000..d8c53fd --- /dev/null +++ b/muk_fields_lobject/tests/test_lobject.py @@ -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 . +# +################################################################################### + +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")