Sending email using scheduled action - odoo-8

I'm working on an odoo project and I need to send emails automatically every day at 10 am. I have created the scheduled action but I've got a problem. This is the method I use to perform sending action
#api.model
def send_mails(self):
domain = [['name', 'like', 'Production Report']]
template = self.env['email.template'].search(domain)[0]
template.send_mail(self.id, True)
After the execution of the method it gives this traceback
2016-11-03 17:35:15,158 4912 ERROR sintramdb openerp.addons.base.ir.ir_cron: Call of self.pool.get('production.ouvrages').send_mails(cr, uid, *()) failed in Job 9
Traceback (most recent call last):
File "C:\Program Files (x86)\Odoo 8.0-20160929\server\openerp\addons\base\ir\ir_cron.py", line 138, in _callback
File "C:\Program Files (x86)\Odoo 8.0-20160929\server\.\openerp\api.py", line 268, in wrapper
File "C:\Program Files (x86)\Odoo 8.0-20160929\server\.\openerp\api.py", line 372, in old_api
File "C:\Users\3D SKILLS\AppData\Local\OpenERP S.A.\Odoo\addons\8.0\production\models.py", line 347, in send_mails
File "C:\Program Files (x86)\Odoo 8.0-20160929\server\.\openerp\api.py", line 266, in wrapper
File "C:\Program Files (x86)\Odoo 8.0-20160929\server\.\openerp\api.py", line 549, in new_api
File "C:\Program Files (x86)\Odoo 8.0-20160929\server\openerp\addons\email_template\email_template.py", line 558, in send_mail
File "C:\Program Files (x86)\Odoo 8.0-20160929\server\.\openerp\api.py", line 268, in wrapper
File "C:\Program Files (x86)\Odoo 8.0-20160929\server\openerp\addons\email_template\email_template.py", line 595, in generate_email
File "C:\Program Files (x86)\Odoo 8.0-20160929\server\.\openerp\api.py", line 268, in wrapper
File "C:\Program Files (x86)\Odoo 8.0-20160929\server\openerp\addons\email_template\email_template.py", line 484, in generate_email_batch
AttributeError: 'bool' object has no attribute 'lang'
If i replace the #api.model by #api.one or #api.multi i get the following error
TypeError: old_api() takes at least 4 arguments (3 given)
Note: With #api.one or #api.multi annotation it wokrs perfectly if i use a button click to call the method.

First of all thanks guys for your quick replies!!
After i tried your fixes i wasn't still able to solve the problem. So i decided to look deeply into the email_template.py file in email_template addon and after being stuck with some errors i finally got something working. Bellow is my solution (with the old api style of course)
def send_mails(self, cr, uid, *args, **kwargs):
domain = [['name', 'like', 'Production Report']]
template_id = self.pool.get('email.template').search(cr, uid,domain,offset=0, limit=None, order=None, context=None, count=False)[0]
template_obj = self.pool.get('email.template').browse(cr, uid, template_id)
template_obj.send_mail(3, True, None)
I hope it will help someone else

Try this
#api.v8
#api.model
def send_mails(self):
domain = [['name', 'like', 'Production Report']]
template = self.env['email.template'].search(domain)[0]
template.send_mail(self.id, True)
if that doesn't work try this solution.
#api.model
def send_mails(self):
domain = [['name', 'like', 'Production Report']]
template = self.env['email.template'].search(domain)[0]
template.send_mail(self._cr,self._uid,self.id, True)

Related

how do I send files with an discord bot py

I m trying to send a file with my bot but if I search how to do this I alway get somthing I cant use because I m using
#client.tree.command and Interaction
and not #bot.command and ctx
I tried:
#client.tree.command()
async def download(interaction: discord.Interaction,link:str):
await interaction.response.defer(ephemeral=True)
link1 = link
yt = YouTube(link1)
yd = yt.streams.get_highest_resolution()
yd.download("C:\\Users\\phili\\OneDrive\\code\\discord bot")
await interaction.followup.send(file=f"{yd.title}.mp4")
I got:
Traceback (most recent call last):
File "C:\Program Files\Python311\Lib\site-packages\discord\app_commands\commands.py", line 862, in _do_call
return await self._callback(interaction, **params) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\phili\OneDrive\code\discord bot\main.py", line 512, in download
await interaction.followup.send(file=f"{yd.title}.mp4")
File "C:\Program Files\Python311\Lib\site-packages\discord\webhook\async_.py", line 1706, in send
params = handle_message_parameters(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\site-packages\discord\http.py", line 241, in handle_message_parameters
attachments_payload.append(attachment.to_dict())
^^^^^^^^^^^^^^^^^^
AttributeError: 'str' object has no attribute 'to_dict'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Program Files\Python311\Lib\site-packages\discord\app_commands\tree.py", line 1242, in _call
await command._invoke_with_namespace(interaction, namespace)
File "C:\Program Files\Python311\Lib\site-packages\discord\app_commands\commands.py", line 887, in _invoke_with_namespace
return await self._do_call(interaction, transformed_values)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\site-packages\discord\app_commands\commands.py", line 880, in _do_call
raise CommandInvokeError(self, e) from e
In discord.py, the file argument (for any Messageable) is expected to be an instance of the File class. So to send a locally saved file or downloaded file, you need to use the File class constructor.
file = discord.File("exact/path/to/the/file.mp4")
await interaction.followup.send(file=file)
Its first argument expects to be a path to the file or a file-like object.

Keras giving OSError: image file is truncated (26 bytes not processed)

I trying to classify images with 3 labels. Training samples are 6000 and validation samples contain 5000 images. The batch size is 10 and number of epochs is 30.
While executing the code in keras, during the training at first epoch, the interpreter gives the following error at 599/600 step.
Below is the snippet of code:
model.fit_generator(
train_generator,
steps_per_epoch=nb_train_samples // batch_size,
epochs=epochs,
validation_data=validation_generator,
validation_steps=nb_validation_samples // batch_size)
model.save_weights('weights_img.h5')
model.save('model_img.h5')
The interpreter gives the following error:
599/600 [============================>.] - ETA: 0s - loss: 0.2541 - acc: 0.9122Traceback (most recent call last):
File "C:\Program Files\Python36\lib\site- packages\keras\utils\data_utils.py", line 555, in get
inputs = self.queue.get(block=True).get()
File "C:\Program Files\Python36\lib\multiprocessing\pool.py", line 608, in get
raise self._value
File "C:\Program Files\Python36\lib\multiprocessing\pool.py", line 119, in worker
result = (True, func(*args, **kwds))
File "C:\Program Files\Python36\lib\site- packages\keras\utils\data_utils.py", line 392, in get_index
return _SHARED_SEQUENCES[uid][i]
File "C:\Program Files\Python36\lib\site- packages\keras\preprocessing\image.py", line 800, in __getitem__
return self._get_batches_of_transformed_samples(index_array)
File "C:\Program Files\Python36\lib\site- packages\keras\preprocessing\image.py", line 1148, in _get_batches_of_transformed_samples
interpolation=self.interpolation)
File "C:\Program Files\Python36\lib\site- packages\keras\preprocessing\image.py", line 355, in load_img
img = img.convert('RGB')
File "C:\Program Files\Python36\lib\site-packages\PIL\Image.py", line 877, in convert
self.load()
File "C:\Program Files\Python36\lib\site-packages\PIL\ImageFile.py", line 233, in load
"(%d bytes not processed)" % len(b))
OSError: image file is truncated (26 bytes not processed)
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File ".\dataset.py", line 80, in <module>
validation_steps=nb_validation_samples // batch_size)
File "C:\Program Files\Python36\lib\site- packages\keras\legacy\interfaces.py", line 91, in wrapper
return func(*args, **kwargs)
File "C:\Program Files\Python36\lib\site-packages\keras\models.py", line 1256, in fit_generator
initial_epoch=initial_epoch)
File "C:\Program Files\Python36\lib\site-packages\keras\legacy\interfaces.py", line 91, in wrapper
return func(*args, **kwargs)
File "C:\Program Files\Python36\lib\site-packages\keras\engine\training.py", line 2195, in fit_generator
workers=0)
File "C:\Program Files\Python36\lib\site-packages\keras\legacy\interfaces.py", line 91, in wrapper
return func(*args, **kwargs)
File "C:\Program Files\Python36\lib\site- packages\keras\engine\training.py", line 2310, in evaluate_generator
generator_output = next(output_generator)
File "C:\Program Files\Python36\lib\site-packages\keras\utils\data_utils.py", line 561, in get
six.raise_from(StopIteration(e), e)
File "<string>", line 3, in raise_from
StopIteration: image file is truncated (26 bytes not processed)

AttributeError: StringIO instance has no attribute 'encoding'

While using PyCharm's interactive console when debugging nosetests, I get the following error:
AttributeError: StringIO instance has no attribute 'encoding'
I found some guidance here, but I don't know how to apply it to my situation.
How can I resolve this issue?
Full Stack Trace:
Traceback (most recent call last):
File "C:\Program Files (x86)\JetBrains\PyCharm 2016.3.2\helpers\pydev\_pydevd_bundle\pydevd_comm.py", line 1409, in do_it
result = pydevconsole.console_exec(self.thread_id, self.frame_id, self.expression, dbg)
File "C:\Program Files (x86)\JetBrains\PyCharm 2016.3.2\helpers\pydev\pydevconsole.py", line 475, in console_exec
need_more = exec_code(CodeFragment(expression), updated_globals, frame.f_locals, dbg)
File "C:\Program Files (x86)\JetBrains\PyCharm 2016.3.2\helpers\pydev\pydevconsole.py", line 392, in exec_code
interpreterInterface = get_interpreter()
File "C:\Program Files (x86)\JetBrains\PyCharm 2016.3.2\helpers\pydev\pydevconsole.py", line 372, in get_interpreter
interpreterInterface = InterpreterInterface(None, None, threading.currentThread())
File "C:\Program Files (x86)\JetBrains\PyCharm 2016.3.2\helpers\pydev\_pydev_bundle\pydev_ipython_console.py", line 25, in __init__
self.interpreter = get_pydev_frontend(host, client_port, show_banner=show_banner)
File "C:\Program Files (x86)\JetBrains\PyCharm 2016.3.2\helpers\pydev\_pydev_bundle\pydev_ipython_console_011.py", line 488, in get_pydev_frontend
_PyDevFrontEndContainer._instance = _PyDevFrontEnd(show_banner=show_banner)
File "C:\Program Files (x86)\JetBrains\PyCharm 2016.3.2\helpers\pydev\_pydev_bundle\pydev_ipython_console_011.py", line 318, in __init__
self.ipython = PyDevTerminalInteractiveShell.instance()
File "C:\Users\jimgo\Anaconda2\lib\site-packages\traitlets\config\configurable.py", line 412, in instance
inst = cls(*args, **kwargs)
File "C:\Users\jimgo\Anaconda2\lib\site-packages\IPython\terminal\interactiveshell.py", line 396, in __init__
super(TerminalInteractiveShell, self).__init__(*args, **kwargs)
File "C:\Users\jimgo\Anaconda2\lib\site-packages\IPython\core\interactiveshell.py", line 499, in __init__
self.init_io()
File "C:\Users\jimgo\Anaconda2\lib\site-packages\IPython\terminal\interactiveshell.py", line 363, in init_io
self.enable_win_unicode_console()
File "C:\Users\jimgo\Anaconda2\lib\site-packages\IPython\terminal\interactiveshell.py", line 357, in enable_win_unicode_console
stderr=stderr_text_str)
File "C:\Users\jimgo\Anaconda2\lib\site-packages\win_unicode_console\__init__.py", line 31, in enable
readline_hook.enable(use_pyreadline=use_pyreadline)
File "C:\Users\jimgo\Anaconda2\lib\site-packages\win_unicode_console\readline_hook.py", line 134, in enable
check_encodings()
File "C:\Users\jimgo\Anaconda2\lib\site-packages\win_unicode_console\readline_hook.py", line 50, in check_encodings
if sys.stdin.encoding != sys.stdout.encoding:
AttributeError: StringIO instance has no attribute 'encoding'
There's an issue on the JetBrains bug tracker with a solution.
In PyCharm, go to Run > Edit Configurations > Defaults > Python tests > Nosetests. Under Additional arguments put --nocapture. Then delete all the existing test configurations from the top of the left-hand pane.
Try to debug your test again. Don't click the re-test button from the debug panel because this seems to reuse the previous configuration. Instead run the test again by right clicking on the test file for instance.
In case anyone else shows up here... I had a similar stack trace just by using:
import pdb; pdb.set_trace()
In my case it was because I had Django configured with:
TEST_RUNNER = 'xmlrunner.extra.djangotestrunner.XMLTestRunner'
Which was stealing my stdout.

Openerp_ Magento Integration/sync Error

Traceback (most recent call last):
File "/opt/openerp/server/openerp/addons/connector/queue/worker.py", line 123, in run_job
job.perform(session)
File "/opt/openerp/server/openerp/addons/connector/queue/job.py", line 492, in perform
self.result = self.func(session, *self.args, **self.kwargs)
File "/opt/openerp/server/openerp/addons/magentoerpconnect/unit/import_synchronizer.py", line 378, in import_record
importer.run(magento_id, force=force)
File "/opt/openerp/server/openerp/addons/magentoerpconnect/unit/import_synchroni zer.py", line 221, in run
self._import_dependencies()
File "/opt/openerp/server/openerp/addons/magentoerpconnect/sale.py", line 849, in _import_dependencies
'magento.product.product')
File "/opt/openerp/server/openerp/addons/magentoerpconnect/unit/import_synchronizer.py", line 124, in _import_dependency
importer.run(magento_id)
File "/opt/openerp/server/openerp/addons/magentoerpconnect/unit/import_synchronizer.py", line 206, in run
self.magento_record = self._get_magento_data()
File "/opt/openerp/server/openerp/addons/magentoerpconnect/unit/import_synchronizer.py", line 63, in _get_magento_data
return self.backend_adapter.read(self.magento_id)
File "/opt/openerp/server/openerp/addons/magentoerpconnect/product.py", line 278, in read
[int(id), storeview_id, attributes, 'id'])
File "/opt/openerp/server/openerp/addons/magentoerpconnect/product.py", line 243, in _call
return super(ProductProductAdapter, self)._call(method, arguments)
File "/opt/openerp/server/openerp/addons/magentoerpconnect/unit/backend_adapter.py", line 168, in _call
result = api.call(method, arguments)
File "/usr/local/lib/python2.7/dist-packages/magento-0.4-py2.7.egg/magento/api.py", line 161, in call
return self.client.call(self.session, resource_path, arguments)
File "/usr/lib/python2.7/xmlrpclib.py", line 1224, in __call__
return self.__send(self.__name, args)
File "/usr/lib/python2.7/xmlrpclib.py", line 1578, in __request
verbose=self.__verbose
File "/usr/lib/python2.7/xmlrpclib.py", line 1264, in request
return self.single_request(host, handler, request_body, verbose)
File "/usr/lib/python2.7/xmlrpclib.py", line 1297, in single_request
return self.parse_response(response)
File "/usr/lib/python2.7/xmlrpclib.py", line 1473, in parse_response
return u.close()
File "/usr/lib/python2.7/xmlrpclib.py", line 793, in close
raise Fault(**self._stack[0])
Fault: <Fault 3: 'Invalid api path.'>
I Am Unable To Integrated & Sync My Products From Magento To Openerp,I Have Used The CampToCamp's Add-on In The Openerp & Have Added The Module On Magento. I Have Used My Magento Server Link & Have Added Enough Test Products Yet The Products Aren't Syncing Due To The Above error As In The Jobs Tab In Openerp. Please Help Me Get Through Or Understand What Am I Doing Wrongly.
Thank You In Advance.
The problem was the integration module which was installed on my magento site didn't match the integration module on Openerp so all i needed to do was install both from the same vender and it worked like a charm.
Just remove both the integration modules from openerp & magento,& follow a single vender for me i used the following guide to get the Integration working.
https://openerp-magento-connector.readthedocs.org/en/develop/index.html

Error when I Update Module List in OpenERP

I am trying to update my modulo list using the Update Module List menu item, but I get the follwing error:
OpenERP Server Error
Client Traceback (most recent call last):
File "/opt/bitnami/apps/openerp/lib/openerp-7.0_20140330_231328-py2.7.egg/openerp/addons/web/http.py", line 204, in dispatch
response["result"] = method(self, **self.params)
File "/opt/bitnami/apps/openerp/lib/openerp-7.0_20140330_231328-py2.7.egg/openerp/addons/web/controllers/main.py", line 1132, in call_button
action = self._call_kw(req, model, method, args, {})
File "/opt/bitnami/apps/openerp/lib/openerp-7.0_20140330_231328-py2.7.egg/openerp/addons/web/controllers/main.py", line 1120, in _call_kw
return getattr(req.session.model(model), method)(*args, **kwargs)
File "/opt/bitnami/apps/openerp/lib/openerp-7.0_20140330_231328-py2.7.egg/openerp/addons/web/session.py", line 42, in proxy
result = self.proxy.execute_kw(self.session._db, self.session._uid, self.session._password, self.model, method, args, kw)
File "/opt/bitnami/apps/openerp/lib/openerp-7.0_20140330_231328-py2.7.egg/openerp/addons/web/session.py", line 30, in proxy_method
result = self.session.send(self.service_name, method, *args)
File "/opt/bitnami/apps/openerp/lib/openerp-7.0_20140330_231328-py2.7.egg/openerp/addons/web/session.py", line 103, in send
raise xmlrpclib.Fault(openerp.tools.ustr(e), formatted_info)
Server Traceback (most recent call last):
File "/opt/bitnami/apps/openerp/lib/openerp-7.0_20140330_231328-py2.7.egg/openerp/addons/web/session.py", line 89, in send
return openerp.netsvc.dispatch_rpc(service_name, method, args)
File "/opt/bitnami/apps/openerp/lib/openerp-7.0_20140330_231328-py2.7.egg/openerp/netsvc.py", line 296, in dispatch_rpc
result = ExportService.getService(service_name).dispatch(method, params)
File "/opt/bitnami/apps/openerp/lib/openerp-7.0_20140330_231328-py2.7.egg/openerp/service/web_services.py", line 626, in dispatch
res = fn(db, uid, *params)
File "/opt/bitnami/apps/openerp/lib/openerp-7.0_20140330_231328-py2.7.egg/openerp/osv/osv.py", line 190, in execute_kw
return self.execute(db, uid, obj, method, *args, **kw or {})
File "/opt/bitnami/apps/openerp/lib/openerp-7.0_20140330_231328-py2.7.egg/openerp/osv/osv.py", line 132, in wrapper
return f(self, dbname, *args, **kwargs)
File "/opt/bitnami/apps/openerp/lib/openerp-7.0_20140330_231328-py2.7.egg/openerp/osv/osv.py", line 199, in execute
res = self.execute_cr(cr, uid, obj, method, *args, **kw)
File "/opt/bitnami/apps/openerp/lib/openerp-7.0_20140330_231328-py2.7.egg/openerp/osv/osv.py", line 187, in execute_cr
return getattr(object, method)(cr, uid, *args, **kw)
File "/opt/bitnami/apps/openerp/lib/openerp-7.0_20140330_231328-py2.7.egg/openerp/addons/base/module/wizard/base_module_update.py", line 42, in update_module
update, add = module_obj.update_list(cr, uid,)
File "/opt/bitnami/apps/openerp/lib/openerp-7.0_20140330_231328-py2.7.egg/openerp/addons/base/module/module.py", line 617, in update_list
handler.load_addons()
File "/opt/bitnami/apps/openerp/lib/openerp-7.0_20140330_231328-py2.7.egg/openerp/addons/web/http.py", line 580, in load_addons
m = __import__('openerp.addons.' + module)
File "/opt/bitnami/apps/openerp/lib/openerp-7.0_20140330_231328-py2.7.egg/openerp/modules/module.py", line 133, in load_module
mod = imp.load_module('openerp.addons.' + module_part, f, path, descr)
File "/opt/bitnami/apps/openerp/lib/openerp-7.0_20140330_231328-py2.7.egg/openerp/addons/magento_integration-develop/__init__.py", line 9, in <module>
import magento_
File "/opt/bitnami/apps/openerp/lib/openerp-7.0_20140330_231328-py2.7.egg/openerp/addons/magento_integration-develop/magento_.py", line 17, in <module>
import magento
ImportError: No module named magento
I am trying to install a Magento OpenERP connector, but in order to to that I must locate it in the Installed Module list.
Thanks
Please check your file magento_.py, and see whether the class has been called.And if it has been called correctly check whether it has been correctly specified in the import line in your init.py file.

Resources