Browse Source

[INIT] Version 14.0

pull/34/head
Mathias Markl 4 years ago
parent
commit
ca5a9ddb30
  1. 56
      .gitignore
  2. 36
      .travis.yml
  3. 136
      README.md
  4. 165
      muk_attachment_lobject/LICENSE
  5. 128
      muk_attachment_lobject/README.rst
  6. 43
      muk_attachment_lobject/__init__.py
  7. 41
      muk_attachment_lobject/__manifest__.py
  8. 14
      muk_attachment_lobject/doc/changelog.rst
  9. 128
      muk_attachment_lobject/doc/index.rst
  10. 37
      muk_attachment_lobject/i18n/ar.po
  11. 37
      muk_attachment_lobject/i18n/de.po
  12. 37
      muk_attachment_lobject/i18n/es.po
  13. 37
      muk_attachment_lobject/i18n/fr.po
  14. 37
      muk_attachment_lobject/i18n/hi.po
  15. 37
      muk_attachment_lobject/i18n/muk_attachment_lobject.pot
  16. 37
      muk_attachment_lobject/i18n/nl.po
  17. 37
      muk_attachment_lobject/i18n/pt.po
  18. 37
      muk_attachment_lobject/i18n/ru.po
  19. 23
      muk_attachment_lobject/models/__init__.py
  20. 98
      muk_attachment_lobject/models/ir_attachment.py
  21. BIN
      muk_attachment_lobject/static/description/banner.png
  22. BIN
      muk_attachment_lobject/static/description/icon.png
  23. 1
      muk_attachment_lobject/static/description/icon.svg
  24. 197
      muk_attachment_lobject/static/description/index.html
  25. BIN
      muk_attachment_lobject/static/description/logo.png
  26. BIN
      muk_attachment_lobject/static/description/preview.png
  27. BIN
      muk_attachment_lobject/static/description/service_customization.png
  28. BIN
      muk_attachment_lobject/static/description/service_development.png
  29. BIN
      muk_attachment_lobject/static/description/service_implementation.png
  30. BIN
      muk_attachment_lobject/static/description/service_integration.png
  31. BIN
      muk_attachment_lobject/static/description/service_support.png
  32. 23
      muk_attachment_lobject/tests/__init__.py
  33. 65
      muk_attachment_lobject/tests/test_attachment.py
  34. 61
      muk_attachment_lobject/tests/test_download.py
  35. 41
      muk_attachment_lobject/views/ir_attachment.xml
  36. 165
      muk_autovacuum/LICENSE
  37. 120
      muk_autovacuum/README.rst
  38. 23
      muk_autovacuum/__init__.py
  39. 56
      muk_autovacuum/__manifest__.py
  40. 38
      muk_autovacuum/data/rules.xml
  41. 20
      muk_autovacuum/doc/changelog.rst
  42. 120
      muk_autovacuum/doc/index.rst
  43. 402
      muk_autovacuum/i18n/ar.po
  44. 408
      muk_autovacuum/i18n/de.po
  45. 407
      muk_autovacuum/i18n/es.po
  46. 407
      muk_autovacuum/i18n/fr.po
  47. 402
      muk_autovacuum/i18n/hi.po
  48. 402
      muk_autovacuum/i18n/muk_autovacuum.pot
  49. 402
      muk_autovacuum/i18n/nl.po
  50. 402
      muk_autovacuum/i18n/pt.po
  51. 402
      muk_autovacuum/i18n/ru.po
  52. 24
      muk_autovacuum/models/__init__.py
  53. 90
      muk_autovacuum/models/ir_autovacuum.py
  54. 330
      muk_autovacuum/models/rules.py
  55. 3
      muk_autovacuum/security/ir.model.access.csv
  56. BIN
      muk_autovacuum/static/description/banner.png
  57. BIN
      muk_autovacuum/static/description/icon.png
  58. 38
      muk_autovacuum/static/description/icon.svg
  59. 128
      muk_autovacuum/static/description/index.html
  60. BIN
      muk_autovacuum/static/description/logo.png
  61. BIN
      muk_autovacuum/static/description/preview.png
  62. BIN
      muk_autovacuum/static/description/screenshot.png
  63. BIN
      muk_autovacuum/static/description/service_customization.png
  64. BIN
      muk_autovacuum/static/description/service_development.png
  65. BIN
      muk_autovacuum/static/description/service_implementation.png
  66. BIN
      muk_autovacuum/static/description/service_integration.png
  67. BIN
      muk_autovacuum/static/description/service_support.png
  68. BIN
      muk_autovacuum/static/xls/muk_autovacuum_rules.xls
  69. 23
      muk_autovacuum/tests/__init__.py
  70. 99
      muk_autovacuum/tests/test_autovacuum.py
  71. 161
      muk_autovacuum/views/rules.xml
  72. 165
      muk_dbfilter/LICENSE
  73. 120
      muk_dbfilter/README.rst
  74. 29
      muk_dbfilter/__init__.py
  75. 40
      muk_dbfilter/__manifest__.py
  76. 4
      muk_dbfilter/doc/changelog.rst
  77. 120
      muk_dbfilter/doc/index.rst
  78. 15
      muk_dbfilter/i18n/ar.po
  79. 15
      muk_dbfilter/i18n/de.po
  80. 15
      muk_dbfilter/i18n/es.po
  81. 15
      muk_dbfilter/i18n/fr.po
  82. 15
      muk_dbfilter/i18n/hi.po
  83. 15
      muk_dbfilter/i18n/muk_dbfilter.pot
  84. 15
      muk_dbfilter/i18n/nl.po
  85. 15
      muk_dbfilter/i18n/pt.po
  86. 15
      muk_dbfilter/i18n/ru.po
  87. 23
      muk_dbfilter/patch/__init__.py
  88. 38
      muk_dbfilter/patch/http.py
  89. BIN
      muk_dbfilter/static/description/banner.png
  90. BIN
      muk_dbfilter/static/description/icon.png
  91. 1
      muk_dbfilter/static/description/icon.svg
  92. 171
      muk_dbfilter/static/description/index.html
  93. BIN
      muk_dbfilter/static/description/logo.png
  94. BIN
      muk_dbfilter/static/description/preview.png
  95. BIN
      muk_dbfilter/static/description/service_customization.png
  96. BIN
      muk_dbfilter/static/description/service_development.png
  97. BIN
      muk_dbfilter/static/description/service_implementation.png
  98. BIN
      muk_dbfilter/static/description/service_integration.png
  99. BIN
      muk_dbfilter/static/description/service_support.png
  100. 165
      muk_fields_file/LICENSE

56
.gitignore

@ -1,5 +1,51 @@
.project
.pydevproject
*.pyc
.settings/
.idea
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
# C extensions
*.so
# Distribution / packaging
.Python
env/
bin/
develop-eggs/
dist/
eggs/
parts/
sdist/
var/
*.egg-info/
.installed.cfg
*.egg
*.eggs
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.cache
nosetests.xml
coverage.xml
# Pycharm
.idea
# Eclipse
.project
.pydevproject
.settings/
# Rope
.ropeproject
# Sphinx documentation
docs/_build/
# Backup files
*~
*.swp

36
.travis.yml

@ -1,36 +0,0 @@
language: python
python:
- "3.6"
notifications:
email: false
sudo: false
cache: pip
addons:
postgresql: "9.6"
apt:
packages:
- expect-dev
- python3-lxml
- python3-simplejson
- python3-serial
env:
global:
- VERSION="13.0" TESTS="1" LINT_CHECK="0"
matrix:
- TESTS="1" ODOO_REPO="odoo/odoo" MAKEPOT="1"
install:
- git clone https://github.com/OCA/maintainer-quality-tools.git ${HOME}/maintainer-quality-tools
- export PATH=${HOME}/maintainer-quality-tools/travis:${PATH}
- travis_install_nightly
script:
- travis_run_tests
after_success:
- travis_after_tests_success

136
README.md

@ -1,72 +1,64 @@
[![License: LGPL v3](https://img.shields.io/badge/License-LGPL%20v3-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0)
[![Build Status](https://travis-ci.org/muk-it/muk_base.svg?branch=13.0)](https://travis-ci.org/muk-it/muk_base)
[![codecov](https://codecov.io/gh/muk-it/muk_base/branch/13.0/graph/badge.svg)](https://codecov.io/gh/muk-it/muk_base)
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/c867f25820614ed795e7567e37bd81c0)](https://www.codacy.com/app/keshrath/muk_base?utm_source=github.com&utm_medium=referral&utm_content=muk-it/muk_base&utm_campaign=Badge_Grade)
[![Weblate](https://weblate.mukit.at/widgets/base-13/-/svg-badge.svg)](https://weblate.mukit.at/projects/base-13/)
[![Demo](https://img.shields.io/badge/demo-Try%20me-243742.svg)](https://demo.mukit.at)
# MuK Odoo Base Modules
This set of modules offers mainly utility functions and libraries that are intended to be used in other projects.
### 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 <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.
You can also view available Apps directly in our [repository] and find a
more detailed installation guide on our [website].
### 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.
[PyPI]: https://pypi.org/project/pip/
[odoo-autodiscover]: https://pypi.org/project/odoo-autodiscover/
[repository]: https://nexus.mukit.at/#browse/browse:odoo
[website]: https://mukit.at/page/open-source
[MuK IT]: https://www.mukit.at/
[![License: LGPL v3](https://img.shields.io/badge/License-LGPL%20v3-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0)
[![PyPI](https://img.shields.io/badge/Weblate-Install%20me-5d8da8.svg)](https://nexus.mukit.at/#browse/browse:odoo)
[![Weblate](https://img.shields.io/badge/Weblate-Translate%20me-0094E9.svg)](https://weblate.mukit.at)
[![Website](https://img.shields.io/badge/Website-Open%20me-243742.svg)](https://mukit.at/)
# MuK Odoo Base Modules
This set of modules offers mainly utility functions and libraries that are intended to be used in other projects.
### 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]). 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.
You can also view available Apps directly in our [repository] and find a
more detailed installation guide on our [website].
### 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.
[PyPI]: https://pypi.org/user/mukit/
[repository]: https://nexus.mukit.at/#browse/browse:odoo
[website]: https://mukit.at/page/open-source

165
muk_attachment_lobject/LICENSE

@ -1,165 +0,0 @@
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.

128
muk_attachment_lobject/README.rst

@ -1,128 +0,0 @@
============================
MuK Large Objects Attachment
============================
Provides a new attachment location to save attachments as PostgreSQL large objects.
To enable the large object storage option change the `ir_attachment.location`
parameter to `lobject`.
**Advantages over the in-database storage**
* Better RAM efficiency (This is more important for large files than for small ones.)
* Possibility to easily dump the base without the large objects (This can be useful for reproducing bugs.)
**Advantages over the file system storage**
* Large objects are transactional (fully ACID)
* They work out of the box in multi-system setups (So there is no need for NFS or similar file sharing tools.)
* Enables you to easily create backups of the entire system
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
=============
The module has an init hook, which automatically stores all attachments in
large objects. To activate this hook the config parameter `auto_storage_migration`
has to be set to `true`.
Usage
=====
This module has no direct visible effect on the system. However, existing and
future attachments are stored as large objects.
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>`_.

43
muk_attachment_lobject/__init__.py

@ -1,43 +0,0 @@
###################################################################################
#
# Copyright (c) 2017-2019 MuK IT GmbH.
#
# This file is part of MuK Large Objects Attachment
# (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 SUPERUSER_ID, api
from odoo.tools import config
from . import models
def _install_force_storage(cr, registry):
if config.get("auto_storage_migration", False):
env = api.Environment(cr, SUPERUSER_ID, {})
params = env["ir.config_parameter"].sudo()
params.set_param("ir_attachment.location", "lobject")
env["ir.attachment"].sudo().force_storage()
def _uninstall_force_storage(cr, registry):
env = api.Environment(cr, SUPERUSER_ID, {})
params = env["ir.config_parameter"].sudo()
location = params.get_param("ir_attachment.location")
if location == "lobject":
params.set_param("ir_attachment.location", "file")
env["ir.attachment"].sudo().force_storage()

41
muk_attachment_lobject/__manifest__.py

@ -1,41 +0,0 @@
###################################################################################
#
# Copyright (c) 2017-2019 MuK IT GmbH.
#
# This file is part of MuK Large Objects Attachment
# (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 Attachment",
"summary": """Large Objects Attachment Location""",
"version": "13.0.1.0.1",
"category": "Extra Tools",
"license": "LGPL-3",
"website": "http://www.mukit.at",
"live_test_url": "https://mukit.at/r/SgN",
"author": "MuK IT",
"contributors": ["Mathias Markl <mathias.markl@mukit.at>"],
"depends": ["muk_fields_lobject"],
"data": ["views/ir_attachment.xml"],
"images": ["static/description/banner.png"],
"application": False,
"installable": True,
"auto_install": False,
"post_init_hook": "_install_force_storage",
"uninstall_hook": "_uninstall_force_storage",
}

14
muk_attachment_lobject/doc/changelog.rst

@ -1,14 +0,0 @@
`2.1.0`
-------
- Added Auto Migration
`2.0.0`
-------
- Migrated to Python 3
`1.0.0`
-------
- Init version

128
muk_attachment_lobject/doc/index.rst

@ -1,128 +0,0 @@
============================
MuK Large Objects Attachment
============================
Provides a new attachment location to save attachments as PostgreSQL large objects.
To enable the large object storage option change the `ir_attachment.location`
parameter to `lobject`.
**Advantages over the in-database storage**
* Better RAM efficiency (This is more important for large files than for small ones.)
* Possibility to easily dump the base without the large objects (This can be useful for reproducing bugs.)
**Advantages over the file system storage**
* Large objects are transactional (fully ACID)
* They work out of the box in multi-system setups (So there is no need for NFS or similar file sharing tools.)
* Enables you to easily create backups of the entire system
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
=============
The module has an init hook, which automatically stores all attachments in
large objects. To activate this hook the config parameter `auto_storage_migration`
has to be set to `true`.
Usage
=====
This module has no direct visible effect on the system. However, existing and
future attachments are stored as large objects.
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>`_.

37
muk_attachment_lobject/i18n/ar.po

@ -1,37 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * muk_attachment_lobject
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-12 23:24+0000\n"
"PO-Revision-Date: 2019-07-12 23:24+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_attachment_lobject
#: model:ir.model,name:muk_attachment_lobject.model_ir_attachment
msgid "Attachment"
msgstr "مرفق"
#. module: muk_attachment_lobject
#: model:ir.model.fields,field_description:muk_attachment_lobject.field_ir_attachment__store_lobject
msgid "Data"
msgstr ""
#. module: muk_attachment_lobject
#: code:addons/muk_attachment_lobject/models/ir_attachment.py:68
#, python-format
msgid "Only administrators can execute this action."
msgstr ""
#. module: muk_attachment_lobject
#: model_terms:ir.ui.view,arch_db:muk_attachment_lobject.view_attachment_form
msgid "Storage"
msgstr ""

37
muk_attachment_lobject/i18n/de.po

@ -1,37 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * muk_attachment_lobject
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-12 23:24+0000\n"
"PO-Revision-Date: 2019-07-12 23:24+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_attachment_lobject
#: model:ir.model,name:muk_attachment_lobject.model_ir_attachment
msgid "Attachment"
msgstr "Dateianhang"
#. module: muk_attachment_lobject
#: model:ir.model.fields,field_description:muk_attachment_lobject.field_ir_attachment__store_lobject
msgid "Data"
msgstr "Daten"
#. module: muk_attachment_lobject
#: code:addons/muk_attachment_lobject/models/ir_attachment.py:68
#, python-format
msgid "Only administrators can execute this action."
msgstr ""
#. module: muk_attachment_lobject
#: model_terms:ir.ui.view,arch_db:muk_attachment_lobject.view_attachment_form
msgid "Storage"
msgstr "Speicher"

37
muk_attachment_lobject/i18n/es.po

@ -1,37 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * muk_attachment_lobject
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-12 23:25+0000\n"
"PO-Revision-Date: 2019-07-12 23:25+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_attachment_lobject
#: model:ir.model,name:muk_attachment_lobject.model_ir_attachment
msgid "Attachment"
msgstr "Adjunto"
#. module: muk_attachment_lobject
#: model:ir.model.fields,field_description:muk_attachment_lobject.field_ir_attachment__store_lobject
msgid "Data"
msgstr ""
#. module: muk_attachment_lobject
#: code:addons/muk_attachment_lobject/models/ir_attachment.py:68
#, python-format
msgid "Only administrators can execute this action."
msgstr ""
#. module: muk_attachment_lobject
#: model_terms:ir.ui.view,arch_db:muk_attachment_lobject.view_attachment_form
msgid "Storage"
msgstr ""

37
muk_attachment_lobject/i18n/fr.po

@ -1,37 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * muk_attachment_lobject
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-12 23:25+0000\n"
"PO-Revision-Date: 2019-07-12 23:25+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_attachment_lobject
#: model:ir.model,name:muk_attachment_lobject.model_ir_attachment
msgid "Attachment"
msgstr "Pièce jointe"
#. module: muk_attachment_lobject
#: model:ir.model.fields,field_description:muk_attachment_lobject.field_ir_attachment__store_lobject
msgid "Data"
msgstr ""
#. module: muk_attachment_lobject
#: code:addons/muk_attachment_lobject/models/ir_attachment.py:68
#, python-format
msgid "Only administrators can execute this action."
msgstr ""
#. module: muk_attachment_lobject
#: model_terms:ir.ui.view,arch_db:muk_attachment_lobject.view_attachment_form
msgid "Storage"
msgstr ""

37
muk_attachment_lobject/i18n/hi.po

@ -1,37 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * muk_attachment_lobject
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-12 23:25+0000\n"
"PO-Revision-Date: 2019-07-12 23:25+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_attachment_lobject
#: model:ir.model,name:muk_attachment_lobject.model_ir_attachment
msgid "Attachment"
msgstr ""
#. module: muk_attachment_lobject
#: model:ir.model.fields,field_description:muk_attachment_lobject.field_ir_attachment__store_lobject
msgid "Data"
msgstr ""
#. module: muk_attachment_lobject
#: code:addons/muk_attachment_lobject/models/ir_attachment.py:68
#, python-format
msgid "Only administrators can execute this action."
msgstr ""
#. module: muk_attachment_lobject
#: model_terms:ir.ui.view,arch_db:muk_attachment_lobject.view_attachment_form
msgid "Storage"
msgstr ""

37
muk_attachment_lobject/i18n/muk_attachment_lobject.pot

@ -1,37 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * muk_attachment_lobject
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-12 23:24+0000\n"
"PO-Revision-Date: 2019-07-12 23:24+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_attachment_lobject
#: model:ir.model,name:muk_attachment_lobject.model_ir_attachment
msgid "Attachment"
msgstr ""
#. module: muk_attachment_lobject
#: model:ir.model.fields,field_description:muk_attachment_lobject.field_ir_attachment__store_lobject
msgid "Data"
msgstr ""
#. module: muk_attachment_lobject
#: code:addons/muk_attachment_lobject/models/ir_attachment.py:68
#, python-format
msgid "Only administrators can execute this action."
msgstr ""
#. module: muk_attachment_lobject
#: model_terms:ir.ui.view,arch_db:muk_attachment_lobject.view_attachment_form
msgid "Storage"
msgstr ""

37
muk_attachment_lobject/i18n/nl.po

@ -1,37 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * muk_attachment_lobject
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-12 23:25+0000\n"
"PO-Revision-Date: 2019-07-12 23:25+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_attachment_lobject
#: model:ir.model,name:muk_attachment_lobject.model_ir_attachment
msgid "Attachment"
msgstr "Bijlage"
#. module: muk_attachment_lobject
#: model:ir.model.fields,field_description:muk_attachment_lobject.field_ir_attachment__store_lobject
msgid "Data"
msgstr ""
#. module: muk_attachment_lobject
#: code:addons/muk_attachment_lobject/models/ir_attachment.py:68
#, python-format
msgid "Only administrators can execute this action."
msgstr ""
#. module: muk_attachment_lobject
#: model_terms:ir.ui.view,arch_db:muk_attachment_lobject.view_attachment_form
msgid "Storage"
msgstr ""

37
muk_attachment_lobject/i18n/pt.po

@ -1,37 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * muk_attachment_lobject
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-12 23:26+0000\n"
"PO-Revision-Date: 2019-07-12 23:26+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_attachment_lobject
#: model:ir.model,name:muk_attachment_lobject.model_ir_attachment
msgid "Attachment"
msgstr "Anexo"
#. module: muk_attachment_lobject
#: model:ir.model.fields,field_description:muk_attachment_lobject.field_ir_attachment__store_lobject
msgid "Data"
msgstr ""
#. module: muk_attachment_lobject
#: code:addons/muk_attachment_lobject/models/ir_attachment.py:68
#, python-format
msgid "Only administrators can execute this action."
msgstr ""
#. module: muk_attachment_lobject
#: model_terms:ir.ui.view,arch_db:muk_attachment_lobject.view_attachment_form
msgid "Storage"
msgstr ""

37
muk_attachment_lobject/i18n/ru.po

@ -1,37 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * muk_attachment_lobject
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-12 23:26+0000\n"
"PO-Revision-Date: 2019-07-12 23:26+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_attachment_lobject
#: model:ir.model,name:muk_attachment_lobject.model_ir_attachment
msgid "Attachment"
msgstr "Приложение"
#. module: muk_attachment_lobject
#: model:ir.model.fields,field_description:muk_attachment_lobject.field_ir_attachment__store_lobject
msgid "Data"
msgstr ""
#. module: muk_attachment_lobject
#: code:addons/muk_attachment_lobject/models/ir_attachment.py:68
#, python-format
msgid "Only administrators can execute this action."
msgstr ""
#. module: muk_attachment_lobject
#: model_terms:ir.ui.view,arch_db:muk_attachment_lobject.view_attachment_form
msgid "Storage"
msgstr ""

23
muk_attachment_lobject/models/__init__.py

@ -1,23 +0,0 @@
###################################################################################
#
# Copyright (c) 2017-2019 MuK IT GmbH.
#
# This file is part of MuK Large Objects Attachment
# (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 ir_attachment

98
muk_attachment_lobject/models/ir_attachment.py

@ -1,98 +0,0 @@
###################################################################################
#
# Copyright (c) 2017-2019 MuK IT GmbH.
#
# This file is part of MuK Large Objects Attachment
# (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 logging
from odoo import api, models
from odoo.addons.muk_fields_lobject.fields.lobject import LargeObject
_logger = logging.getLogger(__name__)
class LObjectIrAttachment(models.Model):
_inherit = "ir.attachment"
# ----------------------------------------------------------
# Database
# ----------------------------------------------------------
store_lobject = LargeObject(string="Data")
# ----------------------------------------------------------
# Helper
# ----------------------------------------------------------
@api.model
def _get_storage_domain(self, storage):
if storage == "lobject":
return [("store_lobject", "=", False)]
return super(LObjectIrAttachment, self)._get_storage_domain(storage)
# ----------------------------------------------------------
# Function
# ----------------------------------------------------------
@api.model
def storage_locations(self):
locations = super(LObjectIrAttachment, self).storage_locations()
locations.append("lobject")
return locations
# ----------------------------------------------------------
# Read
# ----------------------------------------------------------
@api.depends("store_lobject")
def _compute_datas(self):
bin_size = self._context.get("bin_size")
for attach in self:
if attach.store_lobject:
if bin_size:
attach.datas = attach.with_context(
{"human_size": True}
).store_lobject
else:
attach.datas = attach.with_context({"base64": True}).store_lobject
else:
super(LObjectIrAttachment, attach)._compute_datas()
# ----------------------------------------------------------
# Create, Write, Delete
# ----------------------------------------------------------
def _get_datas_related_values(self, data, mimetype):
if self._storage() == "lobject":
bin_data = base64.b64decode(data) if data else b""
values = {
"file_size": len(bin_data),
"checksum": self._compute_checksum(bin_data),
"index_content": self._index(bin_data, mimetype),
"store_lobject": bin_data,
"store_fname": False,
"db_datas": False,
}
return values
return super(LObjectIrAttachment, self)._get_datas_related_values(
data, mimetype
)

BIN
muk_attachment_lobject/static/description/banner.png

Before

Width: 880  |  Height: 440  |  Size: 46 KiB

BIN
muk_attachment_lobject/static/description/icon.png

Before

Width: 250  |  Height: 250  |  Size: 10 KiB

1
muk_attachment_lobject/static/description/icon.svg
File diff suppressed because it is too large
View File

197
muk_attachment_lobject/static/description/index.html

@ -1,197 +0,0 @@
<section class="oe_container">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan">MuK Large Objects Attachment</h2>
<h3 class="oe_slogan">Large Objects Attachment Location</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 new attachment location to save attachment as large
objects. To enable the large object storage option change the
<code>ir_attachment.location</code>
parameter to
<code>lobject</code>
.
</p>
<h5 style="padding-top: 10px;">
Advantages over the in-database storage
</h5>
<ul>
<li>
Better RAM efficiency (This is more important for large files than
for small ones.)
</li>
<li>
Possibility to easily dump the base without the large objects (This
can be useful for reproducing bugs.)
</li>
</ul>
<h5 style="padding-top: 10px;">
Advantages over the file system storage
</h5>
<ul>
<li>Large objects are transactional (fully ACID)</li>
<li>
They work out of the box in multi-system setups (So there is no need
for NFS or similar file sharing tools.)
</li>
<li>Enables you to easily create backups of the entire system</li>
</ul>
</div>
</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>

BIN
muk_attachment_lobject/static/description/logo.png

Before

Width: 500  |  Height: 500  |  Size: 37 KiB

BIN
muk_attachment_lobject/static/description/preview.png

Before

Width: 1000  |  Height: 200  |  Size: 32 KiB

BIN
muk_attachment_lobject/static/description/service_customization.png

Before

Width: 250  |  Height: 250  |  Size: 27 KiB

BIN
muk_attachment_lobject/static/description/service_development.png

Before

Width: 250  |  Height: 250  |  Size: 28 KiB

BIN
muk_attachment_lobject/static/description/service_implementation.png

Before

Width: 250  |  Height: 250  |  Size: 26 KiB

BIN
muk_attachment_lobject/static/description/service_integration.png

Before

Width: 250  |  Height: 250  |  Size: 24 KiB

BIN
muk_attachment_lobject/static/description/service_support.png

Before

Width: 250  |  Height: 250  |  Size: 24 KiB

23
muk_attachment_lobject/tests/__init__.py

@ -1,23 +0,0 @@
###################################################################################
#
# Copyright (c) 2017-2019 MuK IT GmbH.
#
# This file is part of MuK Large Objects Attachment
# (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_attachment, test_download

65
muk_attachment_lobject/tests/test_attachment.py

@ -1,65 +0,0 @@
###################################################################################
#
# Copyright (c) 2017-2019 MuK IT GmbH.
#
# This file is part of MuK Large Objects Attachment
# (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 logging
import unittest
from odoo.tests import common
_logger = logging.getLogger(__name__)
class AttachmentTestCase(common.HttpCase):
def setUp(self):
super(AttachmentTestCase, self).setUp()
self.attachment = self.env["ir.attachment"].sudo()
self.params = self.env["ir.config_parameter"].sudo()
self.location = self.params.get_param("ir_attachment.location")
self.params.set_param("ir_attachment.location", "lobject")
def tearDown(self):
self.params.set_param("ir_attachment.location", self.location)
super(AttachmentTestCase, self).tearDown()
def test_attachment(self):
attach = self.attachment.create(
{"name": "Test", "datas": base64.b64encode(b"\xff data")}
)
self.assertTrue(attach.datas)
self.assertTrue(attach.store_lobject)
self.assertTrue(attach.with_context({"bin_size": True}).datas)
self.assertTrue(attach.with_context({"bin_size": True}).store_lobject)
self.assertTrue(attach.with_context({"human_size": True}).store_lobject)
self.assertTrue(attach.with_context({"base64": True}).store_lobject)
self.assertTrue(attach.with_context({"stream": True}).store_lobject)
oid = attach.with_context({"oid": True}).store_lobject
self.assertTrue(oid)
attach.write({"datas": base64.b64encode(b"\xff data")})
self.assertTrue(oid != attach.with_context({"oid": True}).store_lobject)
self.assertTrue(attach.export_data(["datas"]))
self.assertTrue(attach.export_data(["datas"], raw_data=True))
attach.unlink()
@unittest.skip("The test takes a long time and is therefore skipped by default.")
def test_migration(self):
self.attachment.force_storage()

61
muk_attachment_lobject/tests/test_download.py

@ -1,61 +0,0 @@
###################################################################################
#
# Copyright (c) 2017-2019 MuK IT GmbH.
#
# This file is part of MuK Large Objects Attachment
# (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 logging
import os
from odoo.tests import common
_path = os.path.dirname(os.path.dirname(__file__))
_logger = logging.getLogger(__name__)
class DownloadTestCase(common.HttpCase):
def setUp(self):
super(DownloadTestCase, self).setUp()
self.attachment = self.env["ir.attachment"].sudo()
self.params = self.env["ir.config_parameter"].sudo()
self.location = self.params.get_param("ir_attachment.location")
self.params.set_param("ir_attachment.location", "lobject")
def tearDown(self):
self.params.set_param("ir_attachment.location", self.location)
super(DownloadTestCase, self).tearDown()
def test_attachment_download(self):
self.authenticate("admin", "admin")
attach_01 = self.attachment.create(
{"name": "Test_01", "datas": base64.b64encode(b"\xff data")}
)
attach_02 = self.attachment.create({"name": "Test_02"})
self.assertTrue(attach_01.datas)
self.assertFalse(attach_02.datas)
data = {
"model": "ir.attachment",
"field": "store_lobject",
"filename_field": "datas_fname",
}
data.update({"id": attach_01.id})
self.assertTrue(self.url_open("/binary/content", data=data))
data.update({"id": attach_02.id})
self.assertTrue(self.url_open("/binary/content", data=data))

41
muk_attachment_lobject/views/ir_attachment.xml

@ -1,41 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2017-2019 MuK IT GmbH.
This file is part of MuK Large Objects Attachment
(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/>.
-->
<odoo>
<record id="view_attachment_form" model="ir.ui.view">
<field name="name">ir_attachment.form</field>
<field name="model">ir.attachment</field>
<field name="inherit_id" ref="base.view_attachment_form"/>
<field name="arch" type="xml">
<xpath expr="//group[@name='storage']" position="inside">
<group string="Storage" name="storage" groups="base.group_no_one">
<field name="store_lobject" readonly="1" attrs="{'invisible':[('store_lobject','=',False)]}"/>
</group>
</xpath>
</field>
</record>
</odoo>

165
muk_autovacuum/LICENSE

@ -1,165 +0,0 @@
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.

120
muk_autovacuum/README.rst

@ -1,120 +0,0 @@
==============
MuK Autovacuum
==============
Allows the administrator to create rules to automatically garbage collect
a certain model. Every rule can have a different time interval additional
constraints. An extra constraint can be for example to only delete inactive
records.
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. 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 odoo11-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 OPL-1, you will receive access data when you purchase
the module. If the modules were not purchased directly from
`MuK IT <https://www.mukit.at/>`_ please contact our support (support@mukit.at)
with a confirmation of 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
=============
To configure this module, you need to:
#. Go to *Settings* while being in debug mode.
#. Afterwards go to *Technical -> Automation -> Auto Vacuum Rules*.
#. And create a new rule.
Usage
=============
This module has no direct visible effect on the system. The garbage collections
happens during the autovacuum cron job.
Credits
=======
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).

23
muk_autovacuum/__init__.py

@ -1,23 +0,0 @@
###################################################################################
#
# Copyright (c) 2017-2019 MuK IT GmbH.
#
# This file is part of MuK Autovacuum
# (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 models

56
muk_autovacuum/__manifest__.py

@ -1,56 +0,0 @@
###################################################################################
#
# Copyright (c) 2017-2019 MuK IT GmbH.
#
# This file is part of MuK Autovacuum
# (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 Autovacuum',
'summary': 'Configure automatic garbage collection',
'version': '13.0.3.0.1',
'category': 'Extra Tools',
'license': 'LGPL-3',
'author': 'MuK IT',
'website': 'https://www.mukit.at',
'live_test_url': 'https://mukit.at/r/SgN',
'contributors': [
'Mathias Markl <mathias.markl@mukit.at>',
],
'depends': [
'muk_utils',
],
'data': [
'security/ir.model.access.csv',
'views/rules.xml',
'data/rules.xml',
],
'qweb': [
'static/src/xml/*.xml',
],
'images': [
'static/description/banner.png'
],
'external_dependencies': {
'python': [],
'bin': [],
},
'application': False,
'installable': True,
'auto_install': False,
}

38
muk_autovacuum/data/rules.xml

@ -1,38 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2017-2019 MuK IT GmbH.
This file is part of MuK Autovacuum
(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/>.
-->
<odoo noupdate="1">
<record id="data_autovacuum_logs" model="muk_autovacuum.rules">
<field name="name">Delete Logs after 2 Weeks</field>
<field name="model" ref="base.model_ir_logging"/>
<field name="time_field" ref="base.field_ir_logging__create_date"/>
<field name="active" eval="False" />
<field name="state">time</field>
<field name="time_type">weeks</field>
<field name="time">2</field>
<field name="protect_starred" eval="False" />
</record>
</odoo>

20
muk_autovacuum/doc/changelog.rst

@ -1,20 +0,0 @@
`2.1.0`
-------
- Added Python Expressions
`2.0.0`
-------
- Migrated to Python 3
`1.1.0`
-------
- Add field selector
`1.0.0`
-------
- Init version

120
muk_autovacuum/doc/index.rst

@ -1,120 +0,0 @@
==============
MuK Autovacuum
==============
Allows the administrator to create rules to automatically garbage collect
a certain model. Every rule can have a different time interval additional
constraints. An extra constraint can be for example to only delete inactive
records.
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. 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 odoo11-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 OPL-1, you will receive access data when you purchase
the module. If the modules were not purchased directly from
`MuK IT <https://www.mukit.at/>`_ please contact our support (support@mukit.at)
with a confirmation of 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
=============
To configure this module, you need to:
#. Go to *Settings* while being in debug mode.
#. Afterwards go to *Technical -> Automation -> Auto Vacuum Rules*.
#. And create a new rule.
Usage
=============
This module has no direct visible effect on the system. The garbage collections
happens during the autovacuum cron job.
Credits
=======
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).

402
muk_autovacuum/i18n/ar.po

@ -1,402 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * muk_autovacuum
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-12 23:43+0000\n"
"PO-Revision-Date: 2019-07-12 23:43+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_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>Warning</code>: Warning Exception to use with <code>raise</code>"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>b64encode</code>, <code>b64decode</code>: Base64 converter"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>date_format</code>, <code>datetime_format</code>: server date and time formats"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>env</code>: Odoo Environment on which the rule is triggered"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>logger.info(message)</code>: Python logging framework"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>model</code>: Odoo Model of the record on which the rule is triggered"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>time</code>, <code>datetime</code>, <code>dateutil</code>, <code>timezone</code>: useful Python libraries"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>uid</code>, <code>user</code>: User on which the rule is triggered"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__active
msgid "Active"
msgstr "نشط"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
msgid "All"
msgstr "الكل"
#. module: muk_autovacuum
#: model:ir.actions.act_window,name:muk_autovacuum.action_autovacuum_rule
#: model:ir.model,name:muk_autovacuum.model_muk_autovacuum_rules
#: model:ir.ui.menu,name:muk_autovacuum.menu_autovacuum_rules
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_tree
msgid "Auto Vacuum Rules"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model,name:muk_autovacuum.model_ir_autovacuum
msgid "Automatic Vacuum"
msgstr "تفريغ تلقائي"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__code
msgid "Code"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Code Based"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Code Settings"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__code
msgid "Code which will be executed during the clean up."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__create_uid
msgid "Created by"
msgstr "أنشئ بواسطة"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__create_date
msgid "Created on"
msgstr "أنشئ في"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Days"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__domain
msgid "Delete all records which match the domain."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__time
msgid "Delete older data than x."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__size
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__size_parameter_value
msgid "Delete records with am index greater than x."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__display_name
msgid "Display Name"
msgstr "اسم العرض"
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__protect_starred
msgid "Do not delete starred records.\n"
" Checks for the following fields:\n"
" - starred\n"
" - favorite\n"
" - is_starred\n"
" - is_favorite"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__domain
msgid "Domain"
msgstr "النطاق"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Domain Based"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Domain Settings"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Enter Python code here. Help about Python expression is available in the help tab of this document."
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,size_type:0
msgid "Fixed Value"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:64
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:74
#, python-format
msgid "GC domain: %s"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:71
#, python-format
msgid "GC domain: [] order: %s limit: %s"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:87
#, python-format
msgid "GC'd %s %s records"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:83
#, python-format
msgid "GC'd %s attachments from %s entries"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
msgid "Group By"
msgstr "تجميع حسب"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Help"
msgstr "المساعدة"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Help with Python expressions"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Hours"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__id
msgid "ID"
msgstr "المعرف"
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/rules.py:290
#, python-format
msgid "Import Template for Auto Vacuum Rules"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules____last_update
msgid "Last Modified on"
msgstr "آخر تعديل في"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__write_uid
msgid "Last Updated by"
msgstr "آخر تحديث بواسطة"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__write_date
msgid "Last Updated on"
msgstr "آخر تحديث في"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Minutes"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__model
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
msgid "Model"
msgstr "النموذج"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__model_name
msgid "Model Name"
msgstr "إسم النموذج"
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__model
msgid "Model on which the rule is applied."
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Months"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__name
msgid "Name"
msgstr "الاسم"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__only_inactive
msgid "Only Archived"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__only_attachments
msgid "Only Attachments"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__only_inactive
msgid "Only delete archived records."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__only_attachments
msgid "Only delete record attachments."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__size_order
msgid "Order by which the index is defined."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__protect_starred
msgid "Protect Starred"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__state
msgid "Rule Type"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/rules.py:330
#, python-format
msgid "Rule validation has failed!"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__sequence
msgid "Sequence"
msgstr "التسلسل"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size
msgid "Size"
msgstr "الحجم"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Size Based"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_order
msgid "Size Order"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Size Settings"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_type
msgid "Size Type"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_parameter_value
msgid "Size Value"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_parameter
#: selection:muk_autovacuum.rules,size_type:0
msgid "System Parameter"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__time
msgid "Time"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Time Based"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__time_field
msgid "Time Field"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Time Settings"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__time_type
msgid "Time Unit"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Various fields may use Python code or Python expressions. The following variables can be used:"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Weeks"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Years"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "e.g. Delete Logs after 30 Days"
msgstr ""

408
muk_autovacuum/i18n/de.po

@ -1,408 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * muk_autovacuum
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-12 23:43+0000\n"
"PO-Revision-Date: 2019-07-12 23:43+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_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>Warning</code>: Warning Exception to use with <code>raise</code>"
msgstr "<code>Warnung:</code> Warnausnahme, die bei <code>einer Erhöhung</code> Anwendung findet"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>b64encode</code>, <code>b64decode</code>: Base64 converter"
msgstr "<code>b64encode</code>, <code>b64decode</code>: Base64 Converter"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>date_format</code>, <code>datetime_format</code>: server date and time formats"
msgstr "<code>date_format</code>, <code>datetime_format</code>: Serverdatum und Zeitformate"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>env</code>: Odoo Environment on which the rule is triggered"
msgstr "<code>env</code>: Odoo Umgebung in welcher die Regel angewendet wird"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>logger.info(message)</code>: Python logging framework"
msgstr "<code>logger.info(message)</code>: Python-Protokollierungs-Framework"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>model</code>: Odoo Model of the record on which the rule is triggered"
msgstr "<code>model</code>: Odoo Modell des Datensatzes, auf dem die Regel angewendet wird"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>time</code>, <code>datetime</code>, <code>dateutil</code>, <code>timezone</code>: useful Python libraries"
msgstr "<code>time</code>, <code>datetime</code>, <code>dateutil</code>, <code>timezone:</code> nützliche Python-Bibliotheken"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>uid</code>, <code>user</code>: User on which the rule is triggered"
msgstr "<code>uid</code>, <code>Benutzer</code>: Benutzer an dem die Regel angewendet wird"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__active
msgid "Active"
msgstr "Aktiv"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
msgid "All"
msgstr "Alle"
#. module: muk_autovacuum
#: model:ir.actions.act_window,name:muk_autovacuum.action_autovacuum_rule
#: model:ir.model,name:muk_autovacuum.model_muk_autovacuum_rules
#: model:ir.ui.menu,name:muk_autovacuum.menu_autovacuum_rules
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_tree
msgid "Auto Vacuum Rules"
msgstr "Auto Vacuum Regeln"
#. module: muk_autovacuum
#: model:ir.model,name:muk_autovacuum.model_ir_autovacuum
msgid "Automatic Vacuum"
msgstr "Automatisch aufräumen"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__code
msgid "Code"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Code Based"
msgstr "Codebasiert"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Code Settings"
msgstr "Codeeinstellungen"
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__code
msgid "Code which will be executed during the clean up."
msgstr "Code, der während der Bereinigung ausgeführt wird."
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__create_uid
msgid "Created by"
msgstr "Erstellt von"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__create_date
msgid "Created on"
msgstr "Erstellt am"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Days"
msgstr "Tage"
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__domain
msgid "Delete all records which match the domain."
msgstr "Löschen Sie alle Datensätze, die mit der Domäne übereinstimmen."
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__time
msgid "Delete older data than x."
msgstr "Ältere Daten als x löschen."
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__size
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__size_parameter_value
msgid "Delete records with am index greater than x."
msgstr "Datensätze mit einem Index größer als x löschen."
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__display_name
msgid "Display Name"
msgstr "Anzeigename"
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__protect_starred
msgid "Do not delete starred records.\n"
" Checks for the following fields:\n"
" - starred\n"
" - favorite\n"
" - is_starred\n"
" - is_favorite"
msgstr "Löscht keine markierten Datensätze.\n"
" Überprüft die folgenden Felder:\n"
" - mit Sternen übersät\n"
" - starred\n"
" - favorite\n"
" - is_starred\n"
" - is_favorite"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__domain
msgid "Domain"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Domain Based"
msgstr "Domainenbasiert"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Domain Settings"
msgstr "Domaineinstellungen"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Enter Python code here. Help about Python expression is available in the help tab of this document."
msgstr "Geben Sie Pyhton-Code hier ein. Hife zu Python-Ausdrücken ist in der Hilfe-Registerkarte dieses Dokuments verfügbar."
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,size_type:0
msgid "Fixed Value"
msgstr "Fixpunktwert"
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:64
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:74
#, python-format
msgid "GC domain: %s"
msgstr "GC Domain: %s"
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:71
#, python-format
msgid "GC domain: [] order: %s limit: %s"
msgstr "GC Domain: [] order: %s limit: %s"
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:87
#, python-format
msgid "GC'd %s %s records"
msgstr "GC'd %s %s Aufnahmen"
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:83
#, python-format
msgid "GC'd %s attachments from %s entries"
msgstr "GC'd %s Anhänge aus %s Einträgen"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
msgid "Group By"
msgstr "Gruppieren nach"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Help"
msgstr "Hilfe"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Help with Python expressions"
msgstr "Hilfe mit Python-Ausdrücken"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Hours"
msgstr "Stunden"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__id
msgid "ID"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/rules.py:290
#, python-format
msgid "Import Template for Auto Vacuum Rules"
msgstr "Importvorlage für die automatischen Aufräumregeln"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules____last_update
msgid "Last Modified on"
msgstr "Zuletzt geändert am"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__write_uid
msgid "Last Updated by"
msgstr "Zuletzt aktualisiert durch"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__write_date
msgid "Last Updated on"
msgstr "Zuletzt aktualisiert am"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Minutes"
msgstr "Minuten"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__model
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
msgid "Model"
msgstr "Modell"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__model_name
msgid "Model Name"
msgstr "Modellname"
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__model
msgid "Model on which the rule is applied."
msgstr "Modell, auf das die Regel angewendet wird."
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Months"
msgstr "Monate"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__name
msgid "Name"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__only_inactive
msgid "Only Archived"
msgstr "Nur Archiviert"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__only_attachments
msgid "Only Attachments"
msgstr "Nur Anhänge"
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__only_inactive
msgid "Only delete archived records."
msgstr "Löschen Sie nur archivierte Sätze."
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__only_attachments
msgid "Only delete record attachments."
msgstr "Löschen Sie nur Datensatzanhänge."
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__size_order
msgid "Order by which the index is defined."
msgstr "Reihenfolge, in der der Index definiert ist."
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__protect_starred
msgid "Protect Starred"
msgstr "Schützt Favoriten"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__state
msgid "Rule Type"
msgstr "Regeltyp"
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/rules.py:330
#, python-format
msgid "Rule validation has failed!"
msgstr "Die Regelvalidierung ist fehlgeschlagen!"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__sequence
msgid "Sequence"
msgstr "Nummernfolge"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size
msgid "Size"
msgstr "Größe"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Size Based"
msgstr "Größenbasierend"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_order
msgid "Size Order"
msgstr "Größensortierung"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Size Settings"
msgstr "Größeneinstellung"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_type
msgid "Size Type"
msgstr "Größe Typ"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_parameter_value
msgid "Size Value"
msgstr "Größenwert"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_parameter
#: selection:muk_autovacuum.rules,size_type:0
msgid "System Parameter"
msgstr "Systemparameter"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__time
msgid "Time"
msgstr "Zeit"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Time Based"
msgstr "Zeitbasiert"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__time_field
msgid "Time Field"
msgstr "Zeitfeld"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Time Settings"
msgstr "Zeiteinstellungen"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__time_type
msgid "Time Unit"
msgstr "Zeiteinheit"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Various fields may use Python code or Python expressions. The following variables can be used:"
msgstr "Einige Felder erlauben Python Code oder Python Ausdrücke. Die folgenden Variablen können verwendet werden:"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Weeks"
msgstr "Wochen"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Years"
msgstr "Jahre"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "e.g. Delete Logs after 30 Days"
msgstr "z.B. Protokolle nach 30 Tagen löschen"

407
muk_autovacuum/i18n/es.po

@ -1,407 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * muk_autovacuum
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-12 23:43+0000\n"
"PO-Revision-Date: 2019-07-12 23:43+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_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>Warning</code>: Warning Exception to use with <code>raise</code>"
msgstr "<code>Advertencia</code>: Excepción de Advertencia para usar con <code>aumento</code>"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>b64encode</code>, <code>b64decode</code>: Base64 converter"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>date_format</code>, <code>datetime_format</code>: server date and time formats"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>env</code>: Odoo Environment on which the rule is triggered"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>logger.info(message)</code>: Python logging framework"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>model</code>: Odoo Model of the record on which the rule is triggered"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>time</code>, <code>datetime</code>, <code>dateutil</code>, <code>timezone</code>: useful Python libraries"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>uid</code>, <code>user</code>: User on which the rule is triggered"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__active
msgid "Active"
msgstr "Activo"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
msgid "All"
msgstr "Todos"
#. module: muk_autovacuum
#: model:ir.actions.act_window,name:muk_autovacuum.action_autovacuum_rule
#: model:ir.model,name:muk_autovacuum.model_muk_autovacuum_rules
#: model:ir.ui.menu,name:muk_autovacuum.menu_autovacuum_rules
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_tree
msgid "Auto Vacuum Rules"
msgstr "Reglas de vacío automático"
#. module: muk_autovacuum
#: model:ir.model,name:muk_autovacuum.model_ir_autovacuum
msgid "Automatic Vacuum"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__code
msgid "Code"
msgstr "Código"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Code Based"
msgstr "Basado en código"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Code Settings"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__code
msgid "Code which will be executed during the clean up."
msgstr "Código que se ejecutará durante la limpieza."
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__create_uid
msgid "Created by"
msgstr "Creado por"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__create_date
msgid "Created on"
msgstr "Creado el"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Days"
msgstr "Días"
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__domain
msgid "Delete all records which match the domain."
msgstr "Elimina todos los registros que coincidan con el dominio."
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__time
msgid "Delete older data than x."
msgstr "Borrar datos anteriores a x."
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__size
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__size_parameter_value
msgid "Delete records with am index greater than x."
msgstr "Eliminar registros con un índice am mayor que x."
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__display_name
msgid "Display Name"
msgstr "Nombre mostrado"
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__protect_starred
msgid "Do not delete starred records.\n"
" Checks for the following fields:\n"
" - starred\n"
" - favorite\n"
" - is_starred\n"
" - is_favorite"
msgstr "No borre los registros marcados con asterisco.\n"
" Verifica los siguientes campos:\n"
" - marcado\n"
" - preferido\n"
" - is_starred\n"
" - is_favorite"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__domain
msgid "Domain"
msgstr "Dominio"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Domain Based"
msgstr "Basado en dominio"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Domain Settings"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Enter Python code here. Help about Python expression is available in the help tab of this document."
msgstr "Introduzca código Python aquí. Ayuda disponible sobre expresiones Python en la pestaña de ayuda de este documento."
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,size_type:0
msgid "Fixed Value"
msgstr "Valor Fijo"
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:64
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:74
#, python-format
msgid "GC domain: %s"
msgstr "Dominio GC: %s"
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:71
#, python-format
msgid "GC domain: [] order: %s limit: %s"
msgstr "Dominio GC: [] orden: Límite en %s: %s"
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:87
#, python-format
msgid "GC'd %s %s records"
msgstr "GC'd %s %s registros"
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:83
#, python-format
msgid "GC'd %s attachments from %s entries"
msgstr "GC'd %s adjuntos de las entradas %s"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
msgid "Group By"
msgstr "Agrupar por"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Help"
msgstr "Ayuda"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Help with Python expressions"
msgstr "Ayuda con expresiones Python"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Hours"
msgstr "Horas"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__id
msgid "ID"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/rules.py:290
#, python-format
msgid "Import Template for Auto Vacuum Rules"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules____last_update
msgid "Last Modified on"
msgstr "Última modificación en"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__write_uid
msgid "Last Updated by"
msgstr "Última actualización por"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__write_date
msgid "Last Updated on"
msgstr "Última actualización el"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Minutes"
msgstr "Actas"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__model
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
msgid "Model"
msgstr "Modelo"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__model_name
msgid "Model Name"
msgstr "Nombre del modelo"
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__model
msgid "Model on which the rule is applied."
msgstr "Modelo sobre el que se aplica la norma."
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Months"
msgstr "Meses"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__name
msgid "Name"
msgstr "Nombre"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__only_inactive
msgid "Only Archived"
msgstr "Sólo archivado"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__only_attachments
msgid "Only Attachments"
msgstr "Sólo archivos adjuntos"
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__only_inactive
msgid "Only delete archived records."
msgstr "Borrar sólo registros archivados."
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__only_attachments
msgid "Only delete record attachments."
msgstr "Sólo borre los archivos adjuntos de los registros."
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__size_order
msgid "Order by which the index is defined."
msgstr "Orden por el que se define el índice."
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__protect_starred
msgid "Protect Starred"
msgstr "Proteger Estrellado"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__state
msgid "Rule Type"
msgstr "Clase de regla"
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/rules.py:330
#, python-format
msgid "Rule validation has failed!"
msgstr "La validación de reglas ha fallado!"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__sequence
msgid "Sequence"
msgstr "Secuencia"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size
msgid "Size"
msgstr "Tamaño"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Size Based"
msgstr "Basado en el tamaño"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_order
msgid "Size Order"
msgstr "Orden de tallas"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Size Settings"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_type
msgid "Size Type"
msgstr "Tamaño Tipo"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_parameter_value
msgid "Size Value"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_parameter
#: selection:muk_autovacuum.rules,size_type:0
msgid "System Parameter"
msgstr "Parámetros del sistema"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__time
msgid "Time"
msgstr "Tiempo"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Time Based"
msgstr "Basado en el tiempo"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__time_field
msgid "Time Field"
msgstr "Campo de tiempo"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Time Settings"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__time_type
msgid "Time Unit"
msgstr "Unidad de tiempo"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Various fields may use Python code or Python expressions. The following variables can be used:"
msgstr "Varios campos pueden usar código Python o expresiones Python. Se pueden usar las siguientes variables:"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Weeks"
msgstr "Semanas"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Years"
msgstr "Años"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "e.g. Delete Logs after 30 Days"
msgstr ""

407
muk_autovacuum/i18n/fr.po

@ -1,407 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * muk_autovacuum
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-12 23:43+0000\n"
"PO-Revision-Date: 2019-07-12 23:43+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_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>Warning</code>: Warning Exception to use with <code>raise</code>"
msgstr "<code/><code/>"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>b64encode</code>, <code>b64decode</code>: Base64 converter"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>date_format</code>, <code>datetime_format</code>: server date and time formats"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>env</code>: Odoo Environment on which the rule is triggered"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>logger.info(message)</code>: Python logging framework"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>model</code>: Odoo Model of the record on which the rule is triggered"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>time</code>, <code>datetime</code>, <code>dateutil</code>, <code>timezone</code>: useful Python libraries"
msgstr "<code/><code/><code/><code/>"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>uid</code>, <code>user</code>: User on which the rule is triggered"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__active
msgid "Active"
msgstr "Actif"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
msgid "All"
msgstr "Tous"
#. module: muk_autovacuum
#: model:ir.actions.act_window,name:muk_autovacuum.action_autovacuum_rule
#: model:ir.model,name:muk_autovacuum.model_muk_autovacuum_rules
#: model:ir.ui.menu,name:muk_autovacuum.menu_autovacuum_rules
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_tree
msgid "Auto Vacuum Rules"
msgstr "Règles de l'aspirateur automatique"
#. module: muk_autovacuum
#: model:ir.model,name:muk_autovacuum.model_ir_autovacuum
msgid "Automatic Vacuum"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__code
msgid "Code"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Code Based"
msgstr "Basé sur le code"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Code Settings"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__code
msgid "Code which will be executed during the clean up."
msgstr "Code qui sera exécuté pendant le nettoyage."
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__create_uid
msgid "Created by"
msgstr "Créé par"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__create_date
msgid "Created on"
msgstr "Créé le"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Days"
msgstr "Jours"
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__domain
msgid "Delete all records which match the domain."
msgstr "Supprimer tous les enregistrements qui correspondent au domaine."
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__time
msgid "Delete older data than x."
msgstr "Supprimer les données plus anciennes que x."
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__size
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__size_parameter_value
msgid "Delete records with am index greater than x."
msgstr "Supprimer les enregistrements dont l'index am est supérieur à x."
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__display_name
msgid "Display Name"
msgstr "Nom affiché"
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__protect_starred
msgid "Do not delete starred records.\n"
" Checks for the following fields:\n"
" - starred\n"
" - favorite\n"
" - is_starred\n"
" - is_favorite"
msgstr "Ne supprimez pas les disques marqués d'une étoile.\n"
" Vérification des champs suivants :\n"
" - étoilés\n"
" - favori\n"
" - is_starred\n"
" - is_favorite"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__domain
msgid "Domain"
msgstr "Domaine"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Domain Based"
msgstr "Basé sur le domaine"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Domain Settings"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Enter Python code here. Help about Python expression is available in the help tab of this document."
msgstr "Entrer du code Python ici. Une aide sur l'expression Python est disponible dans l'onglet d'aide de ce document."
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,size_type:0
msgid "Fixed Value"
msgstr "Valeur fixe"
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:64
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:74
#, python-format
msgid "GC domain: %s"
msgstr "Domaine GC : %s"
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:71
#, python-format
msgid "GC domain: [] order: %s limit: %s"
msgstr "GC : (] Ordre : Limite %s : %s"
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:87
#, python-format
msgid "GC'd %s %s records"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:83
#, python-format
msgid "GC'd %s attachments from %s entries"
msgstr "GC'd %s pièces jointes à partir d'entrées %s"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
msgid "Group By"
msgstr "Regrouper par"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Help"
msgstr "Aide"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Help with Python expressions"
msgstr "Aide sur les expressions Python"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Hours"
msgstr "Heures"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__id
msgid "ID"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/rules.py:290
#, python-format
msgid "Import Template for Auto Vacuum Rules"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules____last_update
msgid "Last Modified on"
msgstr "Dernière modification le"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__write_uid
msgid "Last Updated by"
msgstr "Dernière mise à jour par"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__write_date
msgid "Last Updated on"
msgstr "Dernière mise à jour le"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Minutes"
msgstr "Procès-verbal"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__model
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
msgid "Model"
msgstr "Modèle"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__model_name
msgid "Model Name"
msgstr "Nom de Modèle"
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__model
msgid "Model on which the rule is applied."
msgstr "Modèle sur lequel la règle est appliquée."
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Months"
msgstr "Mois"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__name
msgid "Name"
msgstr "Nom"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__only_inactive
msgid "Only Archived"
msgstr "Uniquement archivé"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__only_attachments
msgid "Only Attachments"
msgstr "Uniquement les pièces jointes"
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__only_inactive
msgid "Only delete archived records."
msgstr "Ne supprimez que les enregistrements archivés."
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__only_attachments
msgid "Only delete record attachments."
msgstr "Ne supprimez que les pièces jointes d'enregistrement."
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__size_order
msgid "Order by which the index is defined."
msgstr "Ordre dans lequel l'indice est défini."
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__protect_starred
msgid "Protect Starred"
msgstr "Protéger Starred"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__state
msgid "Rule Type"
msgstr "Type de règle"
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/rules.py:330
#, python-format
msgid "Rule validation has failed!"
msgstr "La validation des règles a échoué !"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__sequence
msgid "Sequence"
msgstr "Séquence"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size
msgid "Size"
msgstr "Taille"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Size Based"
msgstr "Basé sur la taille"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_order
msgid "Size Order"
msgstr "Taille Commande"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Size Settings"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_type
msgid "Size Type"
msgstr "Taille Type"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_parameter_value
msgid "Size Value"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_parameter
#: selection:muk_autovacuum.rules,size_type:0
msgid "System Parameter"
msgstr "Paramètres du système"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__time
msgid "Time"
msgstr "Temps"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Time Based"
msgstr "Basé sur le temps"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__time_field
msgid "Time Field"
msgstr "Champ horaire"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Time Settings"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__time_type
msgid "Time Unit"
msgstr "Unité de temps"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Various fields may use Python code or Python expressions. The following variables can be used:"
msgstr "Divers champs peuvent utiliser du code ou des expressions Python. Les variables suivantes peuvent être utilisées :"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Weeks"
msgstr "Semaines"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Years"
msgstr "Années"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "e.g. Delete Logs after 30 Days"
msgstr ""

402
muk_autovacuum/i18n/hi.po

@ -1,402 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * muk_autovacuum
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-12 23:44+0000\n"
"PO-Revision-Date: 2019-07-12 23:44+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_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>Warning</code>: Warning Exception to use with <code>raise</code>"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>b64encode</code>, <code>b64decode</code>: Base64 converter"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>date_format</code>, <code>datetime_format</code>: server date and time formats"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>env</code>: Odoo Environment on which the rule is triggered"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>logger.info(message)</code>: Python logging framework"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>model</code>: Odoo Model of the record on which the rule is triggered"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>time</code>, <code>datetime</code>, <code>dateutil</code>, <code>timezone</code>: useful Python libraries"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>uid</code>, <code>user</code>: User on which the rule is triggered"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__active
msgid "Active"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
msgid "All"
msgstr ""
#. module: muk_autovacuum
#: model:ir.actions.act_window,name:muk_autovacuum.action_autovacuum_rule
#: model:ir.model,name:muk_autovacuum.model_muk_autovacuum_rules
#: model:ir.ui.menu,name:muk_autovacuum.menu_autovacuum_rules
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_tree
msgid "Auto Vacuum Rules"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model,name:muk_autovacuum.model_ir_autovacuum
msgid "Automatic Vacuum"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__code
msgid "Code"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Code Based"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Code Settings"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__code
msgid "Code which will be executed during the clean up."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__create_uid
msgid "Created by"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__create_date
msgid "Created on"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Days"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__domain
msgid "Delete all records which match the domain."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__time
msgid "Delete older data than x."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__size
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__size_parameter_value
msgid "Delete records with am index greater than x."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__display_name
msgid "Display Name"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__protect_starred
msgid "Do not delete starred records.\n"
" Checks for the following fields:\n"
" - starred\n"
" - favorite\n"
" - is_starred\n"
" - is_favorite"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__domain
msgid "Domain"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Domain Based"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Domain Settings"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Enter Python code here. Help about Python expression is available in the help tab of this document."
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,size_type:0
msgid "Fixed Value"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:64
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:74
#, python-format
msgid "GC domain: %s"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:71
#, python-format
msgid "GC domain: [] order: %s limit: %s"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:87
#, python-format
msgid "GC'd %s %s records"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:83
#, python-format
msgid "GC'd %s attachments from %s entries"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
msgid "Group By"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Help"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Help with Python expressions"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Hours"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__id
msgid "ID"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/rules.py:290
#, python-format
msgid "Import Template for Auto Vacuum Rules"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules____last_update
msgid "Last Modified on"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__write_uid
msgid "Last Updated by"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__write_date
msgid "Last Updated on"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Minutes"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__model
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
msgid "Model"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__model_name
msgid "Model Name"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__model
msgid "Model on which the rule is applied."
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Months"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__name
msgid "Name"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__only_inactive
msgid "Only Archived"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__only_attachments
msgid "Only Attachments"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__only_inactive
msgid "Only delete archived records."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__only_attachments
msgid "Only delete record attachments."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__size_order
msgid "Order by which the index is defined."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__protect_starred
msgid "Protect Starred"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__state
msgid "Rule Type"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/rules.py:330
#, python-format
msgid "Rule validation has failed!"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__sequence
msgid "Sequence"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size
msgid "Size"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Size Based"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_order
msgid "Size Order"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Size Settings"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_type
msgid "Size Type"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_parameter_value
msgid "Size Value"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_parameter
#: selection:muk_autovacuum.rules,size_type:0
msgid "System Parameter"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__time
msgid "Time"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Time Based"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__time_field
msgid "Time Field"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Time Settings"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__time_type
msgid "Time Unit"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Various fields may use Python code or Python expressions. The following variables can be used:"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Weeks"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Years"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "e.g. Delete Logs after 30 Days"
msgstr ""

402
muk_autovacuum/i18n/muk_autovacuum.pot

@ -1,402 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * muk_autovacuum
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-12 23:42+0000\n"
"PO-Revision-Date: 2019-07-12 23:42+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_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>Warning</code>: Warning Exception to use with <code>raise</code>"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>b64encode</code>, <code>b64decode</code>: Base64 converter"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>date_format</code>, <code>datetime_format</code>: server date and time formats"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>env</code>: Odoo Environment on which the rule is triggered"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>logger.info(message)</code>: Python logging framework"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>model</code>: Odoo Model of the record on which the rule is triggered"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>time</code>, <code>datetime</code>, <code>dateutil</code>, <code>timezone</code>: useful Python libraries"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>uid</code>, <code>user</code>: User on which the rule is triggered"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__active
msgid "Active"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
msgid "All"
msgstr ""
#. module: muk_autovacuum
#: model:ir.actions.act_window,name:muk_autovacuum.action_autovacuum_rule
#: model:ir.model,name:muk_autovacuum.model_muk_autovacuum_rules
#: model:ir.ui.menu,name:muk_autovacuum.menu_autovacuum_rules
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_tree
msgid "Auto Vacuum Rules"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model,name:muk_autovacuum.model_ir_autovacuum
msgid "Automatic Vacuum"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__code
msgid "Code"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Code Based"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Code Settings"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__code
msgid "Code which will be executed during the clean up."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__create_uid
msgid "Created by"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__create_date
msgid "Created on"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Days"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__domain
msgid "Delete all records which match the domain."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__time
msgid "Delete older data than x."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__size
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__size_parameter_value
msgid "Delete records with am index greater than x."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__display_name
msgid "Display Name"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__protect_starred
msgid "Do not delete starred records.\n"
" Checks for the following fields:\n"
" - starred\n"
" - favorite\n"
" - is_starred\n"
" - is_favorite"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__domain
msgid "Domain"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Domain Based"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Domain Settings"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Enter Python code here. Help about Python expression is available in the help tab of this document."
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,size_type:0
msgid "Fixed Value"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:64
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:74
#, python-format
msgid "GC domain: %s"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:71
#, python-format
msgid "GC domain: [] order: %s limit: %s"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:87
#, python-format
msgid "GC'd %s %s records"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:83
#, python-format
msgid "GC'd %s attachments from %s entries"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
msgid "Group By"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Help"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Help with Python expressions"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Hours"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__id
msgid "ID"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/rules.py:290
#, python-format
msgid "Import Template for Auto Vacuum Rules"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules____last_update
msgid "Last Modified on"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__write_uid
msgid "Last Updated by"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__write_date
msgid "Last Updated on"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Minutes"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__model
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
msgid "Model"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__model_name
msgid "Model Name"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__model
msgid "Model on which the rule is applied."
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Months"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__name
msgid "Name"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__only_inactive
msgid "Only Archived"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__only_attachments
msgid "Only Attachments"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__only_inactive
msgid "Only delete archived records."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__only_attachments
msgid "Only delete record attachments."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__size_order
msgid "Order by which the index is defined."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__protect_starred
msgid "Protect Starred"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__state
msgid "Rule Type"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/rules.py:330
#, python-format
msgid "Rule validation has failed!"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__sequence
msgid "Sequence"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size
msgid "Size"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Size Based"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_order
msgid "Size Order"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Size Settings"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_type
msgid "Size Type"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_parameter_value
msgid "Size Value"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_parameter
#: selection:muk_autovacuum.rules,size_type:0
msgid "System Parameter"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__time
msgid "Time"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Time Based"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__time_field
msgid "Time Field"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Time Settings"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__time_type
msgid "Time Unit"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Various fields may use Python code or Python expressions. The following variables can be used:"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Weeks"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Years"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "e.g. Delete Logs after 30 Days"
msgstr ""

402
muk_autovacuum/i18n/nl.po

@ -1,402 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * muk_autovacuum
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-12 23:44+0000\n"
"PO-Revision-Date: 2019-07-12 23:44+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_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>Warning</code>: Warning Exception to use with <code>raise</code>"
msgstr "<code>Waarschuwing</code>: Waarschuwingsfout te gebruiken met <code>roep op</code>"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>b64encode</code>, <code>b64decode</code>: Base64 converter"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>date_format</code>, <code>datetime_format</code>: server date and time formats"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>env</code>: Odoo Environment on which the rule is triggered"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>logger.info(message)</code>: Python logging framework"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>model</code>: Odoo Model of the record on which the rule is triggered"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>time</code>, <code>datetime</code>, <code>dateutil</code>, <code>timezone</code>: useful Python libraries"
msgstr "<code>time</code>, <code>datetime</code>, <code>dateutil</code>, <code>timezone</code>: handige Python libraries"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>uid</code>, <code>user</code>: User on which the rule is triggered"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__active
msgid "Active"
msgstr "Actief"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
msgid "All"
msgstr "Alle"
#. module: muk_autovacuum
#: model:ir.actions.act_window,name:muk_autovacuum.action_autovacuum_rule
#: model:ir.model,name:muk_autovacuum.model_muk_autovacuum_rules
#: model:ir.ui.menu,name:muk_autovacuum.menu_autovacuum_rules
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_tree
msgid "Auto Vacuum Rules"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model,name:muk_autovacuum.model_ir_autovacuum
msgid "Automatic Vacuum"
msgstr "Automatisch vacuum"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__code
msgid "Code"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Code Based"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Code Settings"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__code
msgid "Code which will be executed during the clean up."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__create_uid
msgid "Created by"
msgstr "Aangemaakt door"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__create_date
msgid "Created on"
msgstr "Aangemaakt op"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Days"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__domain
msgid "Delete all records which match the domain."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__time
msgid "Delete older data than x."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__size
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__size_parameter_value
msgid "Delete records with am index greater than x."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__display_name
msgid "Display Name"
msgstr "Weergavenaam"
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__protect_starred
msgid "Do not delete starred records.\n"
" Checks for the following fields:\n"
" - starred\n"
" - favorite\n"
" - is_starred\n"
" - is_favorite"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__domain
msgid "Domain"
msgstr "Domein"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Domain Based"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Domain Settings"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Enter Python code here. Help about Python expression is available in the help tab of this document."
msgstr "Geef hier Python code in. Help over het gebruik van Python expressies is beschikbaar in de help tab van dit document."
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,size_type:0
msgid "Fixed Value"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:64
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:74
#, python-format
msgid "GC domain: %s"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:71
#, python-format
msgid "GC domain: [] order: %s limit: %s"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:87
#, python-format
msgid "GC'd %s %s records"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:83
#, python-format
msgid "GC'd %s attachments from %s entries"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
msgid "Group By"
msgstr "Groepeer op"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Help"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Help with Python expressions"
msgstr "Help met Python expressies"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Hours"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__id
msgid "ID"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/rules.py:290
#, python-format
msgid "Import Template for Auto Vacuum Rules"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules____last_update
msgid "Last Modified on"
msgstr "Laatst gewijzigd op"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__write_uid
msgid "Last Updated by"
msgstr "Laatst bijgewerkt door"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__write_date
msgid "Last Updated on"
msgstr "Laatst bijgewerkt op"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Minutes"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__model
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
msgid "Model"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__model_name
msgid "Model Name"
msgstr "Modelnaam"
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__model
msgid "Model on which the rule is applied."
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Months"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__name
msgid "Name"
msgstr "Naam"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__only_inactive
msgid "Only Archived"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__only_attachments
msgid "Only Attachments"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__only_inactive
msgid "Only delete archived records."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__only_attachments
msgid "Only delete record attachments."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__size_order
msgid "Order by which the index is defined."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__protect_starred
msgid "Protect Starred"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__state
msgid "Rule Type"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/rules.py:330
#, python-format
msgid "Rule validation has failed!"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__sequence
msgid "Sequence"
msgstr "Volgorde"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size
msgid "Size"
msgstr "Grootte"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Size Based"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_order
msgid "Size Order"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Size Settings"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_type
msgid "Size Type"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_parameter_value
msgid "Size Value"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_parameter
#: selection:muk_autovacuum.rules,size_type:0
msgid "System Parameter"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__time
msgid "Time"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Time Based"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__time_field
msgid "Time Field"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Time Settings"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__time_type
msgid "Time Unit"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Various fields may use Python code or Python expressions. The following variables can be used:"
msgstr "Verschillende velden mogen Python code of Python expressies gebruiken. De volgende variabelen mogen worden gebruikt:"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Weeks"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Years"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "e.g. Delete Logs after 30 Days"
msgstr ""

402
muk_autovacuum/i18n/pt.po

@ -1,402 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * muk_autovacuum
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-12 23:44+0000\n"
"PO-Revision-Date: 2019-07-12 23:44+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_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>Warning</code>: Warning Exception to use with <code>raise</code>"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>b64encode</code>, <code>b64decode</code>: Base64 converter"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>date_format</code>, <code>datetime_format</code>: server date and time formats"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>env</code>: Odoo Environment on which the rule is triggered"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>logger.info(message)</code>: Python logging framework"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>model</code>: Odoo Model of the record on which the rule is triggered"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>time</code>, <code>datetime</code>, <code>dateutil</code>, <code>timezone</code>: useful Python libraries"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>uid</code>, <code>user</code>: User on which the rule is triggered"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__active
msgid "Active"
msgstr "Ativo"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
msgid "All"
msgstr "Todas"
#. module: muk_autovacuum
#: model:ir.actions.act_window,name:muk_autovacuum.action_autovacuum_rule
#: model:ir.model,name:muk_autovacuum.model_muk_autovacuum_rules
#: model:ir.ui.menu,name:muk_autovacuum.menu_autovacuum_rules
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_tree
msgid "Auto Vacuum Rules"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model,name:muk_autovacuum.model_ir_autovacuum
msgid "Automatic Vacuum"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__code
msgid "Code"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Code Based"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Code Settings"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__code
msgid "Code which will be executed during the clean up."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__create_uid
msgid "Created by"
msgstr "Criado por"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__create_date
msgid "Created on"
msgstr "Criada em"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Days"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__domain
msgid "Delete all records which match the domain."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__time
msgid "Delete older data than x."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__size
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__size_parameter_value
msgid "Delete records with am index greater than x."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__display_name
msgid "Display Name"
msgstr "Nome a Exibir"
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__protect_starred
msgid "Do not delete starred records.\n"
" Checks for the following fields:\n"
" - starred\n"
" - favorite\n"
" - is_starred\n"
" - is_favorite"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__domain
msgid "Domain"
msgstr "Domínio"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Domain Based"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Domain Settings"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Enter Python code here. Help about Python expression is available in the help tab of this document."
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,size_type:0
msgid "Fixed Value"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:64
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:74
#, python-format
msgid "GC domain: %s"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:71
#, python-format
msgid "GC domain: [] order: %s limit: %s"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:87
#, python-format
msgid "GC'd %s %s records"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:83
#, python-format
msgid "GC'd %s attachments from %s entries"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
msgid "Group By"
msgstr "Agrupar Por"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Help"
msgstr "Ajuda"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Help with Python expressions"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Hours"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__id
msgid "ID"
msgstr "Id."
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/rules.py:290
#, python-format
msgid "Import Template for Auto Vacuum Rules"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules____last_update
msgid "Last Modified on"
msgstr "Última Modificação em"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__write_uid
msgid "Last Updated by"
msgstr "Última Atualização por"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__write_date
msgid "Last Updated on"
msgstr "Última Atualização em"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Minutes"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__model
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
msgid "Model"
msgstr "Modelo"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__model_name
msgid "Model Name"
msgstr "Nome do Modelo"
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__model
msgid "Model on which the rule is applied."
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Months"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__name
msgid "Name"
msgstr "Nome"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__only_inactive
msgid "Only Archived"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__only_attachments
msgid "Only Attachments"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__only_inactive
msgid "Only delete archived records."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__only_attachments
msgid "Only delete record attachments."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__size_order
msgid "Order by which the index is defined."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__protect_starred
msgid "Protect Starred"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__state
msgid "Rule Type"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/rules.py:330
#, python-format
msgid "Rule validation has failed!"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__sequence
msgid "Sequence"
msgstr "Sequência"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size
msgid "Size"
msgstr "Tamanho"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Size Based"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_order
msgid "Size Order"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Size Settings"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_type
msgid "Size Type"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_parameter_value
msgid "Size Value"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_parameter
#: selection:muk_autovacuum.rules,size_type:0
msgid "System Parameter"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__time
msgid "Time"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Time Based"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__time_field
msgid "Time Field"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Time Settings"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__time_type
msgid "Time Unit"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Various fields may use Python code or Python expressions. The following variables can be used:"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Weeks"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Years"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "e.g. Delete Logs after 30 Days"
msgstr ""

402
muk_autovacuum/i18n/ru.po

@ -1,402 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * muk_autovacuum
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-12 23:45+0000\n"
"PO-Revision-Date: 2019-07-12 23:45+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_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>Warning</code>: Warning Exception to use with <code>raise</code>"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>b64encode</code>, <code>b64decode</code>: Base64 converter"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>date_format</code>, <code>datetime_format</code>: server date and time formats"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>env</code>: Odoo Environment on which the rule is triggered"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>logger.info(message)</code>: Python logging framework"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>model</code>: Odoo Model of the record on which the rule is triggered"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>time</code>, <code>datetime</code>, <code>dateutil</code>, <code>timezone</code>: useful Python libraries"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "<code>uid</code>, <code>user</code>: User on which the rule is triggered"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__active
msgid "Active"
msgstr "Активно"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
msgid "All"
msgstr "Все"
#. module: muk_autovacuum
#: model:ir.actions.act_window,name:muk_autovacuum.action_autovacuum_rule
#: model:ir.model,name:muk_autovacuum.model_muk_autovacuum_rules
#: model:ir.ui.menu,name:muk_autovacuum.menu_autovacuum_rules
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_tree
msgid "Auto Vacuum Rules"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model,name:muk_autovacuum.model_ir_autovacuum
msgid "Automatic Vacuum"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__code
msgid "Code"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Code Based"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Code Settings"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__code
msgid "Code which will be executed during the clean up."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__create_uid
msgid "Created by"
msgstr "Создано"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__create_date
msgid "Created on"
msgstr "Создан"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Days"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__domain
msgid "Delete all records which match the domain."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__time
msgid "Delete older data than x."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__size
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__size_parameter_value
msgid "Delete records with am index greater than x."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__display_name
msgid "Display Name"
msgstr "Отображаемое Имя"
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__protect_starred
msgid "Do not delete starred records.\n"
" Checks for the following fields:\n"
" - starred\n"
" - favorite\n"
" - is_starred\n"
" - is_favorite"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__domain
msgid "Domain"
msgstr "Домен"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Domain Based"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Domain Settings"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Enter Python code here. Help about Python expression is available in the help tab of this document."
msgstr "Введите код Python здесь. Помощь о Python доступна в колонке справка в этом документе."
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,size_type:0
msgid "Fixed Value"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:64
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:74
#, python-format
msgid "GC domain: %s"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:71
#, python-format
msgid "GC domain: [] order: %s limit: %s"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:87
#, python-format
msgid "GC'd %s %s records"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/ir_autovacuum.py:83
#, python-format
msgid "GC'd %s attachments from %s entries"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
msgid "Group By"
msgstr "Группировать по"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Help"
msgstr "Помощь"
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Help with Python expressions"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Hours"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__id
msgid "ID"
msgstr "Номер"
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/rules.py:290
#, python-format
msgid "Import Template for Auto Vacuum Rules"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules____last_update
msgid "Last Modified on"
msgstr "Последнее изменение"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__write_uid
msgid "Last Updated by"
msgstr "Последний раз обновил"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__write_date
msgid "Last Updated on"
msgstr "Последнее обновление"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Minutes"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__model
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_search
msgid "Model"
msgstr "Модель"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__model_name
msgid "Model Name"
msgstr "Название модели"
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__model
msgid "Model on which the rule is applied."
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Months"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__name
msgid "Name"
msgstr "Название"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__only_inactive
msgid "Only Archived"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__only_attachments
msgid "Only Attachments"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__only_inactive
msgid "Only delete archived records."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__only_attachments
msgid "Only delete record attachments."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,help:muk_autovacuum.field_muk_autovacuum_rules__size_order
msgid "Order by which the index is defined."
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__protect_starred
msgid "Protect Starred"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__state
msgid "Rule Type"
msgstr ""
#. module: muk_autovacuum
#: code:addons/muk_autovacuum/models/rules.py:330
#, python-format
msgid "Rule validation has failed!"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__sequence
msgid "Sequence"
msgstr "Нумерация"
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size
msgid "Size"
msgstr "Размер"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Size Based"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_order
msgid "Size Order"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Size Settings"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_type
msgid "Size Type"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_parameter_value
msgid "Size Value"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__size_parameter
#: selection:muk_autovacuum.rules,size_type:0
msgid "System Parameter"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__time
msgid "Time"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,state:0
msgid "Time Based"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__time_field
msgid "Time Field"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Time Settings"
msgstr ""
#. module: muk_autovacuum
#: model:ir.model.fields,field_description:muk_autovacuum.field_muk_autovacuum_rules__time_type
msgid "Time Unit"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "Various fields may use Python code or Python expressions. The following variables can be used:"
msgstr "Различные поля могут использовать код Python или выражения Python. Могут использоваться следующие переменные:"
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Weeks"
msgstr ""
#. module: muk_autovacuum
#: selection:muk_autovacuum.rules,time_type:0
msgid "Years"
msgstr ""
#. module: muk_autovacuum
#: model_terms:ir.ui.view,arch_db:muk_autovacuum.view_autovacuum_rule_form
msgid "e.g. Delete Logs after 30 Days"
msgstr ""

24
muk_autovacuum/models/__init__.py

@ -1,24 +0,0 @@
###################################################################################
#
# Copyright (c) 2017-2019 MuK IT GmbH.
#
# This file is part of MuK Autovacuum
# (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 rules
from . import ir_autovacuum

90
muk_autovacuum/models/ir_autovacuum.py

@ -1,90 +0,0 @@
###################################################################################
#
# Copyright (c) 2017-2019 MuK IT GmbH.
#
# This file is part of MuK Autovacuum
# (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 time
import logging
import datetime
import dateutil
from odoo import _
from odoo import models, api, fields
from odoo.tools.safe_eval import safe_eval
_logger = logging.getLogger(__name__)
_types = {
'days': lambda interval: datetime.timedelta(days=interval),
'years': lambda interval: datetime.timedelta(weeks=interval*52),
'hours': lambda interval: datetime.timedelta(hours=interval),
'weeks': lambda interval: datetime.timedelta(weeks=interval),
'months': lambda interval: datetime.timedelta(days=interval*30),
'minutes': lambda interval: datetime.timedelta(minutes=interval),
}
class AutoVacuum(models.AbstractModel):
_inherit = 'ir.autovacuum'
@api.model
def power_on(self, *args, **kwargs):
res = super(AutoVacuum, self).power_on(*args, **kwargs)
rules = self.env['muk_autovacuum.rules'].sudo().search([], order='sequence asc')
for rule in rules:
if rule.state in ['time', 'size', 'domain']:
model = self.env[rule.model.model].sudo()
records = self.env[rule.model.model]
if rule.state == 'time':
computed_time = datetime.datetime.utcnow() - _types[rule.time_type](rule.time)
domain = [(rule.time_field.name, '<', fields.Datetime.to_string(computed_time))]
if rule.protect_starred:
for field in rule.model.field_id:
if field.name in ['starred', 'favorite', 'is_starred', 'is_favorite']:
domain.append((field.name, '=', False))
if rule.only_inactive and "active" in rule.model.field_id.mapped("name"):
domain.append(('active', '=', False))
_logger.info(_("GC domain: %s"), domain)
records = model.with_context(active_test=False).search(domain)
elif rule.state == 'size':
size = rule.size if rule.size_type == 'fixed' else rule.size_parameter_value
count = model.with_context(active_test=False).search([], count=True)
if size and size > 0 and count > size:
limit = count - size
_logger.info(_("GC domain: [] order: %s limit: %s"), rule.size_order, limit)
records = model.with_context(active_test=False).search([], order=rule.size_order, limit=limit)
elif rule.state == 'domain':
_logger.info(_("GC domain: %s"), rule.domain)
domain = safe_eval(rule.domain or "[]", rules._get_eval_domain_context())
records = model.with_context(active_test=False).search(domain)
if rule.only_attachments:
attachments = self.env['ir.attachment'].sudo().search([
('res_model', '=', rule.model.model),
('res_id', 'in', records.mapped('id'))])
count = len(attachments)
attachments.unlink()
_logger.info(_("GC'd %s attachments from %s entries"), count, rule.model.model)
else:
count = len(records)
records.unlink()
_logger.info(_("GC'd %s %s records"), count, rule.model.model)
elif rule.state == 'code':
safe_eval(rule.code.strip(), rules._get_eval_code_context(rule), mode="exec")
return res

330
muk_autovacuum/models/rules.py

@ -1,330 +0,0 @@
###################################################################################
#
# Copyright (c) 2017-2019 MuK IT GmbH.
#
# This file is part of MuK Autovacuum
# (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 time
import base64
import logging
import datetime
import dateutil
from pytz import timezone
from odoo import _
from odoo import models, api, fields
from odoo.exceptions import ValidationError, Warning
from odoo.tools import DEFAULT_SERVER_DATE_FORMAT
from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT
from odoo.tools.safe_eval import safe_eval, test_python_expr
_logger = logging.getLogger(__name__)
class AutoVacuumRules(models.Model):
_name = 'muk_autovacuum.rules'
_description = "Auto Vacuum Rules"
_order = "sequence asc"
#----------------------------------------------------------
# Defaults
#----------------------------------------------------------
def _default_sequence(self):
record = self.sudo().search([], order='sequence desc', limit=1)
if record.exists():
return record.sequence + 1
else:
return 1
#----------------------------------------------------------
# Database
#----------------------------------------------------------
name = fields.Char(
string='Name',
required=True)
active = fields.Boolean(
string='Active',
default=True)
state = fields.Selection(
selection=[
('time', 'Time Based'),
('size', 'Size Based'),
('domain', 'Domain Based'),
('code', 'Code Based')],
string='Rule Type',
default='time',
required=True)
sequence = fields.Integer(
string='Sequence',
default=lambda self: self._default_sequence(),
required=True)
model = fields.Many2one(
comodel_name='ir.model',
string="Model",
required=True,
ondelete='cascade',
help="Model on which the rule is applied.")
model_name = fields.Char(
related='model.model',
string="Model Name",
readonly=True,
store=True)
time_field = fields.Many2one(
comodel_name='ir.model.fields',
domain="[('model_id', '=', model), ('ttype', '=', 'datetime')]",
string='Time Field',
ondelete='cascade',
states={
'time': [('required', True)],
'size': [('invisible', True)],
'domain': [('invisible', True)],
'code': [('invisible', True)]})
time_type = fields.Selection(
selection=[
('minutes', 'Minutes'),
('hours', 'Hours'),
('days', 'Days'),
('weeks', 'Weeks'),
('months', 'Months'),
('years', 'Years')],
string='Time Unit',
default='months',
states={
'time': [('required', True)],
'size': [('invisible', True)],
'domain': [('invisible', True)],
'code': [('invisible', True)]})
time = fields.Integer(
string='Time',
default=1,
states={
'time': [('required', True)],
'size': [('invisible', True)],
'domain': [('invisible', True)],
'code': [('invisible', True)]},
help="Delete older data than x.")
size_type = fields.Selection(
selection=[
('fixed', 'Fixed Value'),
('parameter', 'System Parameter')],
string='Size Type',
default='fixed',
states={
'time': [('invisible', True)],
'size': [('required', True)],
'domain': [('invisible', True)],
'code': [('invisible', True)]})
size_parameter = fields.Many2one(
comodel_name='ir.config_parameter',
string='System Parameter',
ondelete='cascade',
states={
'time': [('invisible', True)],
'size': [('required', True)],
'domain': [('invisible', True)],
'code': [('invisible', True)]})
size_parameter_value = fields.Integer(
compute='_compute_size_parameter_value',
string='Size Value',
states={
'time': [('invisible', True)],
'size': [('readonly', True)],
'domain': [('invisible', True)],
'code': [('invisible', True)]},
help="Delete records with am index greater than x.")
size_order = fields.Char(
string='Size Order',
default='create_date desc',
states={
'time': [('invisible', True)],
'size': [('required', True)],
'domain': [('invisible', True)],
'code': [('invisible', True)]},
help="Order by which the index is defined.")
size = fields.Integer(
string='Size',
default=200,
states={
'time': [('invisible', True)],
'size': [('required', True)],
'domain': [('invisible', True)],
'code': [('invisible', True)]},
help="Delete records with am index greater than x.")
domain = fields.Char(
string='Domain',
states={
'time': [('invisible', True)],
'size': [('invisible', True)],
'domain': [('required', True)],
'code': [('invisible', True)]},
help="Delete all records which match the domain.")
code = fields.Text(
string='Code',
states={
'time': [('invisible', True)],
'size': [('invisible', True)],
'domain': [('invisible', True)] ,
'code': [('required', True)]},
default="# Enter Python code here. Help about Python expression is available in the help tab of this document.",
help="Code which will be executed during the clean up.")
protect_starred = fields.Boolean(
string='Protect Starred',
default=True,
states={
'time': [('invisible', False)],
'size': [('invisible', True)],
'domain': [('invisible', True)],
'code': [('invisible', True)]},
help="""Do not delete starred records.
Checks for the following fields:
- starred
- favorite
- is_starred
- is_favorite""")
only_inactive = fields.Boolean(
string='Only Archived',
default=False,
states={
'time': [('invisible', False)],
'size': [('invisible', True)],
'domain': [('invisible', True)],
'code': [('invisible', True)]},
help="Only delete archived records.")
only_attachments = fields.Boolean(
string='Only Attachments',
default=False,
states={
'time': [('invisible', False)],
'size': [('invisible', False)],
'domain': [('invisible', False)],
'code': [('invisible', True)]},
help="Only delete record attachments.")
#----------------------------------------------------------
# Functions
#----------------------------------------------------------
@api.model
def _get_eval_domain_context(self):
return {
'datetime': datetime,
'dateutil': dateutil,
'timezone': timezone,
'time': time,
'uid': self.env.uid,
'user': self.env.user
}
@api.model
def _get_eval_code_context(self, rule):
return {
'env': self.env,
'model': self.env[rule.model_name],
'uid': self.env.user.id,
'user': self.env.user,
'time': time,
'datetime': datetime,
'dateutil': dateutil,
'timezone': timezone,
'b64encode': base64.b64encode,
'b64decode': base64.b64decode,
'date_format': DEFAULT_SERVER_DATE_FORMAT,
'datetime_format': DEFAULT_SERVER_DATETIME_FORMAT,
'Warning': Warning,
'logger': logging.getLogger("%s (%s)" % (__name__, rule.name)),
}
#----------------------------------------------------------
# View
#----------------------------------------------------------
@api.onchange('model')
def _onchange_model(self):
field_domain = [
('model_id', '=', self.model.id),
('ttype', '=', 'datetime'),
('name', '=', 'create_date')]
model = self.env['ir.model.fields'].sudo()
self.time_field = model.search(field_domain, limit=1)
@api.model
def get_import_templates(self):
return [{
'label': _('Import Template for Auto Vacuum Rules'),
'template': '/muk_autovacuum/static/xls/muk_autovacuum_rules.xls'
}]
#----------------------------------------------------------
# Read
#----------------------------------------------------------
@api.depends('size_parameter')
def _compute_size_parameter_value(self):
for record in self:
try:
record.size_parameter_value = int(record.size_parameter.value)
except ValueError:
record.size_parameter_value = None
#----------------------------------------------------------
# Create, Update, Delete
#----------------------------------------------------------
@api.constrains('code')
def _check_code(self):
for record in self.sudo().filtered('code'):
message = test_python_expr(expr=record.code.strip(), mode="exec")
if message:
raise ValidationError(message)
@api.constrains(
'state', 'model', 'domain', 'code',
'time_field', 'time_type', 'time',
'size_type', 'size_parameter', 'size_order', 'size')
def _validate(self):
validators = {
'time': lambda rec: rec.time_field and rec.time_type and rec.time,
'size': lambda rec: rec.size_order and (rec.size_parameter or rec.size),
'domain': lambda rec: rec.domain,
'code': lambda rec: rec.code,
}
for record in self:
if not validators[record.state](record):
raise ValidationError(_("Rule validation has failed!"))

3
muk_autovacuum/security/ir.model.access.csv

@ -1,3 +0,0 @@
id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
access_muk_autovacuum_rules_group_cron,muk_autovacuum_rules group_rules,model_muk_autovacuum_rules,base.group_system,1,1,1,1

BIN
muk_autovacuum/static/description/banner.png

Before

Width: 880  |  Height: 440  |  Size: 42 KiB

BIN
muk_autovacuum/static/description/icon.png

Before

Width: 250  |  Height: 250  |  Size: 9.1 KiB

38
muk_autovacuum/static/description/icon.svg

@ -1,38 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- 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>
<filter id="6h5zhs6EsmCdYqoDWpQdye92PuVIAFlM" x="-200%" y="-200%" width="400%" height="400%" filterUnits="objectBoundingBox" color-interpolation-filters="sRGB">
<feOffset in="SourceGraphic" dx="0" dy="3" />
<feGaussianBlur stdDeviation="2.146804531419514" result="pf_100_offsetBlur" />
<feComposite in="SourceGraphic" in2="pf_100_offsetBlur" result="pf_100_inverse" operator="out" />
<feFlood flood-color="#FFFFFF" flood-opacity="0.5" result="pf_100_color" />
<feComposite in="pf_100_color" in2="pf_100_inverse" operator="in" result="pf_100_shadow" />
<feComposite in="pf_100_shadow" in2="SourceGraphic" operator="over" result="_out_uR74cLfpCM9hl8SPG68bUNeAvlHMO7D6" />
<feOffset in="_out_uR74cLfpCM9hl8SPG68bUNeAvlHMO7D6" dx="0" dy="-3" />
<feGaussianBlur stdDeviation="2.146804531419514" result="pf_101_offsetBlur" />
<feComposite in="_out_uR74cLfpCM9hl8SPG68bUNeAvlHMO7D6" in2="pf_101_offsetBlur" result="pf_101_inverse" operator="out" />
<feFlood flood-color="#000000" flood-opacity="0.5" result="pf_101_color" />
<feComposite in="pf_101_color" in2="pf_101_inverse" operator="in" result="pf_101_shadow" />
<feComposite in="pf_101_shadow" in2="_out_uR74cLfpCM9hl8SPG68bUNeAvlHMO7D6" operator="over" result="_out_Oq5ydn0Hq6rxbDiq5dZm4MzQyVH9DQcs" />
<feMerge>
<feMergeNode in="_out_Oq5ydn0Hq6rxbDiq5dZm4MzQyVH9DQcs" />
</feMerge>
</filter>
</defs>
<g filter="url(#6h5zhs6EsmCdYqoDWpQdye92PuVIAFlM)">
<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="3ix5SvWnYst0fHrBWMeRNC0a7ShQ7jfe" x="-200%" y="-200%" width="400%" height="400%" filterUnits="objectBoundingBox" color-interpolation-filters="sRGB">
<feGaussianBlur in="SourceGraphic" stdDeviation="2.146804531419514" />
<feOffset dx="-5" dy="5" result="pf_100_offsetBlur" />
<feFlood flood-color="#000000" flood-opacity="0.5" />
<feComposite in2="pf_100_offsetBlur" operator="in" result="pf_100_dropShadow" />
<feBlend in="SourceGraphic" in2="pf_100_dropShadow" mode="normal" />
</filter>
</defs>
<g filter="url(#3ix5SvWnYst0fHrBWMeRNC0a7ShQ7jfe)">
<path d=" M 114.779 103.281 L 114.779 172.271 C 114.779 174.388 113.063 176.104 110.946 176.104 L 103.281 176.104 C 101.164 176.104 99.448 174.388 99.448 172.271 L 99.448 103.281 C 99.448 101.164 101.164 99.448 103.281 99.448 L 110.946 99.448 C 113.063 99.448 114.779 101.164 114.779 103.281 Z M 146.719 99.448 L 139.054 99.448 C 136.937 99.448 135.221 101.164 135.221 103.281 L 135.221 172.271 C 135.221 174.388 136.937 176.104 139.054 176.104 L 146.719 176.104 C 148.836 176.104 150.552 174.388 150.552 172.271 L 150.552 103.281 C 150.552 101.164 148.836 99.448 146.719 99.448 Z M 188.88 68.786 C 193.113 68.786 196.545 72.218 196.545 76.452 L 196.545 80.284 C 196.545 82.401 194.829 84.117 192.712 84.117 L 186.324 84.117 L 186.324 191.435 C 186.324 199.902 179.461 206.766 170.993 206.766 L 79.007 206.766 C 70.539 206.766 63.676 199.902 63.676 191.435 L 63.676 84.117 L 57.288 84.117 C 55.171 84.117 53.455 82.401 53.455 80.284 L 53.455 76.452 C 53.455 72.218 56.887 68.786 61.12 68.786 L 84.887 68.786 L 95.752 50.677 C 98.523 46.06 103.514 43.234 108.899 43.234 L 141.101 43.234 C 146.487 43.234 151.477 46.06 154.248 50.677 L 165.113 68.786 L 188.88 68.786 Z M 102.766 68.786 L 147.234 68.786 L 141.66 59.496 C 141.313 58.918 140.69 58.565 140.016 58.565 L 109.984 58.565 C 109.311 58.565 108.687 58.918 108.341 59.496 L 102.766 68.786 Z M 170.993 84.117 L 79.007 84.117 L 79.007 189.518 C 79.007 190.577 79.865 191.435 80.923 191.435 L 169.077 191.435 C 170.135 191.435 170.993 190.577 170.993 189.518 L 170.993 84.117 Z " id="trash-alt-regular" fill="rgb(255,255,255)" />
</g>
</svg>

128
muk_autovacuum/static/description/index.html

@ -1,128 +0,0 @@
<section class="oe_container">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan">MuK Auto Vacuum</h2>
<h3 class="oe_slogan">Configure automatic garbage collection</h3>
<h4 class="oe_slogan" style="font-size: 23px;">MuK IT GmbH -
www.mukit.at</h4>
<div class="oe_demo oe_screenshot"
style="max-width: 84%; margin: 16px 8%;">
<img src="screenshot.png">
</div>
</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>
<p class="oe_mt32">Allows the administrator to create rules to
automatically garbage collect a certain model. Every rule can have a
different time interval additional constraints. An extra constraint
can be for example to only delete inactive records.</p>
</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="mailto:sale@mukit.at">
<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>

BIN
muk_autovacuum/static/description/logo.png

Before

Width: 500  |  Height: 500  |  Size: 37 KiB

BIN
muk_autovacuum/static/description/preview.png

Before

Width: 1000  |  Height: 200  |  Size: 32 KiB

BIN
muk_autovacuum/static/description/screenshot.png

Before

Width: 1601  |  Height: 900  |  Size: 44 KiB

BIN
muk_autovacuum/static/description/service_customization.png

Before

Width: 250  |  Height: 250  |  Size: 27 KiB

BIN
muk_autovacuum/static/description/service_development.png

Before

Width: 250  |  Height: 250  |  Size: 28 KiB

BIN
muk_autovacuum/static/description/service_implementation.png

Before

Width: 250  |  Height: 250  |  Size: 26 KiB

BIN
muk_autovacuum/static/description/service_integration.png

Before

Width: 250  |  Height: 250  |  Size: 24 KiB

BIN
muk_autovacuum/static/description/service_support.png

Before

Width: 250  |  Height: 250  |  Size: 24 KiB

BIN
muk_autovacuum/static/xls/muk_autovacuum_rules.xls

23
muk_autovacuum/tests/__init__.py

@ -1,23 +0,0 @@
###################################################################################
#
# Copyright (c) 2017-2019 MuK IT GmbH.
#
# This file is part of MuK Autovacuum
# (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_autovacuum

99
muk_autovacuum/tests/test_autovacuum.py

@ -1,99 +0,0 @@
###################################################################################
#
# Copyright (c) 2017-2019 MuK IT GmbH.
#
# This file is part of MuK Autovacuum
# (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 datetime
from odoo.tests import common
_logger = logging.getLogger(__name__)
class AutoVacuumTestCase(common.TransactionCase):
def setUp(self):
super(AutoVacuumTestCase, self).setUp()
self.logs = self.env['ir.logging']
self.rules = self.env['muk_autovacuum.rules']
self.model_model = self.env['ir.model']
self.model_fields = self.env['ir.model.fields']
self.model_logs = self.model_model.search([('model', '=', 'ir.logging')], limit=1)
time_field_domain = [
('model_id', '=', self.model_logs.id),
('ttype', '=', 'datetime'),
('name', '=', 'create_date')]
self.time_field_logs = self.model_fields.search(time_field_domain, limit=1)
def test_autovacuum_time(self):
self.create_logs()
self.rules.create({
'name': "Delete Logs after 1 Minute",
'state': 'time',
'model': self.model_logs.id,
'time_field': self.time_field_logs.id,
'time_type': 'minutes',
'time': 1})
self.run_autovacuum()
def test_autovacuum_size(self):
self.create_logs()
self.rules.create({
'name': "Delete Logs Count > 1",
'state': 'size',
'model': self.model_logs.id,
'size': 1,
'size_order': "id desc",
'size_type': 'fixed'})
self.run_autovacuum()
def test_autovacuum_domain(self):
self.create_logs()
self.rules.create({
'name': "Delete Logs with Domain",
'state': 'domain',
'model': self.model_logs.id,
'domain': "[]"})
self.run_autovacuum()
def create_logs(self):
ids = []
time = datetime.datetime.utcnow()
for index in range(0, 10):
log = self.logs.create({
'create_date': time - datetime.timedelta(days=index),
'create_uid': self.env.user.id,
'name': "Test %s" % index,
'type': 'server',
'dbname': self.env.cr.dbname,
'level': "INFO",
'message': "TEST",
'path': "PATH",
'func': "TEST",
'line': 1})
ids.append(log.id)
return ids
def run_autovacuum(self):
count_before = self.env['ir.logging'].search([], count=True)
self.env['ir.cron'].search([('model_id', '=', 'ir.autovacuum')]).ir_actions_server_id.run()
count_after = self.env['ir.logging'].search([], count=True)
self.assertTrue(count_before > count_after)

161
muk_autovacuum/views/rules.xml

@ -1,161 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2017-2019 MuK IT GmbH.
This file is part of MuK Autovacuum
(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/>.
-->
<odoo>
<record id="view_autovacuum_rule_search" model="ir.ui.view">
<field name="name">muk_autovacuum_rules.search</field>
<field name="model">muk_autovacuum.rules</field>
<field name="arch" type="xml">
<search string="Auto Vacuum Rules">
<field name="name" filter_domain="[('name', 'ilike', self)]" />
<field name="model" />
<field name="state" />
<field name="active" />
<filter string="All" name="all" domain="['|', ('active', '=', False), ('active', '=', True)]" />
<group expand="0" name="group_by" string="Group By">
<filter name="group_by_model" string="Model" domain="[]" context="{'group_by': 'model'}"/>
</group>
</search>
</field>
</record>
<record id="view_autovacuum_rule_tree" model="ir.ui.view">
<field name="name">muk_autovacuum_rules.tree</field>
<field name="model">muk_autovacuum.rules</field>
<field name="arch" type="xml">
<tree string="Auto Vacuum Rules" decoration-muted="(not active)">
<field name="sequence" widget="handle"/>
<field name="name"/>
<field name="model"/>
<field name="state"/>
<field name="active"/>
</tree>
</field>
</record>
<record id="view_autovacuum_rule_form" model="ir.ui.view">
<field name="name">muk_autovacuum_rules.form</field>
<field name="model">muk_autovacuum.rules</field>
<field name="arch" type="xml">
<form string="Auto Vacuum Rules">
<sheet>
<div class="oe_button_box" name="button_box">
<button name="toggle_active" type="object" class="oe_stat_button" icon="fa-bell">
<field name="active" widget="boolean_button"/>
</button>
</div>
<div class="oe_title">
<label for="name" class="oe_edit_only"/>
<h1>
<field name="name" placeholder="e.g. Delete Logs after 30 Days"/>
</h1>
</div>
<group>
<group>
<field name="sequence"/>
<field name="model"/>
<field name="model_name" invisible="1"/>
<field name="state"/>
</group>
<group>
<field name="protect_starred"/>
<field name="only_inactive"/>
<field name="only_attachments"/>
</group>
</group>
<notebook>
<page string="Time Settings" name='time' autofocus="autofocus"
attrs="{'invisible': [('state', '!=', 'time')]}">
<group>
<group>
<field name="time_field"/>
</group>
<group>
<field name="time_type"/>
<field name="time"/>
</group>
</group>
</page>
<page string="Size Settings" name='size' autofocus="autofocus"
attrs="{'invisible': [('state', '!=', 'size')]}">
<group>
<group>
<field name="size_type"/>
</group>
<group>
<field name="size_parameter"
attrs="{'invisible': [('size_type', '!=', 'parameter')]}"/>
<field name="size_parameter_value"
attrs="{'invisible': [('size_type', '!=', 'parameter')]}"/>
<field name="size"
attrs="{'invisible': [('size_type', '!=', 'fixed')]}"/>
<field name="size_order"/>
</group>
</group>
</page>
<page string="Domain Settings" name='domain' autofocus="autofocus"
attrs="{'invisible': [('state', '!=', 'domain')]}">
<field name="domain" widget="domain" options="{'model': 'model_name'}" />
</page>
<page string="Code Settings" name='code' autofocus="autofocus"
attrs="{'invisible': [('state', '!=', 'code')]}">
<field name="code" widget="ace" options="{'mode': 'python'}"
placeholder="Enter Python code here. Help about Python expression is available in the help tab of this document."/>
</page>
<page string="Help" attrs="{'invisible': [('state', '!=', 'code')]}">
<group>
<div style="margin-top: 4px;">
<h3>Help with Python expressions</h3>
<p>Various fields may use Python code or Python expressions. The following variables can be used:</p>
<ul>
<li><code>uid</code>, <code>user</code>: User on which the rule is triggered</li>
<li><code>env</code>: Odoo Environment on which the rule is triggered</li>
<li><code>model</code>: Odoo Model of the record on which the rule is triggered</li>
<li><code>b64encode</code>, <code>b64decode</code>: Base64 converter</li>
<li><code>time</code>, <code>datetime</code>, <code>dateutil</code>, <code>timezone</code>: useful Python libraries</li>
<li><code>date_format</code>, <code>datetime_format</code>: server date and time formats</li>
<li><code>logger.info(message)</code>: Python logging framework</li>
<li><code>Warning</code>: Warning Exception to use with <code>raise</code></li>
</ul>
</div>
</group>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record id="action_autovacuum_rule" model="ir.actions.act_window">
<field name="name">Auto Vacuum Rules</field>
<field name="res_model">muk_autovacuum.rules</field>
<field name="view_mode">tree,form</field>
<field name="context">{'search_default_all': 1}</field>
</record>
<menuitem id="menu_autovacuum_rules" name="Auto Vacuum Rules"
parent="base.menu_automation" action="action_autovacuum_rule"/>
</odoo>

165
muk_dbfilter/LICENSE

@ -1,165 +0,0 @@
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.

120
muk_dbfilter/README.rst

@ -1,120 +0,0 @@
=============
MuK DB Filter
=============
This module allows to add additional filter criteria to the ``dbfilter``
function using a request header. To pass a regular expression to the
filter set the ``X-Odoo-dbfilter`` header field on the request and make
sure that Odoo runs with an enabled proxy mode.
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
=============
Since this module need to be activated even if no database is selected it should
be loaded right at the server start. This can be done by editing the configuration
file or passing a load parameter to the start script.
Parameter: ``--load=web,muk_session_store``
Usage
=====
After loading the module, the ``dbfilter`` function reacts to request headers.
Credit
======
Contributors
------------
* Kerrim Abdelhamed <kerrim.abdelhamed@mukit.at>
* 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>`_.

29
muk_dbfilter/__init__.py

@ -1,29 +0,0 @@
###################################################################################
#
# Copyright (c) 2017-2019 MuK IT GmbH.
#
# This file is part of MuK DB Filter
# (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.tools import config
def _patch_system():
server_modules = config.get("server_wide_modules") or []
if "muk_dbfilter" in server_modules and config.get("proxy_mode"):
from . import patch

40
muk_dbfilter/__manifest__.py

@ -1,40 +0,0 @@
###################################################################################
#
# Copyright (c) 2017-2019 MuK IT GmbH.
#
# This file is part of MuK DB Filter
# (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 DB Filter",
"summary": """Headers based Database Selection""",
"version": "13.0.1.0.0",
"category": "Extra Tools",
"license": "LGPL-3",
"author": "MuK IT",
"website": "https://www.mukit.at",
"depends": [],
"contributors": [
"Kerrim Abdelhamed <kerrim.abdelhamed@mukit.at>",
"Mathias Markl <mathias.markl@mukit.at>",
],
"images": ["static/description/banner.png"],
"installable": True,
"application": False,
"post_load": "_patch_system",
}

4
muk_dbfilter/doc/changelog.rst

@ -1,4 +0,0 @@
`1.0.0`
-------
- Init version

120
muk_dbfilter/doc/index.rst

@ -1,120 +0,0 @@
=============
MuK DB Filter
=============
This module allows to add additional filter criteria to the ``dbfilter``
function using a request header. To pass a regular expression to the
filter set the ``X-Odoo-dbfilter`` header field on the request and make
sure that Odoo runs with an enabled proxy mode.
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
=============
Since this module need to be activated even if no database is selected it should
be loaded right at the server start. This can be done by editing the configuration
file or passing a load parameter to the start script.
Parameter: ``--load=web,muk_session_store``
Usage
=====
After loading the module, the ``dbfilter`` function reacts to request headers.
Credit
======
Contributors
------------
* Kerrim Abdelhamed <kerrim.abdelhamed@mukit.at>
* 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>`_.

15
muk_dbfilter/i18n/ar.po

@ -1,15 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-12 23:19+0000\n"
"PO-Revision-Date: 2019-07-12 23: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"

15
muk_dbfilter/i18n/de.po

@ -1,15 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-12 23:19+0000\n"
"PO-Revision-Date: 2019-07-12 23: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"

15
muk_dbfilter/i18n/es.po

@ -1,15 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-12 23:19+0000\n"
"PO-Revision-Date: 2019-07-12 23: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"

15
muk_dbfilter/i18n/fr.po

@ -1,15 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-12 23:19+0000\n"
"PO-Revision-Date: 2019-07-12 23: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"

15
muk_dbfilter/i18n/hi.po

@ -1,15 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-12 23:20+0000\n"
"PO-Revision-Date: 2019-07-12 23: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"

15
muk_dbfilter/i18n/muk_dbfilter.pot

@ -1,15 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-12 23:18+0000\n"
"PO-Revision-Date: 2019-07-12 23: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"

15
muk_dbfilter/i18n/nl.po

@ -1,15 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-12 23:20+0000\n"
"PO-Revision-Date: 2019-07-12 23: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"

15
muk_dbfilter/i18n/pt.po

@ -1,15 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-12 23:20+0000\n"
"PO-Revision-Date: 2019-07-12 23: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"

15
muk_dbfilter/i18n/ru.po

@ -1,15 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-12 23:20+0000\n"
"PO-Revision-Date: 2019-07-12 23: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"

23
muk_dbfilter/patch/__init__.py

@ -1,23 +0,0 @@
###################################################################################
#
# Copyright (c) 2017-2019 MuK IT GmbH.
#
# This file is part of MuK DB Filter
# (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 http

38
muk_dbfilter/patch/http.py

@ -1,38 +0,0 @@
###################################################################################
#
# Copyright (c) 2017-2019 MuK IT GmbH.
#
# This file is part of MuK DB Filter
# (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 re
from odoo import http
from odoo.addons.muk_utils.tools.patch import monkey_patch
from odoo.http import request
_logger = logging.getLogger(__name__)
@monkey_patch(http)
def db_filter(dbs, httprequest=None):
httprequest = httprequest or request.httprequest
dbs = db_filter.super(dbs, httprequest=httprequest)
filter = httprequest.environ.get("HTTP_X_ODOO_DBFILTER")
return [db for db in dbs if re.match(filter, db)] if filter else dbs

BIN
muk_dbfilter/static/description/banner.png

Before

Width: 880  |  Height: 440  |  Size: 39 KiB

BIN
muk_dbfilter/static/description/icon.png

Before

Width: 250  |  Height: 250  |  Size: 7.4 KiB

1
muk_dbfilter/static/description/icon.svg

@ -1 +0,0 @@
<?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_RKMe3wwWD2dTyBn6NcW0C9MUCvwmzaAI"><rect width="250" height="250"/></clipPath></defs><g clip-path="url(#_clipPath_RKMe3wwWD2dTyBn6NcW0C9MUCvwmzaAI)"><rect width="250" height="250" style="fill:rgb(0,0,0)" fill-opacity="0"/><defs><filter id="iTmkcAVccMUU4hUgeTgbMGmbHN67spCn" 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_CNsltqqfCf30Oj6FOSlIWDEJNRlv6JTn"/><feOffset xmlns="http://www.w3.org/2000/svg" in="_out_CNsltqqfCf30Oj6FOSlIWDEJNRlv6JTn" 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_CNsltqqfCf30Oj6FOSlIWDEJNRlv6JTn" 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_CNsltqqfCf30Oj6FOSlIWDEJNRlv6JTn" operator="over" result="_out_L1EYinKj8v6JxdOmZQsGWztvn86VKUMs"/><feMerge><feMergeNode in="_out_L1EYinKj8v6JxdOmZQsGWztvn86VKUMs"/></feMerge></filter></defs><g filter="url(#iTmkcAVccMUU4hUgeTgbMGmbHN67spCn)"><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="FqYMU1EfKVNrvA77yugstR2NvAnWDSXy" 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.5"/><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(#FqYMU1EfKVNrvA77yugstR2NvAnWDSXy)"><path d=" M 193.593 43.234 L 56.408 43.234 C 50.104 43.234 46.923 51.496 51.39 56.32 L 106.076 115.399 L 106.076 181.214 C 106.076 183.715 107.206 186.059 109.103 187.494 L 132.758 205.374 C 137.425 208.903 143.924 205.326 143.924 199.094 L 143.924 115.399 L 198.612 56.32 C 203.069 51.505 199.91 43.234 193.593 43.234 Z " fill="rgb(255,255,255)"/></g></g></svg>

171
muk_dbfilter/static/description/index.html

@ -1,171 +0,0 @@
<section class="oe_container">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan">MuK DB Filter</h2>
<h3 class="oe_slogan">Headers based Database Selection</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>
<p class="oe_mt32">
This module allows to add additional filter criteria to the
<code>dbfilter</code>
function using a request header. To pass a regular expression to the
filter set the
<code>X-Odoo-dbfilter</code>
header field on the request and make sure that Odoo runs with an enabled
proxy mode.
</p>
</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>

BIN
muk_dbfilter/static/description/logo.png

Before

Width: 500  |  Height: 500  |  Size: 37 KiB

BIN
muk_dbfilter/static/description/preview.png

Before

Width: 1000  |  Height: 200  |  Size: 32 KiB

BIN
muk_dbfilter/static/description/service_customization.png

Before

Width: 250  |  Height: 250  |  Size: 27 KiB

BIN
muk_dbfilter/static/description/service_development.png

Before

Width: 250  |  Height: 250  |  Size: 28 KiB

BIN
muk_dbfilter/static/description/service_implementation.png

Before

Width: 250  |  Height: 250  |  Size: 26 KiB

BIN
muk_dbfilter/static/description/service_integration.png

Before

Width: 250  |  Height: 250  |  Size: 24 KiB

BIN
muk_dbfilter/static/description/service_support.png

Before

Width: 250  |  Height: 250  |  Size: 24 KiB

165
muk_fields_file/LICENSE

@ -1,165 +0,0 @@
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.

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save