Here you go
On Wednesday, 2 November 2022 at 9:12:54 pm UTC+5:45 hubak...@gmail.com 
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 <saksham....@gmail.com> 
> 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 django-users...@googlegroups.com.
>> 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 django-users+unsubscr...@googlegroups.com.
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