← Back to team overview

openerp-community team mailing list archive

Re: Image store problem in Odoo

 

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
>
>

Follow ups

References