models.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import datetime
  2. from django.utils import timezone, translation
  3. from missing import timezone as timezone_missing
  4. from . import fields
  5. from .. import models
  6. LOWER_DATE_LIMIT = 366 * 120 # days
  7. def upper_birthdate_limit():
  8. return timezone_missing.to_date(timezone.now())
  9. def lower_birthdate_limit():
  10. return timezone_missing.to_date(timezone.now() - datetime.timedelta(days=LOWER_DATE_LIMIT))
  11. class User(models.User):
  12. birthdate = fields.LimitedDateTimeField(upper_limit=upper_birthdate_limit, lower_limit=lower_birthdate_limit)
  13. gender = fields.GenderField()
  14. language = fields.LanguageField()
  15. def authenticate_facebook(self, request):
  16. super(User, self).authenticate_facebook(request)
  17. if self.gender is None:
  18. self.gender = self.facebook_profile_data.get('gender') or None
  19. def authenticate_google(self, request):
  20. super(User, self).authenticate_google(request)
  21. if self.gender is None and self.google_profile_data.get('gender') != 'other':
  22. # TODO: Does it really map so cleanly?
  23. self.gender = self.google_profile_data.get('gender') or None
  24. def authenticate_foursquare(self, request):
  25. super(User, self).authenticate_foursquare(request)
  26. if self.gender is None:
  27. # TODO: Does it really map so cleanly?
  28. self.gender = self.foursquare_profile_data.get('gender') or None
  29. def authenticate_lazyuser(self, request):
  30. super(User, self).authenticate_lazyuser(request)
  31. self.language = translation.get_language_from_request(request)