· 9 years ago · Mar 21, 2017, 08:06 PM
1CONFIRM ORDER AttributeError at /confirmOrder/
2'NoneType' object has no attribute 'find'
3
4Request Method: POST
5Request URL: https://forkit-api.herokuapp.com/confirmOrder/
6Django Version: 1.10
7Python Executable: /app/.heroku/python/bin/python
8Python Version: 3.5.2
9Python Path: ['/app', '/app/.heroku/python/bin', '/app', '/app/.heroku/python/lib/python35.zip', '/app/.heroku/python/lib/python3.5', '/app/.heroku/python/lib/python3.5/plat-linux', '/app/.heroku/python/lib/python3.5/lib-dynload', '/app/.heroku/python/lib/python3.5/site-packages', '/app/.heroku/python/lib/python3.5/site-packages/setuptools-32.1.0-py3.5.egg', '/app/.heroku/python/lib/python3.5/site-packages/pip-9.0.1-py3.5.egg']
10Server time: Tue, 21 Mar 2017 20:04:00 +0000
11Installed Applications:
12['django.contrib.admin',
13 'django.contrib.auth',
14 'django.contrib.contenttypes',
15 'django.contrib.sessions',
16 'django.contrib.messages',
17 'django.contrib.staticfiles',
18 'api_tesco.api',
19 'rest_framework',
20 'oauth2_provider']
21Installed Middleware:
22['django.middleware.security.SecurityMiddleware',
23 'django.contrib.sessions.middleware.SessionMiddleware',
24 'django.middleware.common.CommonMiddleware',
25 'django.middleware.csrf.CsrfViewMiddleware',
26 'django.contrib.auth.middleware.AuthenticationMiddleware',
27 'django.contrib.messages.middleware.MessageMiddleware',
28 'django.middleware.clickjacking.XFrameOptionsMiddleware']
29
30
31Traceback:
32
33File "/app/.heroku/python/lib/python3.5/site-packages/django/core/handlers/exception.py" in inner
34 39. response = get_response(request)
35
36File "/app/.heroku/python/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
37 187. response = self.process_exception_by_middleware(e, request)
38
39File "/app/.heroku/python/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
40 185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
41
42File "/app/.heroku/python/lib/python3.5/site-packages/django/views/decorators/csrf.py" in wrapped_view
43 58. return view_func(*args, **kwargs)
44
45File "/app/.heroku/python/lib/python3.5/site-packages/django/views/generic/base.py" in view
46 68. return self.dispatch(request, *args, **kwargs)
47
48File "/app/.heroku/python/lib/python3.5/site-packages/rest_framework/views.py" in dispatch
49 474. response = self.handle_exception(exc)
50
51File "/app/.heroku/python/lib/python3.5/site-packages/rest_framework/views.py" in handle_exception
52 434. self.raise_uncaught_exception(exc)
53
54File "/app/.heroku/python/lib/python3.5/site-packages/rest_framework/views.py" in dispatch
55 471. response = handler(request, *args, **kwargs)
56
57File "/app/api_tesco/api/views.py" in post
58 112. order_info = order_confirm.confirm(request.data['user'])
59
60File "/app/api_tesco/api/workers/order_confirm.py" in confirm
61 32. order_total = soup.find('div', {'class': "trolley-order-summary--total"}).find('span', {'class':"value"}).text.strip()
62
63Exception Type: AttributeError at /confirmOrder/
64Exception Value: 'NoneType' object has no attribute 'find'
65Request information:
66USER: test
67
68GET: No GET data
69
70POST: No POST data
71
72FILES: No FILES data
73
74COOKIES: No cookie data
75
76META:
77CONTENT_LENGTH = '31'
78CONTENT_TYPE = 'application/json'
79HTTP_ACCEPT = 'application/json'
80HTTP_AUTHORIZATION = 'Bearer 0M4ybKvLlfg4g6Bs9xcjrWbr8nnMMK'
81HTTP_CONNECTION = 'close'
82HTTP_CONNECT_TIME = '0'
83HTTP_HOST = 'forkit-api.herokuapp.com'
84HTTP_TOTAL_ROUTE_TIME = '0'
85HTTP_VIA = '1.1 vegur'
86HTTP_X_FORWARDED_FOR = '95.160.152.81'
87HTTP_X_FORWARDED_PORT = '443'
88HTTP_X_FORWARDED_PROTO = 'https'
89HTTP_X_REQUEST_ID = '6eb45acb-7212-4070-b433-e20e6e23619b'
90HTTP_X_REQUEST_START = '1490126639024'
91PATH_INFO = '/confirmOrder/'
92QUERY_STRING = ''
93RAW_URI = '/confirmOrder/'
94REMOTE_ADDR = '10.186.81.42'
95REMOTE_PORT = '58951'
96REQUEST_METHOD = 'POST'
97SCRIPT_NAME = ''
98SERVER_NAME = '0.0.0.0'
99SERVER_PORT = '21235'
100SERVER_PROTOCOL = 'HTTP/1.1'
101SERVER_SOFTWARE = 'gunicorn/19.5.0'
102gunicorn.socket = <socket.socket fd=10, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('172.18.11.230', 21235), raddr=('10.186.81.42', 58951)>wsgi.errors = <gunicorn.http.wsgi.WSGIErrorsWrapper object at 0x7f033077f3c8>
103wsgi.file_wrapper = ''
104wsgi.input = <gunicorn.http.body.Body object at 0x7f033077f438>
105wsgi.multiprocess = True
106wsgi.multithread = False
107wsgi.run_once = False
108wsgi.url_scheme = 'https'
109wsgi.version =
110
111Settings:
112Using settings module api_tesco.settings
113ABSOLUTE_URL_OVERRIDES = {}
114ADMINS = []
115ALLOWED_HOSTS = ['*']
116APPEND_SLASH = True
117AUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.ModelBackend']
118AUTH_PASSWORD_VALIDATORS = '********************'
119AUTH_USER_MODEL = 'auth.User'
120BASE_DIR = '/app'
121CACHES = {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}
122CACHE_MIDDLEWARE_ALIAS = 'default'
123CACHE_MIDDLEWARE_KEY_PREFIX = '********************'
124CACHE_MIDDLEWARE_SECONDS = 600
125CSRF_COOKIE_AGE = 31449600
126CSRF_COOKIE_DOMAIN = None
127CSRF_COOKIE_HTTPONLY = False
128CSRF_COOKIE_NAME = 'csrftoken'
129CSRF_COOKIE_PATH = '/'
130CSRF_COOKIE_SECURE = False
131CSRF_FAILURE_VIEW = 'django.views.csrf.csrf_failure'
132CSRF_HEADER_NAME = 'HTTP_X_CSRFTOKEN'
133CSRF_TRUSTED_ORIGINS = []
134DATABASES = {'default': {'PASSWORD': '********************', 'AUTOCOMMIT': True, 'NAME': 'd8dpbh2c4fukr9', 'CONN_MAX_AGE': 0, 'TIME_ZONE': None, 'HOST': 'ec2-54-243-204-221.compute-1.amazonaws.com', 'USER': 'ydktmldhjralfo', 'PORT': 5432, 'OPTIONS': {}, 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'ATOMIC_REQUESTS': False, 'TEST': {'NAME': None, 'CHARSET': None, 'MIRROR': None, 'COLLATION': None}}}
135DATABASE_ROUTERS = []
136DATA_UPLOAD_MAX_MEMORY_SIZE = 2621440
137DATA_UPLOAD_MAX_NUMBER_FIELDS = 1000
138DATETIME_FORMAT = 'N j, Y, P'
139DATETIME_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']
140DATE_FORMAT = 'N j, Y'
141DATE_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']
142DEBUG = True
143DEBUG_PROPAGATE_EXCEPTIONS = False
144DECIMAL_SEPARATOR = '.'
145DEFAULT_CHARSET = 'utf-8'
146DEFAULT_CONTENT_TYPE = 'text/html'
147DEFAULT_EXCEPTION_REPORTER_FILTER = 'django.views.debug.SafeExceptionReporterFilter'
148DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
149DEFAULT_FROM_EMAIL = 'webmaster@localhost'
150DEFAULT_INDEX_TABLESPACE = ''
151DEFAULT_TABLESPACE = ''
152DISALLOWED_USER_AGENTS = []
153EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
154EMAIL_HOST = 'localhost'
155EMAIL_HOST_PASSWORD = '********************'
156EMAIL_HOST_USER = ''
157EMAIL_PORT = 25
158EMAIL_SSL_CERTFILE = None
159EMAIL_SSL_KEYFILE = '********************'
160EMAIL_SUBJECT_PREFIX = '[Django] '
161EMAIL_TIMEOUT = None
162EMAIL_USE_SSL = False
163EMAIL_USE_TLS = False
164FILE_CHARSET = 'utf-8'
165FILE_UPLOAD_DIRECTORY_PERMISSIONS = None
166FILE_UPLOAD_HANDLERS = ['django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler']
167FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440
168FILE_UPLOAD_PERMISSIONS = None
169FILE_UPLOAD_TEMP_DIR = None
170FIRST_DAY_OF_WEEK = 0
171FIXTURE_DIRS = []
172FORCE_SCRIPT_NAME = None
173FORMAT_MODULE_PATH = None
174IGNORABLE_404_URLS = []
175INSTALLED_APPS = ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'api_tesco.api', 'rest_framework', 'oauth2_provider']
176INTERNAL_IPS = []
177LANGUAGES = [('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'), ('dsb', 'Lower Sorbian'), ('el', 'Greek'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-co', 'Colombian 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'), ('gd', 'Scottish Gaelic'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hsb', 'Upper Sorbian'), ('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 Bokmål'), ('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-hans', 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese')]
178LANGUAGES_BIDI = ['he', 'ar', 'fa', 'ur']
179LANGUAGE_CODE = 'en-us'
180LANGUAGE_COOKIE_AGE = None
181LANGUAGE_COOKIE_DOMAIN = None
182LANGUAGE_COOKIE_NAME = 'django_language'
183LANGUAGE_COOKIE_PATH = '/'
184LOCALE_PATHS = []
185LOGGING = {}
186LOGGING_CONFIG = 'logging.config.dictConfig'
187LOGIN_REDIRECT_URL = '/accounts/profile/'
188LOGIN_URL = '/accounts/login/'
189LOGOUT_REDIRECT_URL = None
190MANAGERS = []
191MEDIA_ROOT = ''
192MEDIA_URL = ''
193MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage'
194MIDDLEWARE = ['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware']
195MIDDLEWARE_CLASSES = ['django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware']
196MIGRATION_MODULES = {}
197MONTH_DAY_FORMAT = 'F j'
198NUMBER_GROUPING = 0
199OAUTH2_PROVIDER = {'SCOPES': {'groups': 'Access to your groups', 'write': 'Write scope', 'read': 'Read scope'}}
200ON_HEROKU = '1'
201PASSWORD_HASHERS = '********************'
202PASSWORD_RESET_TIMEOUT_DAYS = '********************'
203PREPEND_WWW = False
204PROJECT_ROOT = '/app/api_tesco'
205REST_FRAMEWORK = {'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAuthenticated',), 'DEFAULT_AUTHENTICATION_CLASSES': ('oauth2_provider.ext.rest_framework.OAuth2Authentication',)}
206ROOT_URLCONF = 'api_tesco.urls'
207SECRET_KEY = '********************'
208SECURE_BROWSER_XSS_FILTER = False
209SECURE_CONTENT_TYPE_NOSNIFF = False
210SECURE_HSTS_INCLUDE_SUBDOMAINS = False
211SECURE_HSTS_SECONDS = 0
212SECURE_PROXY_SSL_HEADER =
213SECURE_REDIRECT_EXEMPT = []
214SECURE_SSL_HOST = None
215SECURE_SSL_REDIRECT = False
216SERVER_EMAIL = 'root@localhost'
217SESSION_CACHE_ALIAS = 'default'
218SESSION_COOKIE_AGE = 1209600
219SESSION_COOKIE_DOMAIN = None
220SESSION_COOKIE_HTTPONLY = True
221SESSION_COOKIE_NAME = 'sessionid'
222SESSION_COOKIE_PATH = '/'
223SESSION_COOKIE_SECURE = False
224SESSION_ENGINE = 'django.contrib.sessions.backends.db'
225SESSION_EXPIRE_AT_BROWSER_CLOSE = False
226SESSION_FILE_PATH = None
227SESSION_SAVE_EVERY_REQUEST = False
228SESSION_SERIALIZER = 'django.contrib.sessions.serializers.JSONSerializer'
229SETTINGS_MODULE = 'api_tesco.settings'
230SHORT_DATETIME_FORMAT = 'm/d/Y P'
231SHORT_DATE_FORMAT = 'm/d/Y'
232SIGNING_BACKEND = 'django.core.signing.TimestampSigner'
233SILENCED_SYSTEM_CHECKS = []
234STATICFILES_DIRS = '/app/api_tesco/static'
235STATICFILES_FINDERS = ['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder']
236STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
237STATIC_ROOT = '/app/api_tesco/staticfiles'
238STATIC_URL = '/static/'
239TEMPLATES = [{'APP_DIRS': True, 'DIRS': [], 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'OPTIONS': {'context_processors': ['django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages']}}]
240TEST_NON_SERIALIZED_APPS = []
241TEST_RUNNER = 'django.test.runner.DiscoverRunner'
242THOUSAND_SEPARATOR = ','
243TIME_FORMAT = 'P'
244TIME_INPUT_FORMATS = ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']
245TIME_ZONE = 'UTC'
246USE_ETAGS = False
247USE_I18N = True
248USE_L10N = True
249USE_THOUSAND_SEPARATOR = False
250USE_TZ = True
251USE_X_FORWARDED_HOST = False
252USE_X_FORWARDED_PORT = False
253WSGI_APPLICATION = 'api_tesco.wsgi.application'
254X_FRAME_OPTIONS = 'SAMEORIGIN'
255YEAR_MONTH_FORMAT = 'F Y'
256
257
258You're seeing this error because you have DEBUG = True in your
259Django settings file. Change that to False, and Django will
260display a standard page generated by the handler for this status code.