Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 35 additions & 20 deletions FusionIIIT/applications/globals/api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -140,17 +140,24 @@ def update_last_selected_role(request):

return Response({'message': 'last_selected_role updated successfully'}, status=status.HTTP_200_OK)

# This API is only for student profile. For faculty profile, use eis_profile views
@api_view(['GET'])
def profile(request, username=None):
user = get_object_or_404(User, username=username) if username else request.user
user_detail = serializers.UserSerializer(user).data
profile = serializers.ExtraInfoSerializer(user.extrainfo).data

print(user)

if profile['user_type'] == 'student':
student = user.extrainfo.student
skills = serializers.HasSerializer(student.has_set.all(),many=True).data
std_sem = Student.objects.get(id=student.id).curr_semester_no
skills = list(
Has.objects.filter(unique_id_id=student)
.select_related("skill_id")
.values("skill_id__skill", "skill_rating")
)
formatted_skills = [
{"skill_name": skill["skill_id__skill"], "skill_rating": skill["skill_rating"]}
for skill in skills
]
education = serializers.EducationSerializer(student.education_set.all(), many=True).data
course = serializers.CourseSerializer(student.course_set.all(), many=True).data
experience = serializers.ExperienceSerializer(student.experience_set.all(), many=True).data
Expand All @@ -160,9 +167,9 @@ def profile(request, username=None):
patent = serializers.PatentSerializer(student.patent_set.all(), many=True).data
current = serializers.HoldsDesignationSerializer(user.current_designation.all(), many=True).data
resp = {
'user' : user_detail,
'profile' : profile,
'skills' : skills,
'semester_no' : std_sem,
'skills' : formatted_skills,
'education' : education,
'course' : course,
'experience' : experience,
Expand All @@ -173,15 +180,8 @@ def profile(request, username=None):
'current' : current
}
return Response(data=resp, status=status.HTTP_200_OK)
elif profile['user_type'] == 'faculty':
print(username)
return redirect('/eis/api/profile/' + (username+'/' if username else ''))
elif profile['user_type'] == 'staff':
resp = {
'user' : user_detail,
'profile' : profile,
}
return Response(data=resp, status=status.HTTP_200_OK)
else:
return Response(data={'error': 'User is not a student'}, status=status.HTTP_400_BAD_REQUEST)

@api_view(['PUT'])
def profile_update(request):
Expand All @@ -205,11 +205,26 @@ def profile_update(request):
return Response(serializer.data, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
elif 'skillsubmit' in request.data:
serializer = serializers.HasSerializer(data=request.data['skillsubmit'])
if serializer.is_valid():
serializer.save(unique_id=student)
return Response(serializer.data, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
try:
skill_data = request.data['skillsubmit']
skill_id = skill_data['skill_id']
skill_name = skill_id['skill_name']
skill_rating = skill_data['skill_rating']

if not skill_name or skill_rating is None:
return Response({"error": "Missing skill_name or skill_rating"}, status=status.HTTP_400_BAD_REQUEST)

skill, created = Skill.objects.get_or_create(skill=skill_name)
has_obj, created = Has.objects.get_or_create(skill_id=skill, unique_id=student, defaults={"skill_rating": skill_rating})
if not created:
has_obj.skill_rating = skill_rating
has_obj.save()

return Response({"message": "Skill added successfully"}, status=status.HTTP_200_OK)

except Exception as e:
return Response({"error": str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)

elif 'achievementsubmit' in request.data:
request.data['achievementsubmit']['unique_id'] = profile
serializer = serializers.AchievementSerializer(data=request.data['achievementsubmit'])
Expand Down