|
|
|
@ -54,3 +54,43 @@ class UserCertificatesListView(generics.ListAPIView): |
|
|
|
def get_queryset(self): |
|
|
|
return Certificate.objects.filter(student=self.request.user).order_by('-created_at') |
|
|
|
|
|
|
|
|
|
|
|
from rest_framework.viewsets import ModelViewSet |
|
|
|
from rest_framework.permissions import IsAdminUser |
|
|
|
from apps.certificate.serializers import AdminCertificateSerializer |
|
|
|
from django.db.models import Q |
|
|
|
|
|
|
|
class AdminCertificateViewSet(ModelViewSet): |
|
|
|
queryset = Certificate.objects.all() |
|
|
|
serializer_class = AdminCertificateSerializer |
|
|
|
permission_classes = [permissions.IsAuthenticated, IsAdminUser] |
|
|
|
authentication_classes = [TokenAuthentication] |
|
|
|
|
|
|
|
def get_queryset(self): |
|
|
|
queryset = Certificate.objects.all().select_related('student', 'course') |
|
|
|
|
|
|
|
# Search query |
|
|
|
search_query = self.request.query_params.get('search', None) |
|
|
|
if search_query: |
|
|
|
queryset = queryset.filter( |
|
|
|
Q(student__fullname__icontains=search_query) | |
|
|
|
Q(student__email__icontains=search_query) | |
|
|
|
Q(course__title__icontains=search_query) |
|
|
|
) |
|
|
|
|
|
|
|
# Filters |
|
|
|
status_param = self.request.query_params.get('status', None) |
|
|
|
if status_param: |
|
|
|
queryset = queryset.filter(status=status_param) |
|
|
|
|
|
|
|
course_id = self.request.query_params.get('course', None) |
|
|
|
if course_id: |
|
|
|
queryset = queryset.filter(course_id=course_id) |
|
|
|
|
|
|
|
student_id = self.request.query_params.get('student', None) |
|
|
|
if student_id: |
|
|
|
queryset = queryset.filter(student_id=student_id) |
|
|
|
|
|
|
|
return queryset.order_by('-created_at') |
|
|
|
|
|
|
|
|