from django_filters.rest_framework import DjangoFilterBackend from rest_framework import generics, permissions from rest_framework.filters import OrderingFilter import csv from django.http import HttpResponse, HttpResponseNotFound from account import models from account.models import User from account.serializers import back as serializers class RoleLstView(generics.ListCreateAPIView): serializer_class = serializers.RoleSerializer queryset = models.Role.objects.all() class UserRoleLstView(generics.ListCreateAPIView): serializer_class = serializers.UserRoleSerializer queryset = models.UserRole.objects.all() class UserLstView(generics.ListCreateAPIView): """User list create view.""" queryset = User.objects.prefetch_related('roles') serializer_class = serializers.BackUserSerializer permission_classes = (permissions.IsAdminUser,) filter_backends = (DjangoFilterBackend, OrderingFilter) filterset_fields = ( 'email_confirmed', 'is_staff', 'is_active', 'is_superuser', 'roles', ) ordering_fields = ( 'email_confirmed', 'is_staff', 'is_active', 'is_superuser', 'roles', 'last_login' ) class UserRUDView(generics.RetrieveUpdateDestroyAPIView): """User RUD view.""" queryset = User.objects.all() serializer_class = serializers.BackDetailUserSerializer permission_classes = (permissions.IsAdminUser,) lookup_field = 'id' def get_user_csv(request, user_id): try: user = User.objects.get(id=user_id).values_list() except User.DoesNotExist: return HttpResponseNotFound("User not found") # # # response = HttpResponse(content_type='text/csv') # response['Content-Disposition'] = f'attachment; filename="{user}.csv"' # # writer = csv.writer(response) # writer.writerow(['First row', 'Foo', 'Bar', 'Baz']) # writer.writerow(['Second row', 'A', 'B', 'C', '"Testing"', "Here's a quote"]) # # return response return HttpResponseNotFound(user)