gault-millau/apps/account/views/back.py
2019-12-10 17:09:43 +03:00

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)