models.py 896 B

1234567891011121314151617181920212223242526272829303132
  1. from datetime import timedelta
  2. import pytz
  3. from django.utils import timezone
  4. from django.contrib.auth import get_user_model
  5. from django.db import models
  6. from django_extensions.db.models import TimeStampedModel
  7. from encrypted_field import EncryptedField
  8. from profiles.constants import PRETTY_TIMEZONE_CHOICES
  9. User = get_user_model()
  10. BNULL = {"blank": True, "null": True}
  11. class UserProfile(TimeStampedModel):
  12. user = models.OneToOneField(
  13. User, on_delete=models.CASCADE, related_name="profile"
  14. )
  15. timezone = models.CharField(
  16. max_length=255,
  17. choices=PRETTY_TIMEZONE_CHOICES,
  18. **BNULL,
  19. )
  20. lastfm_username = models.CharField(max_length=255, **BNULL)
  21. lastfm_password = EncryptedField(**BNULL)
  22. def __str__(self):
  23. return f"User profile for {self.user}"
  24. @property
  25. def tzinfo(self):
  26. return pytz.timezone(self.timezone)