Skip to content

castle-python - AttributeError: 'NoneType' object has no attribute 'get' on client.filter #106

@aleksf

Description

@aleksf

I got a test Flask app and I am trying to follow https://docs.castle.io/v1/getting-started/prevent-fake-accounts/

Token and context are populated at the backend:

Context:

{'client_id': '', 'active': True, 'headers': {'Remote-Addr': 'xxx.xxx.xxx.xxx', 'Host': 'xxx.xxx.xxx.xxx:5000', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:88.0) Gecko/20100101 Firefox/88.0', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Language': 'en-US,en;q=0.5', 'Accept-Encoding': 'gzip, deflate', 'Content-Length': '442', 'Origin': 'http://xxx.xxx.xxx.xxx:5000', 'Connection': 'keep-alive', 'Referer': 'http://xxx.xxx.xxx.xxx:5000/signup', 'Cookie': True, 'Upgrade-Insecure-Requests': '1', 'Pragma': 'no-cache', 'Cache-Control': 'no-cache'}, 'ip': 'xxx.xxx.xxx.xxx', 'library': {'name': 'castle-python', 'version': '6.0.0'}, 'locale': 'en-US,en;q=0.5', 'user_agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:88.0) Gecko/20100101 Firefox/88.0'}

The code is a copy:

    res = client.filter({
        'event': '$registration',
        'user': {
            "email": email,
        },
        'request_token': token,
        'context': {
            'ip': context['ip'],
            'headers': context['headers']
        }
    })

Exception is caused by client.filter and I got no idea where to dig:

Traceback (most recent call last):
  File "/home/sysadmin/.local/share/virtualenvs/flask_auth_scotch-Fonrmw-6/lib/python3.8/site-packages/flask/app.py", line 2088, in __call__
    return self.wsgi_app(environ, start_response)
  File "/home/sysadmin/.local/share/virtualenvs/flask_auth_scotch-Fonrmw-6/lib/python3.8/site-packages/flask/app.py", line 2073, in wsgi_app
    response = self.handle_exception(e)
  File "/home/sysadmin/.local/share/virtualenvs/flask_auth_scotch-Fonrmw-6/lib/python3.8/site-packages/flask/app.py", line 2070, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/sysadmin/.local/share/virtualenvs/flask_auth_scotch-Fonrmw-6/lib/python3.8/site-packages/flask/app.py", line 1515, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/sysadmin/.local/share/virtualenvs/flask_auth_scotch-Fonrmw-6/lib/python3.8/site-packages/flask/app.py", line 1513, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/sysadmin/.local/share/virtualenvs/flask_auth_scotch-Fonrmw-6/lib/python3.8/site-packages/flask/app.py", line 1499, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
  File "/home/sysadmin/git-repos/flask_auth_scotch/project/auth.py", line 57, in signup_post
    res = client.filter({
  File "/home/sysadmin/.local/share/virtualenvs/flask_auth_scotch-Fonrmw-6/lib/python3.8/site-packages/castle/client.py", line 66, in filter
    command = CommandsFilter(self.context).call(options)
  File "/home/sysadmin/.local/share/virtualenvs/flask_auth_scotch-Fonrmw-6/lib/python3.8/site-packages/castle/commands/filter.py", line 14, in call
    context = ContextMerge.call(self.context, options.get('context'))
  File "/home/sysadmin/.local/share/virtualenvs/flask_auth_scotch-Fonrmw-6/lib/python3.8/site-packages/castle/context/merge.py", line 10, in call
    UtilsMerge.call(source_copy, request_context)
  File "/home/sysadmin/.local/share/virtualenvs/flask_auth_scotch-Fonrmw-6/lib/python3.8/site-packages/castle/utils/merge.py", line 20, in call
    elif isinstance(base.get(key), dict) and isinstance(value, dict):
AttributeError: 'NoneType' object has no attribute 'get'

Please assist.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions