Here you go
On Wednesday, 2 November 2022 at 9:12:54 pm UTC+5:45 [email protected] 
wrote:

> Hi  Saksham, please let us see your user model.py and views.py.
>
> On Wed, Nov 2, 2022 at 2:52 PM Saksham Khanal <[email protected]> 
> wrote:
>
>> when I try to new register new user form the API,the saved user doesn't 
>> have it's password hashed which is creating a problem while logging in.You 
>> can see the difference between admin and new_user.To create a user model I 
>> have inherited a Abstract user class.You can also check my register 
>> serializer
>> [image: Django_group.png][image: Django_group1.png] 
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Django users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/django-users/d9adde23-46cd-40bf-babc-ced3d4b9d9ban%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/django-users/d9adde23-46cd-40bf-babc-ced3d4b9d9ban%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/a358b0a3-b544-4cc5-98fa-394468b662e2n%40googlegroups.com.
#view.py
from urllib import request

from django.contrib.auth import login
from knox.auth import AuthToken
from knox.views import LoginView as KnoxLoginView
from rest_framework import permissions
from rest_framework.authtoken.serializers import AuthTokenSerializer
from rest_framework.decorators import api_view
from rest_framework.response import Response

from dsorders.api.serializers import RegisterSerializers


@api_view(['POST'])
def login_api(request):
	serializer=AuthTokenSerializer(data=request.data)
	serializer.is_valid(raise_exception=True)
	user = serializer.validated_data['user']
	_,token = AuthToken.objects.create(user)

	return Response({
	'user_info':{
		'id':user.id,
		'username':user.username,
		'email':user.email,
	},
	'token':token
	})

# class LoginView(KnoxLoginView):

# 	def post(self,request,format=None):
# 		serializer = AuthTokenSerializer(data=request.data)
# 		serializer.is_valid(raise_exception=True)
# 		user = serializer.validated_data['user']
# 		login(request,user)
# 		return super(LoginView,self).post(request,format=None)



@api_view(['POST'])
def register_api(request):
	serializer = RegisterSerializers(data=request.data)
	serializer.is_valid(raise_exception=True)

	user = serializer.save()
	_,token = AuthToken.objects.create(user)
	
	return Response({
	'user_info':{
		'id':user.id,
		'username':user.username,
		'email':user.email,
	},
	'token':token
	})



@api_view(['GET'])
def get_user_data(request):
    user = request.user

    if user.is_authenticated:
        return Response({
            'user_info':{
				'id':user.id,
				'username':user.username,
				'email':user.email,
				}
        })
    return Response({'error':'not is_authenticated'},status=400)

import email
from ast import Pass
from curses.ascii import NUL
from decimal import Decimal
from email.headerregistry import Address
from email.policy import default
from re import A
from tabnanny import verbose

from django.contrib.auth.models import AbstractUser, User
from django.core.validators import MinValueValidator
from django.db import models
from django.db.models.signals import post_save, pre_save
from django.dispatch import receiver

# Create your models here.

class User(AbstractUser):
    is_active: models.BooleanField(default=True)
    is_staff: models.BooleanField(default=True)
    


class Dealer(models.Model):
    name = models.CharField(max_length=100,verbose_name='Name',null=True,blank=True)
    phone = models.CharField(max_length=15,verbose_name='Phone Number',unique=True)
    persons_name = models.CharField(max_length=100,verbose_name="Person's name",null=True,blank=True)
    additional_info = models.CharField(max_length=100,null=True,blank=True)
    user = models.OneToOneField(User,null=True,blank=True,on_delete=models.SET_NULL,related_name="dealer_user")
    
    def __str__(self):
        return self.name
   
    class Meta:
        verbose_name_plural = 'Dealer'
        
class Salesman(models.Model):
    name = models.CharField(max_length=100,verbose_name='Name',null=True,blank=True)
    phone = models.CharField(max_length=12,verbose_name='Phone number',unique=True)
    address = models.CharField(max_length=50,verbose_name='Address',null=True,blank=True)
    additional_info = models.TextField(max_length=100,null=True,blank=True)
    user = models.OneToOneField(User,null=True,blank=True,on_delete=models.SET_NULL,related_name='Salesman_user')
    dealer = models.ForeignKey(Dealer,on_delete=models.SET_NULL,related_name='dealer_Salesman',null=True,blank=True)
    def __str__(self):
        return self.name
    
    class Meta:
        verbose_name_plural = 'Salesman'

class Item(models.Model):
    name = models.CharField(max_length=100,verbose_name='Name',null=True,blank=True)
    price = models.DecimalField(max_digits=10,decimal_places=0,validators=[MinValueValidator(Decimal('0.01'))],verbose_name='Price',null=True,blank=True)
    selling_unit = models.CharField(max_length=100)
    description = models.TextField(max_length=500,verbose_name='Description',null=True,blank=True)
    dealer = models.ForeignKey(Dealer,on_delete=models.CASCADE,null=True,blank=True,related_name='Dealer_Item')
   
    class Meta:
        verbose_name_plural = 'Item'
        
    def __str__(self):
        return self.name

class Order(models.Model):
    date = models.DateTimeField(auto_now_add=True,verbose_name='Date Ordered')
    salesman = models.ForeignKey(Salesman,on_delete=models.CASCADE,related_name='salesman_orders',verbose_name='Salesman')
  #  Items = models.ManyToManyField(Item,related_name="Ordred_Items")
    class Meta:
        verbose_name_plural ='Order'
    
    
class Shop(models.Model):
    name = models.CharField(max_length=100,verbose_name='Shop name')
    address = models.CharField(max_length=100,null=True,blank=True,verbose_name='Address')
    phone = models.CharField(max_length=16,null=True,blank=True)
    additional_info = models.TextField(max_length=100,null=True,blank=True)
    dealer = models.ForeignKey(Dealer,on_delete=models.CASCADE,related_name='Dealer',verbose_name='Dealer Salesman')
    Salesman = models.ManyToManyField(Salesman,related_name="salesman")


    def __str__(self):
        return self.name



@receiver(pre_save,sender=Dealer)
def create_user_for_dealer(sender,instance,**kwargs):
    try:
       user = User.objects.get(username=instance.phone)
    except User.DoesNotExist:
        User.objects.create_user(username=instance.phone,email="",password=instance.phone)


@receiver(pre_save,sender=Salesman)
def create_user_for_salesman(sender,instance,**kwargs):
    try:
       user = User.objects.get(username=instance.phone)
    except User.DoesNotExist:
        User.objects.create_user(username=instance.phone,email="",password=instance.phone)

@receiver(post_save,sender=Dealer)
def linking_dealer(sender,instance,**kwargs):
    user = User.objects.get(username=instance.phone)
    if instance.user is None:
        instance.user = user
        instance.save()

@receiver(post_save,sender=Salesman)
def linking_salesman(sender,instance,**kwargs):
    user = User.objects.get(username=instance.phone)
    if instance.user is None:
        instance.user = user
        instance.save()

Reply via email to