def create(self, request): LOGGER.debug("Creating a new user") serializer = UserSerializer(data=request.data) if serializer.is_valid(): myuser = {} myuser["username"] = serializer.data["username"] myuser["password"] = serializer.data["password"] # optional fields if "first_name" in serializer.data and serializer.data[ "first_name"]: myuser["first_name"] = serializer.data["first_name"] if "last_name" in serializer.data and serializer.data["last_name"]: myuser["last_name"] = serializer.data["last_name"] if "email" in serializer.data and serializer.data["email"]: myuser["email"] = serializer.data["email"] user = create_user(myuser) serializer = UserSerializer(user) return Response(serializer.data, status.HTTP_201_CREATED) else: return Response(serializer.errors, status.HTTP_400_BAD_REQUEST)
def myuser(request, pk): try: user = User.objects.get(username=pk) serializer = UserSerializer(user) return Response(serializer.data) except Exception as e: return Response(str(e), status=status.HTTP_500_INTERNAL_SERVER_ERROR)
def admin_users_list_view(request): if request.method == 'GET': role = 0 try: role = int(request.GET.get('role', 0)) except: pass if role == 0: users = User.objects.all() else: users = User.objects.filter(user_type=role) return Response(data=UserSerializer(users, many=True).data, status=status.HTTP_200_OK) elif request.method == 'POST': username = request.data['username'] password = request.data['password'] user = User.objects.create_user(username=username, email='', password=password) try: first_name = request.data.get('first_name', '') last_name = request.data.get('last_name', '') user.first_name = first_name user.last_name = last_name except: pass user.email = request.data.get('email', '*****@*****.**') user.phone = request.data.get('phone', '+996 700 121212') user.user_type = int(request.data.get('user_type', 2)) user.save() return Response(status=status.HTTP_201_CREATED)
def update(self, request, pk=None): """>>>Updating user information""" serializer = UserUpdateSerializer(data=request.data) if serializer.is_valid(): post = User.objects.get(id=pk) if post: check_permission(request, post, 'update') if "first_name" in serializer.data and serializer.data[ "first_name"]: post.first_name = serializer.data["first_name"] if "last_name" in serializer.data and serializer.data[ "last_name"]: post.last_name = serializer.data["last_name"] post.save() serializer = UserSerializer(post) return Response(serializer.data, status=status.HTTP_202_ACCEPTED) else: msg = {"error": 404, "message": "User could not be found"} return Response(msg, status=status.HTTP_404_NOT_FOUND) else: msg = {"error": 400, "message": serializer.errors} return Response(msg, status=status.HTTP_400_BAD_REQUEST)
def get(self, request, format=None): try: queryset = User.objects.all() serializer = UserSerializer(queryset, many=True) return Response(serializer.data) except Exception as e: return Response(str(e), status=status.HTTP_500_INTERNAL_SERVER_ERROR)
def create(self, request): LOGGER.debug("Creating a new user") serializer = UserSerializer(data=request.data) if serializer.is_valid(): myuser = {} myuser["username"] = serializer.data["username"] myuser["password"] = serializer.data["password"] # optional fields if "first_name" in serializer.data and serializer.data["first_name"]: myuser["first_name"] = serializer.data["first_name"] if "last_name" in serializer.data and serializer.data["last_name"]: myuser["last_name"] = serializer.data["last_name"] if "email" in serializer.data and serializer.data["email"]: myuser["email"] = serializer.data["email"] user = create_user(myuser) serializer = UserSerializer(user) return Response(serializer.data, status.HTTP_201_CREATED) else: return Response(serializer.errors, status.HTTP_400_BAD_REQUEST)
def retrieve(self, request, pk=None): """ Retrieving a task """ post = User.objects.get(id=pk) if post: check_permission(request, post, 'view') serializer = UserSerializer(post) return Response(serializer.data) else: msg = {"error": 404, "message": "User could not be found"} return Response(msg, status=status.HTTP_404_NOT_FOUND)
def login(request): result = {} try: user = User.objects.get(username=request.data['username']) if user.check_password(request.data['password']): user.backend = 'mongoengine.django.auth.MongoEngineBackend' token = MongoToken.objects.create(user=user) serializer = UserSerializer(user) result = { 'result': True, 'message': "Login completed.", 'data': { 'user': serializer.data, 'token': token.key } } else: result = {'result': False, 'message': "Incorrect password."} return Response(result) except Exception as e: return Response(str(e), status=status.HTTP_500_INTERNAL_SERVER_ERROR)
class DocumentsSerializer(serializers.ModelSerializer): user = UserSerializer() department = DepartmentSerializer() brand = BrandAdminDetailedSerializer() products = serializers.SerializerMethodField() status = serializers.SerializerMethodField() no_stock_or_price = serializers.SerializerMethodField() class Meta: model = Document fields = ('id', 'updated_at', 'user', 'step', 'status', 'department', 'brand', 'products', 'no_stock_or_price') def get_no_stock_or_price(self, obj): count = OriginalProduct.objects.filter( Q(original_price=0) | Q(stock=False), document_product__document=obj).count() return count def get_products(self, obj): return DocumentProduct.objects.filter(document=obj).count() def get_status(self, obj): return obj.status
class DocumentSerializer(serializers.ModelSerializer): user = UserSerializer() department = serializers.SerializerMethodField() brand = serializers.SerializerMethodField() products = serializers.SerializerMethodField() status = serializers.SerializerMethodField() no_stock_or_price = serializers.SerializerMethodField() class Meta: model = Document fields = ('id', 'updated_at', 'user', 'step', 'status', 'department', 'brand', 'products', 'no_stock_or_price') def get_department(self, obj): try: return obj.department.name except: return 'Нет отделения' def get_no_stock_or_price(self, obj): count = OriginalProduct.objects.filter( Q(original_price=0) | Q(stock=False), document_product__document=obj).count() return count def get_brand(self, obj): try: return obj.brand.name except: return 'Нет бренда' def get_products(self, obj): return DocumentProduct.objects.filter(document=obj).count() def get_status(self, obj): return obj.status
def get(self, request): if request.user.is_authenticated: user = UserSerializer(request.user, context={'request': request}) return Response(user.data, status=status.HTTP_200_OK) else: return Response(status=status.HTTP_401_UNAUTHORIZED)
def my_jwt_response_handler(token, user=None, request=None): return { 'token': token, 'user': UserSerializer(user, context={'request': request}).data }
def profile_list_view(request): if request.method == 'GET': profile_list = User.objects.filter(is_active=True, user_type__in=[2, 3]) return Response(status=status.HTTP_200_OK, data=UserSerializer(profile_list, many=True).data)
def get(self, request, format=None): return Response(UserSerializer(request.user).data)