[odrs-web/oscp] Use actual sqlalchemy boolean types



commit f02dd8a78db7ec9a4c663f776641376550566a2e
Author: Richard Hughes <richard hughsie com>
Date:   Tue Jul 2 10:18:03 2019 +0100

    Use actual sqlalchemy boolean types
    
    It seems somewhat wasteful using a INTEGER to store just one bit.

 app_data/migrations/versions/bbbcd54c69ac_.py | 60 +++++++++++++++++++++++++++
 app_data/odrs/models.py                       | 12 +++---
 2 files changed, 66 insertions(+), 6 deletions(-)
---
diff --git a/app_data/migrations/versions/bbbcd54c69ac_.py b/app_data/migrations/versions/bbbcd54c69ac_.py
new file mode 100644
index 0000000..7f4bfd6
--- /dev/null
+++ b/app_data/migrations/versions/bbbcd54c69ac_.py
@@ -0,0 +1,60 @@
+"""
+
+Revision ID: bbbcd54c69ac
+Revises: 1b966aab67a1
+Create Date: 2019-07-02 10:06:20.015220
+
+"""
+
+# revision identifiers, used by Alembic.
+revision = 'bbbcd54c69ac'
+down_revision = '1b966aab67a1'
+
+from alembic import op
+import sqlalchemy as sa
+from sqlalchemy.dialects import mysql
+
+def upgrade():
+    op.alter_column('eventlog', 'important',
+               existing_type=mysql.INTEGER(display_width=11),
+               type_=sa.Boolean(),
+               existing_nullable=True,
+               existing_server_default=sa.text('0'))
+    op.alter_column('moderators', 'is_admin',
+               existing_type=mysql.TINYINT(display_width=4),
+               type_=sa.Boolean(),
+               existing_nullable=True,
+               existing_server_default=sa.text('0'))
+    op.alter_column('moderators', 'is_enabled',
+               existing_type=mysql.TINYINT(display_width=4),
+               type_=sa.Boolean(),
+               existing_nullable=True,
+               existing_server_default=sa.text('0'))
+    op.alter_column('users', 'is_banned',
+               existing_type=mysql.INTEGER(display_width=11),
+               type_=sa.Boolean(),
+               existing_nullable=True,
+               existing_server_default=sa.text('0'))
+
+
+def downgrade():
+    op.alter_column('users', 'is_banned',
+               existing_type=sa.Boolean(),
+               type_=mysql.INTEGER(display_width=11),
+               existing_nullable=True,
+               existing_server_default=sa.text('0'))
+    op.alter_column('moderators', 'is_enabled',
+               existing_type=sa.Boolean(),
+               type_=mysql.TINYINT(display_width=4),
+               existing_nullable=True,
+               existing_server_default=sa.text('0'))
+    op.alter_column('moderators', 'is_admin',
+               existing_type=sa.Boolean(),
+               type_=mysql.TINYINT(display_width=4),
+               existing_nullable=True,
+               existing_server_default=sa.text('0'))
+    op.alter_column('eventlog', 'important',
+               existing_type=sa.Boolean(),
+               type_=mysql.INTEGER(display_width=11),
+               existing_nullable=True,
+               existing_server_default=sa.text('0'))
diff --git a/app_data/odrs/models.py b/app_data/odrs/models.py
index ec174af..7350a49 100644
--- a/app_data/odrs/models.py
+++ b/app_data/odrs/models.py
@@ -11,7 +11,7 @@ import datetime
 
 from werkzeug.security import generate_password_hash, check_password_hash
 
-from sqlalchemy import Column, Integer, String, Text, DateTime, Index
+from sqlalchemy import Column, Integer, String, Text, DateTime, Boolean, Index
 
 from odrs import db
 
@@ -75,12 +75,12 @@ class User(db.Model):
     date_created = Column(DateTime, nullable=False, default=datetime.datetime.utcnow)
     user_hash = Column(Text)
     karma = Column(Integer, default=0)
-    is_banned = Column(Integer, default=0)
+    is_banned = Column(Boolean, default=False)
 
     def __init__(self, user_hash=None):
         self.user_hash = user_hash
         self.karma = 0
-        self.is_banned = 0
+        self.is_banned = False
 
     def __repr__(self):
         return 'User object %s' % self.user_id
@@ -161,7 +161,7 @@ class Event(db.Model):
     user_hash = Column(Text)
     message = Column(Text)
     app_id = Column(Text)
-    important = Column(Integer, default=0)
+    important = Column(Boolean, default=False)
 
     def __init__(self, user_addr, user_hash=None, app_id=None, message=None, important=False):
         self.user_addr = user_addr
@@ -183,8 +183,8 @@ class Moderator(db.Model):
     username = Column(Text)
     password_hash = Column('password', Text)
     display_name = Column(Text)
-    is_enabled = Column(Integer, default=0)
-    is_admin = Column(Integer, default=0)
+    is_enabled = Column(Boolean, default=False)
+    is_admin = Column(Boolean, default=False)
     user_hash = Column(Text)
     locales = Column(Text)
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]