You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

49 lines
1.8 KiB

from django.db import models
from phonenumber_field.modelfields import PhoneNumberField
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
# from discount.models import Discount
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
user_initials = models.CharField(max_length=100, default='')
city = models.CharField(max_length=100, default='')
phone = PhoneNumberField(blank=True)
user_points = models.DecimalField(max_digits=8, decimal_places=2, null=True, default=0.00)
parent = models.ForeignKey(User, blank=True, null=True, related_name='childs')
# user_num = models.CharField(max_length=50, blank=True, unique=True, default=str(uuid.uuid4()))
def __str__(self):
return self.user.username
# def save(self, *args, **kwargs):
# if not self.user_num:
# self.user_num = str(uuid.uuid4())
# super(models.Model, self).save(*args, **kwargs)
class PickUpRequest(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
points = models.DecimalField(max_digits=8, decimal_places=2, null=True, default=0.00)
requisites = models.CharField(max_length=256, default='')
def __str__(self):
return str(self.user.id)
class Meta:
verbose_name = 'PickUpRequest'
verbose_name_plural = 'PickUpRequests'
@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
parent = instance.__dict__.get('parent')
if created:
UserProfile.objects.create(user=instance, parent=parent)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u)[0])