Querying broken with pymongo 3.0 and Flask-MongoEngine - mongodb

I recently upgraded to pymongo 3.0 and was getting the same error mentioned here. The accepted answer fixed the read preferences error and my application is running. However whenever I try to run a query I am now getting a new error and was wondering if anyone else had run into this.
Here is the Traceback.
Traceback (most recent call last):
File "/mongo_login/mongo_login_env/lib/python2.6/site-packages/flask/app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "/mongo_login/mongo_login_env/lib/python2.6/site-packages/flask/app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/mongo_login/mongo_login_env/lib/python2.6/site-packages/flask/app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "/mongo_login/mongo_login_env/lib/python2.6/site-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/mongo_login/mongo_login_env/lib/python2.6/site-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/mongo_login/mongo_login_env/lib/python2.6/site-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/mongo_login/mongo_login_env/lib/python2.6/site-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/mongo_login/mongo_login_env/lib/python2.6/site-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/mongo_login/mongo_login_env/lib/python2.6/site-packages/flask_login.py", line 756, in decorated_view
elif not current_user.is_authenticated():
File "/mongo_login/mongo_login_env/lib/python2.6/site-packages/werkzeug/local.py", line 338, in __getattr__
return getattr(self._get_current_object(), name)
File "/mongo_login/mongo_login_env/lib/python2.6/site-packages/werkzeug/local.py", line 297, in _get_current_object
return self.__local()
File "/mongo_login/mongo_login_env/lib/python2.6/site-packages/flask_login.py", line 46, in <lambda>
current_user = LocalProxy(lambda: _get_user())
File "/mongo_login/mongo_login_env/lib/python2.6/site-packages/flask_login.py", line 794, in _get_user
current_app.login_manager._load_user()
File "/mongo_login/mongo_login_env/lib/python2.6/site-packages/flask_login.py", line 363, in _load_user
return self.reload_user()
File "/mongo_login/mongo_login_env/lib/python2.6/site-packages/flask_login.py", line 325, in reload_user
user = self.user_callback(user_id)
File "/mongo_login/mongo_login/app/auth/views.py", line 79, in load_user
user.get_by_id(id)
File "/mongo_login/mongo_login/app/auth/users.py", line 23, in get_by_id
dbUser = models.User.objects.with_id(id)
File "/mongo_login/mongo_login_env/lib/python2.6/site-packages/mongoengine/queryset/base.py", line 600, in with_id
return queryset.filter(pk=object_id).first()
File "/mongo_login/mongo_login_env/lib/python2.6/site-packages/mongoengine/queryset/base.py", line 309, in first
result = queryset[0]
File "/mongo_login/mongo_login_env/lib/python2.6/site-packages/mongoengine/queryset/base.py", line 160, in __getitem__
return queryset._document._from_son(queryset._cursor[key],
File "/mongo_login/mongo_login_env/lib/python2.6/site-packages/mongoengine/queryset/base.py", line 1410, in _cursor
**self._cursor_args)
File "/mongo_login/mongo_login_env/lib/python2.6/site-packages/pymongo/collection.py", line 929, in find
return Cursor(self, *args, **kwargs)
TypeError: __init__() got an unexpected keyword argument 'snapshot'

There is an open bug on MongoEngine's GitHub.
The workaround appears to be using Pymongo 2.7.2.

Related

How can I solve Odoo Server Error while Importing .zip Studio File

I am trying to import .zip Studio Customization file to Odoo Version 15. As we are migrating our Odoo System we want transfer our Studio Customizations from the development Database to the Production Database.I am getting the following Error:
1.
Traceback (most recent call last):
File "/home/secusmart/odoo15-prod/odoo/odoo/tools/cache.py", line 85, in lookup
r = d[key]
File "/home/secusmart/odoo15-prod/odoo/odoo/tools/func.py", line 71, in wrapper
return func(self, *args, **kwargs)
File "/home/secusmart/odoo15-prod/odoo/odoo/tools/lru.py", line 34, in __getitem__
a = self.d[obj]
KeyError: ('ir.model.access', <function IrModelAccess.check at 0x7f330bb4f4c0>, 2, False, 'base.import.module', 'write', True, ('en_US',))
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/secusmart/odoo15-prod/odoo/odoo/addons/base/models/ir_http.py", line 237, in _dispatch
result = request.dispatch()
File "/home/secusmart/odoo15-prod/odoo/odoo/http.py", line 688, in dispatch
result = self._call_function(**self.params)
File "/home/secusmart/odoo15-prod/odoo/odoo/http.py", line 360, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/home/secusmart/odoo15-prod/odoo/odoo/service/model.py", line 94, in wrapper
return f(dbname, *args, **kwargs)
File "/home/secusmart/odoo15-prod/odoo/odoo/http.py", line 349, in checked_call
result = self.endpoint(*a, **kw)
File "/home/secusmart/odoo15-prod/odoo/odoo/http.py", line 917, in __call__
return self.method(*args, **kw)
File "/home/secusmart/odoo15-prod/odoo/odoo/http.py", line 536, in response_wrap
response = f(*args, **kw)
File "/home/secusmart/odoo15-prod/odoo/addons/web/controllers/main.py", line 1352, in call_button
action = self._call_kw(model, method, args, kwargs)
File "/home/secusmart/odoo15-prod/odoo/addons/web/controllers/main.py", line 1340, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/home/secusmart/odoo15-prod/odoo/odoo/api.py", line 464, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "/home/secusmart/odoo15-prod/odoo/odoo/api.py", line 451, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "/home/secusmart/odoo15-prod/odoo/addons/base_import_module/models/base_import_module.py", line 24, in import_module
self.write({'state': 'done', 'import_message': res[0]})
File "/home/secusmart/odoo15-prod/odoo/odoo/models.py", line 3763, in write
self.check_access_rights('write')
File "/home/secusmart/odoo15-prod/odoo/odoo/models.py", line 3538, in check_access_rights
return self.env['ir.model.access'].check(self._name, operation, raise_exception)
File "<decorator-gen-33>", line 2, in check
File "/home/secusmart/odoo15-prod/odoo/odoo/tools/cache.py", line 90, in lookup
value = d[key] = self.method(*args, **kwargs)
File "/home/secusmart/odoo15-prod/odoo/odoo/addons/base/models/ir_model.py", line 1762, in check
self._cr.execute("""SELECT MAX(CASE WHEN perm_{mode} THEN 1 ELSE 0 END)
File "<decorator-gen-3>", line 2, in execute
File "/home/secusmart/odoo15-prod/odoo/odoo/sql_db.py", line 89, in check
return f(self, *args, **kwargs)
File "/home/secusmart/odoo15-prod/odoo/odoo/sql_db.py", line 310, in execute
res = self._obj.execute(query, params)
Exception
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/secusmart/odoo15-prod/odoo/odoo/http.py", line 644, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/home/secusmart/odoo15-prod/odoo/odoo/http.py", line 302, in _handle_exception
raise exception.with_traceback(None) from new_cause
psycopg2.errors.InFailedSqlTransaction: current transaction is aborted, commands ignored until end of transaction block
I fixed the first error by performing the import as superuser
Now I got the following Error:
2.
Traceback (most recent call last):
File "/home/secusmart/odoo15-prod/odoo/odoo/tools/cache.py", line 85, in lookup
r = d[key]
File "/home/secusmart/odoo15-prod/odoo/odoo/tools/func.py", line 71, in wrapper
return func(self, *args, **kwargs)
File "/home/secusmart/odoo15-prod/odoo/odoo/tools/lru.py", line 34, in __getitem__
a = self.d[obj]
KeyError: ('res.lang', <function Lang.get_installed at 0x7f330ab8b4c0>)
You can refer to this answer: Is it possible to import Odoo15 Studio .zip file to Odoo16?
As a small recap, basically you should use the migration tools offered by odoo. You have an enterprise subscription and are using a version of Odoo that is still supported. So migrating your database by Odoo employees should already be possible - and free.

OSM data at a specific time

I want to read data from my OSM file at a specific time.
import osmium
import pandas
class TimelineHandler(osmium.SimpleHandler):
def __init__(self):
osmium.SimpleHandler.__init__(self)
self.elemtimeline = []
def relation(self, n):
self.elemtimeline.append(["relation",
n.id,
n.version,
n.visible,
pandas.Timestamp(n.timestamp),
n.uid,
n.changeset,
len(n.tags)])
tlhandler = TimelineHandler()
tlhandler.apply_file('/.../.../.../koeln-regbez-internal.osh.pbf')
colnames = ['type', 'id', 'version', 'visible', 'ts', 'uid', 'chgset', 'ntags']
elements = pandas.DataFrame(tlhandler.elemtimeline, columns=colnames)
elements = elements.sort_values(by=['type', 'id', 'ts'])
elements.head()
print(elements.head())
elements.to_csv("Köln-metropole.csv", date_format='%Y-%m-%d %H:%M:%S')
def updatedelem(data):
updata = data.groupby(['type', 'id'])['version'].max().reset_index()
return pandas.merge(updata, data, on=['id', 'version'])
uptodate_elem = updatedelem(elements)
uptodate_elem.head()
print(uptodate_elem.head())
elements.to_csv("Köln-metropole.csv", date_format='%Y-%m-%d %H:%M:%S')
**The code works until I enter the following function. Here is the problem. There are a lot of error messages displayed. Probably it is because something is wrong with "Date".
Warnings: Parameter 'date' value is not used AND Shadows name 'datedelems' from outer scope**
def datedelems(history, date):
datedelems = (history.query("ts <= #date")
.groupby(['type','id'])['version']
.max()
.reset_index())
return pandas.merge(datedelems, history, on=['type','id','version'])
oldelem = datedelems(elements, "2008-02-01")
oldelem.head()
I have deleted the variable date, changed the format of the date,...
Error:
Traceback (most recent call last):
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/core/arrays/datetimelike.py", line 582, in _validate_comparison_value
self._check_compatible_with(other)
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/core/arrays/datetimes.py", line 461, in _check_compatible_with
self._assert_tzawareness_compat(other)
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/core/arrays/datetimes.py", line 698, in _assert_tzawareness_compat
raise TypeError(
TypeError: Cannot compare tz-naive and tz-aware datetime-like objects
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/core/arrays/datetimelike.py", line 1054, in _cmp_method
other = self._validate_comparison_value(other)
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/core/arrays/datetimelike.py", line 585, in _validate_comparison_value
raise InvalidComparison(other) from err
pandas.core.arrays.datetimelike.InvalidComparison: 2008-02-01 00:00:00
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/.../PycharmProjects/pythonProject11/main.py", line 47, in <module>
oldelem = datedelems(elements, "2008-02-01")
File "/Users/.../PycharmProjects/pythonProject11/main.py", line 41, in datedelems
datedelems = (history.query("ts <= #date")
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/util/_decorators.py", line 331, in wrapper
return func(*args, **kwargs)
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/core/frame.py", line 4463, in query
res = self.eval(expr, **kwargs)
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/util/_decorators.py", line 331, in wrapper
return func(*args, **kwargs)
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/core/frame.py", line 4601, in eval
return _eval(expr, inplace=inplace, **kwargs)
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/core/computation/eval.py", line 353, in eval
parsed_expr = Expr(expr, engine=engine, parser=parser, env=env)
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/core/computation/expr.py", line 813, in __init__
self.terms = self.parse()
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/core/computation/expr.py", line 832, in parse
return self._visitor.visit(self.expr)
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/core/computation/expr.py", line 415, in visit
return visitor(node, **kwargs)
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/core/computation/expr.py", line 421, in visit_Module
return self.visit(expr, **kwargs)
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/core/computation/expr.py", line 415, in visit
return visitor(node, **kwargs)
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/core/computation/expr.py", line 424, in visit_Expr
return self.visit(node.value, **kwargs)
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/core/computation/expr.py", line 415, in visit
return visitor(node, **kwargs)
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/core/computation/expr.py", line 723, in visit_Compare
return self.visit(binop)
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/core/computation/expr.py", line 415, in visit
return visitor(node, **kwargs)
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/core/computation/expr.py", line 538, in visit_BinOp
return self._maybe_evaluate_binop(op, op_class, left, right)
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/core/computation/expr.py", line 520, in _maybe_evaluate_binop
return self._maybe_eval(res, self.binary_ops)
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/core/computation/expr.py", line 492, in _maybe_eval
return binop.evaluate(
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/core/computation/ops.py", line 427, in evaluate
res = self(env)
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/core/computation/ops.py", line 407, in __call__
return self.func(left, right)
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/core/ops/common.py", line 72, in new_method
return method(self, other)
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/core/arraylike.py", line 54, in __le__
return self._cmp_method(other, operator.le)
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/core/series.py", line 6243, in _cmp_method
res_values = ops.comparison_op(lvalues, rvalues, op)
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/core/ops/array_ops.py", line 273, in comparison_op
res_values = op(lvalues, rvalues)
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/core/ops/common.py", line 72, in new_method
return method(self, other)
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/core/arraylike.py", line 54, in __le__
return self._cmp_method(other, operator.le)
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/core/arrays/datetimelike.py", line 1056, in _cmp_method
return invalid_comparison(self, other, op)
File "/Users/.../PycharmProjects/pythonProject11/venv/lib/python3.10/site-packages/pandas/core/ops/invalid.py", line 36, in invalid_comparison
raise TypeError(f"Invalid comparison between dtype={left.dtype} and {typ}")
TypeError: Invalid comparison between dtype=datetime64[ns, UTC] and Timestamp
Process finished with exit code 1

Airflow Running task from UI, KeyError: No such transport

airflow cfg settings related to celery are:
broker_url = 'amqp://guest:guest#rabbitmq_server:8080'
celery_result_backend = db+postgresql://developer:password#postgres_server:5432/db_name
The airflow webserver runs ok, but while running a task from airflow UI I get the error.
I am error while running airflow scheduler,tracecak is:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1988, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1641, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1544, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1639, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1625, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/usr/local/lib/python2.7/dist-packages/flask_admin/base.py", line 69, in inner
return self._run_view(f, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/flask_admin/base.py", line 368, in _run_view
return fn(self, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/flask_login.py", line 755, in decorated_view
return func(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/airflow/www/utils.py", line 125, in wrapper
return f(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/airflow/www/utils.py", line 172, in wrapper
return f(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/airflow/www/views.py", line 952, in run
executor.heartbeat()
File "/usr/local/lib/python2.7/dist-packages/airflow/executors/base_executor.py", line 124, in heartbeat
self.execute_async(key, command=command, queue=queue)
File "/usr/local/lib/python2.7/dist-packages/airflow/executors/celery_executor.py", line 80, in execute_async
args=[command], queue=queue)
File "/usr/local/lib/python2.7/dist-packages/celery/app/task.py", line 536, in apply_async
**options
File "/usr/local/lib/python2.7/dist-packages/celery/app/base.py", line 734, in send_task
with self.producer_or_acquire(producer) as P:
File "/usr/local/lib/python2.7/dist-packages/celery/app/base.py", line 863, in producer_or_acquire
producer, self.producer_pool.acquire, block=True,
File "/usr/local/lib/python2.7/dist-packages/celery/app/base.py", line 1233, in producer_pool
return self.amqp.producer_pool
File "/usr/local/lib/python2.7/dist-packages/celery/app/amqp.py", line 614, in producer_pool
self.app.connection_for_write()]
File "/usr/local/lib/python2.7/dist-packages/celery/app/base.py", line 760, in connection_for_write
return self._connection(url or self.conf.broker_write_url, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/celery/app/base.py", line 828, in _connection
'broker_connection_timeout', connect_timeout
File "/usr/local/lib/python2.7/dist-packages/kombu/connection.py", line 179, in __init__
if not get_transport_cls(transport).can_parse_url:
File "/usr/local/lib/python2.7/dist-packages/kombu/transport/__init__.py", line 83, in get_transport_cls
_transport_cache[transport] = resolve_transport(transport)
File "/usr/local/lib/python2.7/dist-packages/kombu/transport/__init__.py", line 64, in resolve_transport
raise KeyError('No such transport: {0}'.format(transport))
KeyError: u'No such transport: '
My module versions are:
airflow==1.8
celery==4.1.0
kombu==4.1.0
python==2.7.12
I wasted lot of time on this issue, the reason for this error was quotation marks in broker_url = 'amqp://guest:guest#rabbitmq_server:8080' just removing the quotes: broker_url = amqp://guest:guest#rabbitmq_server:8080 solved the problem.

Flask Mail ConnectionResetError: [Errno 54] Connection reset by peer

I am following this basic tutorial from the link exactly:
https://www.tutorialspoint.com/flask/flask_mail.htm
Anyone know what cause this problem? I think it should be a common problem?
Is there any additional setting for flask mail?
Here is the full error msg:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/app.py", line 1997, in __call__
return self.wsgi_app(environ, start_response)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/app.py", line 1985, in wsgi_app
response = self.handle_exception(e)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/app.py", line 1540, in handle_exception
reraise(exc_type, exc_value, tb)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/Users/boxia/PycharmProjects/learn_flask/test.py", line 18, in index
mail.send(msg)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask_mail.py", line 491, in send
with self.connect() as connection:
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask_mail.py", line 144, in __enter__
self.host = self.configure_host()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask_mail.py", line 156, in configure_host
host = smtplib.SMTP_SSL(self.mail.server, self.mail.port)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/smtplib.py", line 1029, in __init__
source_address)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/smtplib.py", line 251, in __init__
(code, msg) = self.connect(host, port)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/smtplib.py", line 335, in connect
self.sock = self._get_socket(host, port, self.timeout)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/smtplib.py", line 1037, in _get_socket
server_hostname=self._host)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 401, in wrap_socket
_context=self, _session=session)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 808, in __init__
self.do_handshake()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 1061, in do_handshake
self._sslobj.do_handshake()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 683, in do_handshake
self._sslobj.do_handshake()

TypeError: file() argument 1 must be encoded string without NULL bytes, not str odoo

the python version is 2.8.2 and using it in eclipse. I am getting this error when I am trying to execute the following command:
The function is:
#api.one
#api.depends('image')
def _compute_image_details(self):
if self.image:
image_content = self.image.decode('base64')
print type(self.image)
print type(image_content)
# File size
self.size = len(image_content)
# Camera make and model from EXIF tags
img = PIL.Image.open(image_content)
exif_tags = img._getexif()
# 0x010f is a numeric code for the "make" exif field
# You can find a list of fields here: exiv2.org/tags.html
self.camera_maker = exif_tags.get(0x010f)
The error which is raised is:
Traceback (most recent call last):
File "/home/next/WORKSPACE/odoo-8.0/openerp/http.py", line 537, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/home/next/WORKSPACE/odoo-8.0/openerp/http.py", line 574, in dispatch
result = self._call_function(**self.params)
File "/home/next/WORKSPACE/odoo-8.0/openerp/http.py", line 310, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/home/next/WORKSPACE/odoo-8.0/openerp/service/model.py", line 113, in wrapper
return f(dbname, *args, **kwargs)
File "/home/next/WORKSPACE/odoo-8.0/openerp/http.py", line 307, in checked_call
return self.endpoint(*a, **kw)
File "/home/next/WORKSPACE/odoo-8.0/openerp/http.py", line 803, in __call__
return self.method(*args, **kw)
File "/home/next/WORKSPACE/odoo-8.0/openerp/http.py", line 403, in response_wrap
response = f(*args, **kw)
File "/home/next/WORKSPACE/odoo-8.0/addons/web/controllers/main.py", line 944, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/home/next/WORKSPACE/odoo-8.0/addons/web/controllers/main.py", line 936, in _call_kw
return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)
File "/home/next/WORKSPACE/odoo-8.0/openerp/api.py", line 241, in wrapper
return old_api(self, *args, **kwargs)
File "/home/next/WORKSPACE/odoo-8.0/openerp/api.py", line 363, in old_api
result = method(recs, *args, **kwargs)
File "/home/next/WORKSPACE/odoo-8.0/openerp/models.py", line 5873, in onchange
newval = record[name]
File "/home/next/WORKSPACE/odoo-8.0/openerp/models.py", line 5571, in __getitem__
return self._fields[key].__get__(self, type(self))
File "/home/next/WORKSPACE/odoo-8.0/openerp/fields.py", line 820, in __get__
self.determine_draft_value(record)
File "/home/next/WORKSPACE/odoo-8.0/openerp/fields.py", line 928, in determine_draft_value
self._compute_value(record)
File "/home/next/WORKSPACE/odoo-8.0/openerp/fields.py", line 867, in _compute_value
self.compute(records)
File "/home/next/WORKSPACE/odoo-8.0/openerp/api.py", line 239, in wrapper
return new_api(self, *args, **kwargs)
File "/home/next/WORKSPACE/odoo-8.0/openerp/api.py", line 397, in new_api
result = [method(rec, *args, **kwargs) for rec in self]
File "/home/next/WORKSPACE/odoo-8.0/addons/transform_webservice_example/image_example.py", line 33, in _compute_image_details
img = PIL.Image.open(image_content)
File "/usr/lib/python2.7/dist-packages/PIL/Image.py", line 1955, in open
fp = __builtin__.open(fp, "rb")
TypeError: file() argument 1 must be encoded string without NULL bytes, not str
Please help me with this issue.
The other references say about the URL of the file. This is different scenario.
You're trying to open the base64 decoded contents of the file, you're supposed to open the file itself.
PIL.Image.open(self.image)
take this for example, to reproduce the error you're getting
>>> open('\0')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: file() argument 1 must be encoded string without NULL bytes, not str
>>>
the character '\0' is seen as a NullByte which the decoded image contains