Description:
created join tables for contests and users and problems
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r268:5fffb74cc182 - - 6 files changed: 42 inserted, 1 deleted

@@ -0,0 +1,12
1 + class CreateContestsUsersJoinTable < ActiveRecord::Migration
2 + def self.up
3 + create_table :contests_users, :id => false do |t|
4 + t.integer :contest_id
5 + t.integer :user_id
6 + end
7 + end
8 +
9 + def self.down
10 + drop_table :contests_users
11 + end
12 + end
@@ -0,0 +1,12
1 + class CreateContestsProblemsJoinTable < ActiveRecord::Migration
2 + def self.up
3 + create_table :contests_problems, :id => false do |t|
4 + t.integer :contest_id
5 + t.integer :problem_id
6 + end
7 + end
8 +
9 + def self.down
10 + drop_table :contests_problems
11 + end
12 + end
@@ -1,2 +1,6
1 1 class Contest < ActiveRecord::Base
2 +
3 + has_and_belongs_to_many :users
4 + has_and_belongs_to_many :problems
5 +
2 6 end
@@ -1,27 +1,28
1 1 class Problem < ActiveRecord::Base
2 2
3 3 belongs_to :description
4 + has_and_belongs_to_many :contests
4 5 has_many :test_pairs, :dependent => :delete_all
5 6
6 7 validates_presence_of :name
7 8 validates_format_of :name, :with => /^\w+$/
8 9 validates_presence_of :full_name
9 10
10 11 DEFAULT_TIME_LIMIT = 1
11 12 DEFAULT_MEMORY_LIMIT = 32
12 13
13 14 def self.find_available_problems
14 15 find(:all, :conditions => {:available => true}, :order => "date_added DESC")
15 16 end
16 17
17 18 def self.create_from_import_form_params(params, old_problem=nil)
18 19 problem = old_problem || Problem.new
19 20 import_params = Problem.extract_params_and_check(params, problem)
20 21
21 22 if not problem.valid?
22 23 return problem, 'Error importing'
23 24 end
24 25
25 26 problem.full_score = 100
26 27 problem.date_added = Time.new
27 28 problem.test_allowed = true
@@ -1,47 +1,49
1 1 require 'digest/sha1'
2 2
3 3 class User < ActiveRecord::Base
4 4
5 5 has_and_belongs_to_many :roles
6 6
7 7 has_many :test_requests, :order => "submitted_at DESC"
8 8
9 9 has_many :messages,
10 10 :class_name => "Message",
11 11 :foreign_key => "sender_id",
12 12 :order => 'created_at DESC'
13 13
14 14 has_many :replied_messages,
15 15 :class_name => "Message",
16 16 :foreign_key => "receiver_id",
17 17 :order => 'created_at DESC'
18 18
19 19 has_one :contest_stat, :class_name => "UserContestStat", :dependent => :destroy
20 20
21 21 belongs_to :site
22 22 belongs_to :country
23 23
24 + has_and_belongs_to_many :contests
25 +
24 26 named_scope :activated_users, :conditions => {:activated => true}
25 27
26 28 validates_presence_of :login
27 29 validates_uniqueness_of :login
28 30 validates_format_of :login, :with => /^[\_A-Za-z0-9]+$/
29 31 validates_length_of :login, :within => 3..30
30 32
31 33 validates_presence_of :full_name
32 34 validates_length_of :full_name, :minimum => 1
33 35
34 36 validates_presence_of :password, :if => :password_required?
35 37 validates_length_of :password, :within => 4..20, :if => :password_required?
36 38 validates_confirmation_of :password, :if => :password_required?
37 39
38 40 validates_format_of :email,
39 41 :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i,
40 42 :if => :email_validation?
41 43 validate :uniqueness_of_email_from_activated_users,
42 44 :if => :email_validation?
43 45 validate :enough_time_interval_between_same_email_registrations,
44 46 :if => :email_validation?
45 47
46 48 # these are for ytopc
47 49 # disable for now
@@ -1,72 +1,82
1 1 # This file is auto-generated from the current state of the database. Instead of editing this file,
2 2 # please use the migrations feature of Active Record to incrementally modify your database, and
3 3 # then regenerate this schema definition.
4 4 #
5 5 # Note that this schema.rb definition is the authoritative source for your database schema. If you need
6 6 # to create the application database on another system, you should be using db:schema:load, not running
7 7 # all the migrations from scratch. The latter is a flawed and unsustainable approach (the more migrations
8 8 # you'll amass, the slower it'll run and the greater likelihood for issues).
9 9 #
10 10 # It's strongly recommended to check this file into your version control system.
11 11
12 - ActiveRecord::Schema.define(:version => 20100216105730) do
12 + ActiveRecord::Schema.define(:version => 20100216162940) do
13 13
14 14 create_table "announcements", :force => true do |t|
15 15 t.string "author"
16 16 t.text "body"
17 17 t.boolean "published"
18 18 t.datetime "created_at"
19 19 t.datetime "updated_at"
20 20 t.boolean "frontpage", :default => false
21 21 t.boolean "contest_only", :default => false
22 22 t.string "title"
23 23 end
24 24
25 25 create_table "codejom_statuses", :force => true do |t|
26 26 t.integer "user_id"
27 27 t.boolean "alive"
28 28 t.integer "num_problems_passed"
29 29 t.datetime "created_at"
30 30 t.datetime "updated_at"
31 31 end
32 32
33 33 create_table "configurations", :force => true do |t|
34 34 t.string "key"
35 35 t.string "value_type"
36 36 t.string "value"
37 37 t.datetime "created_at"
38 38 t.datetime "updated_at"
39 39 t.text "description"
40 40 end
41 41
42 42 create_table "contests", :force => true do |t|
43 43 t.string "title"
44 44 t.boolean "enabled"
45 45 t.datetime "created_at"
46 46 t.datetime "updated_at"
47 47 end
48 48
49 + create_table "contests_problems", :id => false, :force => true do |t|
50 + t.integer "contest_id"
51 + t.integer "problem_id"
52 + end
53 +
54 + create_table "contests_users", :id => false, :force => true do |t|
55 + t.integer "contest_id"
56 + t.integer "user_id"
57 + end
58 +
49 59 create_table "countries", :force => true do |t|
50 60 t.string "name"
51 61 t.datetime "created_at"
52 62 t.datetime "updated_at"
53 63 end
54 64
55 65 create_table "descriptions", :force => true do |t|
56 66 t.text "body"
57 67 t.boolean "markdowned"
58 68 t.datetime "created_at"
59 69 t.datetime "updated_at"
60 70 end
61 71
62 72 create_table "grader_processes", :force => true do |t|
63 73 t.string "host", :limit => 20
64 74 t.integer "pid"
65 75 t.string "mode"
66 76 t.boolean "active"
67 77 t.datetime "created_at"
68 78 t.datetime "updated_at"
69 79 t.integer "task_id"
70 80 t.string "task_type"
71 81 t.boolean "terminated"
72 82 end
You need to be logged in to leave comments. Login now