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
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])
|
|
|
|
|
|
|