-
25muk_dbfilter/__init__.py
-
51muk_dbfilter/__manifest__.py
-
4muk_dbfilter/doc/changelog.rst
-
126muk_dbfilter/doc/index.rst
-
20muk_dbfilter/patch/__init__.py
-
35muk_dbfilter/patch/http.py
-
BINmuk_dbfilter/static/description/banner.png
-
BINmuk_dbfilter/static/description/icon.png
-
1muk_dbfilter/static/description/icon.svg
-
129muk_dbfilter/static/description/index.html
-
BINmuk_dbfilter/static/description/logo.png
-
BINmuk_dbfilter/static/description/preview.png
-
BINmuk_dbfilter/static/description/service_customization.png
-
BINmuk_dbfilter/static/description/service_development.png
-
BINmuk_dbfilter/static/description/service_implementation.png
-
BINmuk_dbfilter/static/description/service_integration.png
-
BINmuk_dbfilter/static/description/service_support.png
@ -0,0 +1,25 @@ |
|||
################################################################################### |
|||
# |
|||
# Copyright (C) 2018 MuK IT GmbH |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU Affero 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 Affero General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Affero 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 |
@ -0,0 +1,51 @@ |
|||
################################################################################### |
|||
# |
|||
# Copyright (C) 2018 MuK IT GmbH |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU Affero 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 Affero General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Affero 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": "11.0.1.0.1", |
|||
'category': 'Extra Tools', |
|||
'license': 'AGPL-3', |
|||
'author': 'MuK IT', |
|||
'website': 'https://www.mukit.at', |
|||
'live_test_url': 'https://demo.mukit.at/web/login', |
|||
"depends": [ |
|||
], |
|||
"contributors": [ |
|||
"Kerrim Abdelhamed <kerrim.abdelhamed@mukit.at>", |
|||
"Mathias Markl <mathias.markl@mukit.at>" |
|||
], |
|||
"data": [ |
|||
], |
|||
"demo": [ |
|||
], |
|||
"qweb": [ |
|||
], |
|||
"images": [ |
|||
], |
|||
"external_dependencies": { |
|||
"python": [], |
|||
"bin": [], |
|||
}, |
|||
"installable": True, |
|||
"auto_install": False, |
|||
"application": False, |
|||
"post_load": "_patch_system", |
|||
} |
@ -0,0 +1,4 @@ |
|||
`1.0.0` |
|||
------- |
|||
|
|||
- Init version |
@ -0,0 +1,126 @@ |
|||
============ |
|||
MuK DBFilter |
|||
============ |
|||
|
|||
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. 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 |
|||
============= |
|||
|
|||
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. |
|||
|
|||
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>`_ |
|||
|
|||
Projects |
|||
------------ |
|||
|
|||
Parts of the module are based on or inspired by: |
|||
|
|||
* `DBFilter from Header <https://github.com/OCA/server-tools>`_ |
|||
|
|||
Author & Maintainer |
|||
------------------- |
|||
|
|||
This module is maintained by the `MuK IT GmbH <https://www.mukit.at/>`_. |
|||
|
|||
MuK IT is an Austrian company specialized in customizing and extending Odoo. |
|||
We develop custom solutions for your individual needs to help you focus on |
|||
your strength and expertise to grow your business. |
|||
|
|||
If you want to get in touch please contact us via mail |
|||
(sale@mukit.at) or visit our website (https://mukit.at). |
@ -0,0 +1,20 @@ |
|||
################################################################################### |
|||
# |
|||
# Copyright (C) 2018 MuK IT GmbH |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU Affero 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 Affero General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Affero General Public License |
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
################################################################################### |
|||
|
|||
from . import http |
@ -0,0 +1,35 @@ |
|||
################################################################################### |
|||
# |
|||
# Copyright (C) 2018 MuK IT GmbH |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU Affero 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 Affero General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Affero General Public License |
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
################################################################################### |
|||
|
|||
import random |
|||
import logging |
|||
|
|||
from odoo import http, tools |
|||
from odoo.http import request |
|||
|
|||
from odoo.addons.muk_utils.tools.patch import monkey_patch |
|||
|
|||
_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 |
After Width: 880 | Height: 440 | Size: 39 KiB |
After Width: 250 | Height: 250 | Size: 7.4 KiB |
@ -0,0 +1 @@ |
|||
<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 250 250" width="250" height="250"><defs><clipPath id="_clipPath_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> |
@ -0,0 +1,129 @@ |
|||
<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="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> |
After Width: 500 | Height: 500 | Size: 37 KiB |
After Width: 1000 | Height: 200 | Size: 32 KiB |
After Width: 250 | Height: 250 | Size: 27 KiB |
After Width: 250 | Height: 250 | Size: 28 KiB |
After Width: 250 | Height: 250 | Size: 26 KiB |
After Width: 250 | Height: 250 | Size: 24 KiB |
After Width: 250 | Height: 250 | Size: 24 KiB |