etianen / django-watson

Full-text multi-table search application for Django. Easy to install and use, with good performance.
BSD 3-Clause "New" or "Revised" License
1.2k stars 130 forks source link

AttributeError at /search/ 'NoneType' object has no attribute '_meta' #94

Closed dbinetti closed 9 years ago

dbinetti commented 9 years ago

I've been bashing against the wall for a few hours now.

I've tried a host of different things, but am stumped (and clueless).

I suspect it's related to my project setup: meaning, I have two apps in my django project: api, which houses the models, and website, which is a 'naked' app with no models (just the views, templates, and urls). website imports api.models. I am registering the models with watson in the api app, and the search engine works flawlessly from the command line.

Thanks...

AttributeError at /search/
'NoneType' object has no attribute '_meta'
Request Method: GET
Request URL:    http://localhost:8000/search/?q=voices
Django Version: 1.7.4
Exception Type: AttributeError
Exception Value:    
'NoneType' object has no attribute '_meta'
Exception Location: /Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/watson/templatetags/watson.py in search_result_item, line 33
Python Executable:  /Users/dbinetti/.virtualenvs/barberscore/bin/python2.7
Python Version: 2.7.9
Python Path:    
['/Users/dbinetti/.virtualenvs/barberscore/bin',
 '/Users/dbinetti/Repos/barberscore/project',
 '/Users/dbinetti/.virtualenvs/barberscore/lib/python27.zip',
 '/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7',
 '/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/plat-darwin',
 '/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/plat-mac',
 '/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/plat-mac/lib-scriptpackages',
 '/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/lib-tk',
 '/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/lib-old',
 '/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/lib-dynload',
 '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
 '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
 '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
 '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
 '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
 '/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages']
Server time:    Thu, 29 Jan 2015 13:35:55 -0800
Error during template rendering

In template /Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/watson/templates/watson/includes/search_results.html, error at line 6
'NoneType' object has no attribute '_meta'
1   {% load watson %}
2   {% if search_results %}
3       <ul class="search-results">
4           {% for search_result in search_results %}
5               <li>
6                   {% search_result_item search_result %}
7               </li>
8           {% endfor %}
9       </ul>
10  {% endif %}
Traceback Switch to copy-and-paste view

/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/core/handlers/base.py in get_response
                response = response.render() ...
▶ Local vars
/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/response.py in render
            self.content = self.rendered_content ...
▶ Local vars
/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/response.py in rendered_content
        content = template.render(context) ...
▶ Local vars
/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/base.py in render
            return self._render(context) ...
▶ Local vars
/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/base.py in _render
        return self.nodelist.render(context) ...
▶ Local vars
/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/base.py in render
                bit = self.render_node(node, context) ...
▶ Local vars
/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/debug.py in render_node
            return node.render(context) ...
▶ Local vars
/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/defaulttags.py in render
                return nodelist.render(context) ...
▶ Local vars
/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/base.py in render
                bit = self.render_node(node, context) ...
▶ Local vars
/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/debug.py in render_node
            return node.render(context) ...
▶ Local vars
/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/base.py in render
                    return func(*resolved_args, **resolved_kwargs) ...
▶ Local vars
/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/watson/templatetags/watson.py in search_results
        return template.loader.render_to_string("watson/includes/search_results.html", context) ...
▼ Local vars
Variable    Value
search_results  
[<SearchEntry: Voices of Gotham (rename)>, <SearchEntry: Voices of Gotham>, <SearchEntry: Voices of California (rename)>, <SearchEntry: Voices of California>, <SearchEntry: Voices in Harmony (rename)>, <SearchEntry: Voices in Harmony>]
context 
[{'False': False, 'None': None, 'True': True}, {u'paginator': None, u'search_results': [<SearchEntry: Voices of Gotham (rename)>, <SearchEntry: Voices of Gotham>, <SearchEntry: Voices of California (rename)>, <SearchEntry: Voices of California>, <SearchEntry: Voices in Harmony (rename)>, <SearchEntry: Voices in Harmony>], u'object_list': [<SearchEntry: Voices of Gotham (rename)>, <SearchEntry: Voices of Gotham>, <SearchEntry: Voices of California (rename)>, <SearchEntry: Voices of California>, <SearchEntry: Voices in Harmony (rename)>, <SearchEntry: Voices in Harmony>], u'page_obj': None, u'query': u'voices', u'is_paginated': False, u'view': <watson.views.SearchView object at 0x10e9f6050>}, {u'csrf_token': <django.utils.functional.__proxy__ object at 0x10ea77510>, 'perms': <django.contrib.auth.context_processors.PermWrapper object at 0x10ea77650>, u'request': <WSGIRequest
path:/search/,
GET:<QueryDict: {u'q': [u'voices']}>,
POST:<QueryDict: {}>,
COOKIES:{'csrftoken': 'mGEwVxCd6Jga16ll5LHCZmZUTE1FzPkc', 'djdt': 'show'},
META:{'AWS_ACCESS_KEY_ID': 'AKIAIASRKQ66PJ7KIAZQ',
 'AWS_MEDIA_BUCKET_NAME': 'barberscore-files-dev',
 'AWS_SECRET_ACCESS_KEY': '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',
 'AWS_STATIC_BUCKET_NAME': 'barberscore-static-dev',
 'Apple_PubSub_Socket_Render': '/private/tmp/com.apple.launchd.mC1p9mCyGI/Render',
 'CONTENT_LENGTH': '',
 'CONTENT_TYPE': 'text/plain',
 u'CSRF_COOKIE': u'mGEwVxCd6Jga16ll5LHCZmZUTE1FzPkc',
 'DATABASE_URL': 'postgres://dbinetti@localhost/barberscore',
 'DJANGO_DEBUG': 'True',
 'DJANGO_SETTINGS_MODULE': 'settings.dev',
 'DOMAIN': 'localhost',
 'EDITOR': '/Applications/Sublime Text.app/Contents/MacOS/Sublime Text',
 'FULL_NAME': 'David Binetti',
 'GATEWAY_INTERFACE': 'CGI/1.1',
 'HOME': '/Users/dbinetti',
 'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
 'HTTP_ACCEPT_ENCODING': 'gzip, deflate, sdch',
 'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.8',
 'HTTP_CONNECTION': 'keep-alive',
 'HTTP_COOKIE': 'csrftoken=mGEwVxCd6Jga16ll5LHCZmZUTE1FzPkc; djdt=show',
 'HTTP_HOST': 'localhost:8000',
 'HTTP_REFERER': 'http://localhost:8000/',
 'HTTP_USER_AGENT': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.93 Safari/537.36',
 'LANG': 'en_US.UTF-8',
 'LOGNAME': 'dbinetti',
 'OLDPWD': '/Users/dbinetti',
 'PATH': '/Users/dbinetti/.virtualenvs/barberscore/bin:/usr/local/bin:/usr/local/sbin:/usr/local/opt/ruby/bin:/usr/local/heroku/bin:/opt/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin',
 'PATH_INFO': u'/search/',
 'PGDATA': '/usr/local/var/postgres',
 'PORT': '8000',
 'PROJECT_HOME': '/Users/dbinetti/Repos',
 'PS1': '\\[\\033[0;32m\\](barberscore)$ \\[\\033[0;00m\\]',
 'PWD': '/Users/dbinetti/Repos/barberscore',
 'PYTHONDONTWRITEBYTECODE': 'True',
 'PYTHONPATH': '/Users/dbinetti/Repos/barberscore/project/',
 'QUERY_STRING': 'q=voices',
 'REMOTE_ADDR': '127.0.0.1',
 'REMOTE_HOST': '',
 'REQUEST_METHOD': 'GET',
 'REUSE_DB': '1',
 'RUN_MAIN': 'true',
 'SCRIPT_NAME': u'',
 'SECRET_KEY': 'x*c*ud&+g-j#%#uj)=m)^yrr!g9#@rw_x8+wzio5qg5gid!o7+',
 'SERVER_NAME': '1.0.0.127.in-addr.arpa',
 'SERVER_PORT': '8000',
 'SERVER_PROTOCOL': 'HTTP/1.1',
 'SERVER_SOFTWARE': 'WSGIServer/0.1 Python/2.7.9',
 'SHELL': '/bin/bash',
 'SHLVL': '1',
 'SSH_AUTH_SOCK': '/private/tmp/com.apple.launchd.nDeR0gqMf7/Listeners',
 'TERM': 'xterm-256color',
 'TERM_PROGRAM': 'Apple_Terminal',
 'TERM_PROGRAM_VERSION': '343.6',
 'TERM_SESSION_ID': '537B5640-762B-42F8-9612-F257ED943BEB',
 'TMPDIR': '/var/folders/fr/_d9wg7416219y9vhpwv05g4r0000gn/T/',
 'TWILIO_ACCOUNT_SID': 'ACb1b9bca9ccef183757e6ebdb64d063c3',
 'TWILIO_ADMIN_NUMBER': '+15005550006',
 'TWILIO_ADMIN_SID': 'PNc708ea5ce72d401fa043e0cb55c4e6b1',
 'TWILIO_AUTH_TOKEN': '41bd31f387ba44b7bfd7cf4965ce06f7',
 'TZ': 'US/Pacific',
 'USER': 'dbinetti',
 'USER_EMAIL': 'dbinetti@gmail.com',
 'VIRTUALENVWRAPPER_HOOK_DIR': '/Users/dbinetti/.virtualenvs',
 'VIRTUALENVWRAPPER_PROJECT_FILENAME': '.project',
 'VIRTUALENVWRAPPER_PYTHON': '/usr/local/bin/python',
 'VIRTUALENVWRAPPER_SCRIPT': '/usr/local/bin/virtualenvwrapper.sh',
 'VIRTUALENVWRAPPER_VIRTUALENV': '/usr/local/bin/virtualenv',
 'VIRTUALENVWRAPPER_VIRTUALENV_ARGS': '--no-site-packages',
 'VIRTUAL_ENV': '/Users/dbinetti/.virtualenvs/barberscore',
 'WORKON_HOME': '/Users/dbinetti/.virtualenvs',
 'XPC_FLAGS': '0x0',
 'XPC_SERVICE_NAME': '0',
 '_': '/Users/dbinetti/.virtualenvs/barberscore/bin/django-admin',
 '__CF_USER_TEXT_ENCODING': '0x1F5:0x0:0x0',
 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x10c4031e0>,
 'wsgi.file_wrapper': <class wsgiref.util.FileWrapper at 0x10d6b8738>,
 'wsgi.input': <socket._fileobject object at 0x10dafaa50>,
 'wsgi.multiprocess': False,
 'wsgi.multithread': True,
 'wsgi.run_once': False,
 'wsgi.url_scheme': 'http',
 'wsgi.version': (1, 0),
 (u'watson.search_context_middleware_active', <watson.middleware.SearchContextMiddleware object at 0x10db721d0>): True}>, 'messages': <django.contrib.messages.storage.fallback.FallbackStorage object at 0x10db80250>, u'TIME_ZONE': 'US/Pacific', u'STATIC_URL': '/static/', u'LANGUAGES': (('af', 'Afrikaans'), ('ar', 'Arabic'), ('ast', 'Asturian'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be', 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('el', 'Greek'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-mx', 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve', 'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa', 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'), ('ga', 'Irish'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hu', 'Hungarian'), ('ia', 'Interlingua'), ('id', 'Indonesian'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('my', 'Burmese'), ('nb', 'Norwegian Bokmal'), ('ne', 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os', 'Ossetic'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('th', 'Thai'), ('tr', 'Turkish'), ('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('vi', 'Vietnamese'), ('zh-cn', 'Simplified Chinese'), ('zh-hans', 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese'), ('zh-tw', 'Traditional Chinese')), 'user': <SimpleLazyObject: <function <lambda> at 0x10db6aaa0>>, u'LANGUAGE_CODE': 'en-us', 'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'INFO': 20, 'WARNING': 30, 'SUCCESS': 25, 'ERROR': 40}, u'LANGUAGE_BIDI': False, u'MEDIA_URL': '/media/'}, {}]
/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/loader.py in render_to_string
        return t.render(Context(dictionary)) ...
▶ Local vars
/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/base.py in render
            return self._render(context) ...
▶ Local vars
/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/base.py in _render
        return self.nodelist.render(context) ...
▶ Local vars
/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/base.py in render
                bit = self.render_node(node, context) ...
▶ Local vars
/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/debug.py in render_node
            return node.render(context) ...
▶ Local vars
/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/defaulttags.py in render
                return nodelist.render(context) ...
▶ Local vars
/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/base.py in render
                bit = self.render_node(node, context) ...
▶ Local vars
/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/debug.py in render_node
            return node.render(context) ...
▶ Local vars
/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/defaulttags.py in render
                            nodelist.append(node.render(context)) ...
▶ Local vars
/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/base.py in render
                    return func(*resolved_args, **resolved_kwargs) ...
▶ Local vars
/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/watson/templatetags/watson.py in search_result_item
        "app_label": obj._meta.app_label, ...
▼ Local vars
Variable    Value
obj 
None
search_result   
<SearchEntry: Voices of Gotham (rename)>
context 
[{'False': False, 'None': None, 'True': True}, [{'False': False, 'None': None, 'True': True}, {u'paginator': None, u'search_results': [<SearchEntry: Voices of Gotham (rename)>, <SearchEntry: Voices of Gotham>, <SearchEntry: Voices of California (rename)>, <SearchEntry: Voices of California>, <SearchEntry: Voices in Harmony (rename)>, <SearchEntry: Voices in Harmony>], u'object_list': [<SearchEntry: Voices of Gotham (rename)>, <SearchEntry: Voices of Gotham>, <SearchEntry: Voices of California (rename)>, <SearchEntry: Voices of California>, <SearchEntry: Voices in Harmony (rename)>, <SearchEntry: Voices in Harmony>], u'page_obj': None, u'query': u'voices', u'is_paginated': False, u'view': <watson.views.SearchView object at 0x10e9f6050>}, {u'csrf_token': <django.utils.functional.__proxy__ object at 0x10ea77510>, 'perms': <django.contrib.auth.context_processors.PermWrapper object at 0x10ea77650>, u'request': <WSGIRequest
path:/search/,
GET:<QueryDict: {u'q': [u'voices']}>,
POST:<QueryDict: {}>,
COOKIES:{'csrftoken': 'mGEwVxCd6Jga16ll5LHCZmZUTE1FzPkc', 'djdt': 'show'},
META:{'AWS_ACCESS_KEY_ID': 'AKIAIASRKQ66PJ7KIAZQ',
 'AWS_MEDIA_BUCKET_NAME': 'barberscore-files-dev',
 'AWS_SECRET_ACCESS_KEY': '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',
 'AWS_STATIC_BUCKET_NAME': 'barberscore-static-dev',
 'Apple_PubSub_Socket_Render': '/private/tmp/com.apple.launchd.mC1p9mCyGI/Render',
 'CONTENT_LENGTH': '',
 'CONTENT_TYPE': 'text/plain',
 u'CSRF_COOKIE': u'mGEwVxCd6Jga16ll5LHCZmZUTE1FzPkc',
 'DATABASE_URL': 'postgres://dbinetti@localhost/barberscore',
 'DJANGO_DEBUG': 'True',
 'DJANGO_SETTINGS_MODULE': 'settings.dev',
 'DOMAIN': 'localhost',
 'EDITOR': '/Applications/Sublime Text.app/Contents/MacOS/Sublime Text',
 'FULL_NAME': 'David Binetti',
 'GATEWAY_INTERFACE': 'CGI/1.1',
 'HOME': '/Users/dbinetti',
 'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
 'HTTP_ACCEPT_ENCODING': 'gzip, deflate, sdch',
 'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.8',
 'HTTP_CONNECTION': 'keep-alive',
 'HTTP_COOKIE': 'csrftoken=mGEwVxCd6Jga16ll5LHCZmZUTE1FzPkc; djdt=show',
 'HTTP_HOST': 'localhost:8000',
 'HTTP_REFERER': 'http://localhost:8000/',
 'HTTP_USER_AGENT': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.93 Safari/537.36',
 'LANG': 'en_US.UTF-8',
 'LOGNAME': 'dbinetti',
 'OLDPWD': '/Users/dbinetti',
 'PATH': '/Users/dbinetti/.virtualenvs/barberscore/bin:/usr/local/bin:/usr/local/sbin:/usr/local/opt/ruby/bin:/usr/local/heroku/bin:/opt/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin',
 'PATH_INFO': u'/search/',
 'PGDATA': '/usr/local/var/postgres',
 'PORT': '8000',
 'PROJECT_HOME': '/Users/dbinetti/Repos',
 'PS1': '\\[\\033[0;32m\\](barberscore)$ \\[\\033[0;00m\\]',
 'PWD': '/Users/dbinetti/Repos/barberscore',
 'PYTHONDONTWRITEBYTECODE': 'True',
 'PYTHONPATH': '/Users/dbinetti/Repos/barberscore/project/',
 'QUERY_STRING': 'q=voices',
 'REMOTE_ADDR': '127.0.0.1',
 'REMOTE_HOST': '',
 'REQUEST_METHOD': 'GET',
 'REUSE_DB': '1',
 'RUN_MAIN': 'true',
 'SCRIPT_NAME': u'',
 'SECRET_KEY': 'x*c*ud&+g-j#%#uj)=m)^yrr!g9#@rw_x8+wzio5qg5gid!o7+',
 'SERVER_NAME': '1.0.0.127.in-addr.arpa',
 'SERVER_PORT': '8000',
 'SERVER_PROTOCOL': 'HTTP/1.1',
 'SERVER_SOFTWARE': 'WSGIServer/0.1 Python/2.7.9',
 'SHELL': '/bin/bash',
 'SHLVL': '1',
 'SSH_AUTH_SOCK': '/private/tmp/com.apple.launchd.nDeR0gqMf7/Listeners',
 'TERM': 'xterm-256color',
 'TERM_PROGRAM': 'Apple_Terminal',
 'TERM_PROGRAM_VERSION': '343.6',
 'TERM_SESSION_ID': '537B5640-762B-42F8-9612-F257ED943BEB',
 'TMPDIR': '/var/folders/fr/_d9wg7416219y9vhpwv05g4r0000gn/T/',
 'TWILIO_ACCOUNT_SID': 'ACb1b9bca9ccef183757e6ebdb64d063c3',
 'TWILIO_ADMIN_NUMBER': '+15005550006',
 'TWILIO_ADMIN_SID': 'PNc708ea5ce72d401fa043e0cb55c4e6b1',
 'TWILIO_AUTH_TOKEN': '41bd31f387ba44b7bfd7cf4965ce06f7',
 'TZ': 'US/Pacific',
 'USER': 'dbinetti',
 'USER_EMAIL': 'dbinetti@gmail.com',
 'VIRTUALENVWRAPPER_HOOK_DIR': '/Users/dbinetti/.virtualenvs',
 'VIRTUALENVWRAPPER_PROJECT_FILENAME': '.project',
 'VIRTUALENVWRAPPER_PYTHON': '/usr/local/bin/python',
 'VIRTUALENVWRAPPER_SCRIPT': '/usr/local/bin/virtualenvwrapper.sh',
 'VIRTUALENVWRAPPER_VIRTUALENV': '/usr/local/bin/virtualenv',
 'VIRTUALENVWRAPPER_VIRTUALENV_ARGS': '--no-site-packages',
 'VIRTUAL_ENV': '/Users/dbinetti/.virtualenvs/barberscore',
 'WORKON_HOME': '/Users/dbinetti/.virtualenvs',
 'XPC_FLAGS': '0x0',
 'XPC_SERVICE_NAME': '0',
 '_': '/Users/dbinetti/.virtualenvs/barberscore/bin/django-admin',
 '__CF_USER_TEXT_ENCODING': '0x1F5:0x0:0x0',
 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x10c4031e0>,
 'wsgi.file_wrapper': <class wsgiref.util.FileWrapper at 0x10d6b8738>,
 'wsgi.input': <socket._fileobject object at 0x10dafaa50>,
 'wsgi.multiprocess': False,
 'wsgi.multithread': True,
 'wsgi.run_once': False,
 'wsgi.url_scheme': 'http',
 'wsgi.version': (1, 0),
 (u'watson.search_context_middleware_active', <watson.middleware.SearchContextMiddleware object at 0x10db721d0>): True}>, 'messages': <django.contrib.messages.storage.fallback.FallbackStorage object at 0x10db80250>, u'TIME_ZONE': 'US/Pacific', u'STATIC_URL': '/static/', u'LANGUAGES': (('af', 'Afrikaans'), ('ar', 'Arabic'), ('ast', 'Asturian'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be', 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('el', 'Greek'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-mx', 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve', 'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa', 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'), ('ga', 'Irish'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hu', 'Hungarian'), ('ia', 'Interlingua'), ('id', 'Indonesian'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('my', 'Burmese'), ('nb', 'Norwegian Bokmal'), ('ne', 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os', 'Ossetic'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('th', 'Thai'), ('tr', 'Turkish'), ('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('vi', 'Vietnamese'), ('zh-cn', 'Simplified Chinese'), ('zh-hans', 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese'), ('zh-tw', 'Traditional Chinese')), 'user': <SimpleLazyObject: <function <lambda> at 0x10db6aaa0>>, u'LANGUAGE_CODE': 'en-us', 'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'INFO': 20, 'WARNING': 30, 'SUCCESS': 25, 'ERROR': 40}, u'LANGUAGE_BIDI': False, u'MEDIA_URL': '/media/'}, {}]]
Request information

GET
Variable    Value
q   
u'voices'
POST
No POST data
FILES
No FILES data
COOKIES
Variable    Value
csrftoken   
'mGEwVxCd6Jga16ll5LHCZmZUTE1FzPkc'
djdt    
'show'
META
Variable    Value
DOMAIN  
'localhost'
wsgi.multiprocess   
False
RUN_MAIN    
'true'
HTTP_REFERER    
'http://localhost:8000/'
PROJECT_HOME    
'/Users/dbinetti/Repos'
HTTP_ACCEPT_LANGUAGE    
'en-US,en;q=0.8'
SERVER_PROTOCOL 
'HTTP/1.1'
SERVER_SOFTWARE 
'WSGIServer/0.1 Python/2.7.9'
TERM_PROGRAM_VERSION    
'343.6'
TMPDIR  
'/var/folders/fr/_d9wg7416219y9vhpwv05g4r0000gn/T/'
PGDATA  
'/usr/local/var/postgres'
REQUEST_METHOD  
'GET'
LOGNAME 
'dbinetti'
USER    
'dbinetti'
PATH    
'/Users/dbinetti/.virtualenvs/barberscore/bin:/usr/local/bin:/usr/local/sbin:/usr/local/opt/ruby/bin:/usr/local/heroku/bin:/opt/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin'
QUERY_STRING    
'q=voices'
HOME    
'/Users/dbinetti'
SECRET_KEY  
'x*c*ud&+g-j#%#uj)=m)^yrr!g9#@rw_x8+wzio5qg5gid!o7+'
VIRTUALENVWRAPPER_SCRIPT    
'/usr/local/bin/virtualenvwrapper.sh'
PORT    
'8000'
TERM_PROGRAM    
'Apple_Terminal'
LANG    
'en_US.UTF-8'
TERM    
'xterm-256color'
SHELL   
'/bin/bash'
VIRTUALENVWRAPPER_PYTHON    
'/usr/local/bin/python'
HTTP_COOKIE 
'csrftoken=mGEwVxCd6Jga16ll5LHCZmZUTE1FzPkc; djdt=show'
SERVER_NAME 
'1.0.0.127.in-addr.arpa'
REMOTE_ADDR 
'127.0.0.1'
SHLVL   
'1'
TWILIO_ACCOUNT_SID  
'ACb1b9bca9ccef183757e6ebdb64d063c3'
XPC_FLAGS   
'0x0'
wsgi.url_scheme 
'http'
USER_EMAIL  
'dbinetti@gmail.com'
SERVER_PORT 
'8000'
CONTENT_LENGTH  
''
VIRTUALENVWRAPPER_VIRTUALENV    
'/usr/local/bin/virtualenv'
HTTP_CONNECTION 
'keep-alive'
HTTP_USER_AGENT 
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.93 Safari/537.36'
VIRTUALENVWRAPPER_VIRTUALENV_ARGS   
'--no-site-packages'
WORKON_HOME 
'/Users/dbinetti/.virtualenvs'
TERM_SESSION_ID 
'537B5640-762B-42F8-9612-F257ED943BEB'
XPC_SERVICE_NAME    
'0'
CONTENT_TYPE    
'text/plain'
REUSE_DB    
'1'
PYTHONPATH  
'/Users/dbinetti/Repos/barberscore/project/'
SSH_AUTH_SOCK   
'/private/tmp/com.apple.launchd.nDeR0gqMf7/Listeners'
VIRTUAL_ENV 
'/Users/dbinetti/.virtualenvs/barberscore'
TWILIO_AUTH_TOKEN   
'41bd31f387ba44b7bfd7cf4965ce06f7'
TWILIO_ADMIN_NUMBER 
'+15005550006'
EDITOR  
'/Applications/Sublime Text.app/Contents/MacOS/Sublime Text'
wsgi.input  
<socket._fileobject object at 0x10dafaa50>
Apple_PubSub_Socket_Render  
'/private/tmp/com.apple.launchd.mC1p9mCyGI/Render'
PS1 
'\\[\\033[0;32m\\](barberscore)$ \\[\\033[0;00m\\]'
DJANGO_DEBUG    
'True'
FULL_NAME   
'David Binetti'
wsgi.multithread    
True
TZ  
'US/Pacific'
PYTHONDONTWRITEBYTECODE 
'True'
AWS_ACCESS_KEY_ID   
'AKIAIASRKQ66PJ7KIAZQ'
_   
'/Users/dbinetti/.virtualenvs/barberscore/bin/django-admin'
HTTP_ACCEPT 
'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
VIRTUALENVWRAPPER_PROJECT_FILENAME  
'.project'
wsgi.file_wrapper   
''
wsgi.version    
(1, 0)
VIRTUALENVWRAPPER_HOOK_DIR  
'/Users/dbinetti/.virtualenvs'
TWILIO_ADMIN_SID    
'PNc708ea5ce72d401fa043e0cb55c4e6b1'
wsgi.run_once   
False
CSRF_COOKIE 
u'mGEwVxCd6Jga16ll5LHCZmZUTE1FzPkc'
OLDPWD  
'/Users/dbinetti'
GATEWAY_INTERFACE   
'CGI/1.1'
SCRIPT_NAME 
u''
wsgi.errors 
<open file '<stderr>', mode 'w' at 0x10c4031e0>
__CF_USER_TEXT_ENCODING 
'0x1F5:0x0:0x0'
DATABASE_URL    
'postgres://dbinetti@localhost/barberscore'
PWD 
'/Users/dbinetti/Repos/barberscore'
(u'watson.search_context_middleware_active', <watson.middleware.SearchContextMiddleware object at 0x10db721d0>) 
True
DJANGO_SETTINGS_MODULE  
'settings.dev'
AWS_SECRET_ACCESS_KEY   
'+pT4Toz1NDtJ7CvBtBm0U15jBB0k6DiigJULmChP'
HTTP_HOST   
'localhost:8000'
AWS_STATIC_BUCKET_NAME  
'barberscore-static-dev'
REMOTE_HOST 
''
HTTP_ACCEPT_ENCODING    
'gzip, deflate, sdch'
AWS_MEDIA_BUCKET_NAME   
'barberscore-files-dev'
PATH_INFO   
u'/search/'
Settings
Using settings module settings.dev
Setting Value
USE_L10N    
True
USE_THOUSAND_SEPARATOR  
False
CSRF_COOKIE_SECURE  
False
LANGUAGE_CODE   
'en-us'
ROOT_URLCONF    
'urls'
MANAGERS    
()
TEST_NON_SERIALIZED_APPS    
[]
DEFAULT_CHARSET 
'utf-8'
SESSION_SERIALIZER  
'django.contrib.sessions.serializers.JSONSerializer'
STATIC_ROOT 
'/static/'
ALLOWED_HOSTS   
['localhost']
MESSAGE_STORAGE 
'django.contrib.messages.storage.fallback.FallbackStorage'
EMAIL_SUBJECT_PREFIX    
'[Django] '
SEND_BROKEN_LINK_EMAILS 
False
STATICFILES_FINDERS 
('django.contrib.staticfiles.finders.FileSystemFinder',
 'django.contrib.staticfiles.finders.AppDirectoriesFinder')
SESSION_CACHE_ALIAS 
'default'
SESSION_COOKIE_DOMAIN   
None
SESSION_COOKIE_NAME 
'sessionid'
ADMIN_FOR   
()
TIME_INPUT_FORMATS  
('%H:%M:%S', '%H:%M:%S.%f', '%H:%M')
DATABASES   
{'default': {'ATOMIC_REQUESTS': False,
             'AUTOCOMMIT': True,
             'CONN_MAX_AGE': 0,
             'ENGINE': 'django.db.backends.postgresql_psycopg2',
             'HOST': 'localhost',
             'NAME': 'barberscore',
             'OPTIONS': {},
             'PASSWORD': u'********************',
             'PORT': '',
             'TEST': {'CHARSET': None,
                      'COLLATION': None,
                      'MIRROR': None,
                      'NAME': None},
             'TIME_ZONE': 'UTC',
             'USER': 'dbinetti'}}
FILE_UPLOAD_DIRECTORY_PERMISSIONS   
None
AWS_PRELOAD_METADATA    
True
FILE_UPLOAD_PERMISSIONS 
None
FILE_UPLOAD_HANDLERS    
('django.core.files.uploadhandler.MemoryFileUploadHandler',
 'django.core.files.uploadhandler.TemporaryFileUploadHandler')
DEFAULT_CONTENT_TYPE    
'text/html'
DATABASE_URL    
'postgres://dbinetti@localhost/barberscore'
APPEND_SLASH    
True
FIRST_DAY_OF_WEEK   
0
DATABASE_ROUTERS    
[]
DEFAULT_TABLESPACE  
''
YEAR_MONTH_FORMAT   
'F Y'
STATICFILES_STORAGE 
'django.contrib.staticfiles.storage.StaticFilesStorage'
CACHES  
{'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}
DOMAIN  
'localhost'
SERVER_EMAIL    
'root@localhost'
SESSION_COOKIE_PATH 
'/'
SILENCED_SYSTEM_CHECKS  
[]
MIDDLEWARE_CLASSES  
('corsheaders.middleware.CorsMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'watson.middleware.SearchContextMiddleware')
USE_I18N    
False
THOUSAND_SEPARATOR  
','
SECRET_KEY  
u'********************'
LANGUAGE_COOKIE_NAME    
'django_language'
DEFAULT_INDEX_TABLESPACE    
''
TRANSACTIONS_MANAGED    
False
LOGGING_CONFIG  
'logging.config.dictConfig'
TEMPLATE_LOADERS    
('django.template.loaders.filesystem.Loader',
 'django.template.loaders.app_directories.Loader')
WSGI_APPLICATION    
'wsgi.application'
TEMPLATE_DEBUG  
True
X_FRAME_OPTIONS 
'SAMEORIGIN'
CSRF_COOKIE_NAME    
'csrftoken'
FORCE_SCRIPT_NAME   
None
USE_X_FORWARDED_HOST    
False
SIGNING_BACKEND 
'django.core.signing.TimestampSigner'
SESSION_COOKIE_SECURE   
False
CACHE_MIDDLEWARE_KEY_PREFIX 
u'********************'
CSRF_COOKIE_DOMAIN  
None
FILE_CHARSET    
'utf-8'
DEBUG   
True
PHONENUMBER_DEFAULT_REGION  
'US'
LANGUAGE_COOKIE_DOMAIN  
None
AWS_ACCESS_KEY_ID   
u'********************'
DEFAULT_FILE_STORAGE    
'django.core.files.storage.FileSystemStorage'
INSTALLED_APPS  
('utils',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.admin',
 'django.contrib.admindocs',
 'django.contrib.humanize',
 'timezone_field',
 'easy_select2',
 'corsheaders',
 'watson',
 'noncense',
 'rest_framework',
 'api',
 'website')
LANGUAGES   
(('af', 'Afrikaans'),
 ('ar', 'Arabic'),
 ('ast', 'Asturian'),
 ('az', 'Azerbaijani'),
 ('bg', 'Bulgarian'),
 ('be', 'Belarusian'),
 ('bn', 'Bengali'),
 ('br', 'Breton'),
 ('bs', 'Bosnian'),
 ('ca', 'Catalan'),
 ('cs', 'Czech'),
 ('cy', 'Welsh'),
 ('da', 'Danish'),
 ('de', 'German'),
 ('el', 'Greek'),
 ('en', 'English'),
 ('en-au', 'Australian English'),
 ('en-gb', 'British English'),
 ('eo', 'Esperanto'),
 ('es', 'Spanish'),
 ('es-ar', 'Argentinian Spanish'),
 ('es-mx', 'Mexican Spanish'),
 ('es-ni', 'Nicaraguan Spanish'),
 ('es-ve', 'Venezuelan Spanish'),
 ('et', 'Estonian'),
 ('eu', 'Basque'),
 ('fa', 'Persian'),
 ('fi', 'Finnish'),
 ('fr', 'French'),
 ('fy', 'Frisian'),
 ('ga', 'Irish'),
 ('gl', 'Galician'),
 ('he', 'Hebrew'),
 ('hi', 'Hindi'),
 ('hr', 'Croatian'),
 ('hu', 'Hungarian'),
 ('ia', 'Interlingua'),
 ('id', 'Indonesian'),
 ('io', 'Ido'),
 ('is', 'Icelandic'),
 ('it', 'Italian'),
 ('ja', 'Japanese'),
 ('ka', 'Georgian'),
 ('kk', 'Kazakh'),
 ('km', 'Khmer'),
 ('kn', 'Kannada'),
 ('ko', 'Korean'),
 ('lb', 'Luxembourgish'),
 ('lt', 'Lithuanian'),
 ('lv', 'Latvian'),
 ('mk', 'Macedonian'),
 ('ml', 'Malayalam'),
 ('mn', 'Mongolian'),
 ('mr', 'Marathi'),
 ('my', 'Burmese'),
 ('nb', 'Norwegian Bokmal'),
 ('ne', 'Nepali'),
 ('nl', 'Dutch'),
 ('nn', 'Norwegian Nynorsk'),
 ('os', 'Ossetic'),
 ('pa', 'Punjabi'),
 ('pl', 'Polish'),
 ('pt', 'Portuguese'),
 ('pt-br', 'Brazilian Portuguese'),
 ('ro', 'Romanian'),
 ('ru', 'Russian'),
 ('sk', 'Slovak'),
 ('sl', 'Slovenian'),
 ('sq', 'Albanian'),
 ('sr', 'Serbian'),
 ('sr-latn', 'Serbian Latin'),
 ('sv', 'Swedish'),
 ('sw', 'Swahili'),
 ('ta', 'Tamil'),
 ('te', 'Telugu'),
 ('th', 'Thai'),
 ('tr', 'Turkish'),
 ('tt', 'Tatar'),
 ('udm', 'Udmurt'),
 ('uk', 'Ukrainian'),
 ('ur', 'Urdu'),
 ('vi', 'Vietnamese'),
 ('zh-cn', 'Simplified Chinese'),
 ('zh-hans', 'Simplified Chinese'),
 ('zh-hant', 'Traditional Chinese'),
 ('zh-tw', 'Traditional Chinese'))
COMMENTS_ALLOW_PROFANITIES  
False
TWILIO_AUTH_TOKEN   
u'********************'
STATIC_STORAGE  
'django.contrib.staticfiles.storage.StaticFilesStorage'
STATICFILES_DIRS    
()
PHONENUMBER_DEFAULT_FORMAT  
'NATIONAL'
SECURE_PROXY_SSL_HEADER 
('HTTP_X_FORWARDED_PROTO', 'https')
LANGUAGE_COOKIE_AGE 
None
SESSION_COOKIE_HTTPONLY 
True
AWS_SECRET_ACCESS_KEY   
u'********************'
DEBUG_PROPAGATE_EXCEPTIONS  
False
INTERNAL_IPS    
()
AWS_MEDIA_BUCKET_NAME   
'barberscore-files-dev'
MONTH_DAY_FORMAT    
'F j'
LOGIN_URL   
'login'
SESSION_EXPIRE_AT_BROWSER_CLOSE 
False
TIME_FORMAT 
'P'
AUTH_USER_MODEL 
'noncense.User'
DATE_INPUT_FORMATS  
('%Y-%m-%d',
 '%m/%d/%Y',
 '%m/%d/%y',
 '%b %d %Y',
 '%b %d, %Y',
 '%d %b %Y',
 '%d %b, %Y',
 '%B %d %Y',
 '%B %d, %Y',
 '%d %B %Y',
 '%d %B, %Y')
AUTHENTICATION_BACKENDS 
('noncense.backends.MobileBackend',
 'django.contrib.auth.backends.ModelBackend')
EMAIL_HOST_PASSWORD 
u'********************'
PASSWORD_RESET_TIMEOUT_DAYS 
u'********************'
SESSION_FILE_PATH   
None
CACHE_MIDDLEWARE_ALIAS  
'default'
TWILIO_ACCOUNT_SID  
'ACb1b9bca9ccef183757e6ebdb64d063c3'
SESSION_SAVE_EVERY_REQUEST  
False
NUMBER_GROUPING 
0
SESSION_ENGINE  
'django.contrib.sessions.backends.db'
CSRF_FAILURE_VIEW   
'django.views.csrf.csrf_failure'
CSRF_COOKIE_PATH    
'/'
LOGIN_REDIRECT_URL  
'home'
PROJECT_ROOT    
'/Users/dbinetti/Repos/barberscore/project'
DECIMAL_SEPARATOR   
'.'
SELECT2_USE_BUNDLED_JQUERY  
False
MESSAGE_TAGS    
{40: 'danger'}
LOCALE_PATHS    
()
TEMPLATE_STRING_IF_INVALID  
''
LOGOUT_URL  
'logout'
EMAIL_USE_TLS   
False
FIXTURE_DIRS    
()
EMAIL_HOST  
'localhost'
DATE_FORMAT 
'N j, Y'
MEDIA_ROOT  
'/Users/dbinetti/Repos/barberscore/project/media'
DEFAULT_EXCEPTION_REPORTER_FILTER   
'django.views.debug.SafeExceptionReporterFilter'
ADMINS  
()
FORMAT_MODULE_PATH  
None
DEFAULT_FROM_EMAIL  
'webmaster@localhost'
REST_FRAMEWORK  
{'DEFAULT_PERMISSION_CLASSES': ['rest_framework.permissions.AllowAny']}
MEDIA_URL   
'/media/'
DATETIME_FORMAT 
'N j, Y, P'
TEMPLATE_DIRS   
()
DISALLOWED_USER_AGENTS  
()
ALLOWED_INCLUDE_ROOTS   
()
LOGGING 
{'disable_existing_loggers': True,
 'formatters': {'simple': {'format': '%(levelname)s %(message)s'}},
 'handlers': {'console': {'class': 'logging.StreamHandler',
                          'formatter': 'simple',
                          'level': 'DEBUG'}},
 'loggers': {'api': {'handlers': ['console'], 'level': 'DEBUG'},
             'noncense': {'handlers': ['console'], 'level': 'DEBUG'},
             'utils': {'handlers': ['console'], 'level': 'DEBUG'},
             'website': {'handlers': ['console'], 'level': 'DEBUG'}},
 'version': 1}
PREPEND_WWW 
False
SHORT_DATE_FORMAT   
'm/d/Y'
PROJECT_NAME    
'barberscore'
TEST_RUNNER 
'django.test.runner.DiscoverRunner'
IGNORABLE_404_URLS  
()
TIME_ZONE   
'US/Pacific'
CORS_ORIGIN_ALLOW_ALL   
True
FILE_UPLOAD_MAX_MEMORY_SIZE 
2621440
EMAIL_BACKEND   
'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_SSL   
False
TEMPLATE_CONTEXT_PROCESSORS 
('django.contrib.auth.context_processors.auth',
 'django.core.context_processors.debug',
 'django.core.context_processors.i18n',
 'django.core.context_processors.media',
 'django.core.context_processors.static',
 'django.core.context_processors.tz',
 'django.contrib.messages.context_processors.messages',
 'django.core.context_processors.request')
MEDIA_STORAGE   
'django.core.files.storage.FileSystemStorage'
SESSION_COOKIE_AGE  
1209600
SETTINGS_MODULE 
'settings.dev'
USE_ETAGS   
False
LANGUAGES_BIDI  
('he', 'ar', 'fa', 'ur')
FILE_UPLOAD_TEMP_DIR    
None
CSRF_COOKIE_AGE 
31449600
STATIC_URL  
'/static/'
EMAIL_PORT  
25
USE_TZ  
True
SHORT_DATETIME_FORMAT   
'm/d/Y P'
PASSWORD_HASHERS    
u'********************'
ABSOLUTE_URL_OVERRIDES  
{}
LANGUAGE_COOKIE_PATH    
'/'
MIGRATION_MODULES   
{}
CACHE_MIDDLEWARE_SECONDS    
600
CSRF_COOKIE_HTTPONLY    
False
DATETIME_INPUT_FORMATS  
('%Y-%m-%d %H:%M:%S',
 '%Y-%m-%d %H:%M:%S.%f',
 '%Y-%m-%d %H:%M',
 '%Y-%m-%d',
 '%m/%d/%Y %H:%M:%S',
 '%m/%d/%Y %H:%M:%S.%f',
 '%m/%d/%Y %H:%M',
 '%m/%d/%Y',
 '%m/%d/%y %H:%M:%S',
 '%m/%d/%y %H:%M:%S.%f',
 '%m/%d/%y %H:%M',
 '%m/%d/%y')
AWS_STATIC_BUCKET_NAME  
'barberscore-static-dev'
EMAIL_HOST_USER 
''
PROFANITIES_LIST    
u'********************'
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 500 page.
etianen commented 9 years ago

Try the latest master. I think a fix was in place for this.

On 29 Jan 2015, at 21:43, David Binetti notifications@github.com wrote:

I've been bashing against the wall for a few hours now.

I've tried a host of different things, but am stumped (and clueless).

I suspect it's related to my project setup: meaning, I have two apps in my django project: api, which houses the models, and website, which is a 'naked' app with no models (just the views, templates, and urls). website imports api.models. I am registering the models with watson in the api app, and the search engine works flawlessly from the command line.

Thanks...

AttributeError at /search/ 'NoneType' object has no attribute '_meta' Request Method: GET Request URL: http://localhost:8000/search/?q=voices Django Version: 1.7.4 Exception Type: AttributeError Exception Value: 'NoneType' object has no attribute '_meta' Exception Location: /Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/watson/templatetags/watson.py in search_result_item, line 33 Python Executable: /Users/dbinetti/.virtualenvs/barberscore/bin/python2.7 Python Version: 2.7.9 Python Path: ['/Users/dbinetti/.virtualenvs/barberscore/bin', '/Users/dbinetti/Repos/barberscore/project', '/Users/dbinetti/.virtualenvs/barberscore/lib/python27.zip', '/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7', '/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/plat-darwin', '/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/plat-mac', '/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/plat-mac/lib-scriptpackages', '/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/lib-tk', '/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/lib-old', '/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/lib-dynload', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', '/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages'] Server time: Thu, 29 Jan 2015 13:35:55 -0800 Error during template rendering

In template /Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/watson/templates/watson/includes/search_results.html, error at line 6 'NoneType' object has no attribute '_meta' 1 {% load watson %} 2 {% if search_results %} 3

    4 {% for search_result in search_results %} 5
  • 6 {% search_result_item search_result %} 7
  • 8 {% endfor %} 9
10 {% endif %} Traceback Switch to copy-and-paste view

/Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/core/handlers/base.py in get_response response = response.render() ... ▶ Local vars /Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/response.py in render self.content = self.rendered_content ... ▶ Local vars /Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/response.py in rendered_content content = template.render(context) ... ▶ Local vars /Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/base.py in render return self._render(context) ... ▶ Local vars /Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/base.py in _render return self.nodelist.render(context) ... ▶ Local vars /Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/base.py in render bit = self.render_node(node, context) ... ▶ Local vars /Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/debug.py in render_node return node.render(context) ... ▶ Local vars /Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/defaulttags.py in render return nodelist.render(context) ... ▶ Local vars /Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/base.py in render bit = self.render_node(node, context) ... ▶ Local vars /Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/debug.py in render_node return node.render(context) ... ▶ Local vars /Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/base.py in render return func(_resolved_args, *_resolved_kwargs) ... ▶ Local vars /Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/watson/templatetags/watson.py in search_results return template.loader.render_to_string("watson/includes/search_results.html", context) ... ▼ Local vars Variable Value search_results [<SearchEntry: Voices of Gotham (rename)>, , <SearchEntry: Voices of California (rename)>, , <SearchEntry: Voices in Harmony (rename)>, ] context [{'False': False, 'None': None, 'True': True}, {u'paginator': None, u'search_results': [<SearchEntry: Voices of Gotham (rename)>, , <SearchEntry: Voices of California (rename)>, , <SearchEntry: Voices in Harmony (rename)>, ], u'object_list': [<SearchEntry: Voices of Gotham (rename)>, , <SearchEntry: Voices of California (rename)>, , <SearchEntry: Voices in Harmony (rename)>, ], u'page_obj': None, u'query': u'voices', u'is_paginated': False, u'view': <watson.views.SearchView object at 0x10e9f6050>}, {u'csrf_token': <django.utils.functional.proxy object at 0x10ea77510>, 'perms': <django.contrib.auth.context_processors.PermWrapper object at 0x10ea77650>, u'request': <WSGIRequest path:/search/, GET:<QueryDict: {u'q': [u'voices']}>, POST:<QueryDict: {}>, COOKIES:{'csrftoken': 'mGEwVxCd6Jga16ll5LHCZmZUTE1FzPkc', 'djdt': 'show'}, META:{'AWS_ACCESS_KEY_ID': 'AKIAIASRKQ66PJ7KIAZQ', 'AWS_MEDIA_BUCKET_NAME': 'barberscore-files-dev', 'AWS_SECRET_ACCESS_KEY': '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', 'AWS_STATIC_BUCKET_NAME': 'barberscore-static-dev', 'Apple_PubSub_Socket_Render': '/private/tmp/com.apple.launchd.mC1p9mCyGI/Render', 'CONTENT_LENGTH': '', 'CONTENT_TYPE': 'text/plain', u'CSRF_COOKIE': u'mGEwVxCd6Jga16ll5LHCZmZUTE1FzPkc', 'DATABASE_URL': 'postgres://dbinetti@localhost/barberscore', 'DJANGO_DEBUG': 'True', 'DJANGO_SETTINGS_MODULE': 'settings.dev', 'DOMAIN': 'localhost', 'EDITOR': '/Applications/Sublime Text.app/Contents/MacOS/Sublime Text', 'FULL_NAME': 'David Binetti', 'GATEWAY_INTERFACE': 'CGI/1.1', 'HOME': '/Users/dbinetti', 'HTTPACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/_;q=0.8', 'HTTP_ACCEPT_ENCODING': 'gzip, deflate, sdch', 'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.8', 'HTTP_CONNECTION': 'keep-alive', 'HTTP_COOKIE': 'csrftoken=mGEwVxCd6Jga16ll5LHCZmZUTE1FzPkc; djdt=show', 'HTTP_HOST': 'localhost:8000', 'HTTP_REFERER': 'http://localhost:8000/', 'HTTP_USER_AGENT': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.93 Safari/537.36', 'LANG': 'en_US.UTF-8', 'LOGNAME': 'dbinetti', 'OLDPWD': '/Users/dbinetti', 'PATH': '/Users/dbinetti/.virtualenvs/barberscore/bin:/usr/local/bin:/usr/local/sbin:/usr/local/opt/ruby/bin:/usr/local/heroku/bin:/opt/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin', 'PATH_INFO': u'/search/', 'PGDATA': '/usr/local/var/postgres', 'PORT': '8000', 'PROJECT_HOME': '/Users/dbinetti/Repos', 'PS1': '[\0330;32m\$ [\033[0;00m]', 'PWD': '/Users/dbinetti/Repos/barberscore', 'PYTHONDONTWRITEBYTECODE': 'True', 'PYTHONPATH': '/Users/dbinetti/Repos/barberscore/project/', 'QUERY_STRING': 'q=voices', 'REMOTE_ADDR': '127.0.0.1', 'REMOTE_HOST': '', 'REQUEST_METHOD': 'GET', 'REUSE_DB': '1', 'RUN_MAIN': 'true', 'SCRIPT_NAME': u'', 'SECRET_KEY': 'x_c_ud&+g-j#%#uj)=m)^yrr!g9#@rw_x8+wzio5qg5gid!o7+', 'SERVER_NAME': '1.0.0.127.in-addr.arpa', 'SERVER_PORT': '8000', 'SERVER_PROTOCOL': 'HTTP/1.1', 'SERVER_SOFTWARE': 'WSGIServer/0.1 Python/2.7.9', 'SHELL': '/bin/bash', 'SHLVL': '1', 'SSH_AUTH_SOCK': '/private/tmp/com.apple.launchd.nDeR0gqMf7/Listeners', 'TERM': 'xterm-256color', 'TERM_PROGRAM': 'Apple_Terminal', 'TERM_PROGRAM_VERSION': '343.6', 'TERM_SESSION_ID': '537B5640-762B-42F8-9612-F257ED943BEB', 'TMPDIR': '/var/folders/fr/_d9wg7416219y9vhpwv05g4r0000gn/T/', 'TWILIO_ACCOUNT_SID': 'ACb1b9bca9ccef183757e6ebdb64d063c3', 'TWILIO_ADMIN_NUMBER': '+15005550006', 'TWILIO_ADMIN_SID': 'PNc708ea5ce72d401fa043e0cb55c4e6b1', 'TWILIO_AUTH_TOKEN': '41bd31f387ba44b7bfd7cf4965ce06f7', 'TZ': 'US/Pacific', 'USER': 'dbinetti', 'USER_EMAIL': 'dbinetti@gmail.com', 'VIRTUALENVWRAPPER_HOOK_DIR': '/Users/dbinetti/.virtualenvs', 'VIRTUALENVWRAPPER_PROJECT_FILENAME': '.project', 'VIRTUALENVWRAPPER_PYTHON': '/usr/local/bin/python', 'VIRTUALENVWRAPPER_SCRIPT': '/usr/local/bin/virtualenvwrapper.sh', 'VIRTUALENVWRAPPER_VIRTUALENV': '/usr/local/bin/virtualenv', 'VIRTUALENVWRAPPER_VIRTUALENV_ARGS': '--no-site-packages', 'VIRTUAL_ENV': '/Users/dbinetti/.virtualenvs/barberscore', 'WORKON_HOME': '/Users/dbinetti/.virtualenvs', 'XPC_FLAGS': '0x0', 'XPC_SERVICENAME': '0', '': '/Users/dbinetti/.virtualenvs/barberscore/bin/django-admin', '*CF_USER_TEXT_ENCODING': '0x1F5:0x0:0x0', 'wsgi.errors': <open file '', mode 'w' at 0x10c4031e0>, 'wsgi.file_wrapper': <class wsgiref.util.FileWrapper at 0x10d6b8738>, 'wsgi.input': <socket._fileobject object at 0x10dafaa50>, 'wsgi.multiprocess': False, 'wsgi.multithread': True, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0), (u'watson.search_context_middleware_active', <watson.middleware.SearchContextMiddleware object at 0x10db721d0>): True}>, 'messages': <django.contrib.messages.storage.fallback.FallbackStorage object at 0x10db80250>, u'TIME_ZONE': 'US/Pacific', u'STATIC_URL': '/static/', u'LANGUAGES': (('af', 'Afrikaans'), ('ar', 'Arabic'), ('ast', 'Asturian'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be', 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('el', 'Greek'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-mx', 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve', 'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa', 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'), ('ga', 'Irish'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hu', 'Hungarian'), ('ia', 'Interlingua'), ('id', 'Indonesian'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('my', 'Burmese'), ('nb', 'Norwegian Bokmal'), ('ne', 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os', 'Ossetic'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('th', 'Thai'), ('tr', 'Turkish'), ('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('vi', 'Vietnamese'), ('zh-cn', 'Simplified Chinese'), ('zh-hans', 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese'), ('zh-tw', 'Traditional Chinese')), 'user': <SimpleLazyObject: <function at 0x10db6aaa0>>, u'LANGUAGE_CODE': 'en-us', 'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'INFO': 20, 'WARNING': 30, 'SUCCESS': 25, 'ERROR': 40}, u'LANGUAGE_BIDI': False, u'MEDIA_URL': '/media/'}, {}] /Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/loader.py in render_to_string return t.render(Context(dictionary)) ... ▶ Local vars /Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/base.py in render return self._render(context) ... ▶ Local vars /Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/base.py in _render return self.nodelist.render(context) ... ▶ Local vars /Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/base.py in render bit = self.render_node(node, context) ... ▶ Local vars /Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/debug.py in render_node return node.render(context) ... ▶ Local vars /Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/defaulttags.py in render return nodelist.render(context) ... ▶ Local vars /Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/base.py in render bit = self.render_node(node, context) ... ▶ Local vars /Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/debug.py in render_node return node.render(context) ... ▶ Local vars /Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/defaulttags.py in render nodelist.append(node.render(context)) ... ▶ Local vars /Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/django/template/base.py in render return func(_resolved_args, _resolved_kwargs) ... ▶ Local vars /Users/dbinetti/.virtualenvs/barberscore/lib/python2.7/site-packages/watson/templatetags/watson.py in search_result_item "app_label": obj._meta.app_label, ... ▼ Local vars Variable Value obj None search_result <SearchEntry: Voices of Gotham (rename)> context [{'False': False, 'None': None, 'True': True}, [{'False': False, 'None': None, 'True': True}, {u'paginator': None, u'search_results': [<SearchEntry: Voices of Gotham (rename)>, , <SearchEntry: Voices of California (rename)>, , <SearchEntry: Voices in Harmony (rename)>, ], u'object_list': [<SearchEntry: Voices of Gotham (rename)>, , <SearchEntry: Voices of California (rename)>, , <SearchEntry: Voices in Harmony (rename)>, ], u'page_obj': None, u'query': u'voices', u'is_paginated': False, u'view': <watson.views.SearchView object at 0x10e9f6050>}, {u'csrf_token': <django.utils.functional.__proxy** object at 0x10ea77510>, 'perms': <django.contrib.auth.context_processors.PermWrapper object at 0x10ea77650>, u'request': <WSGIRequest path:/search/, GET:<QueryDict: {u'q': [u'voices']}>, POST:<QueryDict: {}>, COOKIES:{'csrftoken': 'mGEwVxCd6Jga16ll5LHCZmZUTE1FzPkc', 'djdt': 'show'}, META:{'AWS_ACCESS_KEY_ID': 'AKIAIASRKQ66PJ7KIAZQ', 'AWS_MEDIA_BUCKET_NAME': 'barberscore-files-dev', 'AWS_SECRET_ACCESS_KEY': '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', 'AWS_STATIC_BUCKET_NAME': 'barberscore-static-dev', 'Apple_PubSub_Socket_Render': '/private/tmp/com.apple.launchd.mC1p9mCyGI/Render', 'CONTENT_LENGTH': '', 'CONTENT_TYPE': 'text/plain', u'CSRF_COOKIE': u'mGEwVxCd6Jga16ll5LHCZmZUTE1FzPkc', 'DATABASE_URL': 'postgres://dbinetti@localhost/barberscore', 'DJANGO_DEBUG': 'True', 'DJANGO_SETTINGS_MODULE': 'settings.dev', 'DOMAIN': 'localhost', 'EDITOR': '/Applications/Sublime Text.app/Contents/MacOS/Sublime Text', 'FULL_NAME': 'David Binetti', 'GATEWAY_INTERFACE': 'CGI/1.1', 'HOME': '/Users/dbinetti', 'HTTPACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/_;q=0.8', 'HTTP_ACCEPT_ENCODING': 'gzip, deflate, sdch', 'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.8', 'HTTP_CONNECTION': 'keep-alive', 'HTTP_COOKIE': 'csrftoken=mGEwVxCd6Jga16ll5LHCZmZUTE1FzPkc; djdt=show', 'HTTP_HOST': 'localhost:8000', 'HTTP_REFERER': 'http://localhost:8000/', 'HTTP_USER_AGENT': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.93 Safari/537.36', 'LANG': 'en_US.UTF-8', 'LOGNAME': 'dbinetti', 'OLDPWD': '/Users/dbinetti', 'PATH': '/Users/dbinetti/.virtualenvs/barberscore/bin:/usr/local/bin:/usr/local/sbin:/usr/local/opt/ruby/bin:/usr/local/heroku/bin:/opt/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin', 'PATH_INFO': u'/search/', 'PGDATA': '/usr/local/var/postgres', 'PORT': '8000', 'PROJECT_HOME': '/Users/dbinetti/Repos', 'PS1': '[\0330;32m\$ [\033[0;00m]', 'PWD': '/Users/dbinetti/Repos/barberscore', 'PYTHONDONTWRITEBYTECODE': 'True', 'PYTHONPATH': '/Users/dbinetti/Repos/barberscore/project/', 'QUERY_STRING': 'q=voices', 'REMOTE_ADDR': '127.0.0.1', 'REMOTE_HOST': '', 'REQUEST_METHOD': 'GET', 'REUSE_DB': '1', 'RUN_MAIN': 'true', 'SCRIPT_NAME': u'', 'SECRET_KEY': 'x_c_ud&+g-j#%#uj)=m)^yrr!g9#@rw_x8+wzio5qg5gid!o7+', 'SERVER_NAME': '1.0.0.127.in-addr.arpa', 'SERVER_PORT': '8000', 'SERVER_PROTOCOL': 'HTTP/1.1', 'SERVER_SOFTWARE': 'WSGIServer/0.1 Python/2.7.9', 'SHELL': '/bin/bash', 'SHLVL': '1', 'SSH_AUTH_SOCK': '/private/tmp/com.apple.launchd.nDeR0gqMf7/Listeners', 'TERM': 'xterm-256color', 'TERM_PROGRAM': 'Apple_Terminal', 'TERM_PROGRAM_VERSION': '343.6', 'TERM_SESSION_ID': '537B5640-762B-42F8-9612-F257ED943BEB', 'TMPDIR': '/var/folders/fr/_d9wg7416219y9vhpwv05g4r0000gn/T/', 'TWILIO_ACCOUNT_SID': 'ACb1b9bca9ccef183757e6ebdb64d063c3', 'TWILIO_ADMIN_NUMBER': '+15005550006', 'TWILIO_ADMIN_SID': 'PNc708ea5ce72d401fa043e0cb55c4e6b1', 'TWILIO_AUTH_TOKEN': '41bd31f387ba44b7bfd7cf4965ce06f7', 'TZ': 'US/Pacific', 'USER': 'dbinetti', 'USER_EMAIL': 'dbinetti@gmail.com', 'VIRTUALENVWRAPPER_HOOK_DIR': '/Users/dbinetti/.virtualenvs', 'VIRTUALENVWRAPPER_PROJECT_FILENAME': '.project', 'VIRTUALENVWRAPPER_PYTHON': '/usr/local/bin/python', 'VIRTUALENVWRAPPER_SCRIPT': '/usr/local/bin/virtualenvwrapper.sh', 'VIRTUALENVWRAPPER_VIRTUALENV': '/usr/local/bin/virtualenv', 'VIRTUALENVWRAPPER_VIRTUALENV_ARGS': '--no-site-packages', 'VIRTUAL_ENV': '/Users/dbinetti/.virtualenvs/barberscore', 'WORKON_HOME': '/Users/dbinetti/.virtualenvs', 'XPC_FLAGS': '0x0', 'XPC_SERVICENAME': '0', '': '/Users/dbinetti/.virtualenvs/barberscore/bin/django-admin', '__CF_USER_TEXT_ENCODING': '0x1F5:0x0:0x0', 'wsgi.errors': <open file '', mode 'w' at 0x10c4031e0>, 'wsgi.file_wrapper': <class wsgiref.util.FileWrapper at 0x10d6b8738>, 'wsgi.input': <socket._fileobject object at 0x10dafaa50>, 'wsgi.multiprocess': False, 'wsgi.multithread': True, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0), (u'watson.search_context_middleware_active', <watson.middleware.SearchContextMiddleware object at 0x10db721d0>): True}>, 'messages': <django.contrib.messages.storage.fallback.FallbackStorage object at 0x10db80250>, u'TIME_ZONE': 'US/Pacific', u'STATIC_URL': '/static/', u'LANGUAGES': (('af', 'Afrikaans'), ('ar', 'Arabic'), ('ast', 'Asturian'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be', 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('el', 'Greek'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-mx', 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve', 'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa', 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'), ('ga', 'Irish'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hu', 'Hungarian'), ('ia', 'Interlingua'), ('id', 'Indonesian'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('my', 'Burmese'), ('nb', 'Norwegian Bokmal'), ('ne', 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os', 'Ossetic'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('th', 'Thai'), ('tr', 'Turkish'), ('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('vi', 'Vietnamese'), ('zh-cn', 'Simplified Chinese'), ('zh-hans', 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese'), ('zh-tw', 'Traditional Chinese')), 'user': <SimpleLazyObject: <function at 0x10db6aaa0>>, u'LANGUAGE_CODE': 'en-us', 'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'INFO': 20, 'WARNING': 30, 'SUCCESS': 25, 'ERROR': 40}, u'LANGUAGE_BIDI': False, u'MEDIA_URL': '/media/'}, {}]] Request information

GET Variable Value q u'voices' POST No POST data FILES No FILES data COOKIES Variable Value csrftoken 'mGEwVxCd6Jga16ll5LHCZmZUTE1FzPkc' djdt 'show' META Variable Value DOMAIN 'localhost' wsgi.multiprocess False RUN_MAIN 'true' HTTP_REFERER 'http://localhost:8000/' PROJECT_HOME '/Users/dbinetti/Repos' HTTP_ACCEPT_LANGUAGE 'en-US,en;q=0.8' SERVER_PROTOCOL 'HTTP/1.1' SERVER_SOFTWARE 'WSGIServer/0.1 Python/2.7.9' TERM_PROGRAM_VERSION '343.6' TMPDIR '/var/folders/fr/_d9wg7416219y9vhpwv05g4r0000gn/T/' PGDATA '/usr/local/var/postgres' REQUEST_METHOD 'GET' LOGNAME 'dbinetti' USER 'dbinetti' PATH '/Users/dbinetti/.virtualenvs/barberscore/bin:/usr/local/bin:/usr/local/sbin:/usr/local/opt/ruby/bin:/usr/local/heroku/bin:/opt/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin' QUERY_STRING 'q=voices' HOME '/Users/dbinetti' SECRET_KEY 'x_c_ud&+g-j#%#uj)=m)^yrr!g9#@rw_x8+wzio5qg5gid!o7+' VIRTUALENVWRAPPER_SCRIPT '/usr/local/bin/virtualenvwrapper.sh' PORT '8000' TERM_PROGRAM 'Apple_Terminal' LANG 'en_US.UTF-8' TERM 'xterm-256color' SHELL '/bin/bash' VIRTUALENVWRAPPER_PYTHON '/usr/local/bin/python' HTTP_COOKIE 'csrftoken=mGEwVxCd6Jga16ll5LHCZmZUTE1FzPkc; djdt=show' SERVER_NAME '1.0.0.127.in-addr.arpa' REMOTE_ADDR '127.0.0.1' SHLVL '1' TWILIO_ACCOUNT_SID 'ACb1b9bca9ccef183757e6ebdb64d063c3' XPC_FLAGS '0x0' wsgi.url_scheme 'http' USER_EMAIL 'dbinetti@gmail.com' SERVER_PORT '8000' CONTENT_LENGTH '' VIRTUALENVWRAPPER_VIRTUALENV '/usr/local/bin/virtualenv' HTTP_CONNECTION 'keep-alive' HTTP_USER_AGENT 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.93 Safari/537.36' VIRTUALENVWRAPPER_VIRTUALENV_ARGS '--no-site-packages' WORKON_HOME '/Users/dbinetti/.virtualenvs' TERM_SESSION_ID '537B5640-762B-42F8-9612-F257ED943BEB' XPC_SERVICE_NAME '0' CONTENT_TYPE 'text/plain' REUSE_DB '1' PYTHONPATH '/Users/dbinetti/Repos/barberscore/project/' SSH_AUTH_SOCK '/private/tmp/com.apple.launchd.nDeR0gqMf7/Listeners' VIRTUAL_ENV '/Users/dbinetti/.virtualenvs/barberscore' TWILIO_AUTH_TOKEN '41bd31f387ba44b7bfd7cf4965ce06f7' TWILIO_ADMIN_NUMBER '+15005550006' EDITOR '/Applications/Sublime Text.app/Contents/MacOS/Sublime Text' wsgi.input <socket._fileobject object at 0x10dafaa50> Apple_PubSub_Socket_Render '/private/tmp/com.apple.launchd.mC1p9mCyGI/Render' PS1 '[\0330;32m\$ [\033[0;00m]' DJANGO_DEBUG 'True' FULL_NAME 'David Binetti' wsgi.multithread True TZ 'US/Pacific' PYTHONDONTWRITEBYTECODE 'True' AWS_ACCESS_KEYID 'AKIAIASRKQ66PJ7KIAZQ' '/Users/dbinetti/.virtualenvs/barberscore/bin/django-admin' HTTPACCEPT 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/_;q=0.8' VIRTUALENVWRAPPER_PROJECT_FILENAME '.project' wsgi.file_wrapper '' wsgi.version (1, 0) VIRTUALENVWRAPPER_HOOK_DIR '/Users/dbinetti/.virtualenvs' TWILIO_ADMIN_SID 'PNc708ea5ce72d401fa043e0cb55c4e6b1' wsgi.run_once False CSRF_COOKIE u'mGEwVxCd6Jga16ll5LHCZmZUTE1FzPkc' OLDPWD '/Users/dbinetti' GATEWAY_INTERFACE 'CGI/1.1' SCRIPT_NAME u'' wsgi.errors <open file '', mode 'w' at 0x10c4031e0> __CF_USER_TEXT_ENCODING '0x1F5:0x0:0x0' DATABASE_URL 'postgres://dbinetti@localhost/barberscore' PWD '/Users/dbinetti/Repos/barberscore' (u'watson.search_context_middleware_active', <watson.middleware.SearchContextMiddleware object at 0x10db721d0>) True DJANGO_SETTINGS_MODULE 'settings.dev' AWS_SECRET_ACCESS_KEY '+pT4Toz1NDtJ7CvBtBm0U15jBB0k6DiigJULmChP' HTTP_HOST 'localhost:8000' AWS_STATIC_BUCKET_NAME 'barberscore-static-dev' REMOTE_HOST '' HTTP_ACCEPT_ENCODING 'gzip, deflate, sdch' AWS_MEDIA_BUCKET_NAME 'barberscore-files-dev' PATH_INFO u'/search/' Settings Using settings module settings.dev Setting Value USE_L10N True USE_THOUSAND_SEPARATOR False CSRF_COOKIE_SECURE False LANGUAGE_CODE 'en-us' ROOT_URLCONF 'urls' MANAGERS () TEST_NON_SERIALIZED_APPS [] DEFAULT_CHARSET 'utf-8' SESSION_SERIALIZER 'django.contrib.sessions.serializers.JSONSerializer' STATIC_ROOT '/static/' ALLOWED_HOSTS ['localhost'] MESSAGE_STORAGE 'django.contrib.messages.storage.fallback.FallbackStorage' EMAIL_SUBJECT_PREFIX '[Django] ' SEND_BROKEN_LINK_EMAILS False STATICFILES_FINDERS ('django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder') SESSION_CACHE_ALIAS 'default' SESSION_COOKIE_DOMAIN None SESSION_COOKIE_NAME 'sessionid' ADMIN_FOR () TIME_INPUT_FORMATS ('%H:%M:%S', '%H:%M:%S.%f', '%H:%M') DATABASES {'default': {'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'ENGINE': 'django.db.backends.postgresqlpsycopg2', 'HOST': 'localhost', 'NAME': 'barberscore', 'OPTIONS': {}, 'PASSWORD': u'***', 'PORT': '', 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIRROR': None, 'NAME': None}, 'TIME_ZONE': 'UTC', 'USER': 'dbinetti'}} FILE_UPLOAD_DIRECTORY_PERMISSIONS None AWS_PRELOAD_METADATA True FILE_UPLOAD_PERMISSIONS None FILE_UPLOAD_HANDLERS ('django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler') DEFAULT_CONTENT_TYPE 'text/html' DATABASE_URL 'postgres://dbinetti@localhost/barberscore' APPEND_SLASH True FIRST_DAY_OF_WEEK 0 DATABASE_ROUTERS [] DEFAULT_TABLESPACE '' YEAR_MONTH_FORMAT 'F Y' STATICFILES_STORAGE 'django.contrib.staticfiles.storage.StaticFilesStorage' CACHES {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}} DOMAIN 'localhost' SERVER_EMAIL 'root@localhost' SESSION_COOKIE_PATH '/' SILENCED_SYSTEM_CHECKS [] MIDDLEWARE_CLASSES ('corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'watson.middleware.SearchContextMiddleware') USE_I18N False THOUSAND_SEPARATOR ',' SECRETKEY u'******_' LANGUAGE_COOKIE_NAME 'django_language' DEFAULT_INDEX_TABLESPACE '' TRANSACTIONS_MANAGED False LOGGING_CONFIG 'logging.config.dictConfig' TEMPLATE_LOADERS ('django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader') WSGI_APPLICATION 'wsgi.application' TEMPLATE_DEBUG True X_FRAME_OPTIONS 'SAMEORIGIN' CSRF_COOKIE_NAME 'csrftoken' FORCE_SCRIPT_NAME None USE_X_FORWARDED_HOST False SIGNING_BACKEND 'django.core.signing.TimestampSigner' SESSION_COOKIE_SECURE False CACHE_MIDDLEWARE_KEYPREFIX u'******_' CSRF_COOKIE_DOMAIN None FILE_CHARSET 'utf-8' DEBUG True PHONENUMBER_DEFAULT_REGION 'US' LANGUAGE_COOKIE_DOMAIN None AWS_ACCESS_KEYID u'******_' DEFAULT_FILE_STORAGE 'django.core.files.storage.FileSystemStorage' INSTALLED_APPS ('utils', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.admin', 'django.contrib.admindocs', 'django.contrib.humanize', 'timezone_field', 'easy_select2', 'corsheaders', 'watson', 'noncense', 'rest_framework', 'api', 'website') LANGUAGES (('af', 'Afrikaans'), ('ar', 'Arabic'), ('ast', 'Asturian'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be', 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('el', 'Greek'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-mx', 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve', 'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa', 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'), ('ga', 'Irish'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hu', 'Hungarian'), ('ia', 'Interlingua'), ('id', 'Indonesian'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('my', 'Burmese'), ('nb', 'Norwegian Bokmal'), ('ne', 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os', 'Ossetic'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('th', 'Thai'), ('tr', 'Turkish'), ('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('vi', 'Vietnamese'), ('zh-cn', 'Simplified Chinese'), ('zh-hans', 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese'), ('zh-tw', 'Traditional Chinese')) COMMENTS_ALLOW_PROFANITIES False TWILIO_AUTHTOKEN u'******_' STATIC_STORAGE 'django.contrib.staticfiles.storage.StaticFilesStorage' STATICFILES_DIRS () PHONENUMBER_DEFAULT_FORMAT 'NATIONAL' SECURE_PROXY_SSL_HEADER ('HTTP_X_FORWARDED_PROTO', 'https') LANGUAGE_COOKIE_AGE None SESSION_COOKIE_HTTPONLY True AWS_SECRET_ACCESSKEY u'******_' DEBUG_PROPAGATE_EXCEPTIONS False INTERNAL_IPS () AWS_MEDIA_BUCKET_NAME 'barberscore-files-dev' MONTH_DAY_FORMAT 'F j' LOGIN_URL 'login' SESSION_EXPIRE_AT_BROWSER_CLOSE False TIME_FORMAT 'P' AUTH_USER_MODEL 'noncense.User' DATE_INPUT_FORMATS ('%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y', '%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B %Y', '%d %B, %Y') AUTHENTICATION_BACKENDS ('noncense.backends.MobileBackend', 'django.contrib.auth.backends.ModelBackend') EMAIL_HOSTPASSWORD u'******_' PASSWORD_RESET_TIMEOUTDAYS u'******_' SESSION_FILE_PATH None CACHE_MIDDLEWARE_ALIAS 'default' TWILIO_ACCOUNT_SID 'ACb1b9bca9ccef183757e6ebdb64d063c3' SESSION_SAVE_EVERY_REQUEST False NUMBER_GROUPING 0 SESSION_ENGINE 'django.contrib.sessions.backends.db' CSRF_FAILURE_VIEW 'django.views.csrf.csrf_failure' CSRF_COOKIE_PATH '/' LOGIN_REDIRECT_URL 'home' PROJECT_ROOT '/Users/dbinetti/Repos/barberscore/project' DECIMAL_SEPARATOR '.' SELECT2_USE_BUNDLED_JQUERY False MESSAGE_TAGS {40: 'danger'} LOCALE_PATHS () TEMPLATE_STRING_IF_INVALID '' LOGOUT_URL 'logout' EMAIL_USE_TLS False FIXTURE_DIRS () EMAIL_HOST 'localhost' DATE_FORMAT 'N j, Y' MEDIA_ROOT '/Users/dbinetti/Repos/barberscore/project/media' DEFAULT_EXCEPTION_REPORTER_FILTER 'django.views.debug.SafeExceptionReporterFilter' ADMINS () FORMAT_MODULE_PATH None DEFAULT_FROM_EMAIL 'webmaster@localhost' REST_FRAMEWORK {'DEFAULT_PERMISSION_CLASSES': ['rest_framework.permissions.AllowAny']} MEDIA_URL '/media/' DATETIME_FORMAT 'N j, Y, P' TEMPLATE_DIRS () DISALLOWED_USER_AGENTS () ALLOWED_INCLUDE_ROOTS () LOGGING {'disable_existing_loggers': True, 'formatters': {'simple': {'format': '%(levelname)s %(message)s'}}, 'handlers': {'console': {'class': 'logging.StreamHandler', 'formatter': 'simple', 'level': 'DEBUG'}}, 'loggers': {'api': {'handlers': ['console'], 'level': 'DEBUG'}, 'noncense': {'handlers': ['console'], 'level': 'DEBUG'}, 'utils': {'handlers': ['console'], 'level': 'DEBUG'}, 'website': {'handlers': ['console'], 'level': 'DEBUG'}}, 'version': 1} PREPEND_WWW False SHORT_DATE_FORMAT 'm/d/Y' PROJECT_NAME 'barberscore' TEST_RUNNER 'django.test.runner.DiscoverRunner' IGNORABLE_404_URLS () TIME_ZONE 'US/Pacific' CORS_ORIGIN_ALLOW_ALL True FILE_UPLOAD_MAX_MEMORY_SIZE 2621440 EMAIL_BACKEND 'django.core.mail.backends.smtp.EmailBackend' EMAIL_USE_SSL False TEMPLATE_CONTEXT_PROCESSORS ('django.contrib.auth.context_processors.auth', 'django.core.context_processors.debug', 'django.core.context_processors.i18n', 'django.core.context_processors.media', 'django.core.context_processors.static', 'django.core.context_processors.tz', 'django.contrib.messages.context_processors.messages', 'django.core.context_processors.request') MEDIA_STORAGE 'django.core.files.storage.FileSystemStorage' SESSION_COOKIE_AGE 1209600 SETTINGS_MODULE 'settings.dev' USE_ETAGS False LANGUAGES_BIDI ('he', 'ar', 'fa', 'ur') FILE_UPLOAD_TEMP_DIR None CSRF_COOKIE_AGE 31449600 STATIC_URL '/static/' EMAIL_PORT 25 USE_TZ True SHORT_DATETIME_FORMAT 'm/d/Y P' PASSWORDHASHERS u'******_' ABSOLUTE_URL_OVERRIDES {} LANGUAGE_COOKIE_PATH '/' MIGRATION_MODULES {} CACHE_MIDDLEWARE_SECONDS 600 CSRF_COOKIE_HTTPONLY False DATETIME_INPUT_FORMATS ('%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%Y-%m-%d', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%Y', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M', '%m/%d/%y') AWS_STATIC_BUCKET_NAME 'barberscore-static-dev' EMAIL_HOST_USER '' PROFANITIESLIST u'*******' You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 500 page.

— Reply to this email directly or view it on GitHub.

dbinetti commented 9 years ago

Sorry, should have included that info. I'm on Django 1.7.4 running watson@master.

etianen commented 9 years ago

I’ve had another look at this. It would appear that there are search entries saved in the database for models that have been deleted. This means that when the template tries to display the model corresponding to the search result, it gets a None.

django-watson keeps it’s search entry table synchronised with the “real” model table using signals. This means that if you delete models using raw SQL, you can end up with orphaned search entries, which causes this issue.

The immediate fix is to run buildwatson again, which will prune the orphaned entries

The long-term fix is to ensure that you perform all your inserts, updates and deletes using the Django ORM, and avoid bulk updates (bulk deletes are still fine, however). This will allow django-watson to keep the search entry tables up to date.

On 30 Jan 2015, at 16:40, David Binetti notifications@github.com wrote:

Sorry, should have included that info. I'm on Django 1.7.4 running watson@master.

— Reply to this email directly or view it on GitHub.

dbinetti commented 9 years ago

I can reproduce this bug from a 100% clean install so I believe this particular answer is orthogonal to my case.

etianen commented 9 years ago

Can I see your watson registration code?

Ultimately, for some reason, what’s happening here is that django-watson is creating index records for models that don’t exist in the DB.

What is the output of buildwatson -v 2? I’d like to see if it’s pruning any stale search entries.

On 2 Feb 2015, at 20:05, David Binetti notifications@github.com wrote:

I can reproduce this bug from a 100% clean install so I believe this particular answer is orthogonal to my case.

— Reply to this email directly or view it on GitHub.

dbinetti commented 9 years ago

(barberscore)$ django-admin buildwatson -v 2 Refreshed 7 convention search entry(s) in u'default' search engine. Refreshed 28 district search entry(s) in u'default' search engine. Refreshed 17 contest search entry(s) in u'default' search engine. Refreshed 306 singer search entry(s) in u'default' search engine. Refreshed 139 quartet search entry(s) in u'default' search engine. Refreshed 111 chorus search entry(s) in u'default' search engine. Deleted 0 stale search entry(s) in u'default' search engine. Deleted 0 stale search entry(s) in u'admin' search engine. (barberscore)$

dbinetti commented 9 years ago

And i'm not sure what you mean by "watson registration code", but I think you mean the appConfig:

https://github.com/dbinetti/barberscore/blob/master/project/apps/api/config.py

and obviously all source is here: https://github.com/dbinetti/barberscore

dbinetti commented 9 years ago

Also, I've written my own views which are working just fine. The built-in views are not working (seem to fail at the template include)

etianen commented 9 years ago

Interesting, I didn't realise that the code was OS.

I'll have a proper look at this tomorrow morning.

On 3 Feb 2015, at 17:59, David Binetti notifications@github.com wrote:

Also, I've written my own views which are working just fine. The built-in views are not working (seem to fail at the template include)

— Reply to this email directly or view it on GitHub.

etianen commented 9 years ago

Do you have a set of test fixtures that reproduce the issue. I’ve got a working barberscore here and it’s searching fine.

The error is occurring when the search entry tries to load the original Django model that corresponds to the row. That is, SearchEntry.object

I’d love to see the output of:

from watson.models import SearchEntry for e in SearchEntry.objects.all(): print e.content_type, e.object_id print e.object

At some point, that code will error with your dataset, since e.object will not resolve to a live database model. I’d be interested what that model was.

On 3 Feb 2015, at 18:10, Dave Hall dave@etianen.com wrote:

Interesting, I didn't realise that the code was OS.

I'll have a proper look at this tomorrow morning.

On 3 Feb 2015, at 17:59, David Binetti notifications@github.com wrote:

Also, I've written my own views which are working just fine. The built-in views are not working (seem to fail at the template include)

— Reply to this email directly or view it on GitHub.

dbinetti commented 9 years ago

The code above prints the list to the console without error.

And again, I've had no problems searching; I just had to write my own view.

These steps reproduce the issue consistently on my box:

when using the built in view per the instructions here: https://github.com/etianen/django-watson/wiki/Built-in-views

If you can't reproduce from that then clearly it's an edge case on my system. Running Postgres 9.3.5_1

etianen commented 9 years ago

Apologies, accessing e.object._meta causes the error. Accessing e.object won’t cause an error.

Try this:

from watson.models import SearchEntry for e in SearchEntry.objects.all(): print e.content_type, e.object_id print e.object._meta

If your own search views don’t use any attributes of e.object, then they won’t cause the error. The error is still there, however, it’s just being hidden.

On 4 Feb 2015, at 16:13, David Binetti notifications@github.com wrote:

The code above prints the list to the console without error.

And again, I've had no problems searching; I just had to write my own view.

These steps reproduce the issue consistently on my box:

• Fresh install • loaddata district.json (it's in the fixtures directory) • buildwatson • attempt search for 'fwd' (which will be in the search db) • AttributeError when using the built in view per the instructions here: https://github.com/etianen/django-watson/wiki/Built-in-views

If you can't reproduce from that then clearly it's an edge case on my system. Running Postgres 9.3.5_1

— Reply to this email directly or view it on GitHub.

dbinetti commented 9 years ago

still doesn’t error out.


In [2]: %paste

from watson.models import SearchEntry

for e in SearchEntry.objects.all():

        print e.content_type, e.object_id

        print e.object._meta

## -- End pasted text --

contest f8c78916-a830-4d96-a10d-c6829131369b

api.contest

chorus cb9a75f5-9484-4494-b8dc-ca9be7956778

api.chorus

district 06485d9c-e622-453b-9333-d90146b1a4a5

api.district

district 1ccfe174-72b4-456b-a763-eab7a98886ff

api.district

…

convention c3f05ea7-31a2-4644-9086-e33594bef769

api.convention

In [3]: 

On Wed, Feb 4, 2015 at 8:30 AM, Dave Hall notifications@github.com wrote:

Apologies, accessing e.object._meta causes the error. Accessing e.object won’t cause an error. Try this: from watson.models import SearchEntry for e in SearchEntry.objects.all(): print e.content_type, e.object_id print e.object._meta If your own search views don’t use any attributes of e.object, then they won’t cause the error. The error is still there, however, it’s just being hidden.

On 4 Feb 2015, at 16:13, David Binetti notifications@github.com wrote:

The code above prints the list to the console without error.

And again, I've had no problems searching; I just had to write my own view.

These steps reproduce the issue consistently on my box:

• Fresh install • loaddata district.json (it's in the fixtures directory) • buildwatson • attempt search for 'fwd' (which will be in the search db) • AttributeError when using the built in view per the instructions here: https://github.com/etianen/django-watson/wiki/Built-in-views

If you can't reproduce from that then clearly it's an edge case on my system. Running Postgres 9.3.5_1

— Reply to this email directly or view it on GitHub.


Reply to this email directly or view it on GitHub: https://github.com/etianen/django-watson/issues/94#issuecomment-72886989

etianen commented 9 years ago

Madness.

Well, if you can give me some test data and steps to reproduce, I can take a look. Otherwise, I’m drawing a blank.

I wonder if replacing the InheritanceManager with a normal manager will fix this? I’m grasping at straws here, however. For some reason, a model that’s in the database is appearing to be not in the database under certain circumstances...

On 4 Feb 2015, at 22:07, David Binetti notifications@github.com wrote:

still doesn’t error out.


In [2]: %paste

from watson.models import SearchEntry

for e in SearchEntry.objects.all():

        print e.content_type, e.object_id

        print e.object._meta

## -- End pasted text --

contest f8c78916-a830-4d96-a10d-c6829131369b

api.contest

chorus cb9a75f5-9484-4494-b8dc-ca9be7956778

api.chorus

district 06485d9c-e622-453b-9333-d90146b1a4a5

api.district

district 1ccfe174-72b4-456b-a763-eab7a98886ff

api.district

…

convention c3f05ea7-31a2-4644-9086-e33594bef769

api.convention

In [3]:

On Wed, Feb 4, 2015 at 8:30 AM, Dave Hall notifications@github.com wrote:

Apologies, accessing e.object._meta causes the error. Accessing e.object won’t cause an error. Try this: from watson.models import SearchEntry for e in SearchEntry.objects.all(): print e.content_type, e.object_id print e.object._meta If your own search views don’t use any attributes of e.object, then they won’t cause the error. The error is still there, however, it’s just being hidden.

On 4 Feb 2015, at 16:13, David Binetti notifications@github.com wrote:

The code above prints the list to the console without error.

And again, I've had no problems searching; I just had to write my own view.

These steps reproduce the issue consistently on my box:

• Fresh install • loaddata district.json (it's in the fixtures directory) • buildwatson • attempt search for 'fwd' (which will be in the search db) • AttributeError when using the built in view per the instructions here: https://github.com/etianen/django-watson/wiki/Built-in-views

If you can't reproduce from that then clearly it's an edge case on my system. Running Postgres 9.3.5_1

— Reply to this email directly or view it on GitHub.


Reply to this email directly or view it on GitHub: https://github.com/etianen/django-watson/issues/94#issuecomment-72886989 — Reply to this email directly or view it on GitHub.

dbinetti commented 9 years ago

These steps reproduce the issue consistently on my box:

Fresh install loaddata district.json (it's in the fixtures directory) buildwatson attempt search for 'fwd' (which will be in the search db) AttributeError when using the built in view per the instructions here: https://github.com/etianen/django-watson/wiki/Built-in-views

etianen commented 9 years ago

I’ve tracked it down to what looks like an error somewhere deep in Django.

Basically, the built-in search view uses prefetch_related to preload all the concrete model instances for the search terms. In your case, the generic foreign keys are being populated with None, which is breaking everything.

I wonder if this is related to Django 1.8? Or some subtle effect of some 3rd party lib you’re using?

In any case, your workaround of writing your own search view is correct.

On 5 Feb 2015, at 16:20, David Binetti notifications@github.com wrote:

These steps reproduce the issue consistently on my box:

Fresh install loaddata district.json (it's in the fixtures directory) buildwatson attempt search for 'fwd' (which will be in the search db) AttributeError when using the built in view per the instructions here: https://github.com/etianen/django-watson/wiki/Built-in-views

— Reply to this email directly or view it on GitHub.

dbinetti commented 9 years ago

It was true on 1.7.4 before switching to 1.8. So probably in a third lib

On Fri, Feb 6, 2015 at 6:49 AM, Dave Hall notifications@github.com wrote:

I’ve tracked it down to what looks like an error somewhere deep in Django. Basically, the built-in search view uses prefetch_related to preload all the concrete model instances for the search terms. In your case, the generic foreign keys are being populated with None, which is breaking everything. I wonder if this is related to Django 1.8? Or some subtle effect of some 3rd party lib you’re using? In any case, your workaround of writing your own search view is correct.

On 5 Feb 2015, at 16:20, David Binetti notifications@github.com wrote:

These steps reproduce the issue consistently on my box:

Fresh install loaddata district.json (it's in the fixtures directory) buildwatson attempt search for 'fwd' (which will be in the search db) AttributeError when using the built in view per the instructions here: https://github.com/etianen/django-watson/wiki/Built-in-views

— Reply to this email directly or view it on GitHub.


Reply to this email directly or view it on GitHub: https://github.com/etianen/django-watson/issues/94#issuecomment-73225663

dessibelle commented 9 years ago

I'm having the same issue in 1.7.4. Quite a few third party libs, so that's definitely a possible cause.

Accessing the object._meta property for SearchEntries returned by SearchEntry.objects.all() does not produce an error. For the query SearchEntry.objects.all().prefetch_related('object') however, I will get the AttributeError: 'NoneType' object has no attribute '_meta' exception as well.

I'm trying to understand why this happens, and if I can modify my models in anyway (this happens to all instances of a single model) to prevent it. But it's not making much sense to me. The queryset returned when using prefetch_related is clearly missing a value for the object property, but why?

I came up with this pretty ugly solution, by adding the following try statement after line 31 in tempaltetags/watson.py:

try:
    assert obj
except AssertionError:
    content_type = search_result.content_type
    obj = content_type.get_object_for_this_type(id=search_result.object_id)

However, (potentially) doing a lot of foreign key lookups in a template like that doesn't seem like a good idea at all. But the only other solution I can think of would be iterating over the search results in get_queryset() of SearchView and checking each SearchEntry for object and somehow modifying the queryset, and that's no good either.

I figured out that basically one could just skip the object property all together, and just get app_label and model_name from the content type object instead, which I think solves the problem quite nicely. I added a quick PR for that. Is there a better or simpler way of getting around this issue?