Browse Source

Fixed 2 bugs when using MySQL:
1. VARCHAR requires a length on dialect mysql, e.g. db.String(63)
2. duplicate foreign key name `fk_topic_id`, `fk_forum_id`

albert.xu 11 years ago
parent
commit
a2cea6135b
2 changed files with 27 additions and 26 deletions
  1. 17 16
      flaskbb/forum/models.py
  2. 10 10
      flaskbb/user/models.py

+ 17 - 16
flaskbb/forum/models.py

@@ -30,7 +30,8 @@ topictracker = db.Table(
     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_tracker_topic_id"),
               nullable=False))
 
 
@@ -41,7 +42,7 @@ class TopicsRead(db.Model):
                         primary_key=True)
     topic_id = db.Column(db.Integer,
                          db.ForeignKey("topics.id", use_alter=True,
-                                       name="fk_topic_id"),
+                                       name="fk_tr_topic_id"),
                          primary_key=True)
     forum_id = db.Column(db.Integer,
                          db.ForeignKey("forums.id", use_alter=True,
@@ -67,7 +68,7 @@ class ForumsRead(db.Model):
                         primary_key=True)
     forum_id = db.Column(db.Integer,
                          db.ForeignKey("topics.id", use_alter=True,
-                                       name="fk_forum_id"),
+                                       name="fk_fr_forum_id"),
                          primary_key=True)
     last_read = db.Column(db.DateTime, default=datetime.utcnow())
     cleared = db.Column(db.DateTime)
@@ -93,7 +94,7 @@ class Report(db.Model):
     post_id = db.Column(db.Integer, db.ForeignKey("posts.id"), nullable=False)
     zapped = db.Column(db.DateTime)
     zapped_by = db.Column(db.Integer, db.ForeignKey("users.id"))
-    reason = db.Column(db.String)
+    reason = db.Column(db.String(63))
 
     post = db.relationship("Post", backref="report", lazy="joined")
     reporter = db.relationship("User", lazy="joined",
@@ -137,15 +138,15 @@ class Post(db.Model):
     topic_id = db.Column(db.Integer,
                          db.ForeignKey("topics.id",
                                        use_alter=True,
-                                       name="fk_topic_id",
+                                       name="fk_post_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)
+    username = db.Column(db.String(15), nullable=False)
     content = db.Column(db.Text, nullable=False)
     date_created = db.Column(db.DateTime, default=datetime.utcnow())
     date_modified = db.Column(db.DateTime)
-    modified_by = db.Column(db.String)
+    modified_by = db.Column(db.String(15))
 
     # Methods
     def __repr__(self):
@@ -233,11 +234,11 @@ class Topic(db.Model):
     forum_id = db.Column(db.Integer,
                          db.ForeignKey("forums.id",
                                        use_alter=True,
-                                       name="fk_forum_id"),
+                                       name="fk_topic_forum_id"),
                          nullable=False)
-    title = db.Column(db.String, nullable=False)
+    title = db.Column(db.String(63), nullable=False)
     user_id = db.Column(db.Integer, db.ForeignKey("users.id"))
-    username = db.Column(db.String, nullable=False)
+    username = db.Column(db.String(15), nullable=False)
     date_created = db.Column(db.DateTime, default=datetime.utcnow())
     last_updated = db.Column(db.DateTime, default=datetime.utcnow())
     locked = db.Column(db.Boolean, default=False)
@@ -456,7 +457,7 @@ class Topic(db.Model):
                               TopicsRead.last_read < Topic.last_updated)).\
                 count()
 
-            #No unread topics available - trying to mark the forum as read
+            # No unread topics available - trying to mark the forum as read
             if unread_count == 0:
                 forumread = ForumsRead.query.\
                     filter(ForumsRead.user_id == user.id,
@@ -487,12 +488,12 @@ class Forum(db.Model):
     id = db.Column(db.Integer, primary_key=True)
     category_id = db.Column(db.Integer, db.ForeignKey("categories.id"),
                             nullable=False)
-    title = db.Column(db.String, nullable=False)
-    description = db.Column(db.String)
+    title = db.Column(db.String(15), nullable=False)
+    description = db.Column(db.String(255))
     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)
-    external = db.Column(db.String)
+    external = db.Column(db.String(63))
 
     post_count = db.Column(db.Integer, default=0, nullable=False)
     topic_count = db.Column(db.Integer, default=0, nullable=False)
@@ -587,8 +588,8 @@ class Category(db.Model):
     __tablename__ = "categories"
 
     id = db.Column(db.Integer, primary_key=True)
-    title = db.Column(db.String, nullable=False)
-    description = db.Column(db.String)
+    title = db.Column(db.String(63), nullable=False)
+    description = db.Column(db.String(255))
     position = db.Column(db.Integer, default=1, nullable=False)
 
     # One-to-many

+ 10 - 10
flaskbb/user/models.py

@@ -31,7 +31,7 @@ class Group(db.Model):
     __tablename__ = "groups"
 
     id = db.Column(db.Integer, primary_key=True)
-    name = db.Column(db.String, unique=True, nullable=False)
+    name = db.Column(db.String(63), unique=True, nullable=False)
     description = db.Column(db.String(80))
 
     # I bet there is a nicer way for this :P
@@ -73,20 +73,20 @@ class User(db.Model, UserMixin):
     __tablename__ = "users"
 
     id = db.Column(db.Integer, primary_key=True)
-    username = db.Column(db.String, unique=True, nullable=False)
-    email = db.Column(db.String, unique=True, nullable=False)
+    username = db.Column(db.String(15), unique=True, nullable=False)
+    email = db.Column(db.String(63), 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())
     birthday = db.Column(db.DateTime)
-    gender = db.Column(db.String)
-    website = db.Column(db.String)
-    location = db.Column(db.String)
-    signature = db.Column(db.String)
-    avatar = db.Column(db.String)
+    gender = db.Column(db.String(1))
+    website = db.Column(db.String(63))
+    location = db.Column(db.String(63))
+    signature = db.Column(db.String(255))
+    avatar = db.Column(db.String(63))
     notes = db.Column(db.Text(5000))
 
-    theme = db.Column(db.String)
+    theme = db.Column(db.String(15))
 
     posts = db.relationship("Post", backref="user", lazy="dynamic")
     topics = db.relationship("Topic", backref="user", lazy="dynamic")
@@ -378,7 +378,7 @@ class PrivateMessage(db.Model):
     user_id = db.Column(db.Integer, db.ForeignKey("users.id"), nullable=False)
     from_user_id = db.Column(db.Integer, db.ForeignKey("users.id"))
     to_user_id = db.Column(db.Integer, db.ForeignKey("users.id"))
-    subject = db.Column(db.String)
+    subject = db.Column(db.String(63))
     message = db.Column(db.Text)
     date_created = db.Column(db.DateTime, default=datetime.utcnow())
     trash = db.Column(db.Boolean, nullable=False, default=False)