69 lines
2.0 KiB
Python
69 lines
2.0 KiB
Python
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) |