← Back to team overview

openerp-community team mailing list archive

Re: Image store problem in Odoo

 

Hi I finish the implementation of storage.configuration

You can test and review the code here (yes on github!!!!)

https://github.com/OCA/product-attribute/pull/1
https://github.com/OCA/server-tools/pull/1


It's should support 8 version too but I didn't test it (if someone can)

Thanks for your feedback


2014-06-12 9:44 GMT+02:00 Yannick Buron <yannick.buron@xxxxxxxxx>:

>  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>:
>
>>  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, 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, 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
>>
>>  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
>>
>>
>>  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>:
>>
>>>  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
>>>
>>> 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
>>>
>>> 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
>>> >
>>> > --
>>> > 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
>>> > Post to     : [hidden email]
>>> <http://user/SendEmail.jtp?type=node&node=4645757&i=0>
>>> > Unsubscribe : https://launchpad.net/~openerp-community
>>> > More help   : https://help.launchpad.net/ListHelp
>>>
>>>  _______________________________________________
>>> Mailing list: https://launchpad.net/~openerp-community
>>> Post to     : [hidden email]
>>> <http://user/SendEmail.jtp?type=node&node=4645757&i=1>
>>> Unsubscribe : https://launchpad.net/~openerp-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
>>>
>>>
>>>   ------------------------------
>>>
>>> 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
>>>
>>>  Post to     : [hidden email] <http://user/SendEmail.jtp?type=node&node=4645760&i=0>
>>>
>>>  Unsubscribe : https://launchpad.net/~openerp-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
>>> Post to     : [hidden email]
>>> <http://user/SendEmail.jtp?type=node&node=4645760&i=2>
>>> Unsubscribe : https://launchpad.net/~openerp-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
>>>
>>> ------------------------------
>>> 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
>>> Post to     : openerp-community@xxxxxxxxxxxxxxxxxxx
>>> Unsubscribe : https://launchpad.net/~openerp-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
>>
>>
>>
>> _______________________________________________
>> 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
>>
>>
>
>
> _______________________________________________
> 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
>
>
>
> _______________________________________________
> 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