Files
api-bashgah/apps/userprofile/views.py
T
2026-06-15 10:57:28 +03:30

114 lines
4.2 KiB
Python

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)