Kaadan commited on
Commit
2700a3d
·
1 Parent(s): c3f3b2d

adding assessment details

Browse files
backend/api/application_routes.py CHANGED
@@ -4,7 +4,7 @@ from typing import List
4
  import json
5
 
6
  from database.database import get_db
7
- from schemas import ApplicationCreate, ApplicationUpdate, ApplicationResponse, ApplicationListResponse, ApplicationDetailedResponse, ApplicationDetailedListResponse, MyApplicationsListResponse, MyApplicationResponse, MyApplicationsJob, MyApplicationsAssessment
8
  from services import create_application, get_application, get_applications_by_job_and_assessment, calculate_application_score, get_applications_by_user
9
  from services.assessment_service import get_assessment
10
  from services.job_service import get_job
@@ -56,8 +56,18 @@ def get_applications_list(jid: str, aid: str, page: int = 1, limit: int = 10, db
56
  # Create response object that matches technical requirements exactly
57
  application_response = {
58
  'id': application.id,
 
 
 
 
59
  'score': score,
60
  'passing_score': assessment.passing_score,
 
 
 
 
 
 
61
  'user': {
62
  'id': user.id if user else None,
63
  'first_name': user.first_name if user else None,
@@ -179,6 +189,19 @@ def get_application_detail(jid: str, aid: str, id: str, db: Session = Depends(ge
179
  enriched_answers.append(enriched_answer)
180
 
181
  # Create the detailed response
 
 
 
 
 
 
 
 
 
 
 
 
 
182
  application_detail = ApplicationDetailedResponse(
183
  id=application.id,
184
  job_id=application.job_id,
@@ -187,6 +210,7 @@ def get_application_detail(jid: str, aid: str, id: str, db: Session = Depends(ge
187
  answers=enriched_answers,
188
  score=score,
189
  passing_score=assessment.passing_score,
 
190
  user={
191
  'id': user.id if user else None,
192
  'first_name': user.first_name if user else None,
 
4
  import json
5
 
6
  from database.database import get_db
7
+ from schemas import ApplicationCreate, ApplicationUpdate, ApplicationResponse, ApplicationListResponse, ApplicationDetailedResponse, ApplicationDetailedListResponse, MyApplicationsListResponse, MyApplicationResponse, MyApplicationsJob, MyApplicationsAssessment, ApplicationAssessment
8
  from services import create_application, get_application, get_applications_by_job_and_assessment, calculate_application_score, get_applications_by_user
9
  from services.assessment_service import get_assessment
10
  from services.job_service import get_job
 
56
  # Create response object that matches technical requirements exactly
57
  application_response = {
58
  'id': application.id,
59
+ 'job_id': application.job_id,
60
+ 'assessment_id': application.assessment_id,
61
+ 'user_id': application.user_id,
62
+ 'answers': [], # Not including answers in the list view for performance
63
  'score': score,
64
  'passing_score': assessment.passing_score,
65
+ 'assessment_details': {
66
+ 'id': assessment.id,
67
+ 'title': assessment.title,
68
+ 'passing_score': assessment.passing_score,
69
+ 'created_at': None # Assessment model doesn't have created_at field
70
+ },
71
  'user': {
72
  'id': user.id if user else None,
73
  'first_name': user.first_name if user else None,
 
189
  enriched_answers.append(enriched_answer)
190
 
191
  # Create the detailed response
192
+ assessment_details_obj = None
193
+ if assessment:
194
+ try:
195
+ assessment_details_obj = ApplicationAssessment(
196
+ id=assessment.id,
197
+ title=assessment.title,
198
+ passing_score=assessment.passing_score,
199
+ created_at=None # Assessment model doesn't have created_at field
200
+ )
201
+ except Exception as e:
202
+ logger.error(f"Error creating assessment details: {str(e)}")
203
+ assessment_details_obj = None
204
+
205
  application_detail = ApplicationDetailedResponse(
206
  id=application.id,
207
  job_id=application.job_id,
 
210
  answers=enriched_answers,
211
  score=score,
212
  passing_score=assessment.passing_score,
213
+ assessment_details=assessment_details_obj,
214
  user={
215
  'id': user.id if user else None,
216
  'first_name': user.first_name if user else None,
backend/schemas/__init__.py CHANGED
@@ -1,11 +1,11 @@
1
  from .user import UserBase, UserCreate, UserUpdate, UserResponse, UserLogin, UserLogout, TokenResponse
2
  from .job import JobBase, JobCreate, JobUpdate, JobResponse, JobListResponse
3
  from .assessment import AssessmentBase, AssessmentCreate, AssessmentUpdate, AssessmentResponse, AssessmentListResponse, AssessmentDetailedResponse, AssessmentRegenerate
4
- from .application import ApplicationBase, ApplicationCreate, ApplicationUpdate, ApplicationResponse, ApplicationListResponse, ApplicationDetailedResponse, ApplicationDetailedListResponse, MyApplicationsListResponse, MyApplicationResponse, MyApplicationsJob, MyApplicationsAssessment
5
 
6
  __all__ = [
7
  "UserBase", "UserCreate", "UserUpdate", "UserResponse", "UserLogin", "UserLogout", "TokenResponse",
8
  "JobBase", "JobCreate", "JobUpdate", "JobResponse", "JobListResponse",
9
  "AssessmentBase", "AssessmentCreate", "AssessmentUpdate", "AssessmentResponse", "AssessmentListResponse", "AssessmentDetailedResponse", "AssessmentRegenerate",
10
- "ApplicationBase", "ApplicationCreate", "ApplicationUpdate", "ApplicationResponse", "ApplicationListResponse", "ApplicationDetailedResponse", "ApplicationDetailedListResponse", "MyApplicationsListResponse", "MyApplicationResponse", "MyApplicationsJob", "MyApplicationsAssessment"
11
  ]
 
1
  from .user import UserBase, UserCreate, UserUpdate, UserResponse, UserLogin, UserLogout, TokenResponse
2
  from .job import JobBase, JobCreate, JobUpdate, JobResponse, JobListResponse
3
  from .assessment import AssessmentBase, AssessmentCreate, AssessmentUpdate, AssessmentResponse, AssessmentListResponse, AssessmentDetailedResponse, AssessmentRegenerate
4
+ from .application import ApplicationBase, ApplicationCreate, ApplicationUpdate, ApplicationResponse, ApplicationListResponse, ApplicationDetailedResponse, ApplicationDetailedListResponse, MyApplicationsListResponse, MyApplicationResponse, MyApplicationsJob, MyApplicationsAssessment, ApplicationAssessment
5
 
6
  __all__ = [
7
  "UserBase", "UserCreate", "UserUpdate", "UserResponse", "UserLogin", "UserLogout", "TokenResponse",
8
  "JobBase", "JobCreate", "JobUpdate", "JobResponse", "JobListResponse",
9
  "AssessmentBase", "AssessmentCreate", "AssessmentUpdate", "AssessmentResponse", "AssessmentListResponse", "AssessmentDetailedResponse", "AssessmentRegenerate",
10
+ "ApplicationBase", "ApplicationCreate", "ApplicationUpdate", "ApplicationResponse", "ApplicationListResponse", "ApplicationDetailedResponse", "ApplicationDetailedListResponse", "MyApplicationsListResponse", "MyApplicationResponse", "MyApplicationsJob", "MyApplicationsAssessment", "ApplicationAssessment"
11
  ]
backend/schemas/application.py CHANGED
@@ -44,10 +44,17 @@ class ApplicationCreate(ApplicationBase):
44
  class ApplicationUpdate(BaseModel):
45
  answers: Optional[List[ApplicationAnswer]] = Field(None, min_items=1)
46
 
 
 
 
 
 
 
47
  class ApplicationResponse(ApplicationBase):
48
  id: str
49
  score: Optional[float] = None
50
  passing_score: Optional[float] = None
 
51
 
52
  class Config:
53
  from_attributes = True
 
44
  class ApplicationUpdate(BaseModel):
45
  answers: Optional[List[ApplicationAnswer]] = Field(None, min_items=1)
46
 
47
+ class ApplicationAssessment(BaseModel):
48
+ id: str
49
+ title: str
50
+ passing_score: Optional[int] = None
51
+ created_at: Optional[str] = None
52
+
53
  class ApplicationResponse(ApplicationBase):
54
  id: str
55
  score: Optional[float] = None
56
  passing_score: Optional[float] = None
57
+ assessment_details: Optional[ApplicationAssessment] = None
58
 
59
  class Config:
60
  from_attributes = True