diff --git a/core/admin/Dockerfile b/core/admin/Dockerfile index 2d209b32..a5e806d1 100644 --- a/core/admin/Dockerfile +++ b/core/admin/Dockerfile @@ -8,8 +8,9 @@ RUN mkdir -p /app WORKDIR /app COPY requirements-prod.txt requirements.txt -RUN apk add --no-cache openssl curl \ - && apk add --no-cache --virtual build-dep openssl-dev libffi-dev python3-dev build-base \ +RUN apk add --no-cache libressl curl postgresql-client \ + && apk add --no-cache --virtual build-dep \ + libressl-dev libffi-dev python3-dev build-base postgresql-dev \ && pip3 install -r requirements.txt \ && apk del --no-cache build-dep diff --git a/core/admin/mailu/configuration.py b/core/admin/mailu/configuration.py index 05df8b1f..04d545c8 100644 --- a/core/admin/mailu/configuration.py +++ b/core/admin/mailu/configuration.py @@ -73,14 +73,20 @@ class ConfigManager(dict): key: os.environ.get(key, value) for key, value in DEFAULT_CONFIG.items() }) - if self.config['SQL_FLAVOR'] != 'sqlite' + if self.config['DB_FLAVOR'] != 'sqlite': self.setsql() app.config = self - def setsql(self) - if not self.config['DB_PW'] + def setsql(self): + if not self.config['DB_PW']: self.config['DB_PW'] = self.config['SECRET_KEY'] - self.config['SQLALCHEMY_DATABASE_URI'] = '{driver}://{user}:{pw}@{url}/{db}'.format(driver=DB_FLAVOR,user=DB_USER,pw=DB_PW,url=DB_URL,db=DB_NAME) + self.config['SQLALCHEMY_DATABASE_URI'] = '{driver}://{user}:{pw}@{url}/{db}'.format( + driver=self.config['DB_FLAVOR'], + user=self.config['DB_USER'], + pw=self.config['DB_PW'], + url=self.config['DB_URL'], + db=self.config['DB_NAME'] + ) def setdefault(self, key, value): if key not in self.config: diff --git a/core/admin/mailu/models.py b/core/admin/mailu/models.py index c25d30cb..15f95e97 100644 --- a/core/admin/mailu/models.py +++ b/core/admin/mailu/models.py @@ -287,7 +287,7 @@ class User(Base, Email): # Settings displayed_name = db.Column(db.String(160), nullable=False, default="") spam_enabled = db.Column(db.Boolean(), nullable=False, default=True) - spam_threshold = db.Column(db.Integer(), nullable=False, default=80.0) + spam_threshold = db.Column(db.Integer(), nullable=False, default=80) # Flask-login attributes is_authenticated = True @@ -441,7 +441,7 @@ class Fetch(Base): nullable=False) user = db.relationship(User, backref=db.backref('fetches', cascade='all, delete-orphan')) - protocol = db.Column(db.Enum('imap', 'pop3'), nullable=False) + protocol = db.Column(db.Enum('imap', 'pop3', name='protocol'), nullable=False) host = db.Column(db.String(255), nullable=False) port = db.Column(db.Integer(), nullable=False) tls = db.Column(db.Boolean(), nullable=False) diff --git a/core/admin/migrations/versions/049fed905da7_.py b/core/admin/migrations/versions/049fed905da7_.py index ce410844..feca8dbb 100644 --- a/core/admin/migrations/versions/049fed905da7_.py +++ b/core/admin/migrations/versions/049fed905da7_.py @@ -12,11 +12,13 @@ down_revision = '49d77a93118e' from alembic import op import sqlalchemy as sa +from flask import current_app as app def upgrade(): - with op.batch_alter_table('user') as batch: - batch.alter_column('email', type_=sa.String(length=255, collation="NOCASE")) + if app.config['DB_FLAVOR'] == 'sqlite': + with op.batch_alter_table('user') as batch: + batch.alter_column('email', type_=sa.String(length=255, collation="NOCASE")) def downgrade(): diff --git a/core/admin/migrations/versions/27ae2f102682_.py b/core/admin/migrations/versions/27ae2f102682_.py index f821aff2..1f26072a 100644 --- a/core/admin/migrations/versions/27ae2f102682_.py +++ b/core/admin/migrations/versions/27ae2f102682_.py @@ -35,7 +35,7 @@ def upgrade(): ) # set default to 80% with op.batch_alter_table('user') as batch: - batch.alter_column('spam_threshold', default=80.) + batch.alter_column('spam_threshold', server_default='80') def downgrade(): connection = op.get_bind() @@ -50,4 +50,4 @@ def downgrade(): ) # set default to 10/15 with op.batch_alter_table('user') as batch: - batch.alter_column('spam_threshold', default=10.) + batch.alter_column('spam_threshold', server_default='10') diff --git a/core/admin/migrations/versions/9c28df23f77e_.py b/core/admin/migrations/versions/9c28df23f77e_.py index edf8d8ef..1d2d656f 100644 --- a/core/admin/migrations/versions/9c28df23f77e_.py +++ b/core/admin/migrations/versions/9c28df23f77e_.py @@ -12,13 +12,15 @@ down_revision = 'c162ac88012a' from alembic import op import sqlalchemy as sa +from flask import current_app as app def upgrade(): - with op.batch_alter_table('user') as batch: - batch.alter_column('email', type_=sa.String(length=255, collation="NOCASE")) - with op.batch_alter_table('alias') as batch: - batch.alter_column('email', type_=sa.String(length=255, collation="NOCASE")) + if app.config['DB_FLAVOR'] == 'sqlite': + with op.batch_alter_table('user') as batch: + batch.alter_column('email', type_=sa.String(length=255, collation="NOCASE")) + with op.batch_alter_table('alias') as batch: + batch.alter_column('email', type_=sa.String(length=255, collation="NOCASE")) def downgrade(): diff --git a/core/admin/requirements-prod.txt b/core/admin/requirements-prod.txt index 2ca59edc..1281146a 100644 --- a/core/admin/requirements-prod.txt +++ b/core/admin/requirements-prod.txt @@ -44,3 +44,4 @@ visitor==0.1.3 Werkzeug==0.14.1 WTForms==2.2.1 WTForms-Components==0.10.3 +psycopg2