Как загружать изображения в виде дерева и отображать их в виде дерева или списка в Openerp 7 или Odoo

Я использовал приведенный ниже код и при нажатии на кнопку «Сохранить». Он сохраняет файл, но при нажатии на сохраненный файл. Он загружает его в формате bin-файла.

У меня есть 2 сомнения:

  1. Как мне загрузить его, используя то же имя файла и расширение, которое было загружено.
  2. Как я могу просмотреть все изображения в виде дерева, откуда они были загружены. Использование widget="image" не работает.

Файл openerp.py:

{
    'name' : 'Vyas File Upload Demo',
    'version' : '0.1',
    'category' : 'Demo',
    'description' : 
    """
        Module to test the working of File upload and download in Openerp 7

    """,
    'author' : 'Vyas Senthil',
    'license' : 'AGPL-3',
    'depends' : [],
    'init_xml' : [],
    'demo_xml' : [],
    'update_xml' : ['file_upload_demo_view.xml'],
    'active': False,
    'installable': True,
}

загрузить файл demo.py [файл Python]:

from osv import osv,fields
    from datetime import date,datetime
    from openerp import netsvc
    from openerp import SUPERUSER_ID
    from openerp.tools.translate import _
    from operator import itemgetter
    import base64
    import time
    import re
    import psycopg2 as psy
    import sys
    import pprint   # To print python objects in a readable format , use "pprint.pprint(obj or dictionary)".
    import pdb  # To debug python files. Use pdb.set_trace()


    class manage_inspection(osv.osv):
        ''' Inspection module'''
        _name = 'manage.inspection'
        _columns = {

            'name': fields.char('Inspection Number',required=True), # Inspection Number
            'file_upload_demo_grid': fields.one2many('file.upload.demo','manage_inspection_id', 'File upload Grid'), 
        }


    class file_upload_demo(osv.osv):
        #class to maintain plant type 

        _name = 'file.upload.demo'


        def _get_contract_file_name(self, cr, uid, ids, field_name, arg, context=None):
            ''' To set the name_filename field'''

            result = {}
            for product_data in self.browse(cr, uid, ids, context=context):
                    result[product_data.id] = product_data['file_path']
                    return result
            return result


        _columns = {

                'image_upload': fields.binary(string='Image Upload new'),
                'file_path': fields.char('File Name and Extension', size=128),
                'name_filename':fields.function(_get_contract_file_name, type="char", size=255, method=True, string="File Name"),

                'manage_inspection_id': fields.many2one('manage.inspection','Manage Inspection Id'), # Connection to Parent form.


            }

    file_upload_demo()

file_upload_demo_view.xml [файл XML]:

<?xml version="1.0" ?>
<openerp>
    <data>

        <!-- Top Menu -->
        <menuitem name="Vyas File Upload Demo"
            id="file_upload_demo_top_menu"
            sequence="32"/>

        <!-- Side Menu Heading -->
        <menuitem name="File Upload Demo"
            id="file_upload_demo_side_heading"
            parent="file_upload_demo_top_menu"
            sequence="1"/>



        <!-- inspection form view -->
        <record model="ir.ui.view" id="view_file_upload_demo_form">
            <field name="name">manage.inspection.form</field>
            <field name="model">manage.inspection</field>
            <field name="arch" type="xml">
                <form string="Manage Inspection" version="7.0">

                    <!-- File Upload method -->
                    <field name="name" placeholder="Inspection Number" style="width:30%%" />

                    <!-- Grid - Upload Photos -->
                    <field name="file_upload_demo_grid" />

                </form>
            </field>
        </record>

        <!-- file_upload_demo tree view -->
        <record model="ir.ui.view" id="view_file_upload_demo_tree">
            <field name="name">file.upload.demo.tree</field>
            <field name="model">file.upload.demo</field>
            <field name="arch" type="xml">
                <tree string="file upload demo" editable="top">

                    <!-- File Upload method -->
                    <field name="file_path" />
                    <field name="image_upload"  filename="file_path" />
                </tree>
            </field>
        </record>


        <!-- action menu -->
        <record model="ir.actions.act_window" id="action_upload_files_demo">  
            <field name="name">Inspection </field>          <!-- view label -->
            <field name="res_model">manage.inspection</field>
            <field name="view_type">form</field>
            <field name="view_mode">tree,form</field>
        </record>

        <!-- Side menu to open Manage Sales Invoice -->
        <menuitem 
            name="Upload Files Demo"
            id="upload_file_demo"
            parent="file_upload_demo_side_heading"
            sequence="3"
            action="action_upload_files_demo"/>
    </data>
</openerp>

person Vyas Senthil    schedule 18.03.2015    source источник
comment
Мне удалось решить эту проблему с помощью решения из [link]odoo.com/forum/help-1/question/ . Но проблема, с которой я все еще сталкиваюсь, заключается в том, что при загрузке изображения оно загружается в исходном размере, который занимает большую часть экрана и остается таким до тех пор, пока не будет добавлено другое изображение или я не нажму «Сохранить», в это время оно уменьшается до необходимого размер заполнителя изображения. Как сделать размер заполнителя при загрузке самого изображения.   -  person Vyas Senthil    schedule 23.03.2015
comment
Структура моего класса имеет вид: - школа (представление формы) - > школьный_класс (представление в виде дерева) - > ученики (представление в виде дерева), все в одном представлении формы. Изображения загружаются в ученики (представление в виде дерева) для каждого школьного_класса, а в школе много школьных_классов. И в представлении поиска я должен увидеть все изображения для данной школы. Но я не уверен, как показать несколько классов в одном представлении поиска.   -  person Vyas Senthil    schedule 23.03.2015


Ответы (1)


найдите кнопку «Документ» в модуле проекта, это позволит вам прикрепить несколько вложений и просмотреть их в дереве, просмотреть самую красивую вещь, которая сохранит имя и расширение вашего вложения (попробуйте сделать так)
Примечание: это вложение может быть изображение или любой тип вложения

person Soaad    schedule 18.03.2015
comment
Структура моего класса имеет вид: - школа (представление в виде формы) - › school_class (представление в виде дерева) - › ученики (представление в виде дерева). Изображения загружаются в ученики (представление в виде дерева) для каждого школьного_класса, а в школе много школьных_классов. Так что этот тип вложения не будет работать для моих требований. И в представлении поиска я должен увидеть все изображения для данной школы. Но я не уверен, как показать несколько классов в одном представлении поиска. - person Vyas Senthil; 23.03.2015