diff --git a/docs/data_types.rst b/docs/data_types.rst index eac2b4f..3d8a0ef 100644 --- a/docs/data_types.rst +++ b/docs/data_types.rst @@ -63,6 +63,14 @@ CurrencyType .. autoclass:: Currency +EmailType +--------- + +.. automodule:: sqlalchemy_utils.types.email + +.. autoclass:: EmailType + + EncryptedType ------------- diff --git a/sqlalchemy_utils/types/email.py b/sqlalchemy_utils/types/email.py index 2d35860..a781a70 100644 --- a/sqlalchemy_utils/types/email.py +++ b/sqlalchemy_utils/types/email.py @@ -4,6 +4,33 @@ from ..operators import CaseInsensitiveComparator class EmailType(sa.types.TypeDecorator): + """ + Provides a way for storing emails in a lower case. + + Example:: + + + from sqlalchemy_utils import EmailType + + + class User(Base): + __tablename__ = 'user' + id = sa.Column(sa.Integer, primary_key=True) + name = sa.Column(sa.Unicode(255)) + email = sa.Column(EmailType) + + + user = User() + user.email = 'John.Smith@foo.com' + user.name = 'John Smith' + session.add(user) + session.commit() + # Notice - email in filter() is lowercase. + user = (session.query(User) + .filter(User.email == 'john.smith@foo.com') + .one()) + assert user.name == 'John Smith' + """ impl = sa.Unicode comparator_factory = CaseInsensitiveComparator