Browse Source

Added first migrations script

sh4nks 11 years ago
parent
commit
753e4270fa
3 changed files with 232 additions and 36 deletions
  1. 31 20
      flaskbb/forum/models.py
  2. 16 16
      flaskbb/user/models.py
  3. 185 0
      migrations/versions/2bafd4ae417a_init.py

+ 31 - 20
flaskbb/forum/models.py

@@ -18,16 +18,20 @@ from flaskbb.utils.query import TopicQuery
 
 moderators = db.Table(
     'moderators',
-    db.Column('user_id', db.Integer(), db.ForeignKey('users.id')),
+    db.Column('user_id', db.Integer(), db.ForeignKey('users.id'),
+              nullable=False),
     db.Column('forum_id', db.Integer(),
-              db.ForeignKey('forums.id', use_alter=True, name="fk_forum_id")))
+              db.ForeignKey('forums.id', use_alter=True, name="fk_forum_id"),
+              nullable=False))
 
 
 topictracker = db.Table(
     'topictracker',
-    db.Column('user_id', db.Integer(), db.ForeignKey('users.id')),
+    db.Column('user_id', db.Integer(), db.ForeignKey('users.id'),
+              nullable=False),
     db.Column('topic_id', db.Integer(),
-              db.ForeignKey('topics.id', use_alter=True, name="fk_topic_id")))
+              db.ForeignKey('topics.id', use_alter=True, name="fk_topic_id"),
+              nullable=False))
 
 
 class TopicsRead(db.Model):
@@ -83,10 +87,13 @@ class Post(db.Model):
     __tablename__ = "posts"
 
     id = db.Column(db.Integer, primary_key=True)
-    topic_id = db.Column(db.Integer, db.ForeignKey("topics.id", use_alter=True,
-                                                   name="fk_topic_id",
-                                                   ondelete="CASCADE"))
-    user_id = db.Column(db.Integer, db.ForeignKey("users.id"))
+    topic_id = db.Column(db.Integer,
+                         db.ForeignKey("topics.id",
+                                       use_alter=True,
+                                       name="fk_topic_id",
+                                       ondelete="CASCADE"),
+                         nullable=False)
+    user_id = db.Column(db.Integer, db.ForeignKey("users.id"), nullable=False)
     username = db.Column(db.String, nullable=False)
     content = db.Column(db.Text, nullable=False)
     date_created = db.Column(db.DateTime, default=datetime.utcnow())
@@ -176,9 +183,12 @@ class Topic(db.Model):
     query_class = TopicQuery
 
     id = db.Column(db.Integer, primary_key=True)
-    forum_id = db.Column(db.Integer, db.ForeignKey("forums.id", use_alter=True,
-                                                   name="fk_forum_id"))
-    title = db.Column(db.String)
+    forum_id = db.Column(db.Integer,
+                         db.ForeignKey("forums.id",
+                                       use_alter=True,
+                                       name="fk_forum_id"),
+                         nullable=False)
+    title = db.Column(db.String, nullable=False)
     user_id = db.Column(db.Integer, db.ForeignKey("users.id"))
     username = db.Column(db.String, nullable=False)
     date_created = db.Column(db.DateTime, default=datetime.utcnow())
@@ -400,15 +410,16 @@ class Forum(db.Model):
     __tablename__ = "forums"
 
     id = db.Column(db.Integer, primary_key=True)
-    category_id = db.Column(db.Integer, db.ForeignKey("categories.id"))
-    title = db.Column(db.String)
+    category_id = db.Column(db.Integer, db.ForeignKey("categories.id"),
+                            nullable=False)
+    title = db.Column(db.String, nullable=False)
     description = db.Column(db.String)
-    position = db.Column(db.Integer, default=1)
-    locked = db.Column(db.Boolean, default=False)
-    show_moderators = db.Column(db.Boolean, default=False)
+    position = db.Column(db.Integer, default=1, nullable=False)
+    locked = db.Column(db.Boolean, default=False, nullable=False)
+    show_moderators = db.Column(db.Boolean, default=False, nullable=False)
 
-    post_count = db.Column(db.Integer, default=0)
-    topic_count = db.Column(db.Integer, default=0)
+    post_count = db.Column(db.Integer, default=0, nullable=False)
+    topic_count = db.Column(db.Integer, default=0, nullable=False)
 
     # One-to-one
     last_post_id = db.Column(db.Integer, db.ForeignKey("posts.id"))
@@ -477,9 +488,9 @@ class Category(db.Model):
     __tablename__ = "categories"
 
     id = db.Column(db.Integer, primary_key=True)
-    title = db.Column(db.String)
+    title = db.Column(db.String, nullable=False)
     description = db.Column(db.String)
-    position = db.Column(db.Integer, default=0)
+    position = db.Column(db.Integer, default=1, nullable=False)
 
     # One-to-many
     forums = db.relationship("Forum", backref="category", lazy="dynamic",

+ 16 - 16
flaskbb/user/models.py

@@ -31,23 +31,23 @@ class Group(db.Model):
     __tablename__ = "groups"
 
     id = db.Column(db.Integer, primary_key=True)
-    name = db.Column(db.String, unique=True)
+    name = db.Column(db.String, unique=True, nullable=False)
     description = db.Column(db.String(80))
 
     # I bet there is a nicer way for this :P
-    admin = db.Column(db.Boolean, default=False)
-    super_mod = db.Column(db.Boolean, default=False)
-    mod = db.Column(db.Boolean, default=False)
-    guest = db.Column(db.Boolean, default=False)
-    banned = db.Column(db.Boolean, default=False)
-
-    editpost = db.Column(db.Boolean, default=True)
-    deletepost = db.Column(db.Boolean, default=False)
-    deletetopic = db.Column(db.Boolean, default=False)
-    locktopic = db.Column(db.Boolean, default=True)
-    movetopic = db.Column(db.Boolean, default=True)
-    posttopic = db.Column(db.Boolean, default=True)
-    postreply = db.Column(db.Boolean, default=True)
+    admin = db.Column(db.Boolean, default=False, nullable=False)
+    super_mod = db.Column(db.Boolean, default=False, nullable=False)
+    mod = db.Column(db.Boolean, default=False, nullable=False)
+    guest = db.Column(db.Boolean, default=False, nullable=False)
+    banned = db.Column(db.Boolean, default=False, nullable=False)
+
+    editpost = db.Column(db.Boolean, default=True, nullable=False)
+    deletepost = db.Column(db.Boolean, default=False, nullable=False)
+    deletetopic = db.Column(db.Boolean, default=False, nullable=False)
+    locktopic = db.Column(db.Boolean, default=True, nullable=False)
+    movetopic = db.Column(db.Boolean, default=True, nullable=False)
+    posttopic = db.Column(db.Boolean, default=True, nullable=False)
+    postreply = db.Column(db.Boolean, default=True, nullable=False)
 
     # Methods
     def __repr__(self):
@@ -73,8 +73,8 @@ class User(db.Model, UserMixin):
     __tablename__ = "users"
 
     id = db.Column(db.Integer, primary_key=True)
-    username = db.Column(db.String, unique=True)
-    email = db.Column(db.String, unique=True)
+    username = db.Column(db.String, unique=True, nullable=False)
+    email = db.Column(db.String, unique=True, nullable=False)
     _password = db.Column('password', db.String(80), nullable=False)
     date_joined = db.Column(db.DateTime, default=datetime.utcnow())
     lastseen = db.Column(db.DateTime, default=datetime.utcnow())

+ 185 - 0
migrations/versions/2bafd4ae417a_init.py

@@ -0,0 +1,185 @@
+"""init
+
+Revision ID: 2bafd4ae417a
+Revises: None
+Create Date: 2014-02-07 10:30:48.023326
+
+"""
+
+# revision identifiers, used by Alembic.
+revision = '2bafd4ae417a'
+down_revision = None
+
+from alembic import op
+import sqlalchemy as sa
+
+
+def upgrade():
+    ### commands auto generated by Alembic - please adjust! ###
+    op.create_table('groups',
+    sa.Column('id', sa.Integer(), nullable=False),
+    sa.Column('name', sa.String(), nullable=False),
+    sa.Column('description', sa.String(length=80), nullable=True),
+    sa.Column('admin', sa.Boolean(), nullable=False),
+    sa.Column('super_mod', sa.Boolean(), nullable=False),
+    sa.Column('mod', sa.Boolean(), nullable=False),
+    sa.Column('guest', sa.Boolean(), nullable=False),
+    sa.Column('banned', sa.Boolean(), nullable=False),
+    sa.Column('editpost', sa.Boolean(), nullable=False),
+    sa.Column('deletepost', sa.Boolean(), nullable=False),
+    sa.Column('deletetopic', sa.Boolean(), nullable=False),
+    sa.Column('locktopic', sa.Boolean(), nullable=False),
+    sa.Column('movetopic', sa.Boolean(), nullable=False),
+    sa.Column('posttopic', sa.Boolean(), nullable=False),
+    sa.Column('postreply', sa.Boolean(), nullable=False),
+    sa.PrimaryKeyConstraint('id'),
+    sa.UniqueConstraint('name')
+    )
+    op.create_table('categories',
+    sa.Column('id', sa.Integer(), nullable=False),
+    sa.Column('title', sa.String(), nullable=False),
+    sa.Column('description', sa.String(), nullable=True),
+    sa.Column('position', sa.Integer(), nullable=False),
+    sa.PrimaryKeyConstraint('id')
+    )
+    op.create_table('users',
+    sa.Column('id', sa.Integer(), nullable=False),
+    sa.Column('username', sa.String(), nullable=False),
+    sa.Column('email', sa.String(), nullable=False),
+    sa.Column('password', sa.String(length=80), nullable=False),
+    sa.Column('date_joined', sa.DateTime(), nullable=True),
+    sa.Column('lastseen', sa.DateTime(), nullable=True),
+    sa.Column('birthday', sa.DateTime(), nullable=True),
+    sa.Column('gender', sa.String(), nullable=True),
+    sa.Column('website', sa.String(), nullable=True),
+    sa.Column('location', sa.String(), nullable=True),
+    sa.Column('signature', sa.String(), nullable=True),
+    sa.Column('avatar', sa.String(), nullable=True),
+    sa.Column('notes', sa.Text(length=5000), nullable=True),
+    sa.Column('theme', sa.String(), nullable=True),
+    sa.Column('post_count', sa.Integer(), nullable=True),
+    sa.Column('primary_group_id', sa.Integer(), nullable=False),
+    sa.ForeignKeyConstraint(['primary_group_id'], ['groups.id'], ),
+    sa.PrimaryKeyConstraint('id'),
+    sa.UniqueConstraint('email'),
+    sa.UniqueConstraint('username')
+    )
+    op.create_table('privatemessages',
+    sa.Column('id', sa.Integer(), nullable=False),
+    sa.Column('user_id', sa.Integer(), nullable=False),
+    sa.Column('from_user_id', sa.Integer(), nullable=True),
+    sa.Column('to_user_id', sa.Integer(), nullable=True),
+    sa.Column('subject', sa.String(), nullable=True),
+    sa.Column('message', sa.Text(), nullable=True),
+    sa.Column('date_created', sa.DateTime(), nullable=True),
+    sa.Column('trash', sa.Boolean(), nullable=False),
+    sa.Column('draft', sa.Boolean(), nullable=False),
+    sa.Column('unread', sa.Boolean(), nullable=False),
+    sa.ForeignKeyConstraint(['from_user_id'], ['users.id'], ),
+    sa.ForeignKeyConstraint(['to_user_id'], ['users.id'], ),
+    sa.ForeignKeyConstraint(['user_id'], ['users.id'], ),
+    sa.PrimaryKeyConstraint('id')
+    )
+    op.create_table('topictracker',
+    sa.Column('user_id', sa.Integer(), nullable=False),
+    sa.Column('topic_id', sa.Integer(), nullable=False),
+    sa.ForeignKeyConstraint(['topic_id'], ['topics.id'], name='fk_topic_id', use_alter=True),
+    sa.ForeignKeyConstraint(['user_id'], ['users.id'], )
+    )
+    op.create_table('groups_users',
+    sa.Column('user_id', sa.Integer(), nullable=True),
+    sa.Column('group_id', sa.Integer(), nullable=True),
+    sa.ForeignKeyConstraint(['group_id'], ['groups.id'], ),
+    sa.ForeignKeyConstraint(['user_id'], ['users.id'], )
+    )
+    op.create_table('posts',
+    sa.Column('id', sa.Integer(), nullable=False),
+    sa.Column('topic_id', sa.Integer(), nullable=False),
+    sa.Column('user_id', sa.Integer(), nullable=False),
+    sa.Column('username', sa.String(), nullable=False),
+    sa.Column('content', sa.Text(), nullable=False),
+    sa.Column('date_created', sa.DateTime(), nullable=True),
+    sa.Column('date_modified', sa.DateTime(), nullable=True),
+    sa.Column('modified_by', sa.String(), nullable=True),
+    sa.ForeignKeyConstraint(['topic_id'], ['topics.id'], name='fk_topic_id', ondelete='CASCADE', use_alter=True),
+    sa.ForeignKeyConstraint(['user_id'], ['users.id'], ),
+    sa.PrimaryKeyConstraint('id')
+    )
+    op.create_table('forumsread',
+    sa.Column('user_id', sa.Integer(), nullable=False),
+    sa.Column('forum_id', sa.Integer(), nullable=False),
+    sa.Column('last_read', sa.DateTime(), nullable=True),
+    sa.Column('cleared', sa.DateTime(), nullable=True),
+    sa.ForeignKeyConstraint(['forum_id'], ['topics.id'], name='fk_forum_id', use_alter=True),
+    sa.ForeignKeyConstraint(['user_id'], ['users.id'], ),
+    sa.PrimaryKeyConstraint('user_id', 'forum_id')
+    )
+    op.create_table('topicsread',
+    sa.Column('user_id', sa.Integer(), nullable=False),
+    sa.Column('topic_id', sa.Integer(), nullable=False),
+    sa.Column('forum_id', sa.Integer(), nullable=False),
+    sa.Column('last_read', sa.DateTime(), nullable=True),
+    sa.ForeignKeyConstraint(['forum_id'], ['forums.id'], name='fk_tr_forum_id', use_alter=True),
+    sa.ForeignKeyConstraint(['topic_id'], ['topics.id'], name='fk_topic_id', use_alter=True),
+    sa.ForeignKeyConstraint(['user_id'], ['users.id'], ),
+    sa.PrimaryKeyConstraint('user_id', 'topic_id', 'forum_id')
+    )
+    op.create_table('moderators',
+    sa.Column('user_id', sa.Integer(), nullable=False),
+    sa.Column('forum_id', sa.Integer(), nullable=False),
+    sa.ForeignKeyConstraint(['forum_id'], ['forums.id'], name='fk_forum_id', use_alter=True),
+    sa.ForeignKeyConstraint(['user_id'], ['users.id'], )
+    )
+    op.create_table('topics',
+    sa.Column('id', sa.Integer(), nullable=False),
+    sa.Column('forum_id', sa.Integer(), nullable=False),
+    sa.Column('title', sa.String(), nullable=False),
+    sa.Column('user_id', sa.Integer(), nullable=True),
+    sa.Column('username', sa.String(), nullable=False),
+    sa.Column('date_created', sa.DateTime(), nullable=True),
+    sa.Column('last_updated', sa.DateTime(), nullable=True),
+    sa.Column('locked', sa.Boolean(), nullable=True),
+    sa.Column('important', sa.Boolean(), nullable=True),
+    sa.Column('views', sa.Integer(), nullable=True),
+    sa.Column('post_count', sa.Integer(), nullable=True),
+    sa.Column('first_post_id', sa.Integer(), nullable=True),
+    sa.Column('last_post_id', sa.Integer(), nullable=True),
+    sa.ForeignKeyConstraint(['first_post_id'], ['posts.id'], ondelete='CASCADE'),
+    sa.ForeignKeyConstraint(['forum_id'], ['forums.id'], name='fk_forum_id', use_alter=True),
+    sa.ForeignKeyConstraint(['last_post_id'], ['posts.id'], ),
+    sa.ForeignKeyConstraint(['user_id'], ['users.id'], ),
+    sa.PrimaryKeyConstraint('id')
+    )
+    op.create_table('forums',
+    sa.Column('id', sa.Integer(), nullable=False),
+    sa.Column('category_id', sa.Integer(), nullable=False),
+    sa.Column('title', sa.String(), nullable=False),
+    sa.Column('description', sa.String(), nullable=True),
+    sa.Column('position', sa.Integer(), nullable=False),
+    sa.Column('locked', sa.Boolean(), nullable=False),
+    sa.Column('show_moderators', sa.Boolean(), nullable=False),
+    sa.Column('post_count', sa.Integer(), nullable=False),
+    sa.Column('topic_count', sa.Integer(), nullable=False),
+    sa.Column('last_post_id', sa.Integer(), nullable=True),
+    sa.ForeignKeyConstraint(['category_id'], ['categories.id'], ),
+    sa.ForeignKeyConstraint(['last_post_id'], ['posts.id'], ),
+    sa.PrimaryKeyConstraint('id')
+    )
+    ### end Alembic commands ###
+
+
+def downgrade():
+    ### commands auto generated by Alembic - please adjust! ###
+    op.drop_table('forums')
+    op.drop_table('topics')
+    op.drop_table('moderators')
+    op.drop_table('topicsread')
+    op.drop_table('forumsread')
+    op.drop_table('posts')
+    op.drop_table('groups_users')
+    op.drop_table('topictracker')
+    op.drop_table('privatemessages')
+    op.drop_table('users')
+    op.drop_table('categories')
+    op.drop_table('groups')
+    ### end Alembic commands ###