Skip to content
Open
Show file tree
Hide file tree
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
2 changes: 1 addition & 1 deletion FusionIIIT/Fusion/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
url(r'^complaint/', include('applications.complaint_system.urls')),
url(r'^healthcenter/', include('applications.health_center.urls')),
url(r'^leave/', include('applications.leave.urls')),
url(r'^placement/', include('applications.placement_cell.urls')),
url(r'^placement-cell/', include('applications.placement_cell.api.urls')),
url(r'^filetracking/', include('applications.filetracking.urls')),
url(r'^spacs/', include('applications.scholarships.urls')),
url(r'^visitorhostel/', include('applications.visitor_hostel.urls')),
Expand Down
4 changes: 0 additions & 4 deletions FusionIIIT/applications/globals/api/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,6 @@
from applications.globals.models import (ExtraInfo, HoldsDesignation, DepartmentInfo,
Designation)

from applications.placement_cell.api.serializers import (SkillSerializer, HasSerializer,
EducationSerializer, CourseSerializer, ExperienceSerializer,
ProjectSerializer, AchievementSerializer, PublicationSerializer,
PatentSerializer, PlacementStatusSerializer, NotifyStudentSerializer)

User = get_user_model()

Expand Down
154 changes: 13 additions & 141 deletions FusionIIIT/applications/globals/api/views.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
from django.contrib.auth import get_user_model
from applications.academic_information.models import Student
from applications.placement_cell.models import (Achievement, Course, Education,
Experience, Has, Patent,
Project, Publication, Skill)

from applications.programme_curriculum.models import (
Course as CurriculumCourse, CourseSlot, CourseInstructor
)
Expand Down Expand Up @@ -148,42 +146,24 @@ def profile(request, username=None):
user = get_object_or_404(User, username=username) if username else request.user
profile = serializers.ExtraInfoSerializer(user.extrainfo).data

current = serializers.HoldsDesignationSerializer(user.current_designation.all(), many=True).data
if profile['user_type'] == 'student':
student = user.extrainfo.student
std_sem = student.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
project = serializers.ProjectSerializer(student.project_set.all(), many=True).data
achievement = serializers.AchievementSerializer(student.achievement_set.all(), many=True).data
publication = serializers.PublicationSerializer(student.publication_set.all(), many=True).data
patent = serializers.PatentSerializer(student.patent_set.all(), many=True).data
current = serializers.HoldsDesignationSerializer(user.current_designation.all(), many=True).data
resp = {
'profile' : profile,
'profile' : profile,
'semester_no' : std_sem,
'skills' : formatted_skills,
'education' : education,
'course' : course,
'experience' : experience,
'project' : project,
'achievement' : achievement,
'publication' : publication,
'patent' : patent,
'current' : current
'skills' : [],
'education' : [],
'course' : [],
'experience' : [],
'project' : [],
'achievement' : [],
'publication' : [],
'patent' : [],
'current' : current,
}
return Response(data=resp, status=status.HTTP_200_OK)
else:
current = serializers.HoldsDesignationSerializer(user.current_designation.all(), many=True).data
resp = {
'profile' : profile,
'semester_no' : None,
Expand All @@ -197,7 +177,7 @@ def profile(request, username=None):
'patent' : [],
'current' : current,
}
return Response(data=resp, status=status.HTTP_200_OK)
return Response(data=resp, status=status.HTTP_200_OK)

@api_view(['PUT'])
@permission_classes([IsAuthenticated])
Expand All @@ -214,82 +194,6 @@ def profile_update(request):
return Response(serializer.data, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

# For student-only
current = user.current_designation.filter(designation__name="student")
if not current:
return Response({'error': 'Cannot update'}, status=status.HTTP_400_BAD_REQUEST)

student = profile.student
if 'education' in request.data:
data = request.data
data['education']['unique_id'] = profile
serializer = serializers.EducationSerializer(data=data['education'])
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
elif 'skillsubmit' in request.data:
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, _ = 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(update_fields=['skill_rating'])

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'])
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
elif 'publicationsubmit' in request.data:
request.data['publicationsubmit']['unique_id'] = profile
serializer = serializers.PublicationSerializer(data=request.data['publicationsubmit'])
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
elif 'patentsubmit' in request.data:
request.data['patentsubmit']['unique_id'] = profile
serializer = serializers.PatentSerializer(data=request.data['patentsubmit'])
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
elif 'coursesubmit' in request.data:
request.data['coursesubmit']['unique_id'] = profile
serializer = serializers.CourseSerializer(data=request.data['coursesubmit'])
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
elif 'projectsubmit' in request.data:
request.data['projectsubmit']['unique_id'] = profile
serializer = serializers.ProjectSerializer(data=request.data['projectsubmit'])
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
elif 'experiencesubmit' in request.data:
request.data['experiencesubmit']['unique_id'] = profile
serializer = serializers.ExperienceSerializer(data=request.data['experiencesubmit'])
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
return Response({'error': 'Cannot update'}, status=status.HTTP_400_BAD_REQUEST)

@api_view(['DELETE'])
Expand All @@ -301,38 +205,6 @@ def profile_delete(request, id):
# All records are scoped to the requesting user's own profile via unique_id__extrainfo.
# Using get_object_or_404 with the ownership filter ensures that a record belonging
# to another user is indistinguishable from a missing record (no ID enumeration).
if 'deleteskill' in request.data:
skill = get_object_or_404(Has, id=id, unique_id__extrainfo=profile)
skill.delete()
return Response({'message': 'Skill deleted successfully'}, status=status.HTTP_200_OK)
elif 'deleteedu' in request.data:
education = get_object_or_404(Education, id=id, unique_id__extrainfo=profile)
education.delete()
return Response({'message': 'Education deleted successfully'}, status=status.HTTP_200_OK)
elif 'deletecourse' in request.data:
course = get_object_or_404(Course, id=id, unique_id__extrainfo=profile)
course.delete()
return Response({'message': 'Course deleted successfully'}, status=status.HTTP_200_OK)
elif 'deleteexp' in request.data:
experience = get_object_or_404(Experience, id=id, unique_id__extrainfo=profile)
experience.delete()
return Response({'message': 'Experience deleted successfully'}, status=status.HTTP_200_OK)
elif 'deletepro' in request.data:
project = get_object_or_404(Project, id=id, unique_id__extrainfo=profile)
project.delete()
return Response({'message': 'Project deleted successfully'}, status=status.HTTP_200_OK)
elif 'deleteach' in request.data:
achievement = get_object_or_404(Achievement, id=id, unique_id__extrainfo=profile)
achievement.delete()
return Response({'message': 'Achievement deleted successfully'}, status=status.HTTP_200_OK)
elif 'deletepub' in request.data:
publication = get_object_or_404(Publication, id=id, unique_id__extrainfo=profile)
publication.delete()
return Response({'message': 'Publication deleted successfully'}, status=status.HTTP_200_OK)
elif 'deletepat' in request.data:
patent = get_object_or_404(Patent, id=id, unique_id__extrainfo=profile)
patent.delete()
return Response({'message': 'Patent deleted successfully'}, status=status.HTTP_200_OK)
return Response({'error': 'Wrong attribute'}, status=status.HTTP_400_BAD_REQUEST)

@api_view(['POST'])
Expand Down
Loading
Loading