add change_project_folder apis
This commit is contained in:
@@ -137,4 +137,22 @@ class ProjectFolderDetailSerializer(serializers.ModelSerializer):
|
|||||||
]
|
]
|
||||||
|
|
||||||
def get_projects_count(self, obj):
|
def get_projects_count(self, obj):
|
||||||
return obj.projects.count()
|
return obj.projects.count()
|
||||||
|
|
||||||
|
|
||||||
|
class ChangeProjectFolderSerializer(serializers.Serializer):
|
||||||
|
project_id = serializers.UUIDField()
|
||||||
|
project_folder_id = serializers.UUIDField()
|
||||||
|
|
||||||
|
def validate(self, data):
|
||||||
|
project = Project.objects.filter(id=data['project_id']).first()
|
||||||
|
if not project:
|
||||||
|
raise serializers.ValidationError("Project not found")
|
||||||
|
project_folder = ProjectFolder.objects.filter(id=data['project_folder_id']).first()
|
||||||
|
if not project_folder:
|
||||||
|
raise serializers.ValidationError("Project Folder not found")
|
||||||
|
if project.folder == project_folder:
|
||||||
|
raise serializers.ValidationError("the project folder is attached for this project")
|
||||||
|
data['project'] = project
|
||||||
|
data['project_folder'] = project_folder
|
||||||
|
return data
|
||||||
@@ -11,6 +11,7 @@ urlpatterns = [
|
|||||||
path('create/', project_views.ProjectCreateApiView.as_view()),
|
path('create/', project_views.ProjectCreateApiView.as_view()),
|
||||||
path('<uuid:id>/update/', project_views.ProjectUpdateApiView.as_view()),
|
path('<uuid:id>/update/', project_views.ProjectUpdateApiView.as_view()),
|
||||||
path('<uuid:id>/delete/', project_views.ProjectDeleteApiView.as_view()),
|
path('<uuid:id>/delete/', project_views.ProjectDeleteApiView.as_view()),
|
||||||
|
path('change_folder/', project_views.ChangeProjectFolderApiView.as_view()),
|
||||||
]
|
]
|
||||||
)),
|
)),
|
||||||
path('project_folder/', include(
|
path('project_folder/', include(
|
||||||
|
|||||||
@@ -107,4 +107,24 @@ class ProjectFolderDeleteApiView(views.APIView):
|
|||||||
def delete(self, request, id):
|
def delete(self, request, id):
|
||||||
folder = get_object_or_404(ProjectFolder, id=id)
|
folder = get_object_or_404(ProjectFolder, id=id)
|
||||||
folder.delete()
|
folder.delete()
|
||||||
return Response({"success": True, "message": 'deleted!'}, status=204)
|
return Response({"success": True, "message": 'deleted!'}, status=204)
|
||||||
|
|
||||||
|
|
||||||
|
class ChangeProjectFolderApiView(generics.GenericAPIView):
|
||||||
|
serializer_class = serializers.ChangeProjectFolderSerializer
|
||||||
|
queryset = Project.objects.all()
|
||||||
|
|
||||||
|
def post(self, request):
|
||||||
|
serializer = self.serializer_class(data=request.data)
|
||||||
|
if serializer.is_valid():
|
||||||
|
project = serializer.validated_data.get('project')
|
||||||
|
folder = serializer.validated_data.get('project_folder')
|
||||||
|
project.folder = folder
|
||||||
|
project.save()
|
||||||
|
return Response(
|
||||||
|
{'success': True, 'message': 'Project Folder changed!'},
|
||||||
|
status=200
|
||||||
|
)
|
||||||
|
return Response(
|
||||||
|
{'success': False, 'message': serializer.errors}, status=400
|
||||||
|
)
|
||||||
476
resources/logs/django.log.2025-08-06
Normal file
476
resources/logs/django.log.2025-08-06
Normal file
@@ -0,0 +1,476 @@
|
|||||||
|
WARNING 2025-08-06 13:53:34,415 log Forbidden: /swagger/
|
||||||
|
WARNING 2025-08-06 13:53:35,375 log Forbidden: /swagger/
|
||||||
|
WARNING 2025-08-06 13:53:35,490 log Not Found: /favicon.ico
|
||||||
|
WARNING 2025-08-06 13:53:37,037 log Forbidden: /swagger/
|
||||||
|
WARNING 2025-08-06 13:53:52,107 log Forbidden: /swagger/
|
||||||
|
WARNING 2025-08-06 13:53:52,970 log Forbidden: /swagger/
|
||||||
|
WARNING 2025-08-06 13:53:53,576 log Forbidden: /swagger/
|
||||||
|
WARNING 2025-08-06 13:53:54,141 log Forbidden: /swagger/
|
||||||
|
WARNING 2025-08-06 13:53:54,340 log Forbidden: /swagger/
|
||||||
|
WARNING 2025-08-06 13:53:54,525 log Forbidden: /swagger/
|
||||||
|
WARNING 2025-08-06 13:53:54,703 log Forbidden: /swagger/
|
||||||
|
WARNING 2025-08-06 13:53:54,872 log Forbidden: /swagger/
|
||||||
|
WARNING 2025-08-06 13:53:55,036 log Forbidden: /swagger/
|
||||||
|
WARNING 2025-08-06 13:54:00,921 log Forbidden: /swagger/
|
||||||
|
ERROR 2025-08-06 13:54:17,281 log Internal Server Error: /api/v1/accounts/auth/login/
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 489, in thread_handler
|
||||||
|
raise exc_info[1]
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/core/handlers/exception.py", line 42, in inner
|
||||||
|
response = await get_response(request)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 489, in thread_handler
|
||||||
|
raise exc_info[1]
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/core/handlers/base.py", line 253, in _get_response_async
|
||||||
|
response = await wrapped_callback(
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 439, in __call__
|
||||||
|
ret = await asyncio.shield(exec_coro)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/concurrent/futures/thread.py", line 59, in run
|
||||||
|
result = self.fn(*self.args, **self.kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 493, in thread_handler
|
||||||
|
return func(*args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
|
||||||
|
return view_func(request, *args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/views/generic/base.py", line 105, in view
|
||||||
|
return self.dispatch(request, *args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
|
||||||
|
response = self.handle_exception(exc)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
|
||||||
|
self.raise_uncaught_exception(exc)
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
|
||||||
|
raise exc
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
|
||||||
|
response = handler(request, *args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/code/core/apps/accounts/views/login.py", line 21, in post
|
||||||
|
'role': user.role.name,
|
||||||
|
^^^^^^^^^^^^^^
|
||||||
|
AttributeError: 'NoneType' object has no attribute 'name'
|
||||||
|
ERROR 2025-08-06 13:54:59,401 log Internal Server Error: /api/v1/accounts/auth/login/
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 489, in thread_handler
|
||||||
|
raise exc_info[1]
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/core/handlers/exception.py", line 42, in inner
|
||||||
|
response = await get_response(request)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 489, in thread_handler
|
||||||
|
raise exc_info[1]
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/core/handlers/base.py", line 253, in _get_response_async
|
||||||
|
response = await wrapped_callback(
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 439, in __call__
|
||||||
|
ret = await asyncio.shield(exec_coro)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/concurrent/futures/thread.py", line 59, in run
|
||||||
|
result = self.fn(*self.args, **self.kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 493, in thread_handler
|
||||||
|
return func(*args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
|
||||||
|
return view_func(request, *args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/views/generic/base.py", line 105, in view
|
||||||
|
return self.dispatch(request, *args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
|
||||||
|
response = self.handle_exception(exc)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
|
||||||
|
self.raise_uncaught_exception(exc)
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
|
||||||
|
raise exc
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
|
||||||
|
response = handler(request, *args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/code/core/apps/accounts/views/login.py", line 22, in post
|
||||||
|
'permissions': user.role.permissions.values_list('code', flat=True),
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
AttributeError: 'NoneType' object has no attribute 'permissions'
|
||||||
|
WARNING 2025-08-06 13:55:28,281 log Forbidden: /api/v1/accounts/user/profile/
|
||||||
|
WARNING 2025-08-06 13:55:55,325 log Forbidden: /api/v1/accounts/user/profile/
|
||||||
|
WARNING 2025-08-06 13:55:56,107 log Forbidden: /api/v1/accounts/user/profile/
|
||||||
|
WARNING 2025-08-06 13:56:17,034 log Forbidden: /api/v1/accounts/user/profile/
|
||||||
|
WARNING 2025-08-06 13:56:38,553 log Forbidden: /api/v1/accounts/user/profile/
|
||||||
|
WARNING 2025-08-06 13:56:39,250 log Forbidden: /api/v1/accounts/user/profile/
|
||||||
|
WARNING 2025-08-06 13:56:39,957 log Forbidden: /api/v1/accounts/user/profile/
|
||||||
|
WARNING 2025-08-06 13:56:53,859 log Forbidden: /api/v1/accounts/user/profile/
|
||||||
|
WARNING 2025-08-06 13:56:54,573 log Forbidden: /api/v1/accounts/user/profile/
|
||||||
|
WARNING 2025-08-06 13:56:54,890 log Forbidden: /api/v1/accounts/user/profile/
|
||||||
|
WARNING 2025-08-06 13:56:55,082 log Forbidden: /api/v1/accounts/user/profile/
|
||||||
|
WARNING 2025-08-06 13:56:55,248 log Forbidden: /api/v1/accounts/user/profile/
|
||||||
|
WARNING 2025-08-06 13:56:55,455 log Forbidden: /api/v1/accounts/user/profile/
|
||||||
|
WARNING 2025-08-06 13:56:56,637 log Forbidden: /api/v1/accounts/user/profile/
|
||||||
|
WARNING 2025-08-06 13:57:07,161 log Forbidden: /api/v1/accounts/user/profile/
|
||||||
|
WARNING 2025-08-06 13:57:18,692 log Forbidden: /api/v1/accounts/user/profile/
|
||||||
|
WARNING 2025-08-06 13:59:19,740 log Unauthorized: /api/v1/accounts/user/profile/
|
||||||
|
WARNING 2025-08-06 13:59:20,748 log Unauthorized: /api/v1/accounts/user/profile/
|
||||||
|
WARNING 2025-08-06 14:35:29,759 log Forbidden (Origin checking failed - http://localhost:8001 does not match any trusted origins.): /admin/login/
|
||||||
|
WARNING 2025-08-06 14:35:29,886 log Not Found: /favicon.ico
|
||||||
|
WARNING 2025-08-06 14:35:32,731 log Forbidden (Origin checking failed - http://localhost:8001 does not match any trusted origins.): /admin/login/
|
||||||
|
WARNING 2025-08-06 14:59:28,476 log Unauthorized: /api/v1/accounts/user/profile/
|
||||||
|
WARNING 2025-08-06 15:21:23,312 log Unauthorized: /api/v1/accounts/role/list/
|
||||||
|
WARNING 2025-08-06 15:21:51,454 log Unauthorized: /api/v1/accounts/role/list/
|
||||||
|
WARNING 2025-08-06 15:22:15,049 log Forbidden: /api/v1/accounts/role/list/
|
||||||
|
WARNING 2025-08-06 15:22:17,204 log Forbidden: /api/v1/accounts/role/list/
|
||||||
|
WARNING 2025-08-06 15:22:17,665 log Forbidden: /api/v1/accounts/role/list/
|
||||||
|
WARNING 2025-08-06 15:22:17,812 log Forbidden: /api/v1/accounts/role/list/
|
||||||
|
WARNING 2025-08-06 15:22:17,975 log Forbidden: /api/v1/accounts/role/list/
|
||||||
|
WARNING 2025-08-06 15:22:18,145 log Forbidden: /api/v1/accounts/role/list/
|
||||||
|
WARNING 2025-08-06 15:22:18,294 log Forbidden: /api/v1/accounts/role/list/
|
||||||
|
WARNING 2025-08-06 15:22:18,442 log Forbidden: /api/v1/accounts/role/list/
|
||||||
|
WARNING 2025-08-06 15:22:18,585 log Forbidden: /api/v1/accounts/role/list/
|
||||||
|
WARNING 2025-08-06 15:22:38,868 log Forbidden: /api/v1/accounts/role/list/
|
||||||
|
WARNING 2025-08-06 15:23:44,301 log Bad Request: /api/v1/accounts/user/create/
|
||||||
|
WARNING 2025-08-06 15:25:28,717 log Bad Request: /api/v1/accounts/user/create/
|
||||||
|
WARNING 2025-08-06 15:25:42,545 log Bad Request: /api/v1/accounts/user/create/
|
||||||
|
ERROR 2025-08-06 15:26:11,525 log Internal Server Error: /api/v1/accounts/user/create/
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/db/backends/utils.py", line 105, in _execute
|
||||||
|
return self.cursor.execute(sql, params)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
psycopg2.errors.UniqueViolation: duplicate key value violates unique constraint "accounts_user_username_key"
|
||||||
|
DETAIL: Key (username)=(behruz-dev) already exists.
|
||||||
|
|
||||||
|
|
||||||
|
The above exception was the direct cause of the following exception:
|
||||||
|
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 489, in thread_handler
|
||||||
|
raise exc_info[1]
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/core/handlers/exception.py", line 42, in inner
|
||||||
|
response = await get_response(request)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 489, in thread_handler
|
||||||
|
raise exc_info[1]
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/core/handlers/base.py", line 253, in _get_response_async
|
||||||
|
response = await wrapped_callback(
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 439, in __call__
|
||||||
|
ret = await asyncio.shield(exec_coro)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/concurrent/futures/thread.py", line 59, in run
|
||||||
|
result = self.fn(*self.args, **self.kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 493, in thread_handler
|
||||||
|
return func(*args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
|
||||||
|
return view_func(request, *args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/views/generic/base.py", line 105, in view
|
||||||
|
return self.dispatch(request, *args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
|
||||||
|
response = self.handle_exception(exc)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
|
||||||
|
self.raise_uncaught_exception(exc)
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
|
||||||
|
raise exc
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
|
||||||
|
response = handler(request, *args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/code/core/apps/accounts/views/user.py", line 64, in post
|
||||||
|
serializer.save()
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 210, in save
|
||||||
|
self.instance = self.create(validated_data)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/code/core/apps/accounts/serializers/user.py", line 53, in create
|
||||||
|
user = User.objects.create(
|
||||||
|
^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/db/models/manager.py", line 87, in manager_method
|
||||||
|
return getattr(self.get_queryset(), name)(*args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/db/models/query.py", line 663, in create
|
||||||
|
obj.save(force_insert=True, using=self.db)
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/contrib/auth/base_user.py", line 65, in save
|
||||||
|
super().save(*args, **kwargs)
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/db/models/base.py", line 902, in save
|
||||||
|
self.save_base(
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/db/models/base.py", line 1008, in save_base
|
||||||
|
updated = self._save_table(
|
||||||
|
^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/db/models/base.py", line 1169, in _save_table
|
||||||
|
results = self._do_insert(
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/db/models/base.py", line 1210, in _do_insert
|
||||||
|
return manager._insert(
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/db/models/manager.py", line 87, in manager_method
|
||||||
|
return getattr(self.get_queryset(), name)(*args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/db/models/query.py", line 1868, in _insert
|
||||||
|
return query.get_compiler(using=using).execute_sql(returning_fields)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/db/models/sql/compiler.py", line 1882, in execute_sql
|
||||||
|
cursor.execute(sql, params)
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/db/backends/utils.py", line 122, in execute
|
||||||
|
return super().execute(sql, params)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/cacheops/transaction.py", line 98, in execute
|
||||||
|
result = self._no_monkey.execute(self, sql, params)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/db/backends/utils.py", line 79, in execute
|
||||||
|
return self._execute_with_wrappers(
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
|
||||||
|
return executor(sql, params, many, context)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/db/backends/utils.py", line 100, in _execute
|
||||||
|
with self.db.wrap_database_errors:
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/db/utils.py", line 91, in __exit__
|
||||||
|
raise dj_exc_value.with_traceback(traceback) from exc_value
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/db/backends/utils.py", line 105, in _execute
|
||||||
|
return self.cursor.execute(sql, params)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
django.db.utils.IntegrityError: duplicate key value violates unique constraint "accounts_user_username_key"
|
||||||
|
DETAIL: Key (username)=(behruz-dev) already exists.
|
||||||
|
|
||||||
|
WARNING 2025-08-06 15:26:54,364 log Bad Request: /api/v1/accounts/user/create/
|
||||||
|
WARNING 2025-08-06 15:26:55,258 log Bad Request: /api/v1/accounts/user/create/
|
||||||
|
WARNING 2025-08-06 16:29:39,278 log Unauthorized: /api/v1/accounts/permission/list/
|
||||||
|
WARNING 2025-08-06 16:30:00,966 log Unauthorized: /api/v1/accounts/permission/list/
|
||||||
|
ERROR 2025-08-06 16:38:41,912 log Internal Server Error: /api/v1/accounts/user/permissions/
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 489, in thread_handler
|
||||||
|
raise exc_info[1]
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/core/handlers/exception.py", line 42, in inner
|
||||||
|
response = await get_response(request)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 489, in thread_handler
|
||||||
|
raise exc_info[1]
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/core/handlers/base.py", line 253, in _get_response_async
|
||||||
|
response = await wrapped_callback(
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 439, in __call__
|
||||||
|
ret = await asyncio.shield(exec_coro)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/concurrent/futures/thread.py", line 59, in run
|
||||||
|
result = self.fn(*self.args, **self.kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 493, in thread_handler
|
||||||
|
return func(*args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
|
||||||
|
return view_func(request, *args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/views/generic/base.py", line 105, in view
|
||||||
|
return self.dispatch(request, *args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
|
||||||
|
response = self.handle_exception(exc)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
|
||||||
|
self.raise_uncaught_exception(exc)
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
|
||||||
|
raise exc
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
|
||||||
|
response = handler(request, *args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/code/core/apps/accounts/views/user.py", line 107, in get
|
||||||
|
permissions = request.user.role.permission
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
AttributeError: 'Role' object has no attribute 'permission'. Did you mean: 'permissions'?
|
||||||
|
ERROR 2025-08-06 16:38:43,419 log Internal Server Error: /api/v1/accounts/user/permissions/
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 489, in thread_handler
|
||||||
|
raise exc_info[1]
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/core/handlers/exception.py", line 42, in inner
|
||||||
|
response = await get_response(request)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 489, in thread_handler
|
||||||
|
raise exc_info[1]
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/core/handlers/base.py", line 253, in _get_response_async
|
||||||
|
response = await wrapped_callback(
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 439, in __call__
|
||||||
|
ret = await asyncio.shield(exec_coro)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/concurrent/futures/thread.py", line 59, in run
|
||||||
|
result = self.fn(*self.args, **self.kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 493, in thread_handler
|
||||||
|
return func(*args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
|
||||||
|
return view_func(request, *args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/views/generic/base.py", line 105, in view
|
||||||
|
return self.dispatch(request, *args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
|
||||||
|
response = self.handle_exception(exc)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
|
||||||
|
self.raise_uncaught_exception(exc)
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
|
||||||
|
raise exc
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
|
||||||
|
response = handler(request, *args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/code/core/apps/accounts/views/user.py", line 107, in get
|
||||||
|
permissions = request.user.role.permission
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
AttributeError: 'Role' object has no attribute 'permission'. Did you mean: 'permissions'?
|
||||||
|
ERROR 2025-08-06 16:40:23,199 log Internal Server Error: /api/v1/accounts/user/permissions/
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 489, in thread_handler
|
||||||
|
raise exc_info[1]
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/core/handlers/exception.py", line 42, in inner
|
||||||
|
response = await get_response(request)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 489, in thread_handler
|
||||||
|
raise exc_info[1]
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/core/handlers/base.py", line 253, in _get_response_async
|
||||||
|
response = await wrapped_callback(
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 439, in __call__
|
||||||
|
ret = await asyncio.shield(exec_coro)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/concurrent/futures/thread.py", line 59, in run
|
||||||
|
result = self.fn(*self.args, **self.kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 493, in thread_handler
|
||||||
|
return func(*args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
|
||||||
|
return view_func(request, *args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/views/generic/base.py", line 105, in view
|
||||||
|
return self.dispatch(request, *args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
|
||||||
|
response = self.handle_exception(exc)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
|
||||||
|
self.raise_uncaught_exception(exc)
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
|
||||||
|
raise exc
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
|
||||||
|
response = handler(request, *args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/code/core/apps/accounts/views/user.py", line 108, in get
|
||||||
|
permission = Permission.objects.filter(roles=request.user)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/db/models/manager.py", line 87, in manager_method
|
||||||
|
return getattr(self.get_queryset(), name)(*args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/db/models/query.py", line 1493, in filter
|
||||||
|
return self._filter_or_exclude(False, args, kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/db/models/query.py", line 1511, in _filter_or_exclude
|
||||||
|
clone._filter_or_exclude_inplace(negate, args, kwargs)
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/db/models/query.py", line 1518, in _filter_or_exclude_inplace
|
||||||
|
self._query.add_q(Q(*args, **kwargs))
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1646, in add_q
|
||||||
|
clause, _ = self._add_q(q_object, can_reuse)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1678, in _add_q
|
||||||
|
child_clause, needed_inner = self.build_filter(
|
||||||
|
^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1563, in build_filter
|
||||||
|
self.check_related_objects(join_info.final_field, value, join_info.opts)
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1372, in check_related_objects
|
||||||
|
self.check_query_object_type(value, opts, field)
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1349, in check_query_object_type
|
||||||
|
raise ValueError(
|
||||||
|
ValueError: Cannot query "admin": Must be "Role" instance.
|
||||||
|
ERROR 2025-08-06 16:40:34,000 log Internal Server Error: /api/v1/accounts/user/permissions/
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 489, in thread_handler
|
||||||
|
raise exc_info[1]
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/core/handlers/exception.py", line 42, in inner
|
||||||
|
response = await get_response(request)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 489, in thread_handler
|
||||||
|
raise exc_info[1]
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/core/handlers/base.py", line 253, in _get_response_async
|
||||||
|
response = await wrapped_callback(
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 439, in __call__
|
||||||
|
ret = await asyncio.shield(exec_coro)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/concurrent/futures/thread.py", line 59, in run
|
||||||
|
result = self.fn(*self.args, **self.kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 493, in thread_handler
|
||||||
|
return func(*args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
|
||||||
|
return view_func(request, *args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/views/generic/base.py", line 105, in view
|
||||||
|
return self.dispatch(request, *args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
|
||||||
|
response = self.handle_exception(exc)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
|
||||||
|
self.raise_uncaught_exception(exc)
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
|
||||||
|
raise exc
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
|
||||||
|
response = handler(request, *args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/code/core/apps/accounts/views/user.py", line 108, in get
|
||||||
|
permission = Permission.objects.filter(roles=request.user.rol)
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/utils/functional.py", line 253, in inner
|
||||||
|
return func(_wrapped, *args)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
AttributeError: 'User' object has no attribute 'rol'. Did you mean: 'role'?
|
||||||
|
ERROR 2025-08-06 16:40:35,208 log Internal Server Error: /api/v1/accounts/user/permissions/
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 489, in thread_handler
|
||||||
|
raise exc_info[1]
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/core/handlers/exception.py", line 42, in inner
|
||||||
|
response = await get_response(request)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 489, in thread_handler
|
||||||
|
raise exc_info[1]
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/core/handlers/base.py", line 253, in _get_response_async
|
||||||
|
response = await wrapped_callback(
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 439, in __call__
|
||||||
|
ret = await asyncio.shield(exec_coro)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/concurrent/futures/thread.py", line 59, in run
|
||||||
|
result = self.fn(*self.args, **self.kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/asgiref/sync.py", line 493, in thread_handler
|
||||||
|
return func(*args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
|
||||||
|
return view_func(request, *args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/views/generic/base.py", line 105, in view
|
||||||
|
return self.dispatch(request, *args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
|
||||||
|
response = self.handle_exception(exc)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
|
||||||
|
self.raise_uncaught_exception(exc)
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
|
||||||
|
raise exc
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
|
||||||
|
response = handler(request, *args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/code/core/apps/accounts/views/user.py", line 108, in get
|
||||||
|
permission = Permission.objects.filter(roles=request.user.rol)
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.12/site-packages/django/utils/functional.py", line 253, in inner
|
||||||
|
return func(_wrapped, *args)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
AttributeError: 'User' object has no attribute 'rol'. Did you mean: 'role'?
|
||||||
|
WARNING 2025-08-06 17:26:00,186 log Forbidden: /api/v1/accounts/permission/list/
|
||||||
|
WARNING 2025-08-06 17:26:42,953 log Forbidden: /api/v1/accounts/permission/list/
|
||||||
Reference in New Issue
Block a user