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