This question has been flagged
2 Replies
5675 Views

Hello!


A freelancer build a module to write information on a FTP server. He generate the file local and copy after on the FTP.

But on my odoo Server the Phyton script can´t write on filesystem:


Traceback (most recent call last):

File "/opt/odoo/odoo-server/openerp/http.py", line 536, in _handle_exception

return super(JsonRequest, self)._handle_exception(exception)

File "/opt/odoo/odoo-server/openerp/http.py", line 573, in dispatch

result = self._call_function(**self.params)

File "/opt/odoo/odoo-server/openerp/http.py", line 309, in _call_function

return checked_call(self.db, *args, **kwargs)

File "/opt/odoo/odoo-server/openerp/service/model.py", line 113, in wrapper

return f(dbname, *args, **kwargs)

File "/opt/odoo/odoo-server/openerp/http.py", line 306, in checked_call

return self.endpoint(*a, **kw)

File "/opt/odoo/odoo-server/openerp/http.py", line 802, in __call__

return self.method(*args, **kw)

File "/opt/odoo/odoo-server/openerp/http.py", line 402, in response_wrap

response = f(*args, **kw)

File "/opt/odoo/odoo-server/addons/web/controllers/main.py", line 941, in call_button

action = self._call_kw(model, method, args, {})

File "/opt/odoo/odoo-server/addons/web/controllers/main.py", line 929, in _call_kw

return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)

File "/opt/odoo/odoo-server/openerp/api.py", line 241, in wrapper

return old_api(self, *args, **kwargs)

File "/opt/odoo/odoo-addons/ftp_connection/ftp_connect.py", line 60, in create_file

f = open(filename, 'w')

IOError: [Errno 13] Keine Berechtigung: 'WHOUT00023.txt'


It seems not a problem with unsuffient permisson on Linux. It seems that Python cannot write because of odoo.

Has some an idea, or need you more code from the python script?


Thank you!!

Avatar
Discard
Author Best Answer

Hello!


Thank you .. i found now the problem.

I also try to use a direct path to an folder ... but I has to restart odoo, after changes on the .py file.

So now it works, thank you!

Avatar
Discard
Best Answer

If you will save a temporary file better use a named file that is a temporary file so permissions are not involved. if you need the file in an specific folder then you need to check permission for the user that runs Odoo server, but if you will save the file in an FTP location better use a temporary file, I deal with this before. An Example of using NamedTemporaryFile

from tempfile import NamedTemporaryFile
named_zip = NamedTemporaryFile( suffix=".tmp", prefix="tmp__h2h__", delete=False )# or default True for delete the file after the first use
#to get filename
named_zip.name
named_zip.close() 



Avatar
Discard