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

# Basic DB to correlate tokens, users and creation time

class ResetToken(models.Model):

    # users wouldn't use usernames >100 chars
    user = models.CharField(max_length=100)
    # Not so sure about tokens, better make it big
    # should be <100, but big usernames make bigger tokens
    # if I read that correctly
    token = models.CharField(max_length=255)
    # creation time in epoch (UTC)
    # BigInt just so we are save for the next few decades ;)
    creation = models.BigIntegerField()


def get_validation_slug():
    return make_password(None)


class UserAccountValidationDetail(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    VALIDATED_CHOICES = ((0, 'Not validated'), (1, 'Validated'))
    validated = models.IntegerField(choices=VALIDATED_CHOICES, default=0)
    validation_slug = models.CharField(
        db_index=True, unique=True, max_length=50,
        default=get_validation_slug
    )
    date_validation_started = models.DateTimeField(auto_now_add=True)
