Closed julkascript closed 3 months ago
not_received
status as value (it currently uses rejected
which was done with the idea that it'd be updated at a later point)
not_sent
or not_received
via the PATCH endpoint (I tested this with an order marked as ordered
, later on sent
). While you logically shouldn't be able to change the status to not_sent
, this will cause issues for the latter option. Also, for whatever reason, it only activates for those two, giving non-existant statuses returns the correct status code. I tried deleting the Postgres volume to make sure it wasn't some issue with migrations, but no dice.error for reference:
ValueError at /api/order/1/
'not_received' is not in list
Request Method: PATCH
Request URL: http://localhost:8000/api/order/1/
Django Version: 4.2.6
Python Executable: /usr/local/bin/python
Python Version: 3.11.4
Python Path: ['/usr/src/app', '/usr/local/lib/python311.zip', '/usr/local/lib/python3.11', '/usr/local/lib/python3.11/lib-dynload', '/usr/local/lib/python3.11/site-packages']
Server time: Sat, 22 Jun 2024 18:36:08 +0000
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'rest_framework.authtoken',
'django_filters',
'rest_framework_simplejwt',
'corsheaders',
'accounts.apps.AccountsConfig',
'game',
'card',
'yugioh',
'listing',
'drf_spectacular',
'order',
'cart',
'django_cleanup.apps.CleanupConfig']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'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']
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/views/decorators/csrf.py", line 56, in wrapper_view
return view_func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/rest_framework/viewsets.py", line 125, in view
return self.dispatch(request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/rest_framework/views.py", line 509, in dispatch
response = self.handle_exception(exc)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/rest_framework/views.py", line 469, in handle_exception
self.raise_uncaught_exception(exc)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception
raise exc
^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/rest_framework/views.py", line 506, in dispatch
response = handler(request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/rest_framework/mixins.py", line 82, in partial_update
return self.update(request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/rest_framework/mixins.py", line 68, in update
self.perform_update(serializer)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/rest_framework/mixins.py", line 78, in perform_update
serializer.save()
^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/rest_framework/serializers.py", line 207, in save
self.instance = self.update(self.instance, validated_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/order/serializers.py", line 56, in update
if self.get_status_index(validated_data['status']) < self.get_status_index(instance.status):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/order/serializers.py", line 83, in get_status_index
return status_order.index(status)
^^^^^^^^^^^^^^^^^^^^^^^^^^
Exception Type: ValueError at /api/order/1/
Exception Value: 'not_received' is not in list
Raised during: order.views.OrderViewSet
Request information:
USER: admin
I managed to fix most of these myself. In particular:
Not done (out of scope / will be solved later):
I don't have particular experience with Django, so apologies if I screwed anything up
edit: added third thing I didn't deal with
Closes #122
not_sent
andnot_received
statuses.Next steps:
123