diff --git a/app/views/organizations/_org_course_homework.html.erb b/app/views/organizations/_org_course_homework.html.erb
index 4f2a7b662..4245be9eb 100644
--- a/app/views/organizations/_org_course_homework.html.erb
+++ b/app/views/organizations/_org_course_homework.html.erb
@@ -173,7 +173,7 @@
                 <% time=project.updated_on %>
                 <% time=ForgeActivity.where("project_id=?",project.id).last.updated_at if ForgeActivity.where("project_id=?",project.id).last %>
                 <p><span class="captainName" title="<%=(User.find project.user_id).show_name %>"><%=(User.find project.user_id).show_name %></span><span style="vertical-align: top;">(组长)</span></p>
-                <p><%=time_from_now time %></p>
+                <p><%=time_from_now time %>&nbsp;&nbsp;<%= project.commits_count %>提交</p>
                 <div class="relatePInfo" id="relatePInfo_<%=project.id %>_<%=activity.id %>">
                   项目名称:<%=project.name %><br />
                   创建者:<%=(User.find project.user_id).show_name %>(组长)<br />
diff --git a/app/views/organizations/_project_create.html.erb b/app/views/organizations/_project_create.html.erb
index 3b35838a7..6b45a2a13 100644
--- a/app/views/organizations/_project_create.html.erb
+++ b/app/views/organizations/_project_create.html.erb
@@ -23,7 +23,7 @@
         创建时间:<%= format_time(project.created_on) %>
       </div>
       <div class="homepagePostDate fl ml15">
-        更新时间:<%= format_time(ForgeActivity.where("forge_act_type='#{activity.class}' and forge_act_id =#{activity.id}").first.updated_at) %>
+        更新时间:<%= format_time(ForgeActivity.where("forge_act_type='ProjectCreateInfo' and forge_act_id =#{project.id}").first.updated_at) %>
       </div>
       <div class="cl"></div>
       <div class="homepagePostSetting" id="act-<%= user_activity_id %>" style="visibility: hidden">
diff --git a/app/views/projects/_project_create.html.erb b/app/views/projects/_project_create.html.erb
index d966d8e18..f647f1a38 100644
--- a/app/views/projects/_project_create.html.erb
+++ b/app/views/projects/_project_create.html.erb
@@ -18,9 +18,13 @@
       <div class="homepagePostTitle break_word" >
         <%= link_to project.name, project_path(project.id,:host=>Setting.host_course), :class => "postGrey" %>
       </div>
-      <div class="homepagePostDate">
+      <div class="homepagePostDate fl">
         创建时间:<%= format_time(project.created_on) %>
       </div>
+      <div class="homepagePostDate fl ml15">
+        更新时间:<%= format_time(ForgeActivity.where("forge_act_type='ProjectCreateInfo' and forge_act_id =#{project.id}").first.updated_at) %>
+      </div>
+      <div class="cl"></div>
       <div class="homepagePostSetting" id="act-<%= user_activity_id %>" style="visibility: hidden">
         <ul>
           <li class="homepagePostSettingIcon">
diff --git a/app/views/users/_course_homework.html.erb b/app/views/users/_course_homework.html.erb
index 7c6959935..2c1af1b83 100644
--- a/app/views/users/_course_homework.html.erb
+++ b/app/views/users/_course_homework.html.erb
@@ -173,7 +173,7 @@
             <% time=project.updated_on %>
             <% time=ForgeActivity.where("project_id=?",project.id).last.updated_at if ForgeActivity.where("project_id=?",project.id).last %>
             <p><span class="captainName" title="<%=(User.find project.user_id).show_name %>"><%=(User.find project.user_id).show_name %></span><span style="vertical-align: top;">(组长)</span></p>
-            <p><%=time_from_now time %></p>
+            <p><%=time_from_now time %>&nbsp;&nbsp;<%= project.commits_count %>提交</p>
             <div class="relatePInfo" id="relatePInfo_<%=project.id %>_<%=activity.id %>">
               项目名称:<%=project.name %><br />
               创建者:<%=(User.find project.user_id).show_name %>(组长)<br />
diff --git a/app/views/users/_project_create.html.erb b/app/views/users/_project_create.html.erb
index 6214833f1..ae25312f3 100644
--- a/app/views/users/_project_create.html.erb
+++ b/app/views/users/_project_create.html.erb
@@ -23,7 +23,7 @@
         创建时间:<%= format_time(project.created_on) %>
       </div>
       <div class="homepagePostDate fl ml15">
-        更新时间:<%= format_time(ForgeActivity.where("forge_act_type='#{activity.class}' and forge_act_id =#{activity.id}").first.updated_at) %>
+        更新时间:<%= format_time(ForgeActivity.where("forge_act_type='ProjectCreateInfo' and forge_act_id =#{project.id}").first.updated_at) %>
       </div>
       <div class="cl"></div>
       <div class="homepagePostSetting" id="act-<%= user_activity_id %>" style="visibility: hidden">
diff --git a/app/views/users/_user_homework_detail.html.erb b/app/views/users/_user_homework_detail.html.erb
index 85e426e92..802723936 100644
--- a/app/views/users/_user_homework_detail.html.erb
+++ b/app/views/users/_user_homework_detail.html.erb
@@ -174,7 +174,7 @@
                   <% time=project.updated_on %>
                   <% time=ForgeActivity.where("project_id=?",project.id).last.updated_at if ForgeActivity.where("project_id=?",project.id).last %>
                   <p><span class="captainName" title="<%=(User.find project.user_id).show_name %>"><%=(User.find project.user_id).show_name %></span><span style="vertical-align: top;">(组长)</span></p>
-                  <p><%=time_from_now time %></p>
+                  <p><%=time_from_now time %>&nbsp;&nbsp;<%= project.commits_count %>提交</p>
                   <div class="relatePInfo" id="relatePInfo_<%=project.id %>_<%=homework_common.id %>">
                     项目名称:<%=project.name %><br />
                     创建者:<%=(User.find project.user_id).show_name %>(组长)<br />
diff --git a/db/schema.rb b/db/schema.rb
index 57c313b0f..4e2460aaf 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 # encoding: UTF-8
 # This file is auto-generated from the current state of the database. Instead
 # of editing this file, please use the migrations feature of Active Record to
@@ -2011,3 +2012,2017 @@ ActiveRecord::Schema.define(:version => 20160113064153) do
   end
 
 end
+=======
+# encoding: UTF-8
+# This file is auto-generated from the current state of the database. Instead
+# of editing this file, please use the migrations feature of Active Record to
+# incrementally modify your database, and then regenerate this schema definition.
+#
+# Note that this schema.rb definition is the authoritative source for your
+# database schema. If you need to create the application database on another
+# system, you should be using db:schema:load, not running all the migrations
+# from scratch. The latter is a flawed and unsustainable approach (the more migrations
+# you'll amass, the slower it'll run and the greater likelihood for issues).
+#
+# It's strongly recommended to check this file into your version control system.
+
+ActiveRecord::Schema.define(:version => 20160113090435) do
+
+  create_table "activities", :force => true do |t|
+    t.integer  "act_id",                                  :null => false
+    t.string   "act_type",                                :null => false
+    t.integer  "user_id",                                 :null => false
+    t.integer  "activity_container_id"
+    t.string   "activity_container_type", :default => ""
+    t.datetime "created_at"
+  end
+
+  add_index "activities", ["act_id", "act_type"], :name => "index_activities_on_act_id_and_act_type"
+  add_index "activities", ["user_id", "act_type"], :name => "index_activities_on_user_id_and_act_type"
+  add_index "activities", ["user_id"], :name => "index_activities_on_user_id"
+
+  create_table "activity_notifies", :force => true do |t|
+    t.integer  "activity_container_id"
+    t.string   "activity_container_type"
+    t.integer  "activity_id"
+    t.string   "activity_type"
+    t.integer  "notify_to"
+    t.datetime "created_on"
+    t.integer  "is_read"
+  end
+
+  add_index "activity_notifies", ["activity_container_id", "activity_container_type"], :name => "index_an_activity_container_id"
+  add_index "activity_notifies", ["created_on"], :name => "index_an_created_on"
+  add_index "activity_notifies", ["notify_to"], :name => "index_an_notify_to"
+
+  create_table "api_keys", :force => true do |t|
+    t.string   "access_token"
+    t.datetime "expires_at"
+    t.integer  "user_id"
+    t.boolean  "active",       :default => true
+    t.datetime "created_at",                     :null => false
+    t.datetime "updated_at",                     :null => false
+  end
+
+  add_index "api_keys", ["access_token"], :name => "index_api_keys_on_access_token"
+  add_index "api_keys", ["user_id"], :name => "index_api_keys_on_user_id"
+
+  create_table "applied_projects", :force => true do |t|
+    t.integer "project_id", :null => false
+    t.integer "user_id",    :null => false
+  end
+
+  create_table "apply_project_masters", :force => true do |t|
+    t.integer  "user_id"
+    t.string   "apply_type"
+    t.integer  "apply_id"
+    t.integer  "status"
+    t.datetime "created_at", :null => false
+    t.datetime "updated_at", :null => false
+  end
+
+  create_table "at_messages", :force => true do |t|
+    t.integer  "user_id"
+    t.integer  "at_message_id"
+    t.string   "at_message_type"
+    t.boolean  "viewed",          :default => false
+    t.string   "container_type"
+    t.integer  "container_id"
+    t.datetime "created_at",                         :null => false
+    t.datetime "updated_at",                         :null => false
+    t.integer  "sender_id"
+  end
+
+  add_index "at_messages", ["user_id"], :name => "index_at_messages_on_user_id"
+
+  create_table "attachment_histories", :force => true do |t|
+    t.integer  "container_id"
+    t.string   "container_type"
+    t.string   "filename",                     :default => ""
+    t.string   "disk_filename",                :default => ""
+    t.integer  "filesize",                     :default => 0
+    t.string   "content_type",                 :default => ""
+    t.string   "digest",         :limit => 40, :default => ""
+    t.integer  "downloads",                    :default => 0
+    t.integer  "author_id"
+    t.datetime "created_on"
+    t.string   "description"
+    t.string   "disk_directory"
+    t.integer  "attachtype"
+    t.integer  "is_public"
+    t.integer  "copy_from"
+    t.integer  "quotes"
+    t.integer  "version"
+    t.integer  "attachment_id"
+  end
+
+  create_table "attachments", :force => true do |t|
+    t.integer  "container_id"
+    t.string   "container_type", :limit => 30
+    t.string   "filename",                     :default => "", :null => false
+    t.string   "disk_filename",                :default => "", :null => false
+    t.integer  "filesize",                     :default => 0,  :null => false
+    t.string   "content_type",                 :default => ""
+    t.string   "digest",         :limit => 40, :default => "", :null => false
+    t.integer  "downloads",                    :default => 0,  :null => false
+    t.integer  "author_id",                    :default => 0,  :null => false
+    t.datetime "created_on"
+    t.string   "description"
+    t.string   "disk_directory"
+    t.integer  "attachtype",                   :default => 1
+    t.integer  "is_public",                    :default => 1
+    t.integer  "copy_from"
+    t.integer  "quotes"
+  end
+
+  add_index "attachments", ["author_id"], :name => "index_attachments_on_author_id"
+  add_index "attachments", ["container_id", "container_type"], :name => "index_attachments_on_container_id_and_container_type"
+  add_index "attachments", ["created_on"], :name => "index_attachments_on_created_on"
+
+  create_table "attachmentstypes", :force => true do |t|
+    t.integer "typeId",                 :null => false
+    t.string  "typeName", :limit => 50
+  end
+
+  create_table "auth_sources", :force => true do |t|
+    t.string  "type",              :limit => 30, :default => "",    :null => false
+    t.string  "name",              :limit => 60, :default => "",    :null => false
+    t.string  "host",              :limit => 60
+    t.integer "port"
+    t.string  "account"
+    t.string  "account_password",                :default => ""
+    t.string  "base_dn"
+    t.string  "attr_login",        :limit => 30
+    t.string  "attr_firstname",    :limit => 30
+    t.string  "attr_lastname",     :limit => 30
+    t.string  "attr_mail",         :limit => 30
+    t.boolean "onthefly_register",               :default => false, :null => false
+    t.boolean "tls",                             :default => false, :null => false
+    t.string  "filter"
+    t.integer "timeout"
+  end
+
+  add_index "auth_sources", ["id", "type"], :name => "index_auth_sources_on_id_and_type"
+
+  create_table "biding_projects", :force => true do |t|
+    t.integer  "project_id"
+    t.integer  "bid_id"
+    t.integer  "user_id"
+    t.string   "description"
+    t.datetime "created_at",  :null => false
+    t.datetime "updated_at",  :null => false
+    t.string   "reward"
+  end
+
+  create_table "bids", :force => true do |t|
+    t.string   "name"
+    t.string   "budget",                                    :null => false
+    t.integer  "author_id"
+    t.date     "deadline"
+    t.text     "description"
+    t.datetime "created_on",                                :null => false
+    t.datetime "updated_on",                                :null => false
+    t.integer  "commit"
+    t.integer  "reward_type"
+    t.integer  "homework_type"
+    t.integer  "parent_id"
+    t.string   "password"
+    t.integer  "is_evaluation"
+    t.integer  "proportion",                :default => 60
+    t.integer  "comment_status",            :default => 0
+    t.integer  "evaluation_num",            :default => 3
+    t.integer  "open_anonymous_evaluation", :default => 1
+  end
+
+  create_table "blog_comments", :force => true do |t|
+    t.integer  "blog_id",                            :null => false
+    t.integer  "parent_id"
+    t.string   "title",           :default => "",    :null => false
+    t.text     "content"
+    t.integer  "author_id"
+    t.integer  "comments_count",  :default => 0,     :null => false
+    t.integer  "last_comment_id"
+    t.datetime "created_on",                         :null => false
+    t.datetime "updated_on",                         :null => false
+    t.boolean  "locked",          :default => false
+    t.integer  "sticky",          :default => 0
+    t.integer  "reply_id"
+    t.datetime "created_at",                         :null => false
+    t.datetime "updated_at",                         :null => false
+  end
+
+  create_table "blogs", :force => true do |t|
+    t.string   "name",             :default => "", :null => false
+    t.text     "description"
+    t.integer  "position",         :default => 1
+    t.integer  "article_count",    :default => 0,  :null => false
+    t.integer  "comments_count",   :default => 0,  :null => false
+    t.integer  "last_comments_id"
+    t.integer  "parent_id"
+    t.integer  "author_id"
+    t.datetime "created_at",                       :null => false
+    t.datetime "updated_at",                       :null => false
+    t.integer  "homepage_id"
+  end
+
+  create_table "boards", :force => true do |t|
+    t.integer "project_id",                      :null => false
+    t.string  "name",            :default => "", :null => false
+    t.string  "description"
+    t.integer "position",        :default => 1
+    t.integer "topics_count",    :default => 0,  :null => false
+    t.integer "messages_count",  :default => 0,  :null => false
+    t.integer "last_message_id"
+    t.integer "parent_id"
+    t.integer "course_id"
+    t.integer "org_subfield_id"
+  end
+
+  add_index "boards", ["last_message_id"], :name => "index_boards_on_last_message_id"
+  add_index "boards", ["project_id"], :name => "boards_project_id"
+
+  create_table "bug_to_osps", :force => true do |t|
+    t.integer  "osp_id"
+    t.integer  "relative_memo_id"
+    t.string   "description"
+    t.datetime "created_at",       :null => false
+    t.datetime "updated_at",       :null => false
+  end
+
+  create_table "changes", :force => true do |t|
+    t.integer "changeset_id",                               :null => false
+    t.string  "action",        :limit => 1, :default => "", :null => false
+    t.text    "path",                                       :null => false
+    t.text    "from_path"
+    t.string  "from_revision"
+    t.string  "revision"
+    t.string  "branch"
+  end
+
+  add_index "changes", ["changeset_id"], :name => "changesets_changeset_id"
+
+  create_table "changeset_parents", :id => false, :force => true do |t|
+    t.integer "changeset_id", :null => false
+    t.integer "parent_id",    :null => false
+  end
+
+  add_index "changeset_parents", ["changeset_id"], :name => "changeset_parents_changeset_ids"
+  add_index "changeset_parents", ["parent_id"], :name => "changeset_parents_parent_ids"
+
+  create_table "changesets", :force => true do |t|
+    t.integer  "repository_id", :null => false
+    t.string   "revision",      :null => false
+    t.string   "committer"
+    t.datetime "committed_on",  :null => false
+    t.text     "comments"
+    t.date     "commit_date"
+    t.string   "scmid"
+    t.integer  "user_id"
+  end
+
+  add_index "changesets", ["committed_on"], :name => "index_changesets_on_committed_on"
+  add_index "changesets", ["repository_id", "revision"], :name => "changesets_repos_rev", :unique => true
+  add_index "changesets", ["repository_id", "scmid"], :name => "changesets_repos_scmid"
+  add_index "changesets", ["repository_id"], :name => "index_changesets_on_repository_id"
+  add_index "changesets", ["user_id"], :name => "index_changesets_on_user_id"
+
+  create_table "changesets_issues", :id => false, :force => true do |t|
+    t.integer "changeset_id", :null => false
+    t.integer "issue_id",     :null => false
+  end
+
+  add_index "changesets_issues", ["changeset_id", "issue_id"], :name => "changesets_issues_ids", :unique => true
+
+  create_table "code_review_assignments", :force => true do |t|
+    t.integer "issue_id"
+    t.integer "change_id"
+    t.integer "attachment_id"
+    t.string  "file_path"
+    t.string  "rev"
+    t.string  "rev_to"
+    t.string  "action_type"
+    t.integer "changeset_id"
+  end
+
+  create_table "code_review_project_settings", :force => true do |t|
+    t.integer  "project_id"
+    t.integer  "tracker_id"
+    t.datetime "created_at"
+    t.datetime "updated_at"
+    t.integer  "updated_by"
+    t.boolean  "hide_code_review_tab",     :default => false
+    t.integer  "auto_relation",            :default => 1
+    t.integer  "assignment_tracker_id"
+    t.text     "auto_assign"
+    t.integer  "lock_version",             :default => 0,     :null => false
+    t.boolean  "tracker_in_review_dialog", :default => false
+  end
+
+  create_table "code_review_user_settings", :force => true do |t|
+    t.integer  "user_id",           :default => 0, :null => false
+    t.integer  "mail_notification", :default => 0, :null => false
+    t.datetime "created_at"
+    t.datetime "updated_at"
+  end
+
+  create_table "code_reviews", :force => true do |t|
+    t.integer  "project_id"
+    t.integer  "change_id"
+    t.datetime "created_at"
+    t.datetime "updated_at"
+    t.integer  "line"
+    t.integer  "updated_by_id"
+    t.integer  "lock_version",        :default => 0, :null => false
+    t.integer  "status_changed_from"
+    t.integer  "status_changed_to"
+    t.integer  "issue_id"
+    t.string   "action_type"
+    t.string   "file_path"
+    t.string   "rev"
+    t.string   "rev_to"
+    t.integer  "attachment_id"
+    t.integer  "file_count",          :default => 0, :null => false
+    t.boolean  "diff_all"
+  end
+
+  create_table "comments", :force => true do |t|
+    t.string   "commented_type", :limit => 30, :default => "", :null => false
+    t.integer  "commented_id",                 :default => 0,  :null => false
+    t.integer  "author_id",                    :default => 0,  :null => false
+    t.text     "comments"
+    t.datetime "created_on",                                   :null => false
+    t.datetime "updated_on",                                   :null => false
+  end
+
+  add_index "comments", ["author_id"], :name => "index_comments_on_author_id"
+  add_index "comments", ["commented_id", "commented_type"], :name => "index_comments_on_commented_id_and_commented_type"
+
+  create_table "contest_notifications", :force => true do |t|
+    t.text     "title"
+    t.text     "content"
+    t.datetime "created_at", :null => false
+    t.datetime "updated_at", :null => false
+  end
+
+  create_table "contesting_projects", :force => true do |t|
+    t.integer  "project_id"
+    t.string   "contest_id"
+    t.integer  "user_id"
+    t.string   "description"
+    t.datetime "created_at",  :null => false
+    t.datetime "updated_at",  :null => false
+    t.string   "reward"
+  end
+
+  create_table "contesting_softapplications", :force => true do |t|
+    t.integer  "softapplication_id"
+    t.integer  "contest_id"
+    t.integer  "user_id"
+    t.string   "description"
+    t.datetime "created_at",         :null => false
+    t.datetime "updated_at",         :null => false
+    t.string   "reward"
+  end
+
+  create_table "contestnotifications", :force => true do |t|
+    t.integer  "contest_id"
+    t.string   "title"
+    t.string   "summary"
+    t.text     "description"
+    t.integer  "author_id"
+    t.integer  "notificationcomments_count"
+    t.datetime "created_at",                 :null => false
+    t.datetime "updated_at",                 :null => false
+  end
+
+  create_table "contests", :force => true do |t|
+    t.string   "name"
+    t.string   "budget",      :default => ""
+    t.integer  "author_id"
+    t.date     "deadline"
+    t.string   "description"
+    t.integer  "commit"
+    t.string   "password"
+    t.datetime "created_on",                  :null => false
+    t.datetime "updated_on",                  :null => false
+  end
+
+  create_table "course_activities", :force => true do |t|
+    t.integer  "user_id"
+    t.integer  "course_id"
+    t.integer  "course_act_id"
+    t.string   "course_act_type"
+    t.datetime "created_at",      :null => false
+    t.datetime "updated_at",      :null => false
+  end
+
+  create_table "course_attachments", :force => true do |t|
+    t.string   "filename"
+    t.string   "disk_filename"
+    t.integer  "filesize"
+    t.string   "content_type"
+    t.string   "digest"
+    t.integer  "downloads"
+    t.string   "author_id"
+    t.string   "integer"
+    t.string   "description"
+    t.string   "disk_directory"
+    t.integer  "attachtype"
+    t.integer  "is_public"
+    t.datetime "created_at",                    :null => false
+    t.datetime "updated_at",                    :null => false
+    t.integer  "container_id",   :default => 0
+  end
+
+  create_table "course_contributor_scores", :force => true do |t|
+    t.integer  "course_id"
+    t.integer  "user_id"
+    t.integer  "message_num"
+    t.integer  "message_reply_num"
+    t.integer  "news_reply_num"
+    t.integer  "resource_num"
+    t.integer  "journal_num"
+    t.integer  "journal_reply_num"
+    t.datetime "created_at",        :null => false
+    t.datetime "updated_at",        :null => false
+    t.integer  "total_score"
+  end
+
+  create_table "course_groups", :force => true do |t|
+    t.string   "name"
+    t.integer  "course_id"
+    t.datetime "created_at", :null => false
+    t.datetime "updated_at", :null => false
+  end
+
+  create_table "course_infos", :force => true do |t|
+    t.integer  "course_id"
+    t.integer  "user_id"
+    t.datetime "created_at", :null => false
+    t.datetime "updated_at", :null => false
+  end
+
+  create_table "course_messages", :force => true do |t|
+    t.integer  "user_id"
+    t.integer  "course_id"
+    t.integer  "course_message_id"
+    t.string   "course_message_type"
+    t.integer  "viewed"
+    t.datetime "created_at",          :null => false
+    t.datetime "updated_at",          :null => false
+    t.string   "content"
+    t.integer  "status"
+  end
+
+  create_table "course_statuses", :force => true do |t|
+    t.integer  "changesets_count"
+    t.integer  "watchers_count"
+    t.integer  "course_id"
+    t.float    "grade",            :default => 0.0
+    t.integer  "course_ac_para",   :default => 0
+    t.datetime "created_at",                        :null => false
+    t.datetime "updated_at",                        :null => false
+  end
+
+  create_table "courses", :force => true do |t|
+    t.integer  "tea_id"
+    t.string   "name"
+    t.integer  "state"
+    t.string   "code"
+    t.integer  "time"
+    t.string   "extra"
+    t.datetime "created_at",                                   :null => false
+    t.datetime "updated_at",                                   :null => false
+    t.string   "location"
+    t.string   "term"
+    t.string   "string"
+    t.string   "password"
+    t.string   "setup_time"
+    t.string   "endup_time"
+    t.string   "class_period"
+    t.integer  "school_id"
+    t.text     "description"
+    t.integer  "status",                        :default => 1
+    t.integer  "attachmenttype",                :default => 2
+    t.integer  "lft"
+    t.integer  "rgt"
+    t.integer  "is_public",        :limit => 1, :default => 1
+    t.integer  "inherit_members",  :limit => 1, :default => 1
+    t.integer  "open_student",                  :default => 0
+    t.integer  "outline",                       :default => 0
+    t.integer  "publish_resource",              :default => 0
+    t.integer  "is_delete",                     :default => 0
+    t.integer  "end_time"
+    t.string   "end_term"
+  end
+
+  create_table "custom_fields", :force => true do |t|
+    t.string  "type",            :limit => 30, :default => "",    :null => false
+    t.string  "name",            :limit => 30, :default => "",    :null => false
+    t.string  "field_format",    :limit => 30, :default => "",    :null => false
+    t.text    "possible_values"
+    t.string  "regexp",                        :default => ""
+    t.integer "min_length",                    :default => 0,     :null => false
+    t.integer "max_length",                    :default => 0,     :null => false
+    t.boolean "is_required",                   :default => false, :null => false
+    t.boolean "is_for_all",                    :default => false, :null => false
+    t.boolean "is_filter",                     :default => false, :null => false
+    t.integer "position",                      :default => 1
+    t.boolean "searchable",                    :default => false
+    t.text    "default_value"
+    t.boolean "editable",                      :default => true
+    t.boolean "visible",                       :default => true,  :null => false
+    t.boolean "multiple",                      :default => false
+  end
+
+  add_index "custom_fields", ["id", "type"], :name => "index_custom_fields_on_id_and_type"
+
+  create_table "custom_fields_projects", :id => false, :force => true do |t|
+    t.integer "custom_field_id", :default => 0, :null => false
+    t.integer "project_id",      :default => 0, :null => false
+  end
+
+  add_index "custom_fields_projects", ["custom_field_id", "project_id"], :name => "index_custom_fields_projects_on_custom_field_id_and_project_id", :unique => true
+
+  create_table "custom_fields_trackers", :id => false, :force => true do |t|
+    t.integer "custom_field_id", :default => 0, :null => false
+    t.integer "tracker_id",      :default => 0, :null => false
+  end
+
+  add_index "custom_fields_trackers", ["custom_field_id", "tracker_id"], :name => "index_custom_fields_trackers_on_custom_field_id_and_tracker_id", :unique => true
+
+  create_table "custom_values", :force => true do |t|
+    t.string  "customized_type", :limit => 30, :default => "", :null => false
+    t.integer "customized_id",                 :default => 0,  :null => false
+    t.integer "custom_field_id",               :default => 0,  :null => false
+    t.text    "value"
+  end
+
+  add_index "custom_values", ["custom_field_id"], :name => "index_custom_values_on_custom_field_id"
+  add_index "custom_values", ["customized_type", "customized_id"], :name => "custom_values_customized"
+
+  create_table "delayed_jobs", :force => true do |t|
+    t.integer  "priority",   :default => 0, :null => false
+    t.integer  "attempts",   :default => 0, :null => false
+    t.text     "handler",                   :null => false
+    t.text     "last_error"
+    t.datetime "run_at"
+    t.datetime "locked_at"
+    t.datetime "failed_at"
+    t.string   "locked_by"
+    t.string   "queue"
+    t.datetime "created_at"
+    t.datetime "updated_at"
+  end
+
+  add_index "delayed_jobs", ["priority", "run_at"], :name => "delayed_jobs_priority"
+
+  create_table "discuss_demos", :force => true do |t|
+    t.string   "title"
+    t.text     "body"
+    t.datetime "created_at", :null => false
+    t.datetime "updated_at", :null => false
+  end
+
+  create_table "documents", :force => true do |t|
+    t.integer  "project_id",                :default => 0,  :null => false
+    t.integer  "category_id",               :default => 0,  :null => false
+    t.string   "title",       :limit => 60, :default => "", :null => false
+    t.text     "description"
+    t.datetime "created_on"
+    t.integer  "user_id",                   :default => 0
+    t.integer  "is_public",                 :default => 1
+  end
+
+  add_index "documents", ["category_id"], :name => "index_documents_on_category_id"
+  add_index "documents", ["created_on"], :name => "index_documents_on_created_on"
+  add_index "documents", ["project_id"], :name => "documents_project_id"
+
+  create_table "dts", :primary_key => "Num", :force => true do |t|
+    t.string   "Defect",        :limit => 50
+    t.string   "Category",      :limit => 50
+    t.string   "File"
+    t.string   "Method"
+    t.string   "Module",        :limit => 20
+    t.string   "Variable",      :limit => 50
+    t.integer  "StartLine"
+    t.integer  "IPLine"
+    t.string   "IPLineCode",    :limit => 200
+    t.string   "Judge",         :limit => 15
+    t.integer  "Review",        :limit => 1
+    t.string   "Description"
+    t.text     "PreConditions", :limit => 2147483647
+    t.text     "TraceInfo",     :limit => 2147483647
+    t.text     "Code",          :limit => 2147483647
+    t.integer  "project_id"
+    t.datetime "created_at"
+    t.datetime "updated_at"
+    t.integer  "id",                                  :null => false
+  end
+
+  create_table "editor_of_documents", :force => true do |t|
+    t.integer  "editor_id"
+    t.integer  "org_document_comment_id"
+    t.datetime "created_at"
+  end
+
+  create_table "enabled_modules", :force => true do |t|
+    t.integer "project_id"
+    t.string  "name",       :null => false
+    t.integer "course_id"
+  end
+
+  add_index "enabled_modules", ["project_id"], :name => "enabled_modules_project_id"
+
+  create_table "enumerations", :force => true do |t|
+    t.string  "name",          :limit => 30, :default => "",    :null => false
+    t.integer "position",                    :default => 1
+    t.boolean "is_default",                  :default => false, :null => false
+    t.string  "type"
+    t.boolean "active",                      :default => true,  :null => false
+    t.integer "project_id"
+    t.integer "parent_id"
+    t.string  "position_name", :limit => 30
+  end
+
+  add_index "enumerations", ["id", "type"], :name => "index_enumerations_on_id_and_type"
+  add_index "enumerations", ["project_id"], :name => "index_enumerations_on_project_id"
+
+  create_table "exercise_answers", :force => true do |t|
+    t.integer  "user_id"
+    t.integer  "exercise_question_id"
+    t.integer  "exercise_choice_id"
+    t.text     "answer_text"
+    t.datetime "created_at",           :null => false
+    t.datetime "updated_at",           :null => false
+  end
+
+  create_table "exercise_choices", :force => true do |t|
+    t.integer  "exercise_question_id"
+    t.text     "choice_text"
+    t.integer  "choice_position"
+    t.datetime "created_at",           :null => false
+    t.datetime "updated_at",           :null => false
+  end
+
+  create_table "exercise_questions", :force => true do |t|
+    t.text     "question_title"
+    t.integer  "question_type"
+    t.integer  "question_number"
+    t.integer  "exercise_id"
+    t.datetime "created_at",      :null => false
+    t.datetime "updated_at",      :null => false
+    t.integer  "question_score"
+  end
+
+  create_table "exercise_standard_answers", :force => true do |t|
+    t.integer  "exercise_question_id"
+    t.integer  "exercise_choice_id"
+    t.text     "answer_text"
+    t.datetime "created_at",           :null => false
+    t.datetime "updated_at",           :null => false
+  end
+
+  create_table "exercise_users", :force => true do |t|
+    t.integer  "user_id"
+    t.integer  "exercise_id"
+    t.integer  "score"
+    t.datetime "start_at"
+    t.datetime "created_at",  :null => false
+    t.datetime "updated_at",  :null => false
+    t.datetime "end_at"
+    t.integer  "status"
+  end
+
+  create_table "exercises", :force => true do |t|
+    t.text     "exercise_name"
+    t.text     "exercise_description"
+    t.integer  "course_id"
+    t.integer  "exercise_status"
+    t.integer  "user_id"
+    t.integer  "time"
+    t.datetime "created_at",           :null => false
+    t.datetime "updated_at",           :null => false
+    t.datetime "publish_time"
+    t.datetime "end_time"
+    t.integer  "show_result"
+  end
+
+  create_table "first_pages", :force => true do |t|
+    t.string   "web_title"
+    t.string   "title"
+    t.text     "description"
+    t.string   "page_type"
+    t.datetime "created_at",                    :null => false
+    t.datetime "updated_at",                    :null => false
+    t.integer  "sort_type"
+    t.integer  "image_width",  :default => 107
+    t.integer  "image_height", :default => 63
+    t.integer  "show_course",  :default => 1
+    t.integer  "show_contest", :default => 1
+  end
+
+  create_table "forge_activities", :force => true do |t|
+    t.integer  "user_id"
+    t.integer  "project_id"
+    t.integer  "forge_act_id"
+    t.string   "forge_act_type"
+    t.integer  "org_id"
+    t.datetime "created_at",     :null => false
+    t.datetime "updated_at",     :null => false
+  end
+
+  add_index "forge_activities", ["forge_act_id"], :name => "index_forge_activities_on_forge_act_id"
+
+  create_table "forge_messages", :force => true do |t|
+    t.integer  "user_id"
+    t.integer  "project_id"
+    t.integer  "forge_message_id"
+    t.string   "forge_message_type"
+    t.integer  "viewed"
+    t.datetime "created_at",         :null => false
+    t.datetime "updated_at",         :null => false
+    t.string   "secret_key"
+    t.integer  "status"
+  end
+
+  create_table "forums", :force => true do |t|
+    t.string   "name",                        :null => false
+    t.text     "description"
+    t.integer  "topic_count",  :default => 0
+    t.integer  "memo_count",   :default => 0
+    t.integer  "last_memo_id", :default => 0
+    t.integer  "creator_id",                  :null => false
+    t.datetime "created_at",                  :null => false
+    t.datetime "updated_at",                  :null => false
+    t.integer  "sticky"
+    t.integer  "locked"
+  end
+
+  create_table "groups_users", :id => false, :force => true do |t|
+    t.integer "group_id", :null => false
+    t.integer "user_id",  :null => false
+  end
+
+  add_index "groups_users", ["group_id", "user_id"], :name => "groups_users_ids", :unique => true
+
+  create_table "homework_attaches", :force => true do |t|
+    t.integer  "bid_id"
+    t.integer  "user_id"
+    t.datetime "created_at",                        :null => false
+    t.datetime "updated_at",                        :null => false
+    t.string   "reward"
+    t.string   "name"
+    t.text     "description"
+    t.integer  "state"
+    t.integer  "project_id",       :default => 0
+    t.float    "score",            :default => 0.0
+    t.integer  "is_teacher_score", :default => 0
+  end
+
+  add_index "homework_attaches", ["bid_id"], :name => "index_homework_attaches_on_bid_id"
+
+  create_table "homework_commons", :force => true do |t|
+    t.string   "name"
+    t.integer  "user_id"
+    t.text     "description"
+    t.date     "publish_time"
+    t.date     "end_time"
+    t.integer  "homework_type",     :default => 1
+    t.string   "late_penalty"
+    t.integer  "course_id"
+    t.datetime "created_at",                       :null => false
+    t.datetime "updated_at",                       :null => false
+    t.integer  "teacher_priority",  :default => 1
+    t.integer  "anonymous_comment", :default => 0
+  end
+
+  add_index "homework_commons", ["course_id", "id"], :name => "index_homework_commons_on_course_id_and_id"
+
+  create_table "homework_detail_groups", :force => true do |t|
+    t.integer  "homework_common_id"
+    t.integer  "min_num"
+    t.integer  "max_num"
+    t.integer  "base_on_project"
+    t.datetime "created_at",         :null => false
+    t.datetime "updated_at",         :null => false
+  end
+
+  add_index "homework_detail_groups", ["homework_common_id"], :name => "index_homework_detail_groups_on_homework_common_id"
+
+  create_table "homework_detail_manuals", :force => true do |t|
+    t.float    "ta_proportion"
+    t.integer  "comment_status"
+    t.date     "evaluation_start"
+    t.date     "evaluation_end"
+    t.integer  "evaluation_num"
+    t.integer  "absence_penalty",    :default => 1
+    t.integer  "homework_common_id"
+    t.datetime "created_at",                        :null => false
+    t.datetime "updated_at",                        :null => false
+  end
+
+  create_table "homework_detail_programings", :force => true do |t|
+    t.string   "language"
+    t.text     "standard_code",      :limit => 2147483647
+    t.integer  "homework_common_id"
+    t.datetime "created_at",                                                :null => false
+    t.datetime "updated_at",                                                :null => false
+    t.float    "ta_proportion",                            :default => 0.1
+    t.integer  "question_id"
+  end
+
+  create_table "homework_evaluations", :force => true do |t|
+    t.string   "user_id"
+    t.string   "homework_attach_id"
+    t.datetime "created_at",         :null => false
+    t.datetime "updated_at",         :null => false
+  end
+
+  create_table "homework_for_courses", :force => true do |t|
+    t.integer "course_id"
+    t.integer "bid_id"
+  end
+
+  add_index "homework_for_courses", ["bid_id"], :name => "index_homework_for_courses_on_bid_id"
+  add_index "homework_for_courses", ["course_id"], :name => "index_homework_for_courses_on_course_id"
+
+  create_table "homework_tests", :force => true do |t|
+    t.text     "input"
+    t.text     "output"
+    t.integer  "homework_common_id"
+    t.datetime "created_at",         :null => false
+    t.datetime "updated_at",         :null => false
+    t.integer  "result"
+    t.text     "error_msg"
+  end
+
+  create_table "homework_users", :force => true do |t|
+    t.string   "homework_attach_id"
+    t.string   "user_id"
+    t.datetime "created_at",         :null => false
+    t.datetime "updated_at",         :null => false
+  end
+
+  create_table "invite_lists", :force => true do |t|
+    t.integer  "project_id"
+    t.integer  "user_id"
+    t.datetime "created_at", :null => false
+    t.datetime "updated_at", :null => false
+    t.string   "mail"
+  end
+
+  create_table "issue_categories", :force => true do |t|
+    t.integer "project_id",                   :default => 0,  :null => false
+    t.string  "name",           :limit => 30, :default => "", :null => false
+    t.integer "assigned_to_id"
+  end
+
+  add_index "issue_categories", ["assigned_to_id"], :name => "index_issue_categories_on_assigned_to_id"
+  add_index "issue_categories", ["project_id"], :name => "issue_categories_project_id"
+
+  create_table "issue_relations", :force => true do |t|
+    t.integer "issue_from_id",                 :null => false
+    t.integer "issue_to_id",                   :null => false
+    t.string  "relation_type", :default => "", :null => false
+    t.integer "delay"
+  end
+
+  add_index "issue_relations", ["issue_from_id", "issue_to_id"], :name => "index_issue_relations_on_issue_from_id_and_issue_to_id", :unique => true
+  add_index "issue_relations", ["issue_from_id"], :name => "index_issue_relations_on_issue_from_id"
+  add_index "issue_relations", ["issue_to_id"], :name => "index_issue_relations_on_issue_to_id"
+
+  create_table "issue_statuses", :force => true do |t|
+    t.string  "name",               :limit => 30, :default => "",    :null => false
+    t.boolean "is_closed",                        :default => false, :null => false
+    t.boolean "is_default",                       :default => false, :null => false
+    t.integer "position",                         :default => 1
+    t.integer "default_done_ratio"
+  end
+
+  add_index "issue_statuses", ["is_closed"], :name => "index_issue_statuses_on_is_closed"
+  add_index "issue_statuses", ["is_default"], :name => "index_issue_statuses_on_is_default"
+  add_index "issue_statuses", ["position"], :name => "index_issue_statuses_on_position"
+
+  create_table "issues", :force => true do |t|
+    t.integer  "tracker_id",                              :null => false
+    t.integer  "project_id",                              :null => false
+    t.string   "subject",              :default => "",    :null => false
+    t.text     "description"
+    t.date     "due_date"
+    t.integer  "category_id"
+    t.integer  "status_id",                               :null => false
+    t.integer  "assigned_to_id"
+    t.integer  "priority_id",                             :null => false
+    t.integer  "fixed_version_id"
+    t.integer  "author_id",                               :null => false
+    t.integer  "lock_version",         :default => 0,     :null => false
+    t.datetime "created_on"
+    t.datetime "updated_on"
+    t.date     "start_date"
+    t.integer  "done_ratio",           :default => 0,     :null => false
+    t.float    "estimated_hours"
+    t.integer  "parent_id"
+    t.integer  "root_id"
+    t.integer  "lft"
+    t.integer  "rgt"
+    t.boolean  "is_private",           :default => false, :null => false
+    t.datetime "closed_on"
+    t.integer  "project_issues_index"
+  end
+
+  add_index "issues", ["assigned_to_id"], :name => "index_issues_on_assigned_to_id"
+  add_index "issues", ["author_id"], :name => "index_issues_on_author_id"
+  add_index "issues", ["category_id"], :name => "index_issues_on_category_id"
+  add_index "issues", ["created_on"], :name => "index_issues_on_created_on"
+  add_index "issues", ["fixed_version_id"], :name => "index_issues_on_fixed_version_id"
+  add_index "issues", ["priority_id"], :name => "index_issues_on_priority_id"
+  add_index "issues", ["project_id"], :name => "issues_project_id"
+  add_index "issues", ["root_id", "lft", "rgt"], :name => "index_issues_on_root_id_and_lft_and_rgt"
+  add_index "issues", ["status_id"], :name => "index_issues_on_status_id"
+  add_index "issues", ["tracker_id"], :name => "index_issues_on_tracker_id"
+
+  create_table "join_in_competitions", :force => true do |t|
+    t.integer  "user_id"
+    t.integer  "competition_id"
+    t.datetime "created_at",     :null => false
+    t.datetime "updated_at",     :null => false
+  end
+
+  create_table "join_in_contests", :force => true do |t|
+    t.integer  "user_id"
+    t.integer  "bid_id"
+    t.datetime "created_at", :null => false
+    t.datetime "updated_at", :null => false
+  end
+
+  create_table "journal_details", :force => true do |t|
+    t.integer "journal_id",               :default => 0,  :null => false
+    t.string  "property",   :limit => 30, :default => "", :null => false
+    t.string  "prop_key",   :limit => 30, :default => "", :null => false
+    t.text    "old_value"
+    t.text    "value"
+  end
+
+  add_index "journal_details", ["journal_id"], :name => "journal_details_journal_id"
+
+  create_table "journal_replies", :id => false, :force => true do |t|
+    t.integer "journal_id"
+    t.integer "user_id"
+    t.integer "reply_id"
+  end
+
+  add_index "journal_replies", ["journal_id"], :name => "index_journal_replies_on_journal_id"
+  add_index "journal_replies", ["reply_id"], :name => "index_journal_replies_on_reply_id"
+  add_index "journal_replies", ["user_id"], :name => "index_journal_replies_on_user_id"
+
+  create_table "journals", :force => true do |t|
+    t.integer  "journalized_id",                 :default => 0,     :null => false
+    t.string   "journalized_type", :limit => 30, :default => "",    :null => false
+    t.integer  "user_id",                        :default => 0,     :null => false
+    t.text     "notes"
+    t.datetime "created_on",                                        :null => false
+    t.boolean  "private_notes",                  :default => false, :null => false
+  end
+
+  add_index "journals", ["created_on"], :name => "index_journals_on_created_on"
+  add_index "journals", ["journalized_id", "journalized_type"], :name => "journals_journalized_id"
+  add_index "journals", ["journalized_id"], :name => "index_journals_on_journalized_id"
+  add_index "journals", ["user_id"], :name => "index_journals_on_user_id"
+
+  create_table "journals_for_messages", :force => true do |t|
+    t.integer  "jour_id"
+    t.string   "jour_type"
+    t.integer  "user_id"
+    t.text     "notes"
+    t.integer  "status"
+    t.integer  "reply_id"
+    t.datetime "created_on",                                 :null => false
+    t.datetime "updated_on",                                 :null => false
+    t.string   "m_parent_id"
+    t.boolean  "is_readed"
+    t.integer  "m_reply_count"
+    t.integer  "m_reply_id"
+    t.integer  "is_comprehensive_evaluation"
+    t.integer  "private",                     :default => 0
+  end
+
+  create_table "kindeditor_assets", :force => true do |t|
+    t.string   "asset"
+    t.integer  "file_size"
+    t.string   "file_type"
+    t.integer  "owner_id"
+    t.string   "asset_type"
+    t.datetime "created_at",                :null => false
+    t.datetime "updated_at",                :null => false
+    t.integer  "owner_type", :default => 0
+  end
+
+  create_table "member_roles", :force => true do |t|
+    t.integer "member_id",      :null => false
+    t.integer "role_id",        :null => false
+    t.integer "inherited_from"
+  end
+
+  add_index "member_roles", ["member_id"], :name => "index_member_roles_on_member_id"
+  add_index "member_roles", ["role_id"], :name => "index_member_roles_on_role_id"
+
+  create_table "members", :force => true do |t|
+    t.integer  "user_id",           :default => 0,     :null => false
+    t.integer  "project_id",        :default => 0
+    t.datetime "created_on"
+    t.boolean  "mail_notification", :default => false, :null => false
+    t.integer  "course_id",         :default => -1
+    t.integer  "course_group_id",   :default => 0
+  end
+
+  add_index "members", ["project_id"], :name => "index_members_on_project_id"
+  add_index "members", ["user_id", "project_id", "course_id"], :name => "index_members_on_user_id_and_project_id", :unique => true
+  add_index "members", ["user_id"], :name => "index_members_on_user_id"
+
+  create_table "memo_messages", :force => true do |t|
+    t.integer  "user_id"
+    t.integer  "forum_id"
+    t.integer  "memo_id"
+    t.string   "memo_type"
+    t.integer  "viewed"
+    t.datetime "created_at", :null => false
+    t.datetime "updated_at", :null => false
+  end
+
+  create_table "memos", :force => true do |t|
+    t.integer  "forum_id",                         :null => false
+    t.integer  "parent_id"
+    t.string   "subject",                          :null => false
+    t.text     "content",                          :null => false
+    t.integer  "author_id",                        :null => false
+    t.integer  "replies_count", :default => 0
+    t.integer  "last_reply_id"
+    t.boolean  "lock",          :default => false
+    t.boolean  "sticky",        :default => false
+    t.datetime "created_at",                       :null => false
+    t.datetime "updated_at",                       :null => false
+    t.integer  "viewed_count",  :default => 0
+  end
+
+  create_table "message_alls", :force => true do |t|
+    t.integer  "user_id"
+    t.integer  "message_id"
+    t.string   "message_type"
+    t.datetime "created_at",   :null => false
+    t.datetime "updated_at",   :null => false
+  end
+
+  create_table "messages", :force => true do |t|
+    t.integer  "board_id",                         :null => false
+    t.integer  "parent_id"
+    t.string   "subject",       :default => "",    :null => false
+    t.text     "content"
+    t.integer  "author_id"
+    t.integer  "replies_count", :default => 0,     :null => false
+    t.integer  "last_reply_id"
+    t.datetime "created_on",                       :null => false
+    t.datetime "updated_on",                       :null => false
+    t.boolean  "locked",        :default => false
+    t.integer  "sticky",        :default => 0
+    t.integer  "reply_id"
+    t.integer  "quotes"
+  end
+
+  add_index "messages", ["author_id"], :name => "index_messages_on_author_id"
+  add_index "messages", ["board_id"], :name => "messages_board_id"
+  add_index "messages", ["created_on"], :name => "index_messages_on_created_on"
+  add_index "messages", ["last_reply_id"], :name => "index_messages_on_last_reply_id"
+  add_index "messages", ["parent_id"], :name => "messages_parent_id"
+
+  create_table "news", :force => true do |t|
+    t.integer  "project_id"
+    t.string   "title",          :limit => 60, :default => "", :null => false
+    t.string   "summary",                      :default => ""
+    t.text     "description"
+    t.integer  "author_id",                    :default => 0,  :null => false
+    t.datetime "created_on"
+    t.integer  "comments_count",               :default => 0,  :null => false
+    t.integer  "course_id"
+    t.integer  "sticky",                       :default => 0
+  end
+
+  add_index "news", ["author_id"], :name => "index_news_on_author_id"
+  add_index "news", ["created_on"], :name => "index_news_on_created_on"
+  add_index "news", ["project_id"], :name => "news_project_id"
+
+  create_table "no_uses", :force => true do |t|
+    t.integer  "user_id",     :null => false
+    t.string   "no_use_type"
+    t.integer  "no_use_id"
+    t.datetime "created_at",  :null => false
+    t.datetime "updated_at",  :null => false
+  end
+
+  create_table "notificationcomments", :force => true do |t|
+    t.string   "notificationcommented_type"
+    t.integer  "notificationcommented_id"
+    t.integer  "author_id"
+    t.text     "notificationcomments"
+    t.datetime "created_at",                 :null => false
+    t.datetime "updated_at",                 :null => false
+  end
+
+  create_table "onclick_times", :force => true do |t|
+    t.integer  "user_id"
+    t.datetime "onclick_time"
+    t.datetime "created_at",   :null => false
+    t.datetime "updated_at",   :null => false
+  end
+
+  create_table "open_id_authentication_associations", :force => true do |t|
+    t.integer "issued"
+    t.integer "lifetime"
+    t.string  "handle"
+    t.string  "assoc_type"
+    t.binary  "server_url"
+    t.binary  "secret"
+  end
+
+  create_table "open_id_authentication_nonces", :force => true do |t|
+    t.integer "timestamp",  :null => false
+    t.string  "server_url"
+    t.string  "salt",       :null => false
+  end
+
+  create_table "open_source_projects", :force => true do |t|
+    t.string   "name"
+    t.text     "description"
+    t.integer  "commit_count",     :default => 0
+    t.integer  "code_line",        :default => 0
+    t.integer  "users_count",      :default => 0
+    t.date     "last_commit_time"
+    t.string   "url"
+    t.date     "date_collected"
+    t.datetime "created_at",                      :null => false
+    t.datetime "updated_at",                      :null => false
+  end
+
+  create_table "option_numbers", :force => true do |t|
+    t.integer  "user_id"
+    t.integer  "memo"
+    t.integer  "messages_for_issues"
+    t.integer  "issues_status"
+    t.integer  "replay_for_message"
+    t.integer  "replay_for_memo"
+    t.integer  "follow"
+    t.integer  "tread"
+    t.integer  "praise_by_one"
+    t.integer  "praise_by_two"
+    t.integer  "praise_by_three"
+    t.integer  "tread_by_one"
+    t.integer  "tread_by_two"
+    t.integer  "tread_by_three"
+    t.integer  "changeset"
+    t.integer  "document"
+    t.integer  "attachment"
+    t.integer  "issue_done_ratio"
+    t.integer  "post_issue"
+    t.integer  "score_type"
+    t.integer  "total_score"
+    t.datetime "created_at",          :null => false
+    t.datetime "updated_at",          :null => false
+    t.integer  "project_id"
+  end
+
+  create_table "org_activities", :force => true do |t|
+    t.integer  "user_id"
+    t.integer  "org_act_id"
+    t.string   "org_act_type"
+    t.integer  "container_id"
+    t.string   "container_type"
+    t.datetime "created_at",     :null => false
+    t.datetime "updated_at",     :null => false
+  end
+
+  create_table "org_courses", :force => true do |t|
+    t.integer  "organization_id"
+    t.integer  "course_id"
+    t.datetime "created_at"
+  end
+
+  create_table "org_document_comments", :force => true do |t|
+    t.text     "title"
+    t.text     "content"
+    t.integer  "organization_id"
+    t.integer  "creator_id"
+    t.integer  "parent_id"
+    t.integer  "reply_id"
+    t.datetime "created_at",                         :null => false
+    t.datetime "updated_at",                         :null => false
+    t.boolean  "locked",          :default => false
+    t.integer  "sticky",          :default => 0
+    t.integer  "org_subfield_id"
+  end
+
+  create_table "org_member_roles", :force => true do |t|
+    t.integer "org_member_id"
+    t.integer "role_id"
+  end
+
+  create_table "org_members", :force => true do |t|
+    t.integer  "user_id"
+    t.integer  "organization_id"
+    t.datetime "created_at",      :null => false
+    t.datetime "updated_at",      :null => false
+  end
+
+  create_table "org_messages", :force => true do |t|
+    t.integer  "user_id"
+    t.integer  "sender_id"
+    t.integer  "organization_id"
+    t.string   "message_type"
+    t.integer  "message_id"
+    t.integer  "viewed"
+    t.string   "content"
+    t.datetime "created_at",      :null => false
+    t.datetime "updated_at",      :null => false
+  end
+
+  create_table "org_projects", :force => true do |t|
+    t.integer  "organization_id"
+    t.integer  "project_id"
+    t.datetime "created_at"
+  end
+
+  create_table "org_subfield_messages", :force => true do |t|
+    t.integer  "org_subfield_id"
+    t.integer  "message_id"
+    t.string   "message_type"
+    t.datetime "created_at",      :null => false
+    t.datetime "updated_at",      :null => false
+  end
+
+  create_table "org_subfields", :force => true do |t|
+    t.integer  "organization_id"
+    t.integer  "priority"
+    t.string   "name"
+    t.datetime "created_at",                     :null => false
+    t.datetime "updated_at",                     :null => false
+    t.string   "field_type"
+    t.integer  "hide",            :default => 0
+  end
+
+  create_table "organizations", :force => true do |t|
+    t.string   "name"
+    t.text     "description"
+    t.integer  "creator_id"
+    t.integer  "home_id"
+    t.string   "domain"
+    t.boolean  "is_public"
+    t.datetime "created_at",  :null => false
+    t.datetime "updated_at",  :null => false
+  end
+
+  create_table "phone_app_versions", :force => true do |t|
+    t.string   "version"
+    t.text     "description"
+    t.datetime "created_at",  :null => false
+    t.datetime "updated_at",  :null => false
+  end
+
+  create_table "poll_answers", :force => true do |t|
+    t.integer  "poll_question_id"
+    t.text     "answer_text"
+    t.integer  "answer_position"
+    t.datetime "created_at",       :null => false
+    t.datetime "updated_at",       :null => false
+  end
+
+  create_table "poll_questions", :force => true do |t|
+    t.string   "question_title"
+    t.integer  "question_type"
+    t.integer  "is_necessary"
+    t.integer  "poll_id"
+    t.datetime "created_at",      :null => false
+    t.datetime "updated_at",      :null => false
+    t.integer  "question_number"
+  end
+
+  create_table "poll_users", :force => true do |t|
+    t.integer  "user_id"
+    t.integer  "poll_id"
+    t.datetime "created_at", :null => false
+    t.datetime "updated_at", :null => false
+  end
+
+  create_table "poll_votes", :force => true do |t|
+    t.integer  "user_id"
+    t.integer  "poll_question_id"
+    t.integer  "poll_answer_id"
+    t.text     "vote_text"
+    t.datetime "created_at",       :null => false
+    t.datetime "updated_at",       :null => false
+  end
+
+  create_table "polls", :force => true do |t|
+    t.string   "polls_name"
+    t.string   "polls_type"
+    t.integer  "polls_group_id"
+    t.integer  "polls_status"
+    t.integer  "user_id"
+    t.datetime "published_at"
+    t.datetime "closed_at"
+    t.datetime "created_at",                       :null => false
+    t.datetime "updated_at",                       :null => false
+    t.text     "polls_description"
+    t.integer  "show_result",       :default => 1
+  end
+
+  create_table "praise_tread_caches", :force => true do |t|
+    t.integer  "object_id",   :null => false
+    t.string   "object_type"
+    t.integer  "praise_num"
+    t.integer  "tread_num"
+    t.datetime "created_at",  :null => false
+    t.datetime "updated_at",  :null => false
+  end
+
+  create_table "praise_treads", :force => true do |t|
+    t.integer  "user_id",                  :null => false
+    t.integer  "praise_tread_object_id"
+    t.string   "praise_tread_object_type"
+    t.integer  "praise_or_tread"
+    t.datetime "created_at",               :null => false
+    t.datetime "updated_at",               :null => false
+  end
+
+  create_table "principal_activities", :force => true do |t|
+    t.integer  "user_id"
+    t.integer  "principal_id"
+    t.integer  "principal_act_id"
+    t.string   "principal_act_type"
+    t.datetime "created_at",         :null => false
+    t.datetime "updated_at",         :null => false
+  end
+
+  create_table "project_infos", :force => true do |t|
+    t.integer  "project_id"
+    t.integer  "user_id"
+    t.datetime "created_at", :null => false
+    t.datetime "updated_at", :null => false
+  end
+
+  create_table "project_scores", :force => true do |t|
+    t.string   "project_id"
+    t.integer  "score"
+    t.datetime "created_at",                       :null => false
+    t.datetime "updated_at",                       :null => false
+    t.integer  "issue_num",         :default => 0
+    t.integer  "issue_journal_num", :default => 0
+    t.integer  "news_num",          :default => 0
+    t.integer  "documents_num",     :default => 0
+    t.integer  "changeset_num",     :default => 0
+    t.integer  "board_message_num", :default => 0
+  end
+
+  create_table "project_statuses", :force => true do |t|
+    t.integer "changesets_count"
+    t.integer "watchers_count"
+    t.integer "project_id"
+    t.integer "project_type"
+    t.float   "grade",            :default => 0.0
+    t.integer "course_ac_para",   :default => 0
+  end
+
+  add_index "project_statuses", ["grade"], :name => "index_project_statuses_on_grade"
+
+  create_table "projecting_softapplictions", :force => true do |t|
+    t.integer  "user_id"
+    t.integer  "softapplication_id"
+    t.integer  "project_id"
+    t.datetime "created_at",         :null => false
+    t.datetime "updated_at",         :null => false
+  end
+
+  create_table "projects", :force => true do |t|
+    t.string   "name",                   :default => "",    :null => false
+    t.text     "description"
+    t.string   "homepage",               :default => ""
+    t.boolean  "is_public",              :default => true,  :null => false
+    t.integer  "parent_id"
+    t.datetime "created_on"
+    t.datetime "updated_on"
+    t.string   "identifier"
+    t.integer  "status",                 :default => 1,     :null => false
+    t.integer  "lft"
+    t.integer  "rgt"
+    t.boolean  "inherit_members",        :default => false, :null => false
+    t.integer  "project_type"
+    t.boolean  "hidden_repo",            :default => false, :null => false
+    t.integer  "attachmenttype",         :default => 1
+    t.integer  "user_id"
+    t.integer  "dts_test",               :default => 0
+    t.string   "enterprise_name"
+    t.integer  "organization_id"
+    t.integer  "project_new_type"
+    t.integer  "gpid"
+    t.integer  "forked_from_project_id"
+    t.integer  "forked_count"
+    t.integer  "commits_count",          :default => 0
+    t.integer  "publish_resource",       :default => 0
+    t.integer  "issues_count",           :default => 0
+    t.integer  "attachments_count",      :default => 0
+    t.integer  "boards_count",           :default => 0
+    t.integer  "news_count",             :default => 0
+    t.integer  "acts_count",             :default => 0
+    t.integer  "journals_count",         :default => 0
+    t.integer  "boards_reply_count",     :default => 0
+  end
+
+  add_index "projects", ["lft"], :name => "index_projects_on_lft"
+  add_index "projects", ["rgt"], :name => "index_projects_on_rgt"
+
+  create_table "projects_trackers", :id => false, :force => true do |t|
+    t.integer "project_id", :default => 0, :null => false
+    t.integer "tracker_id", :default => 0, :null => false
+  end
+
+  add_index "projects_trackers", ["project_id", "tracker_id"], :name => "projects_trackers_unique", :unique => true
+  add_index "projects_trackers", ["project_id"], :name => "projects_trackers_project_id"
+
+  create_table "queries", :force => true do |t|
+    t.integer "project_id"
+    t.string  "name",          :default => "",    :null => false
+    t.text    "filters"
+    t.integer "user_id",       :default => 0,     :null => false
+    t.boolean "is_public",     :default => false, :null => false
+    t.text    "column_names"
+    t.text    "sort_criteria"
+    t.string  "group_by"
+    t.string  "type"
+  end
+
+  add_index "queries", ["project_id"], :name => "index_queries_on_project_id"
+  add_index "queries", ["user_id"], :name => "index_queries_on_user_id"
+
+  create_table "relative_memo_to_open_source_projects", :force => true do |t|
+    t.integer  "osp_id"
+    t.integer  "relative_memo_id"
+    t.datetime "created_at",       :null => false
+    t.datetime "updated_at",       :null => false
+  end
+
+  create_table "relative_memos", :force => true do |t|
+    t.integer  "osp_id"
+    t.integer  "parent_id"
+    t.string   "subject",                                                   :null => false
+    t.text     "content",            :limit => 16777215,                    :null => false
+    t.integer  "author_id"
+    t.integer  "replies_count",                          :default => 0
+    t.integer  "last_reply_id"
+    t.boolean  "lock",                                   :default => false
+    t.boolean  "sticky",                                 :default => false
+    t.boolean  "is_quote",                               :default => false
+    t.datetime "created_at",                                                :null => false
+    t.datetime "updated_at",                                                :null => false
+    t.integer  "viewed_count_crawl",                     :default => 0
+    t.integer  "viewed_count_local",                     :default => 0
+    t.string   "url"
+    t.string   "username"
+    t.string   "userhomeurl"
+    t.date     "date_collected"
+    t.string   "topic_resource"
+  end
+
+  create_table "repositories", :force => true do |t|
+    t.integer "project_id",                  :default => 0,     :null => false
+    t.string  "url",                         :default => "",    :null => false
+    t.string  "login",         :limit => 60, :default => ""
+    t.string  "password",                    :default => ""
+    t.string  "root_url",                    :default => ""
+    t.string  "type"
+    t.string  "path_encoding", :limit => 64
+    t.string  "log_encoding",  :limit => 64
+    t.text    "extra_info"
+    t.string  "identifier"
+    t.boolean "is_default",                  :default => false
+    t.boolean "hidden",                      :default => false
+  end
+
+  add_index "repositories", ["project_id"], :name => "index_repositories_on_project_id"
+
+  create_table "rich_rich_files", :force => true do |t|
+    t.datetime "created_at",                                 :null => false
+    t.datetime "updated_at",                                 :null => false
+    t.string   "rich_file_file_name"
+    t.string   "rich_file_content_type"
+    t.integer  "rich_file_file_size"
+    t.datetime "rich_file_updated_at"
+    t.string   "owner_type"
+    t.integer  "owner_id"
+    t.text     "uri_cache"
+    t.string   "simplified_type",        :default => "file"
+  end
+
+  create_table "roles", :force => true do |t|
+    t.string  "name",              :limit => 30, :default => "",        :null => false
+    t.integer "position",                        :default => 1
+    t.boolean "assignable",                      :default => true
+    t.integer "builtin",                         :default => 0,         :null => false
+    t.text    "permissions"
+    t.string  "issues_visibility", :limit => 30, :default => "default", :null => false
+  end
+
+  create_table "schools", :force => true do |t|
+    t.string   "name"
+    t.string   "province"
+    t.datetime "created_at", :null => false
+    t.datetime "updated_at", :null => false
+    t.string   "logo_link"
+    t.string   "pinyin"
+  end
+
+  create_table "seems_rateable_cached_ratings", :force => true do |t|
+    t.integer  "cacheable_id",   :limit => 8
+    t.string   "cacheable_type"
+    t.float    "avg",                         :null => false
+    t.integer  "cnt",                         :null => false
+    t.string   "dimension"
+    t.datetime "created_at",                  :null => false
+    t.datetime "updated_at",                  :null => false
+  end
+
+  create_table "seems_rateable_rates", :force => true do |t|
+    t.integer  "rater_id",         :limit => 8
+    t.integer  "rateable_id"
+    t.string   "rateable_type"
+    t.float    "stars",                                        :null => false
+    t.string   "dimension"
+    t.datetime "created_at",                                   :null => false
+    t.datetime "updated_at",                                   :null => false
+    t.integer  "is_teacher_score",              :default => 0
+  end
+
+  create_table "settings", :force => true do |t|
+    t.string   "name",       :default => "", :null => false
+    t.text     "value"
+    t.datetime "updated_on"
+  end
+
+  add_index "settings", ["name"], :name => "index_settings_on_name"
+
+  create_table "shares", :force => true do |t|
+    t.date     "created_on"
+    t.string   "url"
+    t.string   "title"
+    t.integer  "share_type"
+    t.datetime "created_at",  :null => false
+    t.datetime "updated_at",  :null => false
+    t.integer  "project_id"
+    t.integer  "user_id"
+    t.string   "description"
+  end
+
+  create_table "shield_activities", :force => true do |t|
+    t.string   "container_type"
+    t.integer  "container_id"
+    t.string   "shield_type"
+    t.integer  "shield_id"
+    t.datetime "created_at",     :null => false
+    t.datetime "updated_at",     :null => false
+  end
+
+  create_table "softapplications", :force => true do |t|
+    t.string   "name"
+    t.text     "description"
+    t.integer  "app_type_id"
+    t.string   "app_type_name"
+    t.string   "android_min_version_available"
+    t.integer  "user_id"
+    t.datetime "created_at",                    :null => false
+    t.datetime "updated_at",                    :null => false
+    t.integer  "contest_id"
+    t.integer  "softapplication_id"
+    t.integer  "is_public"
+    t.string   "application_developers"
+    t.string   "deposit_project_url"
+    t.string   "deposit_project"
+    t.integer  "project_id"
+  end
+
+  create_table "student_work_projects", :force => true do |t|
+    t.integer  "homework_common_id"
+    t.integer  "student_work_id"
+    t.integer  "project_id"
+    t.integer  "user_id"
+    t.integer  "is_leader"
+    t.datetime "created_at",         :null => false
+    t.datetime "updated_at",         :null => false
+  end
+
+  add_index "student_work_projects", ["homework_common_id"], :name => "index_student_work_projects_on_homework_common_id"
+  add_index "student_work_projects", ["project_id"], :name => "index_student_work_projects_on_project_id"
+  add_index "student_work_projects", ["student_work_id"], :name => "index_student_work_projects_on_student_work_id"
+  add_index "student_work_projects", ["user_id"], :name => "index_student_work_projects_on_user_id"
+
+  create_table "student_work_tests", :force => true do |t|
+    t.integer  "student_work_id"
+    t.datetime "created_at",                     :null => false
+    t.datetime "updated_at",                     :null => false
+    t.integer  "status",          :default => 9
+    t.text     "results"
+    t.text     "src"
+  end
+
+  create_table "student_works", :force => true do |t|
+    t.string   "name"
+    t.text     "description",             :limit => 2147483647
+    t.integer  "homework_common_id"
+    t.integer  "user_id"
+    t.float    "final_score"
+    t.float    "teacher_score"
+    t.float    "student_score"
+    t.float    "teaching_asistant_score"
+    t.integer  "project_id",                                    :default => 0
+    t.datetime "created_at",                                                       :null => false
+    t.datetime "updated_at",                                                       :null => false
+    t.integer  "late_penalty",                                  :default => 0
+    t.integer  "absence_penalty",                               :default => 0
+    t.float    "system_score",                                  :default => 0.0
+    t.boolean  "is_test",                                       :default => false
+  end
+
+  add_index "student_works", ["homework_common_id", "user_id"], :name => "index_student_works_on_homework_common_id_and_user_id"
+
+  create_table "student_works_evaluation_distributions", :force => true do |t|
+    t.integer  "student_work_id"
+    t.integer  "user_id"
+    t.datetime "created_at",      :null => false
+    t.datetime "updated_at",      :null => false
+  end
+
+  create_table "student_works_scores", :force => true do |t|
+    t.integer  "student_work_id"
+    t.integer  "user_id"
+    t.integer  "score"
+    t.text     "comment"
+    t.integer  "reviewer_role"
+    t.datetime "created_at",      :null => false
+    t.datetime "updated_at",      :null => false
+  end
+
+  create_table "students_for_courses", :force => true do |t|
+    t.integer  "student_id"
+    t.integer  "course_id"
+    t.datetime "created_at", :null => false
+    t.datetime "updated_at", :null => false
+  end
+
+  add_index "students_for_courses", ["course_id"], :name => "index_students_for_courses_on_course_id"
+  add_index "students_for_courses", ["student_id"], :name => "index_students_for_courses_on_student_id"
+
+  create_table "system_messages", :force => true do |t|
+    t.integer  "user_id"
+    t.string   "content"
+    t.datetime "created_at",  :null => false
+    t.datetime "updated_at",  :null => false
+    t.text     "description"
+    t.string   "subject"
+  end
+
+  create_table "taggings", :force => true do |t|
+    t.integer  "tag_id"
+    t.integer  "taggable_id"
+    t.string   "taggable_type"
+    t.integer  "tagger_id"
+    t.string   "tagger_type"
+    t.string   "context",       :limit => 128
+    t.datetime "created_at"
+  end
+
+  add_index "taggings", ["tag_id"], :name => "index_taggings_on_tag_id"
+  add_index "taggings", ["taggable_id", "taggable_type", "context"], :name => "index_taggings_on_taggable_id_and_taggable_type_and_context"
+  add_index "taggings", ["taggable_type"], :name => "index_taggings_on_taggable_type"
+
+  create_table "tags", :force => true do |t|
+    t.string "name"
+  end
+
+  create_table "teachers", :force => true do |t|
+    t.string   "tea_name"
+    t.string   "location"
+    t.integer  "couurse_time"
+    t.integer  "course_code"
+    t.datetime "created_at",   :null => false
+    t.datetime "updated_at",   :null => false
+    t.string   "extra"
+  end
+
+  create_table "time_entries", :force => true do |t|
+    t.integer  "project_id",  :null => false
+    t.integer  "user_id",     :null => false
+    t.integer  "issue_id"
+    t.float    "hours",       :null => false
+    t.string   "comments"
+    t.integer  "activity_id", :null => false
+    t.date     "spent_on",    :null => false
+    t.integer  "tyear",       :null => false
+    t.integer  "tmonth",      :null => false
+    t.integer  "tweek",       :null => false
+    t.datetime "created_on",  :null => false
+    t.datetime "updated_on",  :null => false
+  end
+
+  add_index "time_entries", ["activity_id"], :name => "index_time_entries_on_activity_id"
+  add_index "time_entries", ["created_on"], :name => "index_time_entries_on_created_on"
+  add_index "time_entries", ["issue_id"], :name => "time_entries_issue_id"
+  add_index "time_entries", ["project_id"], :name => "time_entries_project_id"
+  add_index "time_entries", ["user_id"], :name => "index_time_entries_on_user_id"
+
+  create_table "tokens", :force => true do |t|
+    t.integer  "user_id",                  :default => 0,  :null => false
+    t.string   "action",     :limit => 30, :default => "", :null => false
+    t.string   "value",      :limit => 40, :default => "", :null => false
+    t.datetime "created_on",                               :null => false
+  end
+
+  add_index "tokens", ["user_id"], :name => "index_tokens_on_user_id"
+  add_index "tokens", ["value"], :name => "tokens_value", :unique => true
+
+  create_table "trackers", :force => true do |t|
+    t.string  "name",          :limit => 30, :default => "",    :null => false
+    t.boolean "is_in_chlog",                 :default => false, :null => false
+    t.integer "position",                    :default => 1
+    t.boolean "is_in_roadmap",               :default => true,  :null => false
+    t.integer "fields_bits",                 :default => 0
+  end
+
+  create_table "user_activities", :force => true do |t|
+    t.string   "act_type"
+    t.integer  "act_id"
+    t.string   "container_type"
+    t.integer  "container_id"
+    t.datetime "created_at",     :null => false
+    t.datetime "updated_at",     :null => false
+    t.integer  "user_id"
+  end
+
+  create_table "user_extensions", :force => true do |t|
+    t.integer  "user_id",                            :null => false
+    t.date     "birthday"
+    t.string   "brief_introduction"
+    t.integer  "gender"
+    t.string   "location"
+    t.string   "occupation"
+    t.integer  "work_experience"
+    t.integer  "zip_code"
+    t.datetime "created_at",                         :null => false
+    t.datetime "updated_at",                         :null => false
+    t.string   "technical_title"
+    t.integer  "identity"
+    t.string   "student_id"
+    t.string   "teacher_realname"
+    t.string   "student_realname"
+    t.string   "location_city"
+    t.integer  "school_id"
+    t.string   "description",        :default => ""
+  end
+
+  create_table "user_feedback_messages", :force => true do |t|
+    t.integer  "user_id"
+    t.integer  "journals_for_message_id"
+    t.string   "journals_for_message_type"
+    t.integer  "viewed"
+    t.datetime "created_at",                :null => false
+    t.datetime "updated_at",                :null => false
+  end
+
+  create_table "user_grades", :force => true do |t|
+    t.integer  "user_id",                     :null => false
+    t.integer  "project_id",                  :null => false
+    t.float    "grade",      :default => 0.0
+    t.datetime "created_at",                  :null => false
+    t.datetime "updated_at",                  :null => false
+  end
+
+  add_index "user_grades", ["grade"], :name => "index_user_grades_on_grade"
+  add_index "user_grades", ["project_id"], :name => "index_user_grades_on_project_id"
+  add_index "user_grades", ["user_id"], :name => "index_user_grades_on_user_id"
+
+  create_table "user_levels", :force => true do |t|
+    t.integer "user_id"
+    t.integer "level"
+  end
+
+  create_table "user_preferences", :force => true do |t|
+    t.integer "user_id",   :default => 0,     :null => false
+    t.text    "others"
+    t.boolean "hide_mail", :default => false
+    t.string  "time_zone"
+  end
+
+  add_index "user_preferences", ["user_id"], :name => "index_user_preferences_on_user_id"
+
+  create_table "user_score_details", :force => true do |t|
+    t.integer  "current_user_id"
+    t.integer  "target_user_id"
+    t.string   "score_type"
+    t.string   "score_action"
+    t.integer  "user_id"
+    t.integer  "old_score"
+    t.integer  "new_score"
+    t.integer  "current_user_level"
+    t.integer  "target_user_level"
+    t.integer  "score_changeable_obj_id"
+    t.string   "score_changeable_obj_type"
+    t.datetime "created_at",                :null => false
+    t.datetime "updated_at",                :null => false
+  end
+
+  create_table "user_scores", :force => true do |t|
+    t.integer  "user_id",       :null => false
+    t.integer  "collaboration"
+    t.integer  "influence"
+    t.integer  "skill"
+    t.integer  "active"
+    t.datetime "created_at",    :null => false
+    t.datetime "updated_at",    :null => false
+  end
+
+  create_table "user_statuses", :force => true do |t|
+    t.integer  "changesets_count"
+    t.integer  "watchers_count"
+    t.integer  "user_id"
+    t.datetime "created_at",                        :null => false
+    t.datetime "updated_at",                        :null => false
+    t.float    "grade",            :default => 0.0
+  end
+
+  add_index "user_statuses", ["changesets_count"], :name => "index_user_statuses_on_changesets_count"
+  add_index "user_statuses", ["grade"], :name => "index_user_statuses_on_grade"
+  add_index "user_statuses", ["watchers_count"], :name => "index_user_statuses_on_watchers_count"
+
+  create_table "users", :force => true do |t|
+    t.string   "login",                           :default => "",    :null => false
+    t.string   "hashed_password",   :limit => 40, :default => "",    :null => false
+    t.string   "firstname",         :limit => 30, :default => "",    :null => false
+    t.string   "lastname",                        :default => "",    :null => false
+    t.string   "mail",              :limit => 60, :default => "",    :null => false
+    t.boolean  "admin",                           :default => false, :null => false
+    t.integer  "status",                          :default => 1,     :null => false
+    t.datetime "last_login_on"
+    t.string   "language",          :limit => 5,  :default => ""
+    t.integer  "auth_source_id"
+    t.datetime "created_on"
+    t.datetime "updated_on"
+    t.string   "type"
+    t.string   "identity_url"
+    t.string   "mail_notification",               :default => "",    :null => false
+    t.string   "salt",              :limit => 64
+    t.integer  "gid"
+  end
+
+  add_index "users", ["auth_source_id"], :name => "index_users_on_auth_source_id"
+  add_index "users", ["id", "type"], :name => "index_users_on_id_and_type"
+  add_index "users", ["type"], :name => "index_users_on_type"
+
+  create_table "versions", :force => true do |t|
+    t.integer  "project_id",      :default => 0,      :null => false
+    t.string   "name",            :default => "",     :null => false
+    t.string   "description",     :default => ""
+    t.date     "effective_date"
+    t.datetime "created_on"
+    t.datetime "updated_on"
+    t.string   "wiki_page_title"
+    t.string   "status",          :default => "open"
+    t.string   "sharing",         :default => "none", :null => false
+  end
+
+  add_index "versions", ["project_id"], :name => "versions_project_id"
+  add_index "versions", ["sharing"], :name => "index_versions_on_sharing"
+
+  create_table "visitors", :force => true do |t|
+    t.integer  "user_id"
+    t.integer  "master_id"
+    t.datetime "updated_on"
+    t.datetime "created_on"
+  end
+
+  add_index "visitors", ["master_id"], :name => "index_visitors_master_id"
+  add_index "visitors", ["updated_on"], :name => "index_visitors_updated_on"
+  add_index "visitors", ["user_id"], :name => "index_visitors_user_id"
+
+  create_table "watchers", :force => true do |t|
+    t.string  "watchable_type", :default => "", :null => false
+    t.integer "watchable_id",   :default => 0,  :null => false
+    t.integer "user_id"
+  end
+
+  add_index "watchers", ["user_id", "watchable_type"], :name => "watchers_user_id_type"
+  add_index "watchers", ["user_id"], :name => "index_watchers_on_user_id"
+  add_index "watchers", ["watchable_id", "watchable_type"], :name => "index_watchers_on_watchable_id_and_watchable_type"
+
+  create_table "web_footer_companies", :force => true do |t|
+    t.string   "name"
+    t.string   "logo_size"
+    t.string   "url"
+    t.datetime "created_at", :null => false
+    t.datetime "updated_at", :null => false
+  end
+
+  create_table "web_footer_oranizers", :force => true do |t|
+    t.string   "name"
+    t.text     "description"
+    t.datetime "created_at",  :null => false
+    t.datetime "updated_at",  :null => false
+  end
+
+  create_table "wiki_content_versions", :force => true do |t|
+    t.integer  "wiki_content_id",                                       :null => false
+    t.integer  "page_id",                                               :null => false
+    t.integer  "author_id"
+    t.binary   "data",            :limit => 2147483647
+    t.string   "compression",     :limit => 6,          :default => ""
+    t.string   "comments",                              :default => ""
+    t.datetime "updated_on",                                            :null => false
+    t.integer  "version",                                               :null => false
+  end
+
+  add_index "wiki_content_versions", ["updated_on"], :name => "index_wiki_content_versions_on_updated_on"
+  add_index "wiki_content_versions", ["wiki_content_id"], :name => "wiki_content_versions_wcid"
+
+  create_table "wiki_contents", :force => true do |t|
+    t.integer  "page_id",                                          :null => false
+    t.integer  "author_id"
+    t.text     "text",       :limit => 2147483647
+    t.string   "comments",                         :default => ""
+    t.datetime "updated_on",                                       :null => false
+    t.integer  "version",                                          :null => false
+  end
+
+  add_index "wiki_contents", ["author_id"], :name => "index_wiki_contents_on_author_id"
+  add_index "wiki_contents", ["page_id"], :name => "wiki_contents_page_id"
+
+  create_table "wiki_pages", :force => true do |t|
+    t.integer  "wiki_id",                       :null => false
+    t.string   "title",                         :null => false
+    t.datetime "created_on",                    :null => false
+    t.boolean  "protected",  :default => false, :null => false
+    t.integer  "parent_id"
+  end
+
+  add_index "wiki_pages", ["parent_id"], :name => "index_wiki_pages_on_parent_id"
+  add_index "wiki_pages", ["wiki_id", "title"], :name => "wiki_pages_wiki_id_title"
+  add_index "wiki_pages", ["wiki_id"], :name => "index_wiki_pages_on_wiki_id"
+
+  create_table "wiki_redirects", :force => true do |t|
+    t.integer  "wiki_id",      :null => false
+    t.string   "title"
+    t.string   "redirects_to"
+    t.datetime "created_on",   :null => false
+  end
+
+  add_index "wiki_redirects", ["wiki_id", "title"], :name => "wiki_redirects_wiki_id_title"
+  add_index "wiki_redirects", ["wiki_id"], :name => "index_wiki_redirects_on_wiki_id"
+
+  create_table "wikis", :force => true do |t|
+    t.integer "project_id",                :null => false
+    t.string  "start_page",                :null => false
+    t.integer "status",     :default => 1, :null => false
+  end
+
+  add_index "wikis", ["project_id"], :name => "wikis_project_id"
+
+  create_table "workflows", :force => true do |t|
+    t.integer "tracker_id",                  :default => 0,     :null => false
+    t.integer "old_status_id",               :default => 0,     :null => false
+    t.integer "new_status_id",               :default => 0,     :null => false
+    t.integer "role_id",                     :default => 0,     :null => false
+    t.boolean "assignee",                    :default => false, :null => false
+    t.boolean "author",                      :default => false, :null => false
+    t.string  "type",          :limit => 30
+    t.string  "field_name",    :limit => 30
+    t.string  "rule",          :limit => 30
+  end
+
+  add_index "workflows", ["new_status_id"], :name => "index_workflows_on_new_status_id"
+  add_index "workflows", ["old_status_id"], :name => "index_workflows_on_old_status_id"
+  add_index "workflows", ["role_id", "tracker_id", "old_status_id"], :name => "wkfs_role_tracker_old_status"
+  add_index "workflows", ["role_id"], :name => "index_workflows_on_role_id"
+
+  create_table "works_categories", :force => true do |t|
+    t.string   "category"
+    t.datetime "created_at", :null => false
+    t.datetime "updated_at", :null => false
+  end
+
+  create_table "zip_packs", :force => true do |t|
+    t.integer  "user_id"
+    t.integer  "homework_id"
+    t.string   "file_digest"
+    t.string   "file_path"
+    t.integer  "pack_times",   :default => 1
+    t.integer  "pack_size",    :default => 0
+    t.text     "file_digests"
+    t.datetime "created_at",                  :null => false
+    t.datetime "updated_at",                  :null => false
+  end
+
+end
+>>>>>>> e889f798d7d18ebc29b8c3614ac4a7465724f947