← Back to team overview

openerp-community team mailing list archive

Re: Image store problem in Odoo

 

Ok Sebastien, thank you for you hard work.

+1 for the storing.configuration, as said by Parthiv it would be great for managing CDN in the future.

Le 12/06/2014 07:32, Sebastien Beau a écrit :
Hi,
@Yannick
I didn't try it on 8 version, and as the API have changed I have to adapt it in order to implement it in the same way.
I talked to Raphael Collet about the storage of images, he like my idea.
I will try to take a look on it for 8 version during the weekend and I will propose a MP to new version with the 8 API style before the end of the month.

@Mariano Ruiz
hum interesting comment
What do you think by replacing it by
ImageField(..... resize_base_on="my_original_image", height=64, width=64)

and if the field resize_base_on is here than I have the same behaviours as my previous class ImageResizeField, do you like it? (note : fields height and width will be required if resize_base_on is fill)

Also I am thinking about an other change, what to you think about introducing an OpenERP/Odoo object "storing.configuration" and a field "storing_configuration_id" on the model "ir.model.fields". The idea will to use a default storing configuration for every field (on file sytem for exemple) but after we will be able to customise on every field from the backend where where you want to store each binary/image fields (database, S3, ftp, SFTP, Filestore....)
Do you like the idea? (not so hard to implement)

Thanks  for your feedback


2014-06-11 17:13 GMT+02:00 Yannick Buron <yannick.buron@xxxxxxxxx <mailto:yannick.buron@xxxxxxxxx>>:

    Thank you Sebastien, I think this is what we are all looking for.

    I am currently testing it for the marketplace module. I have the
    following error :

    Traceback (most recent call last):
       File "/opt/openerp/oct-dev/server/openerp/http.py", line 470, in dispatch
         result = self._call_function(**self.params)
       File "/opt/openerp/oct-dev/server/openerp/http.py", line 294, in _call_function
         return checked_call(self.db, *args, **kwargs)
       File "/opt/openerp/oct-dev/server/openerp/service/model.py", line 113, in wrapper
         return f(dbname, *args, **kwargs)
       File "/opt/openerp/oct-dev/server/openerp/http.py", line 291, in checked_call
         return self.endpoint(*a, **kw)
       File "/opt/openerp/oct-dev/server/openerp/http.py", line 652, in __call__
         return self.method(*args, **kw)
       File "/opt/openerp/oct-dev/server/openerp/http.py", line 337, in response_wrap
         response = f(*args, **kw)
       File "/opt/openerp/oct-dev/web/addons/web/controllers/main.py", line 1046, in call_kw
         return self._call_kw(model, method, args, kwargs)
       File "/opt/openerp/oct-dev/web/addons/web/controllers/main.py", line 1038, in _call_kw
         return getattr(request.registry.get(model), method)(request.cr  <http://request.cr>, request.uid, *args, **kwargs)
       File "/opt/openerp/oct-dev/addons/mail/mail_thread.py", line 419, in write
         result = super(mail_thread, self).write(cr, uid, ids, values, context=context)
       File "/opt/openerp/oct-dev/server/openerp/osv/orm.py", line 3946, in write
         result += self._columns[field].set(cr, self, id, field, vals[field], user, context=rel_context) or []
       File "/opt/openerp/oct-dev/server/openerp/osv/fields.py", line 1287, in set
         self._fnct_inv(obj, cr, user, id, name, value, self._fnct_inv_arg, context)
       File "/opt/openerp/oct-dev/server-env-tools/binary_field/fields.py", line 156, in _fnct_write
         obj, cr, uid, ids, field_name, value, args, context=context)
       File "/opt/openerp/oct-dev/server-env-tools/binary_field/fields.py", line 128, in _fnct_write
         res = storage.add(value)
       File "/opt/openerp/oct-dev/server-env-tools/binary_field/fields.py", line 61, in add
         _file_write(self.cr  <http://self.cr>, self.uid, self.location, value)
    TypeError: _file_write() takes exactly 4 arguments (5 given)


    I checked the server/openerp/base/ir/ir_attachment.py line 129, it seems that the function changed :
        def _file_write(self, cr, uid, value):

    In general, all 'location' seems to have disappeared, in -file_read, _file_delete and _full_path.

    I am using the latest trunk file. I guess the module may correctly work on V7.

    Available this evening if you need.
    Yannick.




    Le 11/06/2014 15:43, Sebastien Beau a écrit :
    Hi all,

    I worked on this during the last month and I need your feedback
    https://code.launchpad.net/~akretion-team/server-env-tools/server-env-tools
    <https://code.launchpad.net/%7Eakretion-team/server-env-tools/server-env-tools>

    The aim of my first module is to implement new kind of fields

    BinaryField
    ImageField
    ImageResizeField


    All of this fields will be store on the file system by default
    and not in the
    database. If you want to store it on an other support (database,
    S3, ftp, SFTP...)
    Then you should create your own 'storage class' and use your
    custom 'storage
    class' instead

    The default Storage class will store the field on the file system
    and build
    the path like that
     BASE_LOCATION/DB_NAME/MODEL-FIELD/XXX/YYYYY

    with

    - BASE_LOCATION: the base location configured in ir.config_parameter
    - DB_NAME:  your database name
    - MODEL-FIELD: the concatenation of the name of the model with
    the name of the
    field, for example 'product_product-image'
    - XXX: the first 3 letter of the file name build with their sha1 hash
    - YYYYYY: file name build with their sha1 hash

    Here is an example of field declaration

        'binary_test': fields.BinaryField('Test Binary'),
        'image_test': fields.ImageField('Test Image'),
        'image_test_resize': fields.ImageResizeField(
            related_field='image_test',
            string='Test Image small',
            height=64,
            width=64,
            ),



    If you want to see to a real implementation take a look here :
    http://bazaar.launchpad.net/~akretion-team/openerp-product-attributes/openerp-product-attributes-product-image/view/head:/product_image/product_image.py#L38
    <http://bazaar.launchpad.net/%7Eakretion-team/openerp-product-attributes/openerp-product-attributes-product-image/view/head:/product_image/product_image.py#L38>


    You can also try this module to understand better the way it
    work. (Note resize field will be recomputed automatically as this
    field depend of refernce field)

    As you can see I have a custom path based on the model-field. I
    need this because I want to serve some image directly from nginx
    without using OpenERP/Odoo. If I use the same path for all of the
    binary/image then I will be not able to choose what I want to
    share with nginx.


    Hope this can help you.


    2014-06-11 12:45 GMT+02:00 Falinwa Hans
    <hans.yonathan@xxxxxxxxxxx <mailto:hans.yonathan@xxxxxxxxxxx>>:

        Hi Tony,

        Wow, I look on the code, and its very beautiful.

        Thanks for the solution, I think it will solved the problem
        for now.

        Very appreciated it.

        I remember that you developed oe_cn_fonts module too.

        It's a great work.

        Hi Franck Bret,

        Thanks for the information, its nice to see that we have the
        same problem in this topic.

        Thank You.

        Best Regards,

        *Hans Yonathan*

        *OpenERP Support*

        FALINWA Limited

        /Expert in Finance & Business Intelligence/

        /OpenERP Partner/

        /Website: //www.falinwa.com/ <http://www.falinwa.com/>

        On 06/11/2014 06:28 PM, Tony Gu wrote:

        Hi Hans,

        You may be interested to have a look at our module here:
        https://github.com/shine-it/product_image_filestore
        The image on product can be save as an attachment of the
        product and display correctly on the product form. If you
        have product image stored in database already, this module
        will also extract the binary and store it back to file store.

        Have fun!

        *From:*Franck Bret [via OpenERP Community] [mailto:[hidden
        email] <http://user/SendEmail.jtp?type=node&node=4645761&i=0>]
        *Sent:* Wednesday, June 11, 2014 6:31 PM


        *To:* Falinwa Hans
        *Subject:* Re: [Openerp-community] Image store problem in Odoo

        there is a community call for discussion around this here,
        hope it helps

        https://twitter.com/Seb_Beau/status/474847322887974912

        https://code.launchpad.net/~akretion-team/server-env-tools/server-env-tools
        <https://code.launchpad.net/%7Eakretion-team/server-env-tools/server-env-tools>

        Interesting read and module too here :

        https://bitbucket.org/anybox/advanced_attachment
        http://docs.anybox.fr/advanced_attachment/current/

        Le 11/06/2014 11:48, Falinwa Hans a écrit :

            Hi Yannick,

            Thx for your response.

            I see the code, and it's a nice idea. I will keep it on
            myself.

            It will be nicer if the improvement is made from Odoo
            framework itself.

            Thank You.

            Best Regards,

            *Hans Yonathan*

            *OpenERP Support*

            FALINWA Limited

            /Expert in Finance & Business Intelligence/

            /OpenERP Partner/

            /Website: //www.falinwa.com/ <http://www.falinwa.com/>

            *From:*Yannick Buron-2 [via OpenERP Community]
            [mailto:[hidden email]
            <http://user/SendEmail.jtp?type=node&node=4645759&i=0>]
            *Sent:* Wednesday, June 11, 2014 5:06 PM
            *To:* Falinwa Hans
            *Subject:* Re: [Openerp-community] Image store problem in
            Odoo

            +1 I have the same problem with the marketplace module in
            communityTools. We need to have pictures displayed on the
            announcements,
            and I really don't want to store them in database.

            I worked on the problem three month ago, and at this time
            the problem
            was : There was no way to store the content of binary
            fields on the
            ir.attachments, and thus store the content in filesystem.
            When you set the ir_location key in system configuration,
            ir.attachments
            are correctly stored in filesystem, the problem is really
            the fact that
            there is no link between binary fields and ir.attachments.

            I tried to make a workaround in my module, please see
            http://bazaar.launchpad.net/~yannick-buron/openerp-communitytools/trunk/view/head:/marketplace/marketplace.py
            <http://bazaar.launchpad.net/%7Eyannick-buron/openerp-communitytools/trunk/view/head:/marketplace/marketplace.py>

            starting line 173. It almost work, the content is stored
            in filesystem,
            but unfortunately then it's not displayed back correctly
            on the form in
            the picture widget. I only spent some hours on this
            problem, so maybe
            there is little to correct to make it works.

            This was an issue three month ago, with the ecommerce
            module I really
            hope that Odoo SA worked on this because having such
            limitations on
            binary fields is really a pain. Does someone have some
            news regarding
            this matter?

            Yannick.


            Le 11/06/2014 10:49, Falinwa Hans a écrit :


            > Hi Guys,
            >
            > I find that the image in Odoo is stored in database.
            > Did we can change the configuration so it can stored in
            the file system?
            > I can't find the tutorial anywhere. So I think we cannot.
            >
            > What I know is we can change the configuration when we
            want to store the
            > attachment, but its different case in image.
            >
            > I think its an important feature for Odoo, importantly
            Odoo will have an
            > e-commerce and website builder feature which we will
            have a lot of image in
            > Odoo.
            >
            > I find that its very important and there's a problem
            when the image is
            > stored in database :
            > 1. Odoo not convert the size/resolution of the image.
            (We must warned the
            > end user to only just upload a small size of file,
            which usually user always
            > make a mistake)
            > 2. Its very hard to make an importation on image
            > 3. The database will be very big because of image, and
            it will be hard to
            > make a dump file(backup and restore) in web interface.
            > (which end user always use this feature to make a test
            database which image
            > is not important in here)
            >
            > If we can change the configuration so we can store it
            in file system and
            > save the database only the name of file. We will have
            advantage:
            > 1. It will be  easier to make an importation of image.
            > 2. We will not care about file size anymore because it
            save on file system.
            > 3. The database size will reduce greatly.
            >
            > Before I have a problem in attachment, when my database
            size raise to 2 GB
            > which impossible to make a dump(backup and restore) in
            web interface. After
            > I change the configuration the database size reduce
            greatly to only 30 MB.
            > So I think this problem will occur again if we begin to
            upload the image in
            > Odoo.
            >
            > Is there any solution for this?
            >
            > Thank You.
            >
            >
            >
            >
            > -----
            > Hans Yonathan
            > OpenERP Support
            > FALINWA Limited
            > Expert in Finance & Business Intelligence
            > OpenERP Silver Partner
            > Website: www.falinwa.com <http://www.falinwa.com>
            >
            > --
            > View this message in context:
            http://openerp-community.2306076.n4.nabble.com/Openerp-community-Image-store-problem-in-Odoo-tp4645755.html
            > Sent from the OpenERP Community mailing list archive at
            Nabble.com.
            >
            > _______________________________________________
            > Mailing list: https://launchpad.net/~openerp-community
            <https://launchpad.net/%7Eopenerp-community>
            > Post to     : [hidden email]
            <http://user/SendEmail.jtp?type=node&node=4645757&i=0>
            > Unsubscribe : https://launchpad.net/~openerp-community
            <https://launchpad.net/%7Eopenerp-community>
            > More help   : https://help.launchpad.net/ListHelp

            _______________________________________________
            Mailing list: https://launchpad.net/~openerp-community
            <https://launchpad.net/%7Eopenerp-community>
            Post to     : [hidden email]
            <http://user/SendEmail.jtp?type=node&node=4645757&i=1>
            Unsubscribe : https://launchpad.net/~openerp-community
            <https://launchpad.net/%7Eopenerp-community>
            More help   : https://help.launchpad.net/ListHelp
            ------------------------------------------------------------------------

            *If you reply to this email, your message will be added
            to the discussion below:*

            http://openerp-community.2306076.n4.nabble.com/Openerp-community-Image-store-problem-in-Odoo-tp4645755p4645757.html

            To start a new topic under OpenERP Community, email
            [hidden email]
            <http://user/SendEmail.jtp?type=node&node=4645759&i=1>
            To unsubscribe from OpenERP Community, click here.
            NAML
            <http://openerp-community.2306076.n4.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>

        Hans Yonathan
        OpenERP Support
        FALINWA Limited
        Expert in Finance & Business Intelligence
        OpenERP Silver Partner
        Website: www.falinwa.com <http://www.falinwa.com>

        ------------------------------------------------------------------------

        View this message in context: RE: [Openerp-community] Image
        store problem in Odoo
        <http://openerp-community.2306076.n4.nabble.com/Openerp-community-Image-store-problem-in-Odoo-tp4645755p4645759.html>
        Sent from the OpenERP Community mailing list archive
        <http://openerp-community.2306076.n4.nabble.com/> at Nabble.com.



        _______________________________________________

        Mailing list:https://launchpad.net/~openerp-community  <https://launchpad.net/%7Eopenerp-community>

        Post to     :[hidden email]  <http://user/SendEmail.jtp?type=node&node=4645760&i=0>

        Unsubscribe :https://launchpad.net/~openerp-community  <https://launchpad.net/%7Eopenerp-community>

        More help   :https://help.launchpad.net/ListHelp




--
        Franck Bret

        ============

        Consultant fonctionel OpenErp

        ------------

        [hidden email]  <http://user/SendEmail.jtp?type=node&node=4645760&i=1>

        Gsm. 0603906598


        _______________________________________________
        Mailing list: https://launchpad.net/~openerp-community
        <https://launchpad.net/%7Eopenerp-community>
        Post to     : [hidden email]
        <http://user/SendEmail.jtp?type=node&node=4645760&i=2>
        Unsubscribe : https://launchpad.net/~openerp-community
        <https://launchpad.net/%7Eopenerp-community>
        More help   : https://help.launchpad.net/ListHelp

        ------------------------------------------------------------------------

        *If you reply to this email, your message will be added to
        the discussion below:*

        http://openerp-community.2306076.n4.nabble.com/Openerp-community-Image-store-problem-in-Odoo-tp4645755p4645760.html

        To start a new topic under OpenERP Community, email [hidden
        email] <http://user/SendEmail.jtp?type=node&node=4645761&i=1>
        To unsubscribe from OpenERP Community, click here.
        NAML
        <http://openerp-community.2306076.n4.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>

        Hans Yonathan
        OpenERP Support
        FALINWA Limited
        Expert in Finance & Business Intelligence
        OpenERP Silver Partner
        Website: www.falinwa.com <http://www.falinwa.com>

        ------------------------------------------------------------------------
        View this message in context: RE: [Openerp-community] Image
        store problem in Odoo
        <http://openerp-community.2306076.n4.nabble.com/Openerp-community-Image-store-problem-in-Odoo-tp4645755p4645761.html>
        Sent from the OpenERP Community mailing list archive
        <http://openerp-community.2306076.n4.nabble.com/> at Nabble.com.

        _______________________________________________
        Mailing list: https://launchpad.net/~openerp-community
        <https://launchpad.net/%7Eopenerp-community>
        Post to     : openerp-community@xxxxxxxxxxxxxxxxxxx
        <mailto:openerp-community@xxxxxxxxxxxxxxxxxxx>
        Unsubscribe : https://launchpad.net/~openerp-community
        <https://launchpad.net/%7Eopenerp-community>
        More help   : https://help.launchpad.net/ListHelp




    _______________________________________________
    Mailing list:https://launchpad.net/~openerp-community  <https://launchpad.net/%7Eopenerp-community>
    Post to     :openerp-community@xxxxxxxxxxxxxxxxxxx  <mailto:openerp-community@xxxxxxxxxxxxxxxxxxx>
    Unsubscribe :https://launchpad.net/~openerp-community  <https://launchpad.net/%7Eopenerp-community>
    More help   :https://help.launchpad.net/ListHelp


    _______________________________________________
    Mailing list: https://launchpad.net/~openerp-community
    <https://launchpad.net/%7Eopenerp-community>
    Post to     : openerp-community@xxxxxxxxxxxxxxxxxxx
    <mailto:openerp-community@xxxxxxxxxxxxxxxxxxx>
    Unsubscribe : https://launchpad.net/~openerp-community
    <https://launchpad.net/%7Eopenerp-community>
    More help   : https://help.launchpad.net/ListHelp




_______________________________________________
Mailing list: https://launchpad.net/~openerp-community
Post to     : openerp-community@xxxxxxxxxxxxxxxxxxx
Unsubscribe : https://launchpad.net/~openerp-community
More help   : https://help.launchpad.net/ListHelp


Follow ups

References