user inquiry with phone number

This commit is contained in:
Sayyid Hamid Mahdavi 2020-11-15 15:11:20 +03:30
parent 2d444fd270
commit e441d3eedc
3 changed files with 28 additions and 2 deletions

View file

@ -79,6 +79,25 @@ class RequestOTPSerializer(serializers.ModelSerializer):
return result
class UserInquirySerializer(serializers.ModelSerializer):
phone_number = serializers.CharField(required=True)
class Meta:
model = User
fields = ('avatar', 'name', 'username', "first_name", "last_name", "uuid", 'phone_number')
read_only_fields = ['avatar', 'name', 'username', 'first_name', 'last_name', "uuid"]
def save(self, **kwargs):
# TODO: move it to query set
validated_data = self.validated_data
user = User.objects.filter(phone_number=validated_data['phone_number']).first()
if not user:
user = User.objects.create_user(**validated_data)
self.instance = user
return user
class ChangePasswordSerializer(serializers.Serializer):
old_password = serializers.CharField(required=True)
old_password_field = serializers.CharField(default='password')

View file

@ -13,7 +13,7 @@ from apps.users.forms import OTPAuthenticationForm
from apps.users.models import User
from apps.users.provinces_and_cities import State
from apps.users.serializers import PublicUserSerializer, AccountSerializer, RequestOTPSerializer, \
ChangePasswordSerializer
ChangePasswordSerializer, UserInquirySerializer
UserModel = get_user_model()
@ -60,6 +60,12 @@ class RequestOTPView(generics.CreateAPIView):
required_scopes = []
class UserInquiryView(generics.CreateAPIView):
serializer_class = UserInquirySerializer
permission_classes = [IsAuthenticatedOrTokenHasScope]
required_scopes = ['accounts.profile:inquiry']
class ChangePasswordView(generics.UpdateAPIView):
permission_classes = [IsAuthenticatedOrTokenHasScope]
serializer_class = ChangePasswordSerializer

View file

@ -24,7 +24,7 @@ from django.contrib import admin
from apps.transactions.views import TransactionList, TransactionDetail, TransactionPay, TransactionReceipt, \
WithdrawVerify, WithdrawSubmit, DepositSubmit, DepositVerify
from apps.users.views import UserListView, UserDetailView, AccountView, RequestOTPView, ChangePasswordView, \
OTPLoginView, home, ProvinceApiView
OTPLoginView, home, ProvinceApiView, UserInquiryView
from django.contrib.auth import urls as auth_urls
# Setup the URLs and include login URLs for the browsable API.
@ -46,6 +46,7 @@ urlpatterns = [
path('request_otp/', RequestOTPView.as_view(), name='register'),
path('change_password/', ChangePasswordView.as_view(), name='change_password'),
path('province', ProvinceApiView.as_view(), name='province'),
path('inquiry', UserInquiryView.as_view(), name='inquiry'),
path('transactions/', TransactionList.as_view(), name='transactions'),
path('transactions/<uuid>', TransactionDetail.as_view(), name='transaction_detail'),