from django.shortcuts import render from rest_framework import serializers from rest_framework.views import APIView from apps.userprofile.models import UserProfile as UserProfileModel from apps.userprofile.services import update_userprofile from apps.userprofile.selector import get_user_profile from rest_framework.response import Response from rest_framework import status from utils.tools.inline_serializer import inline_serializer from rest_framework.permissions import IsAuthenticated from django.contrib.auth import get_user_model from django.contrib.auth.models import User from utils.services.sms_task import task_send_sms # Create your views here. Cuser = get_user_model() class UserProfileView(APIView): permission_classes = (IsAuthenticated,) class OutputSerializer(serializers.ModelSerializer): cuser = inline_serializer(many=False, fields={ "id": serializers.IntegerField(), "username": serializers.CharField(), "name_family": serializers.CharField(), "mobile": serializers.IntegerField(), }) city = inline_serializer(many=False, fields={ "id": serializers.IntegerField(), "name": serializers.CharField(), "is_ostan": serializers.BooleanField(), "ostan": inline_serializer(many=False, fields={ "id": serializers.IntegerField(), "name": serializers.CharField(), }), "pv_id": serializers.IntegerField }) class Meta: model = UserProfileModel fields = "__all__" def get(self, request): user_id = request.user.id user_profile = get_user_profile(user_id) serializer = self.OutputSerializer(user_profile) return Response(serializer.data, status=status.HTTP_200_OK) class UpdateUserProfileView(APIView): permission_classes = (IsAuthenticated, ) class InputSerializer(serializers.Serializer): name_family = serializers.CharField(required=False) codemeli = serializers.IntegerField(required=False) city = serializers.IntegerField(required=False) address = serializers.CharField(required=False) codeposti = serializers.CharField(required=False) ax_mojri = serializers.ImageField(required=False) ax_meli = serializers.ImageField(required=False) ax_fani = serializers.ImageField(required=False) ax_sayer = serializers.ImageField(required=False) def patch(self, request): user_id = request.user.id serializer = self.InputSerializer(data=request.data) serializer.is_valid(raise_exception=True) update_userprofile(user_id, **serializer.validated_data) return Response(status=status.HTTP_200_OK) class RegisterUserView(APIView): class InputSerializer(serializers.Serializer): name = serializers.CharField() mobile = serializers.CharField() def post(self, request): serializer = self.InputSerializer(data=request.data) serializer.is_valid(raise_exception=True) name = serializer.validated_data.get('name') mobile = serializer.validated_data.get('mobile') user_mojri = Cuser.objects.create_user( username=mobile, password="Jv123456!@#$", ) user_mojri.name_family = name user_mojri.mobile = mobile user_mojri.is_active = True user_mojri.save() user_profile = UserProfileModel.objects.create( cuser=user_mojri, codemeli=1111111, address='آدرس', codeposti=87878787 ) user_profile.save() try: message = f'شرکت لوله گستر گلپایگان: مجری محترم، با سپاس از عضویت شما در باشگاه مجریان، خواهشمندیم به منظور بهره‌مندی کامل از امتیازات، پس از ورود به باشگاه مجریان نسبت به تکمیل اطلاعات پروفایل خود اقدام فرمایید.' task_send_sms.apply_async(kwargs={'message': message, 'mobile': str(user_mojri.mobile)}, countdown=60) except Exception as e: print(e) return Response(status=status.HTTP_201_CREATED)