Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #profile_images.py
- from django.db import models
- from .profile import Profile
- class ProfileImage(models.Model):
- profile = models.ForeignKey(Profile, on_delete = models.CASCADE, related_name = 'profile_images')
- image = models.FileField(upload_to = 'profile_images')
- #profile.py
- from django.db import models
- from ..choises.genders import GENDERS
- from ..choises.marital_statuses import MARITAL_STATUSES
- from ..choises.montages import MONTAGES
- from ..choises.jobs import JOBS
- from django.urls import reverse
- from ckeditor.fields import RichTextField
- from django.utils import timezone
- import random
- import string
- import base64
- import uuid
- from django.contrib.auth import get_user_model
- User = get_user_model()
- def generate_referral_id():
- referral_id = base64.urlsafe_b64encode(uuid.uuid4().bytes).decode('utf-8')[:25]
- return referral_id
- def generate_unique_id(length=4):
- while True:
- new_id = random.randint(10**(length-1), (10**length)-1) # Minimum uzunluq 5
- if not Profile.objects.filter(unique_id=str(new_id)).exists():
- return str(new_id) # ID'yi string'e çevirin
- class Profile(models.Model):
- user = models.OneToOneField(User, on_delete=models.CASCADE, null = True, blank = True)
- unique_id = models.CharField(max_length=20, unique=True, blank=True, null=True, )
- name = models.CharField(max_length=255)
- surname = models.CharField(max_length=255)
- image = models.ImageField(upload_to='profile', null=True, blank=True)
- job = models.CharField(max_length=100, choices=JOBS, null = True)
- description = RichTextField(null = True, blank = True)
- nationality = models.CharField(max_length=255, blank=True, null = True)
- city = models.CharField(max_length=255, blank=True, null = True)
- phone = models.CharField(max_length=255, blank=True, null = True)
- email = models.EmailField(null = True, blank = True)
- age = models.PositiveIntegerField(null=True, blank=True)
- height = models.PositiveIntegerField(null=True, blank=True)
- weight = models.FloatField(null=True, blank=True)
- gender = models.CharField(choices=GENDERS, max_length=6, blank=True)
- experience = models.PositiveIntegerField(null=True, blank=True)
- languages = models.CharField(max_length=512, blank=True, null = True)
- eye_color = models.CharField(max_length=255, blank=True, null = True)
- hair_color = models.CharField(max_length=255, blank=True, null = True)
- likes = models.PositiveIntegerField(default=0)
- liked_by = models.ManyToManyField(User, related_name='liked_profiles', blank=True)
- clicks = models.PositiveIntegerField(default=0)
- is_newface = models.BooleanField(default=False)
- is_active = models.BooleanField(default=False)
- is_featured = models.BooleanField(default=False)
- is_vip = models.BooleanField(default=False)
- is_premium = models.BooleanField(default=False)
- activation_time = models.DateTimeField(null=True, blank=True)
- duration = models.DurationField(null=True, blank=True)
- referral_id = models.CharField(max_length=100, unique=True, blank=True, null=True, )
- def __str__(self):
- return f"{self.name} {self.surname}"
- def is_popular_actor(self):
- try:
- return self.actor.is_popular
- except Actor.DoesNotExist:
- return False
- def is_popular_model(self):
- try:
- return self.model.is_popular
- except Model.DoesNotExist:
- return False
- def save(self, *args, **kwargs):
- if not self.unique_id:
- self.unique_id = generate_unique_id()
- if not self.referral_id:
- self.referral_id = generate_referral_id()
- if self.is_active:
- self.activation_time = timezone.now()
- super().save(*args, **kwargs)
- def get_absolute_url(self):
- return reverse("newface-detail", args=[str(self.pk)])
Add Comment
Please, Sign In to add comment