Initial import from Docker volume
This commit is contained in:
86
ir/attachment.py
Executable file
86
ir/attachment.py
Executable file
@@ -0,0 +1,86 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
from trytond.config import config
|
||||
from trytond.i18n import lazy_gettext
|
||||
from trytond.model import ModelSQL, ModelView, fields
|
||||
from trytond.pool import Pool
|
||||
from trytond.pyson import Eval
|
||||
from trytond.tools import firstline
|
||||
from trytond.transaction import Transaction
|
||||
|
||||
from .resource import ResourceMixin, resource_copy
|
||||
|
||||
__all__ = ['AttachmentCopyMixin']
|
||||
|
||||
|
||||
if config.getboolean('attachment', 'filestore', default=True):
|
||||
file_id = 'file_id'
|
||||
store_prefix = config.get('attachment', 'store_prefix', default=None)
|
||||
else:
|
||||
file_id = None
|
||||
store_prefix = None
|
||||
|
||||
|
||||
class Attachment(ResourceMixin, ModelSQL, ModelView):
|
||||
"Attachment"
|
||||
__name__ = 'ir.attachment'
|
||||
name = fields.Char('Name', required=True)
|
||||
type = fields.Selection([
|
||||
('data', 'Data'),
|
||||
('link', 'Link'),
|
||||
], 'Type', required=True)
|
||||
description = fields.Text('Description')
|
||||
summary = fields.Function(fields.Char('Summary'), 'on_change_with_summary')
|
||||
link = fields.Char('Link', states={
|
||||
'invisible': Eval('type') != 'link',
|
||||
}, depends=['type'])
|
||||
data = fields.Binary('Data', filename='name',
|
||||
file_id=file_id, store_prefix=store_prefix,
|
||||
states={
|
||||
'invisible': Eval('type') != 'data',
|
||||
}, depends=['type'])
|
||||
file_id = fields.Char('File ID', readonly=True)
|
||||
data_size = fields.Function(fields.Integer('Data size', states={
|
||||
'invisible': Eval('type') != 'data',
|
||||
}, depends=['type']), 'get_size')
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super().__setup__()
|
||||
cls._order = [
|
||||
('create_date', 'DESC'),
|
||||
('id', 'DESC'),
|
||||
]
|
||||
|
||||
@staticmethod
|
||||
def default_type():
|
||||
return 'data'
|
||||
|
||||
def get_size(self, name):
|
||||
with Transaction().set_context({
|
||||
'%s.%s' % (self.__name__, name[:-len('_size')]): 'size',
|
||||
}):
|
||||
record = self.__class__(self.id)
|
||||
return record.data
|
||||
|
||||
@fields.depends('description')
|
||||
def on_change_with_summary(self, name=None):
|
||||
return firstline(self.description or '')
|
||||
|
||||
@classmethod
|
||||
def fields_view_get(cls, view_id=None, view_type='form', level=None):
|
||||
pool = Pool()
|
||||
ModelData = pool.get('ir.model.data')
|
||||
if not view_id:
|
||||
if Transaction().context.get('preview'):
|
||||
view_id = ModelData.get_id(
|
||||
'ir', 'attachment_view_form_preview')
|
||||
return super().fields_view_get(
|
||||
view_id=view_id, view_type=view_type, level=level)
|
||||
|
||||
|
||||
class AttachmentCopyMixin(
|
||||
resource_copy(
|
||||
'ir.attachment', 'attachments',
|
||||
lazy_gettext('ir.msg_attachments'))):
|
||||
pass
|
||||
Reference in New Issue
Block a user