mirror of https://github.com/muk-it/muk_base
Mathias Markl
7 years ago
commit
8a7a78852f
9 changed files with 254 additions and 0 deletions
-
5.gitignore
-
45.travis.yml
-
15README.md
-
23muk_fields_lobject/__init__.py
-
58muk_fields_lobject/__manifest__.py
-
61muk_fields_lobject/fields.py
-
47muk_fields_lobject/models.py
-
BINmuk_fields_lobject/static/description/banner.png
-
BINmuk_fields_lobject/static/description/icon.png
@ -0,0 +1,5 @@ |
|||||
|
.project |
||||
|
.pydevproject |
||||
|
*.pyc |
||||
|
.settings/ |
||||
|
.idea |
@ -0,0 +1,45 @@ |
|||||
|
language: python |
||||
|
|
||||
|
python: |
||||
|
- "3.6" |
||||
|
|
||||
|
notifications: |
||||
|
email: false |
||||
|
|
||||
|
sudo: false |
||||
|
cache: pip |
||||
|
|
||||
|
addons: |
||||
|
postgresql: "9.3" |
||||
|
apt: |
||||
|
packages: |
||||
|
- expect-dev |
||||
|
- python-lxml |
||||
|
|
||||
|
env: |
||||
|
global: |
||||
|
- VERSION="11.0" TESTS="0" LINT_CHECK="0" TRANSIFEX="0" |
||||
|
|
||||
|
matrix: |
||||
|
- TESTS="1" ODOO_REPO="odoo/odoo" |
||||
|
|
||||
|
before_install: |
||||
|
- sudo apt-get install -y unoconv |
||||
|
- "export PATH=$PWD/travis_phantomjs/phantomjs-2.1.1-linux-x86_64/bin:$PATH" |
||||
|
- "if [ $(phantomjs --version) != '2.1.1' ]; then rm -rf $PWD/travis_phantomjs; mkdir -p $PWD/travis_phantomjs; fi" |
||||
|
- "if [ $(phantomjs --version) != '2.1.1' ]; then wget https://assets.membergetmember.co/software/phantomjs-2.1.1-linux-x86_64.tar.bz2 -O $PWD/travis_phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2; fi" |
||||
|
- "if [ $(phantomjs --version) != '2.1.1' ]; then tar -xvf $PWD/travis_phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2 -C $PWD/travis_phantomjs; fi" |
||||
|
- "phantomjs --version" |
||||
|
|
||||
|
install: |
||||
|
- pip install cachetools |
||||
|
- pip install pdfconv |
||||
|
- 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 |
@ -0,0 +1,15 @@ |
|||||
|
[![License: AGPL v3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0) |
||||
|
[![Build Status](https://travis-ci.org/muk-it/muk_web.svg?branch=11.0)](https://travis-ci.org/muk-it/muk_web) |
||||
|
[![codecov](https://codecov.io/gh/muk-it/muk_web/branch/11.0/graph/badge.svg)](https://codecov.io/gh/muk-it/muk_web) |
||||
|
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/eff47569926c435d98a3187623615bc4)](https://www.codacy.com/app/keshrath/muk_web?utm_source=github.com&utm_medium=referral&utm_content=muk-it/muk_web&utm_campaign=Badge_Grade) |
||||
|
|
||||
|
# MuK Odoo Web Modules |
||||
|
|
||||
|
addon | version | summary |
||||
|
--- | --- | --- |
||||
|
[muk_web_client](muk_web_client/) | 11.0 | Odoo Web Client Extension |
||||
|
[muk_web_client_refresh](muk_web_client_refresh/) | 11.0 | Web Client Refresh |
||||
|
[muk_web_preview](muk_web_preview/) | 11.0 | Preview Dialog |
||||
|
[muk_web_preview_attachment](muk_web_preview_attachment/) | 11.0 | Preview Dialog Attachment |
||||
|
[muk_web_share](muk_web_share/) | 11.0 | Share Dialog |
||||
|
|
@ -0,0 +1,23 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
|
||||
|
################################################################################### |
||||
|
# |
||||
|
# 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 fields |
||||
|
from . import models |
@ -0,0 +1,58 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
|
||||
|
################################################################################### |
||||
|
# |
||||
|
# 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 PGSQL Large Objects", |
||||
|
"summary": """PGSQL Large Objects Support""", |
||||
|
"description": """ |
||||
|
Provides a field to store bytes as PostgreSQL |
||||
|
large objects. |
||||
|
""", |
||||
|
"version": '11.0.1.0.0', |
||||
|
"category": 'Extra Tools', |
||||
|
"license": "AGPL-3", |
||||
|
"website": "http://www.mukit.at", |
||||
|
"author": "MuK IT", |
||||
|
"contributors": [ |
||||
|
"Mathias Markl <mathias.markl@mukit.at>", |
||||
|
], |
||||
|
"depends": [ |
||||
|
"base", |
||||
|
], |
||||
|
"data": [ |
||||
|
], |
||||
|
"demo": [ |
||||
|
], |
||||
|
"qweb": [ |
||||
|
"static/src/xml/*.xml", |
||||
|
], |
||||
|
"images": [ |
||||
|
'static/description/banner.png' |
||||
|
], |
||||
|
"external_dependencies": { |
||||
|
"python": [], |
||||
|
"bin": [], |
||||
|
}, |
||||
|
"auto_install": True, |
||||
|
"application": False, |
||||
|
"installable": True, |
||||
|
|
||||
|
} |
@ -0,0 +1,61 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
|
||||
|
################################################################################### |
||||
|
# |
||||
|
# 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 re |
||||
|
import hashlib |
||||
|
import logging |
||||
|
import psycopg2 |
||||
|
|
||||
|
from odoo import _ |
||||
|
from odoo import models, api, fields |
||||
|
from odoo.tools import ustr, pycompat, human_size |
||||
|
|
||||
|
_logger = logging.getLogger(__name__) |
||||
|
|
||||
|
class LargeObject(fields.Field): |
||||
|
|
||||
|
type = 'lobject' |
||||
|
column_type = ('oid', 'oid') |
||||
|
_slots = { |
||||
|
'prefetch': False, |
||||
|
'context_dependent': True, |
||||
|
} |
||||
|
|
||||
|
def convert_to_column(self, value, record, values=None): |
||||
|
if not value: |
||||
|
return None |
||||
|
lobject = record.env.cr._cnx.lobject(0, 'wb') |
||||
|
if isinstance(value, bytes): |
||||
|
lobject.write(value) |
||||
|
else: |
||||
|
lobject.write(value.read()) |
||||
|
return lobject.oid |
||||
|
|
||||
|
def convert_to_record(self, value, record): |
||||
|
if value: |
||||
|
lobject = record.env.cr._cnx.lobject(value, 'rb') |
||||
|
if record._context.get('bin_size') or record._context.get('bin_size_' + self.name): |
||||
|
return human_size(lobject.seek(0, 2)) |
||||
|
elif record._context.get('oid'): |
||||
|
return lobject.oid |
||||
|
else: |
||||
|
return lobject.read() |
||||
|
return False |
@ -0,0 +1,47 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
|
||||
|
################################################################################### |
||||
|
# |
||||
|
# 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 re |
||||
|
import hashlib |
||||
|
import logging |
||||
|
import psycopg2 |
||||
|
|
||||
|
from odoo import _ |
||||
|
from odoo import models, api, fields |
||||
|
from odoo.tools import ustr, pycompat, human_size |
||||
|
|
||||
|
_logger = logging.getLogger(__name__) |
||||
|
|
||||
|
|
||||
|
unlink = models.BaseModel.unlink |
||||
|
|
||||
|
def large_object_unlink(self): |
||||
|
oids = [] |
||||
|
for name in self._fields: |
||||
|
field = self._fields[name] |
||||
|
if field.type == 'lobject' and field.store: |
||||
|
for record in self: |
||||
|
oids.append(record.with_context({'oid': True})[name]) |
||||
|
unlink(self) |
||||
|
for oid in oids: |
||||
|
lobject = self.env.cr._cnx.lobject(oid, 'rb').unlink() |
||||
|
|
||||
|
models.BaseModel.unlink = large_object_unlink |
After Width: 880 | Height: 440 | Size: 47 KiB |
After Width: 250 | Height: 250 | Size: 13 KiB |
Write
Preview
Loading…
Cancel
Save
Reference in new issue