diff --git a/core/apps/projects/serializers/project.py b/core/apps/projects/serializers/project.py index 9df4b8b..0ba2197 100644 --- a/core/apps/projects/serializers/project.py +++ b/core/apps/projects/serializers/project.py @@ -4,26 +4,22 @@ from rest_framework import serializers from core.apps.projects.models.project import Project, ProjectFolder, ProjectLocation from core.apps.projects.serializers.project_location import ProjectLocationSerializer, ProjectLocationListSerializer +from core.apps.accounts.serializers.user import UserListSerializer +from core.apps.wherehouse.serializers.wherehouse import WhereHouseListSerializer +from core.apps.finance.serializers.cash_transaction import CashTransactionListSerializer class ProjectListSerializer(serializers.ModelSerializer): - location = ProjectLocationListSerializer() + folder_name = serializers.SerializerMethodField(method_name='get_folder_name') class Meta: model = Project fields = [ - 'id', 'name', 'location', 'start_date', 'end_date' + 'id', 'name', 'start_date', 'end_date', 'status', 'folder_name' ] - -class ProjectDetailSerialzier(serializers.ModelSerializer): - location = ProjectLocationListSerializer() - - class Meta: - model = Project - fields = [ - 'id', 'name', 'location', 'start_date', 'end_date', 'status', 'benifit_plan' - ] + def get_folder_name(self, obj): + return obj.folder.name if obj.folder else None class ProjectUpdateSerialzier(serializers.ModelSerializer): @@ -142,11 +138,14 @@ class ProjectFolderCreateSerializer(serializers.Serializer): class ProjectFolderListSerializer(serializers.ModelSerializer): - projects = ProjectListSerializer(many=True) + projects_count = serializers.SerializerMethodField(method_name='get_projects_count') class Meta: model = ProjectFolder - fields = ['id', 'name', 'projects'] + fields = ['id', 'name', 'projects_count'] + + def get_projects_count(self, obj): + return obj.projects.count() class ProjectFolderProjectCreateSerializer(serializers.Serializer): @@ -257,4 +256,31 @@ class ChangeProjectFolderSerializer(serializers.Serializer): raise serializers.ValidationError("the project folder is attached for this project") data['project'] = project data['project_folder'] = project_folder - return data \ No newline at end of file + return data + + + + +class ProjectDetailSerialzier(serializers.ModelSerializer): + location = ProjectLocationListSerializer() + folder = ProjectFolderListSerializer() + builder = serializers.SerializerMethodField(method_name='get_builder') + boss = UserListSerializer(many=True) + foreman = UserListSerializer(many=True) + other_members = UserListSerializer(many=True) + wherehouse = WhereHouseListSerializer(many=True) + cash_transaction = CashTransactionListSerializer(many=True) + + class Meta: + model = Project + fields = [ + 'id', 'name', 'location', 'start_date', 'end_date', 'status', 'benifit_plan', + 'area', 'currency', + 'folder', 'builder', 'boss', 'foreman', 'other_members', 'wherehouse', 'cash_transaction', 'is_archive' + ] + + def get_builder(self, obj): + return { + 'id': obj.builder.id, + 'name': obj.builder.name + } \ No newline at end of file diff --git a/core/apps/projects/views/project.py b/core/apps/projects/views/project.py index a955078..471f62a 100644 --- a/core/apps/projects/views/project.py +++ b/core/apps/projects/views/project.py @@ -12,18 +12,24 @@ from core.apps.shared.paginations.custom import CustomPageNumberPagination class ProjectListApiView(generics.ListAPIView): serializer_class = serializers.ProjectListSerializer - queryset = Project.objects.filter(is_archive=False).select_related('location') + queryset = Project.objects.all() permission_classes = [HasRolePermission] required_permissions = ['project'] pagination_class = CustomPageNumberPagination def get_queryset(self): - return Project.objects.exclude(folder__isnull=False) - + return ( + Project.objects + .select_related('location') + .exclude(is_archive=True) + .exclude(folder__isnull=False) + ) class ProjectDetailApiView(generics.RetrieveAPIView): serializer_class = serializers.ProjectDetailSerialzier - queryset = Project.objects.select_related('location') + queryset = Project.objects.select_related('location', 'folder', 'builder').prefetch_related( + 'boss', 'foreman', 'other_members', 'wherehouse', 'cash_transaction', + ) permission_classes = [HasRolePermission] required_permissions = ['project'] lookup_field = 'id' @@ -73,9 +79,7 @@ class ProjectFolderCreateApiView(generics.CreateAPIView): class ProjectFolderListApiView(generics.ListAPIView): serializer_class = serializers.ProjectFolderListSerializer - queryset = ProjectFolder.objects.prefetch_related( - Prefetch('projects', Project.objects.filter(is_archive=False)) - ) + queryset = ProjectFolder.objects.prefetch_related('projects') permission_classes = [HasRolePermission] required_permissions = ['project_folder'] pagination_class = CustomPageNumberPagination @@ -110,7 +114,13 @@ class ProjectFolderDetailApiView(generics.GenericAPIView): required_permissions = ['project_folder'] def get(self, request, id): - folder = get_object_or_404(ProjectFolder, id=id) + folder = ( + ProjectFolder.objects + .prefetch_related( + Prefetch('projects', queryset=Project.objects.exclude(is_archive=True)) + ) + .get(id=id) + ) serializer = self.serializer_class(folder) return Response(serializer.data, status=200) diff --git a/resources/logs/django.log.2025-08-07 b/resources/logs/django.log.2025-08-07 new file mode 100644 index 0000000..7826a50 --- /dev/null +++ b/resources/logs/django.log.2025-08-07 @@ -0,0 +1,982 @@ +WARNING 2025-08-07 09:58:53,151 log Forbidden: /api/v1/projects/project_folder/list/ +ERROR 2025-08-07 11:51:37,635 log Internal Server Error: /api/v1/shared/region/list/ +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 "/usr/local/lib/python3.12/site-packages/rest_framework/generics.py", line 203, in get + return self.list(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/mixins.py", line 40, in list + page = self.paginate_queryset(queryset) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/generics.py", line 175, in paginate_queryset + return self.paginator.paginate_queryset(queryset, self.request, view=self) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/pagination.py", line 211, in paginate_queryset + self.page = paginator.page(page_number) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/core/paginator.py", line 89, in page + number = self.validate_number(number) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/core/paginator.py", line 70, in validate_number + if number > self.num_pages: + ^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/utils/functional.py", line 47, in __get__ + res = instance.__dict__[self.name] = self.func(instance) + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/core/paginator.py", line 116, in num_pages + if self.count == 0 and not self.allow_empty_first_page: + ^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/utils/functional.py", line 47, in __get__ + res = instance.__dict__[self.name] = self.func(instance) + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/core/paginator.py", line 110, in count + return c() + ^^^ + File "/usr/local/lib/python3.12/site-packages/cacheops/query.py", line 271, in count + return cached_as(self)(lambda: self._no_monkey.count(self))() + ^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/cacheops/query.py", line 64, in cached_as + qs_keys = [qs._cache_key(prefix=False) for qs in querysets] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/cacheops/query.py", line 152, in _cache_key + sql, params = self.query.get_compiler(self.db).as_sql() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/db/models/sql/compiler.py", line 766, in as_sql + extra_select, order_by, group_by = self.pre_sql_setup( + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/db/models/sql/compiler.py", line 85, in pre_sql_setup + self.setup_query(with_col_aliases=with_col_aliases) + File "/usr/local/lib/python3.12/site-packages/django/db/models/sql/compiler.py", line 74, in setup_query + self.select, self.klass_info, self.annotation_col_map = self.get_select( + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/db/models/sql/compiler.py", line 299, in get_select + related_klass_infos = self.get_related_selections(select, select_mask) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/db/models/sql/compiler.py", line 1396, in get_related_selections + raise FieldError( +django.core.exceptions.FieldError: Invalid field name(s) given in select_related: 'districts'. Choices are: (none) +ERROR 2025-08-07 11:57:37,791 log Internal Server Error: /admin/projects/project/ +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.UndefinedColumn: column projects_project.location_id does not exist +LINE 1: ...project"."updated_at", "projects_project"."name", "projects_... + ^ +HINT: Perhaps you meant to reference the column "projects_project.location". + + +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/contrib/admin/options.py", line 719, in wrapper + return self.admin_site.admin_view(view)(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/utils/decorators.py", line 192, in _view_wrapper + result = _process_exception(request, e) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/utils/decorators.py", line 190, in _view_wrapper + response = view_func(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/views/decorators/cache.py", line 80, in _view_wrapper + response = view_func(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/contrib/admin/sites.py", line 246, in inner + return view(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/utils/decorators.py", line 48, in _wrapper + return bound_method(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/utils/decorators.py", line 192, in _view_wrapper + result = _process_exception(request, e) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/utils/decorators.py", line 190, in _view_wrapper + response = view_func(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/contrib/admin/options.py", line 2163, in changelist_view + "selection_note": _("0 of %(cnt)s selected") % {"cnt": len(cl.result_list)}, + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/db/models/query.py", line 366, in __len__ + self._fetch_all() + File "/usr/local/lib/python3.12/site-packages/cacheops/query.py", line 250, in _fetch_all + return self._no_monkey._fetch_all(self) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/db/models/query.py", line 1949, in _fetch_all + self._result_cache = list(self._iterable_class(self)) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/db/models/query.py", line 91, in __iter__ + results = compiler.execute_sql( + ^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/db/models/sql/compiler.py", line 1623, 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.ProgrammingError: column projects_project.location_id does not exist +LINE 1: ...project"."updated_at", "projects_project"."name", "projects_... + ^ +HINT: Perhaps you meant to reference the column "projects_project.location". + +WARNING 2025-08-07 11:57:37,989 log Not Found: /favicon.ico +ERROR 2025-08-07 11:59:27,529 log Internal Server Error: /admin/projects/project/ +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.UndefinedColumn: column projects_project.location_id does not exist +LINE 1: ...project"."updated_at", "projects_project"."name", "projects_... + ^ +HINT: Perhaps you meant to reference the column "projects_project.location". + + +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/contrib/admin/options.py", line 719, in wrapper + return self.admin_site.admin_view(view)(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/utils/decorators.py", line 192, in _view_wrapper + result = _process_exception(request, e) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/utils/decorators.py", line 190, in _view_wrapper + response = view_func(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/views/decorators/cache.py", line 80, in _view_wrapper + response = view_func(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/contrib/admin/sites.py", line 246, in inner + return view(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/utils/decorators.py", line 48, in _wrapper + return bound_method(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/utils/decorators.py", line 192, in _view_wrapper + result = _process_exception(request, e) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/utils/decorators.py", line 190, in _view_wrapper + response = view_func(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/contrib/admin/options.py", line 2163, in changelist_view + "selection_note": _("0 of %(cnt)s selected") % {"cnt": len(cl.result_list)}, + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/db/models/query.py", line 366, in __len__ + self._fetch_all() + File "/usr/local/lib/python3.12/site-packages/cacheops/query.py", line 250, in _fetch_all + return self._no_monkey._fetch_all(self) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/db/models/query.py", line 1949, in _fetch_all + self._result_cache = list(self._iterable_class(self)) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/db/models/query.py", line 91, in __iter__ + results = compiler.execute_sql( + ^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/db/models/sql/compiler.py", line 1623, 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.ProgrammingError: column projects_project.location_id does not exist +LINE 1: ...project"."updated_at", "projects_project"."name", "projects_... + ^ +HINT: Perhaps you meant to reference the column "projects_project.location". + +ERROR 2025-08-07 12:05:59,338 log Internal Server Error: /admin/projects/projectlocation/ +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/django/db/models/options.py", line 683, in get_field + return self.fields_map[field_name] + ~~~~~~~~~~~~~~~^^^^^^^^^^^^ +KeyError: 'logitude' + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/django/contrib/admin/utils.py", line 362, in label_for_field + field = _get_non_gfk_field(model._meta, name) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/contrib/admin/utils.py", line 330, in _get_non_gfk_field + field = opts.get_field(name) + ^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/db/models/options.py", line 685, in get_field + raise FieldDoesNotExist( +django.core.exceptions.FieldDoesNotExist: ProjectLocation has no field named 'logitude' + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/django/db/models/options.py", line 683, in get_field + return self.fields_map[field_name] + ~~~~~~~~~~~~~~~^^^^^^^^^^^^ +KeyError: 'logitude' + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/django/contrib/admin/utils.py", line 383, in label_for_field + attr = get_fields_from_path(model, name)[-1] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/contrib/admin/utils.py", line 547, in get_fields_from_path + fields.append(parent._meta.get_field(piece)) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/db/models/options.py", line 685, in get_field + raise FieldDoesNotExist( +django.core.exceptions.FieldDoesNotExist: ProjectLocation has no field named 'logitude' + +During handling of the above exception, another exception occurred: + +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 284, in _get_response_async + response = await sync_to_async( + ^^^^^^^^^^^^^^^^^^^^ + 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/template/response.py", line 114, in render + self.content = self.rendered_content + ^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/response.py", line 92, in rendered_content + return template.render(context, self._request) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/backends/django.py", line 107, in render + return self.template.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 171, in render + return self._render(context) + ^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/loader_tags.py", line 159, in render + return compiled_parent._render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/loader_tags.py", line 159, in render + return compiled_parent._render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/loader_tags.py", line 65, in render + result = block.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/loader_tags.py", line 65, in render + result = block.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/loader_tags.py", line 65, in render + result = block.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/contrib/admin/templatetags/base.py", line 45, in render + return super().render(context) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/library.py", line 359, in render + _dict = self.func(*resolved_args, **resolved_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/contrib/admin/templatetags/admin_list.py", line 344, in result_list + headers = list(result_headers(cl)) + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/contrib/admin/templatetags/admin_list.py", line 91, in result_headers + text, attr = label_for_field( + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/contrib/admin/utils.py", line 390, in label_for_field + raise AttributeError(message) +AttributeError: Unable to lookup 'logitude' on ProjectLocation or ProjectLocation +ERROR 2025-08-07 12:06:03,853 log Internal Server Error: /admin/projects/projectlocation/ +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/django/db/models/options.py", line 683, in get_field + return self.fields_map[field_name] + ~~~~~~~~~~~~~~~^^^^^^^^^^^^ +KeyError: 'logitude' + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/django/contrib/admin/utils.py", line 362, in label_for_field + field = _get_non_gfk_field(model._meta, name) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/contrib/admin/utils.py", line 330, in _get_non_gfk_field + field = opts.get_field(name) + ^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/db/models/options.py", line 685, in get_field + raise FieldDoesNotExist( +django.core.exceptions.FieldDoesNotExist: ProjectLocation has no field named 'logitude' + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/django/db/models/options.py", line 683, in get_field + return self.fields_map[field_name] + ~~~~~~~~~~~~~~~^^^^^^^^^^^^ +KeyError: 'logitude' + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/local/lib/python3.12/site-packages/django/contrib/admin/utils.py", line 383, in label_for_field + attr = get_fields_from_path(model, name)[-1] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/contrib/admin/utils.py", line 547, in get_fields_from_path + fields.append(parent._meta.get_field(piece)) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/db/models/options.py", line 685, in get_field + raise FieldDoesNotExist( +django.core.exceptions.FieldDoesNotExist: ProjectLocation has no field named 'logitude' + +During handling of the above exception, another exception occurred: + +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 284, in _get_response_async + response = await sync_to_async( + ^^^^^^^^^^^^^^^^^^^^ + 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/template/response.py", line 114, in render + self.content = self.rendered_content + ^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/response.py", line 92, in rendered_content + return template.render(context, self._request) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/backends/django.py", line 107, in render + return self.template.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 171, in render + return self._render(context) + ^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/loader_tags.py", line 159, in render + return compiled_parent._render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/loader_tags.py", line 159, in render + return compiled_parent._render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/loader_tags.py", line 65, in render + result = block.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/loader_tags.py", line 65, in render + result = block.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/loader_tags.py", line 65, in render + result = block.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/contrib/admin/templatetags/base.py", line 45, in render + return super().render(context) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/template/library.py", line 359, in render + _dict = self.func(*resolved_args, **resolved_kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/contrib/admin/templatetags/admin_list.py", line 344, in result_list + headers = list(result_headers(cl)) + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/contrib/admin/templatetags/admin_list.py", line 91, in result_headers + text, attr = label_for_field( + ^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/contrib/admin/utils.py", line 390, in label_for_field + raise AttributeError(message) +AttributeError: Unable to lookup 'logitude' on ProjectLocation or ProjectLocation +ERROR 2025-08-07 12:15:49,386 log Internal Server Error: /api/v1/projects/project/create/ +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 "/usr/local/lib/python3.12/site-packages/rest_framework/generics.py", line 194, in post + return self.create(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/mixins.py", line 19, in create + self.perform_create(serializer) + File "/usr/local/lib/python3.12/site-packages/rest_framework/mixins.py", line 24, in perform_create + 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/projects/serializers/project.py", line 72, in create + location = ProjectLocation.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 661, in create + obj = self.model(**kwargs) + ^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/db/models/base.py", line 569, in __init__ + raise TypeError( +TypeError: ProjectLocation() got unexpected keyword arguments: 'distrct' +ERROR 2025-08-07 12:22:59,261 log Internal Server Error: /api/v1/projects/project/list/ +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 "/usr/local/lib/python3.12/site-packages/rest_framework/generics.py", line 203, in get + return self.list(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/mixins.py", line 43, in list + return self.get_paginated_response(serializer.data) + ^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 797, in data + ret = super().data + ^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 251, in data + self._data = self.to_representation(self.instance) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 716, in to_representation + self.child.to_representation(item) for item in iterable + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 540, in to_representation + ret[field.field_name] = field.to_representation(attribute) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 525, in to_representation + for field in fields: + ^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 386, in _readable_fields + for field in self.fields.values(): + ^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/utils/functional.py", line 47, in __get__ + res = instance.__dict__[self.name] = self.func(instance) + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 374, in fields + for key, value in self.get_fields().items(): + ^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 1105, in get_fields + field_class, field_kwargs = self.build_field( + ^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 1251, in build_field + return self.build_unknown_field(field_name, model_class) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 1369, in build_unknown_field + raise ImproperlyConfigured( +django.core.exceptions.ImproperlyConfigured: Field name `location` is not valid for model `ProjectLocation` in `core.apps.projects.serializers.project_location.ProjectLocationListSerializer`. +ERROR 2025-08-07 12:23:00,420 log Internal Server Error: /api/v1/projects/project/list/ +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 "/usr/local/lib/python3.12/site-packages/rest_framework/generics.py", line 203, in get + return self.list(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/mixins.py", line 43, in list + return self.get_paginated_response(serializer.data) + ^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 797, in data + ret = super().data + ^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 251, in data + self._data = self.to_representation(self.instance) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 716, in to_representation + self.child.to_representation(item) for item in iterable + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 540, in to_representation + ret[field.field_name] = field.to_representation(attribute) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 525, in to_representation + for field in fields: + ^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 386, in _readable_fields + for field in self.fields.values(): + ^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/django/utils/functional.py", line 47, in __get__ + res = instance.__dict__[self.name] = self.func(instance) + ^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 374, in fields + for key, value in self.get_fields().items(): + ^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 1105, in get_fields + field_class, field_kwargs = self.build_field( + ^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 1251, in build_field + return self.build_unknown_field(field_name, model_class) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 1369, in build_unknown_field + raise ImproperlyConfigured( +django.core.exceptions.ImproperlyConfigured: Field name `location` is not valid for model `ProjectLocation` in `core.apps.projects.serializers.project_location.ProjectLocationListSerializer`. +ERROR 2025-08-07 12:30:41,279 log Internal Server Error: /api/v1/projects/project/8b40e979-0274-48d3-92f0-007bd2e11d71/update/ +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 "/usr/local/lib/python3.12/site-packages/rest_framework/generics.py", line 233, in patch + return self.partial_update(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/mixins.py", line 82, in partial_update + return self.update(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/mixins.py", line 67, in update + serializer.is_valid(raise_exception=True) + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 225, in is_valid + self._validated_data = self.run_validation(self.initial_data) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 444, in run_validation + value = self.to_internal_value(data) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 501, in to_internal_value + validated_value = field.run_validation(primitive_value) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 447, in run_validation + value = self.validate(value) + ^^^^^^^^^^^^^^^^^^^^ + File "/code/core/apps/projects/serializers/project_location.py", line 15, in validate + region = Region.objects.filter(id=data['region_id']).first() + ~~~~^^^^^^^^^^^^^ +KeyError: 'region_id' +ERROR 2025-08-07 12:34:40,832 log Internal Server Error: /api/v1/projects/project/8b40e979-0274-48d3-92f0-007bd2e11d71/update/ +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 "/usr/local/lib/python3.12/site-packages/rest_framework/generics.py", line 233, in patch + return self.partial_update(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/mixins.py", line 82, in partial_update + return self.update(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/mixins.py", line 67, in update + serializer.is_valid(raise_exception=True) + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 225, in is_valid + self._validated_data = self.run_validation(self.initial_data) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 444, in run_validation + value = self.to_internal_value(data) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 501, in to_internal_value + validated_value = field.run_validation(primitive_value) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 447, in run_validation + value = self.validate(value) + ^^^^^^^^^^^^^^^^^^^^ + File "/code/core/apps/projects/serializers/project_location.py", line 15, in validate + region = Region.objects.filter(id=data['region_id']).first() + ~~~~^^^^^^^^^^^^^ +KeyError: 'region_id' +ERROR 2025-08-07 12:34:43,292 log Internal Server Error: /api/v1/projects/project/8b40e979-0274-48d3-92f0-007bd2e11d71/update/ +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 "/usr/local/lib/python3.12/site-packages/rest_framework/generics.py", line 233, in patch + return self.partial_update(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/mixins.py", line 82, in partial_update + return self.update(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/mixins.py", line 67, in update + serializer.is_valid(raise_exception=True) + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 225, in is_valid + self._validated_data = self.run_validation(self.initial_data) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 444, in run_validation + value = self.to_internal_value(data) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 501, in to_internal_value + validated_value = field.run_validation(primitive_value) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/local/lib/python3.12/site-packages/rest_framework/serializers.py", line 447, in run_validation + value = self.validate(value) + ^^^^^^^^^^^^^^^^^^^^ + File "/code/core/apps/projects/serializers/project_location.py", line 15, in validate + region = Region.objects.filter(id=data['region_id']).first() + ~~~~^^^^^^^^^^^^^ +KeyError: 'region_id'