Merge pull request #8 from vrenaville/delivery_carrier_label_s3

Delivery carrier label s3
This commit is contained in:
Vincent Renaville
2017-02-15 15:46:38 +01:00
committed by GitHub
co-authored by GitHub
6 changed files with 84 additions and 0 deletions
+4
View File
@@ -0,0 +1,4 @@
Shipping label S3
-----------------
* Add s3 location management for shipping label.
+5
View File
@@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
# © 2017 Vincent Renaville (Camptocamp)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import models
+21
View File
@@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# © 2017 Vincent Renaville (Camptocamp)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
'name': 'S3 - Shipping Label',
'version': '9.0.1.0.0',
'author': 'Camptocamp',
'license': 'AGPL-3',
'category': 'Knowledge Management',
'website': 'http://www.camptocamp.com',
'images': [],
'depends': [
'base_delivery_carrier_label',
'attachment_s3',
],
'data': [
],
'test': [],
'installable': True,
'auto_install': True,
}
@@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
# © 2017 Vincent Renaville (Camptocamp)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import shipping_label
@@ -0,0 +1,48 @@
# -*- coding: utf-8 -*-
from openerp import api, fields, models
class ShippingLabel(models.Model):
""" Inherit of shipping label to store datas
in the right location if S3 activated """
_inherit = 'shipping.label'
datas = fields.Binary(
compute='_compute_datas',
inverse='_inverse_datas',
string='File Content',
nodrop=True,
)
@api.depends('store_fname', 'db_datas')
def _compute_datas(self):
values = self._data_get('datas', None)
for attach in self:
attach.datas = values.get(attach.id)
def _inverse_datas(self):
# override in order to store files that need fast access,
# we keep them in the database instead of the object storage
location = self.attachment_id._storage()
for attach in self:
if location == 's3' and self._store_in_db_when_s3():
# compute the fields that depend on datas
value = attach.datas
bin_data = value and value.decode('base64') or ''
vals = {
'file_size': len(bin_data),
'checksum': self._compute_checksum(bin_data),
'db_datas': value,
# we seriously don't need index content on those fields
'index_content': False,
'store_fname': False,
}
fname = attach.store_fname
# write as superuser, as user probably does not
# have write access
super(ShippingLabel, attach.sudo()).write(vals)
if fname:
self._file_delete(fname)
continue
self.attachment_id._data_set('datas', attach.datas, None)
+1
View File
@@ -1 +1,2 @@
server-tools server-tools
delivery-carrier