diff --git a/app/factory.py b/app/factory.py index 66b20c2b002327c774308a35a6db274b48c1dca3..ea0ca8ddcc9f58a3420554d7710d30febe05caab 100644 --- a/app/factory.py +++ b/app/factory.py @@ -25,6 +25,7 @@ def register_cli(app): @app.cli.command() def initdb(): """Create the database tables and initialize them with default values""" + db.engine.execute('CREATE EXTENSION IF NOT EXISTS citext') db.create_all() for instance in defaults: db.session.add(instance) diff --git a/app/models.py b/app/models.py index 727b66eef8803fd416d75482cdf543c8e4bef112..01107becda6dec06b4488384aa4a87a257746384 100644 --- a/app/models.py +++ b/app/models.py @@ -13,6 +13,7 @@ import uuid import qrcode from sqlalchemy.types import TypeDecorator, CHAR from sqlalchemy.dialects.postgresql import UUID +from citext import CIText from flask_login import UserMixin from .extensions import db, login_manager, ldap_manager from . import utils @@ -126,7 +127,7 @@ class User(db.Model, UserMixin): class QRCodeMixin: id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(50), nullable=False, unique=True) + name = db.Column(CIText, nullable=False, unique=True) def image(self): """Return a QRCode image to identify a record diff --git a/environment.yml b/environment.yml index 20d4c15e256531af7d466c2b3f95603047569bad..c2a7f72c55836346414354d55eea37ec7e5d3a0e 100644 --- a/environment.yml +++ b/environment.yml @@ -56,4 +56,5 @@ dependencies: - ldap3==2.2.4 - pyasn1==0.2.3 - pyjwt==1.4.2 + - sqlalchemy-citext==1.3.post0 - visitor==0.1.3