AttributeError at /sampa/plots/ 'NoneType' object has no attribute 'keys' Request Method: POST Request URL: http://127.0.0.1:7070/sampa/plots/ Django Version: 1.6 Python Executable: /usr/local/otm/env/bin/python Python Version: 2.7.3 Python Path: ['/usr/local/otm/app/opentreemap', '/usr/local/otm/env/lib/python2.7', '/usr/local/otm/env/lib/python2.7/plat-linux2', '/usr/local/otm/env/lib/python2.7/lib-tk', '/usr/local/otm/env/lib/python2.7/lib-old', '/usr/local/otm/env/lib/python2.7/lib-dynload', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/usr/local/otm/env/local/lib/python2.7/site-packages'] Server time: Qui, 26 Mar 2015 09:14:41 -0500 Installed Applications: ('treemap', 'geocode', 'api', 'exporter', 'otm1_migrator', 'otm_comments', 'importer', 'appevents', 'django_extensions', 'threadedcomments', 'django.contrib.comments', 'registration', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.admin', 'django.contrib.gis', 'django.contrib.humanize', 'django_hstore', 'djcelery', 'south') Installed Middleware: ('django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'opentreemap.middleware.InternetExplorerRedirectMiddleware') Traceback: File "/usr/local/otm/env/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 114. response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/usr/local/otm/app/opentreemap/treemap/decorators.py" in wrapper 45. return view_fn(request, instance, *args, **kwargs) File "/usr/local/otm/env/local/lib/python2.7/site-packages/django_tinsel/decorators.py" in routed 33. return req_method(request, *args2, **kwargs2) File "/usr/local/otm/app/opentreemap/treemap/decorators.py" in wrapper 169. return view_fn(request, *args, **kwargs) File "/usr/local/otm/env/local/lib/python2.7/site-packages/django_tinsel/decorators.py" in newreq 125. outp = req_function(request, *args, **kwargs) File "/usr/local/otm/env/local/lib/python2.7/site-packages/django_tinsel/decorators.py" in newreq 106. outp = req_function(request, *args, **kwargs) File "/usr/local/otm/app/opentreemap/treemap/decorators.py" in wrapper 193. return view_fn(request, instance, *args, **kwargs) File "/usr/local/otm/app/opentreemap/treemap/decorators.py" in run_and_catch_validations 144. return req(*args, **kwargs) File "/usr/local/otm/app/opentreemap/treemap/views/map_feature.py" in add_map_feature 110. return _request_to_update_map_feature(request, instance, feature) File "/usr/local/otm/app/opentreemap/treemap/views/map_feature.py" in _request_to_update_map_feature 36. feature, tree = update_map_feature(request_dict, request.user, feature) File "/usr/local/otm/env/local/lib/python2.7/site-packages/django/db/transaction.py" in inner 339. return func(*args, **kwargs) File "/usr/local/otm/app/opentreemap/treemap/views/map_feature.py" in update_map_feature 237. errors.update(save_and_return_errors(tree, user)) File "/usr/local/otm/app/opentreemap/treemap/views/map_feature.py" in save_and_return_errors 184. thing.convert_to_database_units() File "/usr/local/otm/app/opentreemap/treemap/units.py" in convert_to_database_units 50. self._mutate_convertable_fields(get_storage_value) File "/usr/local/otm/app/opentreemap/treemap/units.py" in _mutate_convertable_fields 35. converted_value = f(self.instance, model, field, value) File "/usr/local/otm/app/opentreemap/treemap/units.py" in get_storage_value 222. value_name) File "/usr/local/otm/app/opentreemap/treemap/units.py" in get_conversion_factor 172. if instance_unit not in conversion_dict.keys(): Exception Type: AttributeError at /sampa/plots/ Exception Value: 'NoneType' object has no attribute 'keys' Request information: GET: No GET data POST: No POST data FILES: No FILES data COOKIES: csrftoken = '1BJQ1fFMO6bny9bGTnEJBv5Hsp1YEGA7' sessionid = '7cj0ejtw5nmwvqgumw9n7mk658e5yrjp' META: wsgi.version = RUN_MAIN = 'true' HTTP_REFERER = 'http://127.0.0.1:7070/sampa/map/?m=addTree' SERVER_PROTOCOL = 'HTTP/1.0' SERVER_SOFTWARE = 'WSGIServer/0.1 Python/2.7.3' LC_CTYPE = 'en_US.UTF-8' SCRIPT_NAME = u'' LESSOPEN = '| /usr/bin/lesspipe %s' HTTP_X_CSRFTOKEN = '1BJQ1fFMO6bny9bGTnEJBv5Hsp1YEGA7' REQUEST_METHOD = 'POST' LOGNAME = 'otm' USER = 'otm' HOME = '/home/otm' QUERY_STRING = '' PATH = '/usr/local/otm/env/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' PS1 = '(env)\\[\\e]0;\\u@\\h: \\w\\a\\]${debian_chroot:+($debian_chroot)}\\u@\\h:\\w\\$ ' wsgi.errors = ', mode 'w' at 0x7f9388db1270> LANG = 'en_US.UTF-8' TERM = 'xterm-256color' SHELL = '/bin/bash' TZ = 'America/Chicago' XDG_SESSION_COOKIE = '71775adbda196b18e5105bec0000030c-1427378747.575161-1298550502' SERVER_NAME = 'localhost' REMOTE_ADDR = '127.0.0.1' SHLVL = '1' wsgi.url_scheme = 'http' SERVER_PORT = '12000' SUDO_USER = 'vagrant' USERNAME = 'root' CONTENT_LENGTH = '236' HTTP_CONNECTION = 'close' HTTP_PRAGMA = 'no-cache' HTTP_X_REQUESTED_WITH = 'XMLHttpRequest' SUDO_UID = '1000' VIRTUAL_ENV = '/usr/local/otm/env' CELERY_LOADER = 'djcelery.loaders.DjangoLoader' wsgi.input = HTTP_USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:36.0) Gecko/20100101 Firefox/36.0' HTTP_HOST = '127.0.0.1:7070' wsgi.multithread = True LC_ALL = 'en_US.UTF-8' HTTP_CACHE_CONTROL = 'no-cache' _ = './manage.py' HTTP_ACCEPT = '*/*' SUDO_COMMAND = '/bin/su otm' SUDO_GID = '1000' wsgi.file_wrapper = '' LESSCLOSE = '/usr/bin/lesspipe %s %s' GATEWAY_INTERFACE = 'CGI/1.1' wsgi.run_once = False CSRF_COOKIE = u'1BJQ1fFMO6bny9bGTnEJBv5Hsp1YEGA7' OLDPWD = '/usr/local/otm' wsgi.multiprocess = False HTTP_ACCEPT_LANGUAGE = 'pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3' PWD = '/usr/local/otm/app/opentreemap' DJANGO_SETTINGS_MODULE = 'opentreemap.settings' CONTENT_TYPE = 'application/json; charset=UTF-8' MAIL = '/var/mail/otm' LS_COLORS = 'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:' REMOTE_HOST = '' HTTP_ACCEPT_ENCODING = 'gzip, deflate' HTTP_COOKIE = 'sessionid=7cj0ejtw5nmwvqgumw9n7mk658e5yrjp; csrftoken=1BJQ1fFMO6bny9bGTnEJBv5Hsp1YEGA7' PATH_INFO = u'/sampa/plots/' Settings: Using settings module opentreemap.settings GOOGLE_ANALYTICS_ID = None DISPLAY_DEFAULTS = {'eco': {'co2storage': {'units': 'kg', 'digits': 1}, 'energy': {'units': 'kwh/year', 'digits': 1}, 'co2': {'units': 'kg/year', 'digits': 1}, 'airquality': {'units': 'kg/year', 'digits': 1}, 'stormwater': {'units': 'L/year', 'digits': 1}}, 'plot': {'width': {'units': 'cm', 'digits': 1}, 'length': {'units': 'cm', 'digits': 1}}, 'tree': {'diameter': {'units': 'cm', 'digits': 1}, 'height': {'units': 'm', 'digits': 1}, 'canopy_height': {'units': 'm', 'digits': 1}}} IE_VERSION_MINIMUM = 9 USE_L10N = True MAP_CLICK_RADIUS = 100 USE_THOUSAND_SEPARATOR = True CSRF_COOKIE_SECURE = False LANGUAGE_CODE = 'en-us' ROOT_URLCONF = 'opentreemap.urls' MANAGERS = BROKER_URL = 'redis://localhost:6379/' AWS_HEADERS = {'Cache-Control': 'max-age=86400'} ACCOUNT_ACTIVATION_DAYS = 7 SESSION_SERIALIZER = 'django.contrib.sessions.serializers.JSONSerializer' STATIC_ROOT = '/usr/local/otm/static' SUPPORT_EMAIL_ADDRESS = 'support@yoursite.com' ALLOWED_HOSTS = [] MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage' EMAIL_SUBJECT_PREFIX = '[Django] ' SEND_BROKEN_LINK_EMAILS = False STATICFILES_FINDERS = SESSION_CACHE_ALIAS = 'default' SESSION_COOKIE_DOMAIN = None SESSION_COOKIE_NAME = 'sessionid' ADMIN_FOR = TIME_INPUT_FORMATS = DATABASES = {'default': {'ENGINE': 'django.contrib.gis.db.backends.postgis', 'AUTOCOMMIT': True, 'ATOMIC_REQUESTS': False, 'NAME': 'otm', 'TEST_MIRROR': None, 'CONN_MAX_AGE': 0, 'TIME_ZONE': 'UTC', 'TEST_COLLATION': None, 'TEST_CHARSET': None, 'PORT': '5432', 'HOST': 'localhost', 'USER': 'otm', 'TEST_NAME': None, 'PASSWORD': u'********************', 'OPTIONS': {}}} FILE_UPLOAD_PERMISSIONS = None FILE_UPLOAD_HANDLERS = TEMPLATE_CONTEXT_PROCESSORS = DEFAULT_CONTENT_TYPE = 'text/html' BING_API_KEY = u'********************' APPEND_SLASH = True FIRST_DAY_OF_WEEK = 0 DATABASE_ROUTERS = [] MAXIMUM_IMAGE_SIZE = 20971520 YEAR_MONTH_FORMAT = 'F Y' STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage' CACHES = {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}} COMMENTS_HIDE_REMOVED = False FEATURE_BACKEND_FUNCTION = None EXTRA_STORAGE_UNITS = {} SERVER_EMAIL = 'root@localhost' SESSION_COOKIE_PATH = '/' TILE_HOST = None EXTRA_UNMANAGED_APPS = 'django_extensions' DOUBLE_CLICK_INTERVAL = 300 MIDDLEWARE_CLASSES = USE_I18N = True THOUSAND_SEPARATOR = ',' SECRET_KEY = u'********************' LANGUAGE_COOKIE_NAME = 'django_language' FILE_UPLOAD_TEMP_DIR = None TRANSACTIONS_MANAGED = False LOGGING_CONFIG = 'django.utils.log.dictConfig' SIGNING_BACKEND = 'django.core.signing.TimestampSigner' RESERVED_INSTANCE_URL_NAMES = TEMPLATE_LOADERS = WSGI_APPLICATION = 'opentreemap.wsgi.application' USER_ACTIVATION_FUNCTION = None API_VERSION = u'********************' TEMPLATE_DEBUG = True X_FRAME_OPTIONS = 'SAMEORIGIN' CSRF_COOKIE_NAME = 'csrftoken' FORCE_SCRIPT_NAME = None USE_X_FORWARDED_HOST = False USE_JS_I18N = False DEFAULT_CHARSET = 'utf-8' SESSION_COOKIE_SECURE = False EXTRA_RESERVED_INSTANCE_URL_NAMES = DEFAULT_TREE_KEY_URL = u'********************' CSRF_COOKIE_DOMAIN = None NEARBY_TREE_DISTANCE = 6.096 FILE_CHARSET = 'utf-8' DEBUG = True COMMENTS_APP = 'otm_comments' NEARBY_INSTANCE_RADIUS = 100000 DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage' INSTALLED_APPS = LANGUAGES_BIDI = COMMENTS_ALLOW_PROFANITIES = False STATICFILES_DIRS = ECO_SERVICE_URL = 'http://localhost:13000' PREPEND_WWW = False SECURE_PROXY_SSL_HEADER = None PASSWORD_RESET_TIMEOUT_DAYS = u'********************' SESSION_COOKIE_HTTPONLY = True SYSTEM_USER_ID = -1 DEBUG_PROPAGATE_EXCEPTIONS = False EMAIL_FILE_PATH = '/usr/local/otm/emails' MONTH_DAY_FORMAT = 'F j' LOGIN_URL = '/accounts/login/' SESSION_EXPIRE_AT_BROWSER_CLOSE = False SCSS_ENTRY = 'main' USE_OBJECT_CACHES = True TIME_FORMAT = 'P' EXTRA_MIDDLEWARE_CLASSES = AUTH_USER_MODEL = 'treemap.User' DATE_INPUT_FORMATS = AUTHENTICATION_BACKENDS = 'django.contrib.auth.backends.ModelBackend' EMAIL_HOST_PASSWORD = u'********************' EXTRA_DISPLAY_DEFAULTS = {} OTM_VERSION = 'dev' SESSION_FILE_PATH = None CACHE_MIDDLEWARE_ALIAS = 'default' SESSION_SAVE_EVERY_REQUEST = False NUMBER_GROUPING = 0 SESSION_ENGINE = 'django.contrib.sessions.backends.db' CSRF_FAILURE_VIEW = 'django.views.csrf.csrf_failure' LOCALE_PATHS = LOGIN_REDIRECT_URL = '/accounts/profile/' EXTRA_UI_TESTS = PROJECT_ROOT = '/usr/local/otm/app/opentreemap' DECIMAL_SEPARATOR = '.' IGNORABLE_404_URLS = CSRF_COOKIE_PATH = '/' TEMPLATE_STRING_IF_INVALID = '' LOGOUT_URL = '/accounts/logout/' EMAIL_USE_TLS = False EXTRA_MANAGED_APPS = FIXTURE_DIRS = EMAIL_HOST = 'localhost' UITEST_CREATE_INSTANCE_FUNCTION = 'treemap.tests.make_instance' DATE_FORMAT = 'N j, Y' MEDIA_ROOT = '/usr/local/otm/media' STORAGE_UNITS = {} DEFAULT_EXCEPTION_REPORTER_FILTER = 'django.views.debug.SafeExceptionReporterFilter' ADMINS = FORMAT_MODULE_PATH = None DEFAULT_FROM_EMAIL = 'webmaster@localhost' MEDIA_URL = '/media/' DATETIME_FORMAT = 'N j, Y, P' TEMPLATE_DIRS = SITE_ID = 1 DISALLOWED_USER_AGENTS = ALLOWED_INCLUDE_ROOTS = UITEST_SETUP_FUNCTION = None UNMANAGED_APPS = LOGGING = {} I18N_APPS = 'treemap' SHORT_DATE_FORMAT = 'm/d/Y' TEST_RUNNER = 'treemap.tests.OTM2TestRunner' CACHE_MIDDLEWARE_KEY_PREFIX = u'********************' TIME_ZONE = 'America/Chicago' FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440 EMAIL_BACKEND = 'django.core.mail.backends.filebased.EmailBackend' DEFAULT_TABLESPACE = '' OMGEO_SETTINGS = [['omgeo.services.EsriWGS', {}]] EXTRA_URLS = SESSION_COOKIE_AGE = 1209600 SETTINGS_MODULE = 'opentreemap.settings' USE_ETAGS = False SITE_ROOT = '/' LANGUAGES = SCSS_ROOT = '/usr/local/otm/app/opentreemap/treemap/css/sass' DEFAULT_INDEX_TABLESPACE = '' INTERNAL_IPS = ['127.0.0.1'] STATIC_URL = '/static/' EMAIL_PORT = 25 USE_TZ = True SHORT_DATETIME_FORMAT = 'm/d/Y P' CELERY_RESULT_BACKEND = 'redis://localhost:6379/' PASSWORD_HASHERS = u'********************' ABSOLUTE_URL_OVERRIDES = {} IE_VERSION_UNSUPPORTED_REDIRECT_PATH = '/unsupported' MANAGED_APPS = CACHE_MIDDLEWARE_SECONDS = 600 CSRF_COOKIE_HTTPONLY = False DATETIME_INPUT_FORMATS = 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.