from django.db import models
from django.contrib.auth.models import User


class UserProfile(models.Model):

    def image_file_filename(self, filename):
        import random
        fname, dot, extension = filename.rpartition('.')
        slug = random.randint(1000000000000,9000000000000)
        return 'userpic/%s.%s' % (slug, extension)

    class Meta:
        db_table = "custom_profile"
    user = models.OneToOneField(User, related_name="profile")

    fbid = models.BigIntegerField(blank=True, null=True)
    first_name = models.CharField(blank=True, max_length=64)
    last_name = models.CharField(blank=True, max_length=64)
    age = models.IntegerField(blank=True, null=True)
    country = models.CharField(blank=True, max_length=64)
    city = models.CharField(blank=True, max_length=64)
    address = models.CharField(blank=True, max_length=64)
    image_file = models.FileField(upload_to=image_file_filename,
                                  # storage=OverwriteStorage(),
                                  default='userpic/no-img.jpg',
                                  blank=True,
                                  null=True)
    phone = models.CharField(blank=True, max_length=64)
    additional_phone = models.CharField(blank=True, max_length=64)
    company_name = models.CharField(blank=True, max_length=64)

    comments = models.CharField(blank=True, max_length=1000)
    previous_email = models.CharField(blank=True, max_length=64)
    new_email = models.CharField(blank=True, max_length=64)
    email_proof = models.BooleanField(default=False)
    email_activation_key = models.CharField(blank=True, max_length=256)
    email_activation_key_expires = models.DateTimeField(blank=True, null=True)
    email_last_changed = models.DateTimeField(blank=True, null=True)
    password_recovery_key = models.CharField(blank=True, max_length=256)
    password_recovery_key_expires = models.DateTimeField(blank=True, null=True)
    password_last_recover = models.DateTimeField(blank=True, null=True)
    real_mail = models.CharField(blank=True, max_length=256)

    def cutted_phone(self):
        return self.phone[:5]

    def cutted_additional_phone(self):
        return self.additional_phone[:5]

    def __str__(self):
        # return self.user.username
        return "%s %s (s)" % (self.first_name, self.last_name)
