models.py 943 B

123456789101112131415161718192021222324252627282930
  1. import uuid
  2. from datetime import timedelta
  3. from django.conf import settings
  4. from django.db import models
  5. from django.utils import timezone
  6. from django.utils.translation import gettext_lazy as _
  7. def hex_uuid():
  8. return uuid.uuid4().hex
  9. class Token(models.Model):
  10. user = models.ForeignKey(
  11. settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="tokens"
  12. )
  13. token = models.CharField(max_length=32, default=hex_uuid, unique=True)
  14. created = models.DateTimeField(auto_now_add=True)
  15. expiry = models.DateTimeField(null=True, blank=True)
  16. @property
  17. def expiry_as_iso8601(self):
  18. """Returns the expiry date of the token in ISO 8601 format or a date 100 years in the future if none."""
  19. expiry_date = (
  20. self.expiry if self.expiry else timezone.now() + timedelta(days=365 * 100)
  21. )
  22. return expiry_date.isoformat()
  23. def __str__(self):
  24. return self.token