diff --git a/apps/account/serializers/back.py b/apps/account/serializers/back.py index c1a1c6d4..57c3fb42 100644 --- a/apps/account/serializers/back.py +++ b/apps/account/serializers/back.py @@ -1,6 +1,7 @@ """Back account serializers""" from rest_framework import serializers from account import models +from account.models import User class RoleSerializer(serializers.ModelSerializer): @@ -18,4 +19,33 @@ class UserRoleSerializer(serializers.ModelSerializer): fields = [ 'user', 'role' - ] \ No newline at end of file + ] + + +class BackUserSerializer(serializers.ModelSerializer): + class Meta: + model = User + fields = '__all__' + extra_kwargs = { + 'password': {'write_only': True} + } + read_only_fields = ('old_password', 'last_login', 'date_joined') + + def create(self, validated_data): + user = super().create(validated_data) + user.set_password(validated_data['password']) + user.save() + return user + + +class BackDetailUserSerializer(BackUserSerializer): + class Meta: + model = User + exclude = ('password',) + read_only_fields = ('old_password', 'last_login', 'date_joined') + + def create(self, validated_data): + user = super().create(validated_data) + user.set_password(validated_data['password']) + user.save() + return user diff --git a/apps/account/urls/back.py b/apps/account/urls/back.py index ee2e4148..630a4cb9 100644 --- a/apps/account/urls/back.py +++ b/apps/account/urls/back.py @@ -8,5 +8,6 @@ app_name = 'account' urlpatterns = [ path('role/', views.RoleLstView.as_view(), name='role-list-create'), path('user-role/', views.UserRoleLstView.as_view(), name='user-role-list-create'), - + path('user/', views.UserLstView.as_view(), name='user-list-create'), + path('user//', views.UserRUDView.as_view(), name='user-rud'), ] diff --git a/apps/account/views/back.py b/apps/account/views/back.py index 8799f915..4ce4fdfc 100644 --- a/apps/account/views/back.py +++ b/apps/account/views/back.py @@ -1,4 +1,7 @@ -from rest_framework import generics +from django_filters.rest_framework import DjangoFilterBackend, filters +from rest_framework import generics, permissions + +from account.models import User from account.serializers import back as serializers from account import models @@ -10,4 +13,28 @@ class RoleLstView(generics.ListCreateAPIView): class UserRoleLstView(generics.ListCreateAPIView): serializer_class = serializers.UserRoleSerializer - queryset = models.Role.objects.all() \ No newline at end of file + queryset = models.Role.objects.all() + + +class UserLstView(generics.ListCreateAPIView): + """User list create view.""" + queryset = User.objects.all() + serializer_class = serializers.BackUserSerializer + permission_classes = (permissions.IsAdminUser,) + filter_backends = (DjangoFilterBackend, filters.OrderingFilter,) + filterset_fields = ( + 'email_confirmed', + 'is_staff', + 'is_active', + 'is_superuser', + 'roles', + ) + ordering_fields = '__all__' + + +class UserRUDView(generics.RetrieveUpdateDestroyAPIView): + """User RUD view.""" + queryset = User.objects.all() + serializer_class = serializers.BackDetailUserSerializer + permission_classes = (permissions.IsAdminUser,) + lookup_field = 'id' diff --git a/project/settings/local.py b/project/settings/local.py index f9a096fe..5a9e7413 100644 --- a/project/settings/local.py +++ b/project/settings/local.py @@ -43,8 +43,8 @@ INSTALLED_APPS.append('transfer.apps.TransferConfig') DATABASES.update({ 'legacy': { 'ENGINE': 'django.db.backends.mysql', - 'HOST': '172.22.0.1', - # 'HOST': 'mysql_db', + # 'HOST': '172.22.0.1', + 'HOST': 'mysql_db', 'PORT': 3306, 'NAME': 'dev', 'USER': 'dev', @@ -52,41 +52,41 @@ DATABASES.update({ # LOGGING -LOGGING = { - 'version': 1, - 'disable_existing_loggers': False, - 'filters': { - 'require_debug_false': { - '()': 'django.utils.log.RequireDebugFalse', - }, - 'require_debug_true': { - '()': 'django.utils.log.RequireDebugTrue', - }, - }, - 'handlers': { - 'console': { - 'level': 'DEBUG', - 'filters': ['require_debug_true'], - 'class': 'logging.StreamHandler', - }, - 'null': { - 'class': 'logging.NullHandler', - }, - }, - 'loggers': { - 'django': { - 'handlers': ['console'], - }, - 'py.warnings': { - 'handlers': ['console'], - }, - 'django.db.backends': { - 'handlers': ['console', ], - 'level': 'DEBUG', - 'propagate': False, - }, - } -} +# LOGGING = { +# 'version': 1, +# 'disable_existing_loggers': False, +# 'filters': { +# 'require_debug_false': { +# '()': 'django.utils.log.RequireDebugFalse', +# }, +# 'require_debug_true': { +# '()': 'django.utils.log.RequireDebugTrue', +# }, +# }, +# 'handlers': { +# 'console': { +# 'level': 'DEBUG', +# 'filters': ['require_debug_true'], +# 'class': 'logging.StreamHandler', +# }, +# 'null': { +# 'class': 'logging.NullHandler', +# }, +# }, +# 'loggers': { +# 'django': { +# 'handlers': ['console'], +# }, +# 'py.warnings': { +# 'handlers': ['console'], +# }, +# 'django.db.backends': { +# 'handlers': ['console', ], +# 'level': 'DEBUG', +# 'propagate': False, +# }, +# } +# } # ELASTICSEARCH SETTINGS