· 5 years ago · Oct 08, 2020, 11:42 AM
1AttributeError at /api/core/offer/update/133/
2'NoneType' object has no attribute 'name'
3
4Request Method: PATCH
5Request URL: http://localhost:8000/api/core/offer/update/133/
6Django Version: 2.2.16
7Python Executable: /usr/local/bin/python
8Python Version: 3.8.5
9Python Path: ['/import_app', '/import_app', '/usr/local/lib/python38.zip', '/usr/local/lib/python3.8', '/usr/local/lib/python3.8/lib-dynload', '/usr/local/lib/python3.8/site-packages']
10Server time: Чт, 8 Окт 2020 11:35:08 +0000
11Installed Applications:
12['django_object_actions',
13 'django.contrib.admin',
14 'django.contrib.auth',
15 'django.contrib.contenttypes',
16 'django.contrib.sessions',
17 'django.contrib.messages',
18 'django.contrib.staticfiles',
19 'mptt',
20 'rest_framework',
21 'widget_tweaks',
22 'drf_yasg',
23 'corsheaders',
24 'django_celery_beat',
25 'core',
26 'users',
27 'debug_toolbar']
28Installed Middleware:
29['django.middleware.security.SecurityMiddleware',
30 'django.contrib.sessions.middleware.SessionMiddleware',
31 'django.middleware.locale.LocaleMiddleware',
32 'corsheaders.middleware.CorsMiddleware',
33 'django.middleware.common.CommonMiddleware',
34 'django.middleware.csrf.CsrfViewMiddleware',
35 'django.contrib.auth.middleware.AuthenticationMiddleware',
36 'django.contrib.messages.middleware.MessageMiddleware',
37 'django.middleware.clickjacking.XFrameOptionsMiddleware',
38 'debug_toolbar.middleware.DebugToolbarMiddleware']
39
40
41Traceback:
42
43File "/usr/local/lib/python3.8/site-packages/django/core/handlers/exception.py" in inner
44 34. response = get_response(request)
45
46File "/usr/local/lib/python3.8/site-packages/django/core/handlers/base.py" in _get_response
47 115. response = self.process_exception_by_middleware(e, request)
48
49File "/usr/local/lib/python3.8/site-packages/django/core/handlers/base.py" in _get_response
50 113. response = wrapped_callback(request, *callback_args, **callback_kwargs)
51
52File "/usr/local/lib/python3.8/site-packages/django/views/decorators/csrf.py" in wrapped_view
53 54. return view_func(*args, **kwargs)
54
55File "/usr/local/lib/python3.8/site-packages/django/views/generic/base.py" in view
56 71. return self.dispatch(request, *args, **kwargs)
57
58File "/usr/local/lib/python3.8/site-packages/rest_framework/views.py" in dispatch
59 505. response = self.handle_exception(exc)
60
61File "/usr/local/lib/python3.8/site-packages/rest_framework/views.py" in handle_exception
62 465. self.raise_uncaught_exception(exc)
63
64File "/usr/local/lib/python3.8/site-packages/rest_framework/views.py" in raise_uncaught_exception
65 476. raise exc
66
67File "/usr/local/lib/python3.8/site-packages/rest_framework/views.py" in dispatch
68 502. response = handler(request, *args, **kwargs)
69
70File "/usr/local/lib/python3.8/site-packages/rest_framework/generics.py" in patch
71 229. return self.partial_update(request, *args, **kwargs)
72
73File "/usr/local/lib/python3.8/site-packages/rest_framework/mixins.py" in partial_update
74 82. return self.update(request, *args, **kwargs)
75
76File "/usr/local/lib/python3.8/site-packages/rest_framework/mixins.py" in update
77 68. self.perform_update(serializer)
78
79File "/usr/local/lib/python3.8/site-packages/rest_framework/mixins.py" in perform_update
80 78. serializer.save()
81
82File "/usr/local/lib/python3.8/site-packages/rest_framework/serializers.py" in save
83 207. self.instance = self.update(self.instance, validated_data)
84
85File "/import_app/core/serializers/product.py" in update
86 293. instance.hub_price = price_calculator.calculate_hub_price()
87
88File "/import_app/core/calculator.py" in calculate_hub_price
89 55. delivery_price = self._get_delivery_price(hub_name)
90
91File "/import_app/core/calculator.py" in _get_delivery_price
92 95. tzr = self._get_tzr(self._get_transport_type())
93
94File "/import_app/core/calculator.py" in _get_transport_type
95 238. city_name = self.offer.entry_city_of_arrival.name
96
97Exception Type: AttributeError at /api/core/offer/update/133/
98Exception Value: 'NoneType' object has no attribute 'name'
99Request information:
100USER: rvi@x5.ru
101
102GET: No GET data
103
104POST: No POST data
105
106FILES: No FILES data
107
108COOKIES: No cookie data
109
110META:
111COMPOSE_PROJECT_NAME = 'import'
112CONTENT_LENGTH = '831'
113CONTENT_TYPE = 'application/json;charset=UTF-8'
114DATABASE_URL = 'postgres://user_import:user_password@postgres:5432/import'
115DB_HOST = 'postgres'
116DB_NAME = 'import'
117DB_PASS = 'user_password'
118DB_PORT = '5432'
119DB_USER = 'user_import'
120DEBUG = 'True'
121DJANGO_SETTINGS_MODULE = 'import.settings'
122GATEWAY_INTERFACE = 'CGI/1.1'
123GPG_KEY = 'E3FF2839C048B25C084DEBE9B26995E310250568'
124HOME = '/root'
125HOSTNAME = 'app'
126HTTP_ACCEPT = 'application/json, text/plain, */*'
127HTTP_ACCEPT_ENCODING = 'gzip, deflate, br'
128HTTP_ACCEPT_LANGUAGE = 'ru,en;q=0.9,en-GB;q=0.8,en-US;q=0.7'
129HTTP_AUTHORIZATION = 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjo3LCJ1c2VybmFtZSI6InJ2aUB4NS5ydSIsImV4cCI6MTYwMjE1ODU2NCwiZW1haWwiOiJydmlAeDUucnUifQ.FAs1J6BpLEZafMy9dEYuwvc5m8k5R21CZIwFEytNCZI'
130HTTP_CONNECTION = 'keep-alive'
131HTTP_DNT = '1'
132HTTP_HOST = 'localhost:8000'
133HTTP_ORIGIN = 'http://localhost:3000'
134HTTP_REFERER = 'http://localhost:3000/trade/97/offers/133'
135HTTP_SEC_FETCH_DEST = 'empty'
136HTTP_SEC_FETCH_MODE = 'cors'
137HTTP_SEC_FETCH_SITE = 'same-site'
138HTTP_USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36 Edg/85.0.564.68'
139LANG = 'C.UTF-8'
140PATH = '/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
141PATH_INFO = '/api/core/offer/update/133/'
142PWD = '/import_app'
143PYTHON_GET_PIP_SHA256 = '6e0bb0a2c2533361d7f297ed547237caf1b7507f197835974c0dd7eba998c53c'
144PYTHON_GET_PIP_URL = 'https://github.com/pypa/get-pip/raw/fa7dc83944936bf09a0e4cb5d5ec852c0d256599/get-pip.py'
145PYTHON_PIP_VERSION = '20.2.3'
146PYTHON_VERSION = '3.8.5'
147QUERY_STRING = ''
148REMOTE_ADDR = '172.18.0.1'
149REMOTE_HOST = ''
150REQUEST_METHOD = 'PATCH'
151RUN_MAIN = 'true'
152SCRIPT_NAME = ''
153SECRET_KEY = '6xjhf1z%y0hnfw7mb*p2eq_z7g!i%8f^b6v(=3=_10h4ak5!#$'
154SERVER_NAME = 'app'
155SERVER_PORT = '8000'
156SERVER_PROTOCOL = 'HTTP/1.1'
157SERVER_SOFTWARE = 'WSGIServer/0.2'
158SILK = 'True'
159TZ = 'UTC'
160USE_DDT = 'True'
161USE_SENTRY = 'False'
162wsgi.errors = <_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf-8'>
163wsgi.file_wrapper = ''
164wsgi.input = <django.core.handlers.wsgi.LimitedStream object at 0x7f2d0403deb0>
165wsgi.multiprocess = False
166wsgi.multithread = True
167wsgi.run_once = False
168wsgi.url_scheme = 'http'
169wsgi.version = '(1, 0)'
170
171Settings:
172Using settings module import.settings
173ABSOLUTE_URL_OVERRIDES = {}
174ADMINS = []
175ALLOWED_FILE_WITH_PRODUCTS_EXTENSIONS = ['.xlsx', '.xlsm', '.xltx', '.xltm', '.xls']
176ALLOWED_FILE_WITH_VOLUMES_EXTENSIONS = ['.xlsx', '.xlsm', '.xltx', '.xltm', '.xls']
177ALLOWED_HOSTS = ['*']
178APPEND_SLASH = True
179AUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.ModelBackend']
180AUTH_PASSWORD_VALIDATORS = '********************'
181AUTH_USER_MODEL = 'users.User'
182BASE_DIR = PosixPath('/import_app')
183CACHES = {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}
184CACHE_MIDDLEWARE_ALIAS = 'default'
185CACHE_MIDDLEWARE_KEY_PREFIX = '********************'
186CACHE_MIDDLEWARE_SECONDS = 600
187CORS_ALLOW_ALL_ORIGINS = True
188CORS_ALLOW_CREDENTIALS = True
189CSRF_COOKIE_AGE = 31449600
190CSRF_COOKIE_DOMAIN = None
191CSRF_COOKIE_HTTPONLY = False
192CSRF_COOKIE_NAME = 'csrftoken'
193CSRF_COOKIE_PATH = '/'
194CSRF_COOKIE_SAMESITE = 'Lax'
195CSRF_COOKIE_SECURE = False
196CSRF_FAILURE_VIEW = 'django.views.csrf.csrf_failure'
197CSRF_HEADER_NAME = 'HTTP_X_CSRFTOKEN'
198CSRF_TRUSTED_ORIGINS = []
199CSRF_USE_SESSIONS = False
200DATABASES = {'default': {'NAME': 'import', 'USER': 'user_import', 'PASSWORD': '********************', 'HOST': 'postgres', 'PORT': 5432, 'CONN_MAX_AGE': 0, 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'OPTIONS': {}, 'TIME_ZONE': None, 'TEST': {'CHARSET': None, 'COLLATION': None, 'NAME': None, 'MIRROR': None}}}
201DATABASE_ROUTERS = []
202DATA_UPLOAD_MAX_MEMORY_SIZE = 2621440
203DATA_UPLOAD_MAX_NUMBER_FIELDS = 1000
204DATETIME_FORMAT = 'N j, Y, P'
205DATETIME_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']
206DATE_FORMAT = 'N j, Y'
207DATE_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']
208DEBUG = True
209DEBUG_PROPAGATE_EXCEPTIONS = False
210DECIMAL_SEPARATOR = '.'
211DEFAULT_CHARSET = 'utf-8'
212DEFAULT_CONTENT_TYPE = 'text/html'
213DEFAULT_EXCEPTION_REPORTER_FILTER = 'django.views.debug.SafeExceptionReporterFilter'
214DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
215DEFAULT_FROM_EMAIL = 'webmaster@localhost'
216DEFAULT_INDEX_TABLESPACE = ''
217DEFAULT_TABLESPACE = ''
218DISALLOWED_USER_AGENTS = []
219EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
220EMAIL_HOST = 'smtp.x5.ru'
221EMAIL_HOST_PASSWORD = '********************'
222EMAIL_HOST_USER = 'import-info@x5.ru'
223EMAIL_PORT = 25
224EMAIL_SSL_CERTFILE = None
225EMAIL_SSL_KEYFILE = '********************'
226EMAIL_SUBJECT_PREFIX = '[Django] '
227EMAIL_TIMEOUT = None
228EMAIL_USE_LOCALTIME = False
229EMAIL_USE_SSL = False
230EMAIL_USE_TLS = False
231FILE_CHARSET = 'utf-8'
232FILE_UPLOAD_DIRECTORY_PERMISSIONS = None
233FILE_UPLOAD_HANDLERS = ['django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler']
234FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440
235FILE_UPLOAD_PERMISSIONS = None
236FILE_UPLOAD_TEMP_DIR = None
237FIRST_DAY_OF_WEEK = 0
238FIXTURE_DIRS = []
239FORCE_SCRIPT_NAME = None
240FORMAT_MODULE_PATH = None
241FORM_RENDERER = 'django.forms.renderers.DjangoTemplates'
242IGNORABLE_404_URLS = []
243INSTALLED_APPS = ['django_object_actions', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'mptt', 'rest_framework', 'widget_tweaks', 'drf_yasg', 'corsheaders', 'django_celery_beat', 'core', 'users', 'debug_toolbar']
244INTERNAL_IPS = ['127.0.0.1']
245JWT_AUTH = {'JWT_ENCODE_HANDLER': 'rest_framework_jwt.utils.jwt_encode_handler', 'JWT_DECODE_HANDLER': 'rest_framework_jwt.utils.jwt_decode_handler', 'JWT_PAYLOAD_HANDLER': 'rest_framework_jwt.utils.jwt_payload_handler', 'JWT_PAYLOAD_GET_USER_ID_HANDLER': 'rest_framework_jwt.utils.jwt_get_user_id_from_payload_handler', 'JWT_RESPONSE_PAYLOAD_HANDLER': 'rest_framework_jwt.utils.jwt_response_payload_handler', 'JWT_VERIFY': True, 'JWT_VERIFY_EXPIRATION': True, 'JWT_EXPIRATION_DELTA': datetime.timedelta(seconds=3000), 'JWT_AUTH_HEADER_PREFIX': 'Bearer'}
246LANGUAGES = "(('en', 'Английский'), ('ru-RU', 'Русский'))"
247LANGUAGES_BIDI = ['he', 'ar', 'fa', 'ur']
248LANGUAGE_CODE = 'ru-RU'
249LANGUAGE_COOKIE_AGE = None
250LANGUAGE_COOKIE_DOMAIN = None
251LANGUAGE_COOKIE_NAME = 'django_language'
252LANGUAGE_COOKIE_PATH = '/'
253LOCALE_PATHS = [PosixPath('/import_app/locale')]
254LOGGING = {}
255LOGGING_CONFIG = 'logging.config.dictConfig'
256LOGIN_REDIRECT_URL = '/admin'
257LOGIN_URL = '/'
258LOGOUT_REDIRECT_URL = '/'
259MANAGERS = []
260MAX_FILE_WITH_PRODUCTS_SIZE = 5242880
261MAX_FILE_WITH_VOLUMES_SIZE = 8388608
262MEDIA_ROOT = '/import_app/media'
263MEDIA_URL = '/media/'
264MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage'
265MIDDLEWARE = ['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'debug_toolbar.middleware.DebugToolbarMiddleware']
266MIGRATION_MODULES = {}
267MONTH_DAY_FORMAT = 'F j'
268NUMBER_GROUPING = 0
269PASSWORD_HASHERS = '********************'
270PASSWORD_RESET_TIMEOUT_DAYS = '********************'
271PREPEND_WWW = False
272PROJECT_VERSION = 'v0.0'
273REST_FRAMEWORK = {'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAuthenticated',), 'DEFAULT_AUTHENTICATION_CLASSES': ('rest_framework_jwt.authentication.JSONWebTokenAuthentication', 'rest_framework.authentication.SessionAuthentication', 'rest_framework.authentication.BasicAuthentication')}
274ROOT_URLCONF = 'import.urls'
275SECRET_KEY = '********************'
276SECURE_BROWSER_XSS_FILTER = False
277SECURE_CONTENT_TYPE_NOSNIFF = False
278SECURE_HSTS_INCLUDE_SUBDOMAINS = False
279SECURE_HSTS_PRELOAD = False
280SECURE_HSTS_SECONDS = 0
281SECURE_PROXY_SSL_HEADER = None
282SECURE_REDIRECT_EXEMPT = []
283SECURE_SSL_HOST = None
284SECURE_SSL_REDIRECT = False
285SENTRY_DSN = ''
286SERVER_EMAIL = 'root@localhost'
287SESSION_CACHE_ALIAS = 'default'
288SESSION_COOKIE_AGE = 1209600
289SESSION_COOKIE_DOMAIN = None
290SESSION_COOKIE_HTTPONLY = True
291SESSION_COOKIE_NAME = 'sessionid'
292SESSION_COOKIE_PATH = '/'
293SESSION_COOKIE_SAMESITE = 'Lax'
294SESSION_COOKIE_SECURE = False
295SESSION_ENGINE = 'django.contrib.sessions.backends.db'
296SESSION_EXPIRE_AT_BROWSER_CLOSE = False
297SESSION_FILE_PATH = None
298SESSION_SAVE_EVERY_REQUEST = False
299SESSION_SERIALIZER = 'django.contrib.sessions.serializers.JSONSerializer'
300SETTINGS_MODULE = 'import.settings'
301SHORT_DATETIME_FORMAT = 'm/d/Y P'
302SHORT_DATE_FORMAT = 'm/d/Y'
303SIGNING_BACKEND = 'django.core.signing.TimestampSigner'
304SILENCED_SYSTEM_CHECKS = []
305SITE_URL = 'http://import.x5.ru/'
306STATICFILES_DIRS = []
307STATICFILES_FINDERS = ['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder']
308STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'
309STATIC_ROOT = '/import_app/static'
310STATIC_URL = '/static/'
311TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [PosixPath('/import_app/templates')], 'APP_DIRS': True, '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']}}]
312TEST_NON_SERIALIZED_APPS = []
313TEST_RUNNER = 'django.test.runner.DiscoverRunner'
314THOUSAND_SEPARATOR = ','
315TIME_FORMAT = 'P'
316TIME_INPUT_FORMATS = ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']
317TIME_ZONE = 'UTC'
318USE_DDT = True
319USE_I18N = True
320USE_L10N = True
321USE_SENTRY = False
322USE_SILK = False
323USE_THOUSAND_SEPARATOR = False
324USE_TZ = True
325USE_X_FORWARDED_HOST = False
326USE_X_FORWARDED_PORT = False
327WSGI_APPLICATION = 'import.wsgi.application'
328X_FRAME_OPTIONS = 'SAMEORIGIN'
329YEAR_MONTH_FORMAT = 'F Y'
330
331
332You're seeing this error because you have DEBUG = True in your
333Django settings file. Change that to False, and Django will
334display a standard page generated by the handler for this status code.
335
336