/social/apps/tornado_app/models.py

https://github.com/haftrine/python-social-auth · Python · 61 lines · 43 code · 13 blank · 5 comment · 0 complexity · 1aba7d0c279ade286a1f7a6e58f81aa7 MD5 · raw file

  1. """Tornado SQLAlchemy ORM models for Social Auth"""
  2. from sqlalchemy import Column, Integer, String, ForeignKey
  3. from sqlalchemy.orm import relationship, backref
  4. from social.utils import setting_name, module_member
  5. from social.storage.sqlalchemy_orm import SQLAlchemyUserMixin, \
  6. SQLAlchemyAssociationMixin, \
  7. SQLAlchemyNonceMixin, \
  8. SQLAlchemyCodeMixin, \
  9. BaseSQLAlchemyStorage
  10. class TornadoStorage(BaseSQLAlchemyStorage):
  11. user = None
  12. nonce = None
  13. association = None
  14. code = None
  15. def init_social(Base, session, settings):
  16. UID_LENGTH = settings.get(setting_name('UID_LENGTH'), 255)
  17. User = module_member(settings[setting_name('USER_MODEL')])
  18. app_session = session
  19. class _AppSession(object):
  20. @classmethod
  21. def _session(cls):
  22. return app_session
  23. class UserSocialAuth(_AppSession, Base, SQLAlchemyUserMixin):
  24. """Social Auth association model"""
  25. uid = Column(String(UID_LENGTH))
  26. user_id = Column(Integer, ForeignKey(User.id),
  27. nullable=False, index=True)
  28. user = relationship(User, backref=backref('social_auth',
  29. lazy='dynamic'))
  30. @classmethod
  31. def username_max_length(cls):
  32. return User.__table__.columns.get('username').type.length
  33. @classmethod
  34. def user_model(cls):
  35. return User
  36. class Nonce(_AppSession, Base, SQLAlchemyNonceMixin):
  37. """One use numbers"""
  38. pass
  39. class Association(_AppSession, Base, SQLAlchemyAssociationMixin):
  40. """OpenId account association"""
  41. pass
  42. class Code(_AppSession, Base, SQLAlchemyCodeMixin):
  43. pass
  44. # Set the references in the storage class
  45. TornadoStorage.user = UserSocialAuth
  46. TornadoStorage.nonce = Nonce
  47. TornadoStorage.association = Association
  48. TornadoStorage.code = Code