kamau1 commited on
Commit
bff84fe
Β·
1 Parent(s): 9309d79

fix: define ProjectTeam model to resolve NameError in project team retrieval

Browse files
docs/devlogs/server/runtimeerror.txt CHANGED
@@ -1,43 +1,124 @@
1
- ===== Application Startup at 2025-11-23 13:37:17 =====
2
 
3
  INFO: Started server process [7]
4
  INFO: Waiting for application startup.
5
- INFO: 2025-11-23T13:37:35 - app.main: ============================================================
6
- INFO: 2025-11-23T13:37:35 - app.main: πŸš€ SwiftOps API v1.0.0 | PRODUCTION
7
- INFO: 2025-11-23T13:37:35 - app.main: ============================================================
8
- INFO: 2025-11-23T13:37:35 - app.main: πŸ“¦ Database:
9
- INFO: 2025-11-23T13:37:36 - app.main: βœ“ Connected | 44 tables | 5 users
10
- INFO: 2025-11-23T13:37:36 - app.main: πŸ’Ύ Cache & Sessions:
11
- INFO: 2025-11-23T13:37:37 - app.services.otp_service: βœ… OTP Service initialized with Redis storage
12
- INFO: 2025-11-23T13:37:37 - app.main: βœ“ Redis: Connected
13
- INFO: 2025-11-23T13:37:37 - app.main: πŸ”Œ External Services:
14
- INFO: 2025-11-23T13:37:38 - app.main: βœ“ Cloudinary: Connected
15
- INFO: 2025-11-23T13:37:38 - app.main: βœ“ Resend: Configured
16
- INFO: 2025-11-23T13:37:38 - app.main: βœ“ WASender: Connected
17
- INFO: 2025-11-23T13:37:38 - app.main: βœ“ Supabase: Connected | 6 buckets
18
- INFO: 2025-11-23T13:37:38 - app.main: ============================================================
19
- INFO: 2025-11-23T13:37:38 - app.main: βœ… Startup complete | Ready to serve requests
20
- INFO: 2025-11-23T13:37:38 - app.main: ============================================================
21
  INFO: Application startup complete.
22
  INFO: Uvicorn running on http://0.0.0.0:7860 (Press CTRL+C to quit)
23
- INFO: 10.16.18.114:2868 - "GET /health HTTP/1.1" 200 OK
24
- INFO: 10.16.8.187:29039 - "GET /health HTTP/1.1" 200 OK
25
- INFO: 10.16.18.114:64199 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
26
- INFO: 10.16.8.187:29039 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a HTTP/1.1" 200 OK
27
- INFO: 10.16.18.114:64199 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions HTTP/1.1" 200 OK
28
- INFO: 10.16.18.114:37420 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/project-roles HTTP/1.1" 200 OK
29
- INFO: 10.16.3.82:55171 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team HTTP/1.1" 405 Method Not Allowed
30
- INFO: 10.16.8.187:29039 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
31
- INFO: 10.16.18.114:64025 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/subcontractors HTTP/1.1" 200 OK
32
- INFO: 10.16.44.15:26106 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
33
- INFO: 10.16.18.114:64025 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team HTTP/1.1" 405 Method Not Allowed
34
- INFO: 10.16.8.187:13552 - "GET /api/v1/users?skip=0&limit=100 HTTP/1.1" 200 OK
35
- INFO: 10.16.3.82:36303 - "GET /api/v1/users?skip=0&limit=100 HTTP/1.1" 200 OK
36
- INFO: 2025-11-23T13:38:55 - app.core.supabase_auth: Session refreshed successfully
37
- INFO: 2025-11-23T13:38:55 - app.api.v1.auth: βœ… Token refreshed successfully for: nadina73@nembors.com
38
- INFO: 10.16.3.82:19833 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
39
- INFO: 10.16.18.114:20569 - "GET /health HTTP/1.1" 200 OK
40
- INFO: 10.16.8.187:55429 - "GET /health HTTP/1.1" 200 OK
41
- INFO: 10.16.8.187:14494 - "GET /health HTTP/1.1" 200 OK
42
- INFO: 10.16.44.15:63244 - "GET /openapi.json HTTP/1.1" 200 OK
43
- INFO: 10.16.44.15:7374 - "GET /health HTTP/1.1" 200 OK
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ===== Application Startup at 2025-11-23 13:44:29 =====
2
 
3
  INFO: Started server process [7]
4
  INFO: Waiting for application startup.
5
+ INFO: 2025-11-23T13:44:42 - app.main: ============================================================
6
+ INFO: 2025-11-23T13:44:42 - app.main: πŸš€ SwiftOps API v1.0.0 | PRODUCTION
7
+ INFO: 2025-11-23T13:44:42 - app.main: ============================================================
8
+ INFO: 2025-11-23T13:44:42 - app.main: πŸ“¦ Database:
9
+ INFO: 2025-11-23T13:44:43 - app.main: βœ“ Connected | 44 tables | 5 users
10
+ INFO: 2025-11-23T13:44:43 - app.main: πŸ’Ύ Cache & Sessions:
11
+ INFO: 2025-11-23T13:44:44 - app.services.otp_service: βœ… OTP Service initialized with Redis storage
12
+ INFO: 2025-11-23T13:44:44 - app.main: βœ“ Redis: Connected
13
+ INFO: 2025-11-23T13:44:44 - app.main: πŸ”Œ External Services:
14
+ INFO: 2025-11-23T13:44:45 - app.main: βœ“ Cloudinary: Connected
15
+ INFO: 2025-11-23T13:44:45 - app.main: βœ“ Resend: Configured
16
+ INFO: 2025-11-23T13:44:45 - app.main: βœ“ WASender: Connected
17
+ INFO: 2025-11-23T13:44:45 - app.main: βœ“ Supabase: Connected | 6 buckets
18
+ INFO: 2025-11-23T13:44:45 - app.main: ============================================================
19
+ INFO: 2025-11-23T13:44:45 - app.main: βœ… Startup complete | Ready to serve requests
20
+ INFO: 2025-11-23T13:44:45 - app.main: ============================================================
21
  INFO: Application startup complete.
22
  INFO: Uvicorn running on http://0.0.0.0:7860 (Press CTRL+C to quit)
23
+ INFO: 10.16.18.114:6478 - "GET /health HTTP/1.1" 200 OK
24
+ INFO: 10.16.8.187:56900 - "GET /api/v1/users?skip=0&limit=100 HTTP/1.1" 200 OK
25
+ INFO: 10.16.8.187:56724 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
26
+ INFO: 10.16.18.108:1974 - "GET /health HTTP/1.1" 200 OK
27
+ INFO: 10.16.18.114:32131 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions HTTP/1.1" 200 OK
28
+ INFO: 10.16.8.187:56724 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/project-roles HTTP/1.1" 200 OK
29
+ INFO: 10.16.18.108:1974 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
30
+ INFO: 10.16.8.187:17966 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/subcontractors HTTP/1.1" 200 OK
31
+ INFO: 10.16.18.114:34053 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a HTTP/1.1" 200 OK
32
+ INFO: 10.16.8.187:47628 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
33
+ INFO: 10.16.8.187:58737 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team HTTP/1.1" 500 Internal Server Error
34
+ ERROR: Exception in ASGI application
35
+ Traceback (most recent call last):
36
+ File "/usr/local/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 426, in run_asgi
37
+ result = await app( # type: ignore[func-returns-value]
38
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
39
+ File "/usr/local/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 84, in __call__
40
+ return await self.app(scope, receive, send)
41
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
42
+ File "/usr/local/lib/python3.11/site-packages/fastapi/applications.py", line 1106, in __call__
43
+ await super().__call__(scope, receive, send)
44
+ File "/usr/local/lib/python3.11/site-packages/starlette/applications.py", line 122, in __call__
45
+ await self.middleware_stack(scope, receive, send)
46
+ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 184, in __call__
47
+ raise exc
48
+ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 162, in __call__
49
+ await self.app(scope, receive, _send)
50
+ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 91, in __call__
51
+ await self.simple_response(scope, receive, send, request_headers=headers)
52
+ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 146, in simple_response
53
+ await self.app(scope, receive, send)
54
+ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 79, in __call__
55
+ raise exc
56
+ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 68, in __call__
57
+ await self.app(scope, receive, sender)
58
+ File "/usr/local/lib/python3.11/site-packages/fastapi/middleware/asyncexitstack.py", line 20, in __call__
59
+ raise e
60
+ File "/usr/local/lib/python3.11/site-packages/fastapi/middleware/asyncexitstack.py", line 17, in __call__
61
+ await self.app(scope, receive, send)
62
+ File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 718, in __call__
63
+ await route.handle(scope, receive, send)
64
+ File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 276, in handle
65
+ await self.app(scope, receive, send)
66
+ File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 66, in app
67
+ response = await func(request)
68
+ ^^^^^^^^^^^^^^^^^^^
69
+ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 274, in app
70
+ raw_response = await run_endpoint_function(
71
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
72
+ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 191, in run_endpoint_function
73
+ return await dependant.call(**values)
74
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
75
+ File "/app/src/app/api/v1/projects.py", line 692, in get_project_team
76
+ team_members = db.query(ProjectTeam).filter(
77
+ ^^^^^^^^^^^
78
+ NameError: name 'ProjectTeam' is not defined
79
+ INFO: 10.16.18.108:1974 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team HTTP/1.1" 500 Internal Server Error
80
+ ERROR: Exception in ASGI application
81
+ Traceback (most recent call last):
82
+ File "/usr/local/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 426, in run_asgi
83
+ result = await app( # type: ignore[func-returns-value]
84
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
85
+ File "/usr/local/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 84, in __call__
86
+ return await self.app(scope, receive, send)
87
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
88
+ File "/usr/local/lib/python3.11/site-packages/fastapi/applications.py", line 1106, in __call__
89
+ await super().__call__(scope, receive, send)
90
+ File "/usr/local/lib/python3.11/site-packages/starlette/applications.py", line 122, in __call__
91
+ await self.middleware_stack(scope, receive, send)
92
+ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 184, in __call__
93
+ raise exc
94
+ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 162, in __call__
95
+ await self.app(scope, receive, _send)
96
+ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 91, in __call__
97
+ await self.simple_response(scope, receive, send, request_headers=headers)
98
+ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 146, in simple_response
99
+ await self.app(scope, receive, send)
100
+ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 79, in __call__
101
+ raise exc
102
+ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 68, in __call__
103
+ await self.app(scope, receive, sender)
104
+ File "/usr/local/lib/python3.11/site-packages/fastapi/middleware/asyncexitstack.py", line 20, in __call__
105
+ raise e
106
+ File "/usr/local/lib/python3.11/site-packages/fastapi/middleware/asyncexitstack.py", line 17, in __call__
107
+ await self.app(scope, receive, send)
108
+ File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 718, in __call__
109
+ await route.handle(scope, receive, send)
110
+ File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 276, in handle
111
+ await self.app(scope, receive, send)
112
+ File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 66, in app
113
+ response = await func(request)
114
+ ^^^^^^^^^^^^^^^^^^^
115
+ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 274, in app
116
+ raw_response = await run_endpoint_function(
117
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
118
+ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 191, in run_endpoint_function
119
+ return await dependant.call(**values)
120
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
121
+ File "/app/src/app/api/v1/projects.py", line 692, in get_project_team
122
+ team_members = db.query(ProjectTeam).filter(
123
+ ^^^^^^^^^^^
124
+ NameError: name 'ProjectTeam' is not defined
src/app/api/v1/projects.py CHANGED
@@ -11,6 +11,7 @@ import logging
11
  from app.api.deps import get_db, get_current_active_user
12
  from app.models.user import User
13
  from app.models.project import Project
 
14
  from app.schemas.project import (
15
  ProjectCreate, ProjectUpdate, ProjectResponse, ProjectListResponse,
16
  ProjectStatusUpdate, ProjectClose, ProjectSetup, ProjectSetupResponse,
 
11
  from app.api.deps import get_db, get_current_active_user
12
  from app.models.user import User
13
  from app.models.project import Project
14
+ from app.models.project_team import ProjectTeam
15
  from app.schemas.project import (
16
  ProjectCreate, ProjectUpdate, ProjectResponse, ProjectListResponse,
17
  ProjectStatusUpdate, ProjectClose, ProjectSetup, ProjectSetupResponse,