Show More
Commit Description:
update max_score / current_score to property use group filter
Commit Description:
update max_score / current_score to property use group filter
References:
File last commit:
Show/Diff file:
Action:
db/seeds.rb
| 289 lines
| 8.2 KiB
| text/x-ruby
| RubyLexer
|
|
r269 | CONFIGURATIONS = | ||
[ | ||||
{ | ||||
:key => 'system.single_user_mode', | ||||
:value_type => 'boolean', | ||||
|
r272 | :default_value => 'false', | ||
|
r269 | :description => 'Only admins can log in to the system when running under single user mode.' | ||
}, | ||||
r424 | ||||
|
r269 | { | ||
:key => 'ui.front.title', | ||||
:value_type => 'string', | ||||
|
r272 | :default_value => 'Grader' | ||
|
r269 | }, | ||
r424 | ||||
|
r269 | { | ||
:key => 'ui.front.welcome_message', | ||||
:value_type => 'string', | ||||
|
r272 | :default_value => 'Welcome!' | ||
|
r269 | }, | ||
r424 | ||||
|
r269 | { | ||
:key => 'ui.show_score', | ||||
:value_type => 'boolean', | ||||
|
r272 | :default_value => 'true' | ||
|
r269 | }, | ||
r424 | ||||
|
r269 | { | ||
:key => 'contest.time_limit', | ||||
:value_type => 'string', | ||||
|
r272 | :default_value => 'unlimited', | ||
|
r294 | :description => 'Time limit in format hh:mm, or "unlimited" for contests with no time limits. This config is CACHED. Restart the server before the change can take effect.' | ||
|
r269 | }, | ||
r424 | ||||
|
r269 | { | ||
:key => 'system.mode', | ||||
:value_type => 'string', | ||||
|
r272 | :default_value => 'standard', | ||
|
r269 | :description => 'Current modes are "standard", "contest", "indv-contest", and "analysis".' | ||
}, | ||||
r424 | ||||
|
r269 | { | ||
:key => 'contest.name', | ||||
:value_type => 'string', | ||||
|
r272 | :default_value => 'Grader', | ||
|
r269 | :description => 'This name will be shown on the user header bar.' | ||
}, | ||||
r424 | ||||
|
r269 | { | ||
:key => 'contest.multisites', | ||||
:value_type => 'boolean', | ||||
|
r272 | :default_value => 'false', | ||
|
r269 | :description => 'If the server is in contest mode and this option is true, on the log in of the admin a menu for site selections is shown.' | ||
}, | ||||
r424 | ||||
r622 | #---------------------------- right -------------------------------- | |||
|
r269 | { | ||
r425 | :key => 'right.user_hall_of_fame', | |||
|
r269 | :value_type => 'boolean', | ||
|
r272 | :default_value => 'false', | ||
r424 | :description => 'If true, any user can access hall of fame page.' | |||
|
r269 | }, | ||
r424 | ||||
r425 | { | |||
r525 | :key => 'right.multiple_ip_login', | |||
:value_type => 'boolean', | ||||
:default_value => 'true', | ||||
:description => 'When change from true to false, a user can login from the first IP they logged into afterward.' | ||||
}, | ||||
{ | ||||
r425 | :key => 'right.user_view_submission', | |||
:value_type => 'boolean', | ||||
:default_value => 'false', | ||||
:description => 'If true, any user can view submissions of every one.' | ||||
}, | ||||
r622 | { | |||
:key => 'right.bypass_agreement', | ||||
:value_type => 'boolean', | ||||
:default_value => 'true', | ||||
:description => 'When false, a user must accept usage agreement before login' | ||||
}, | ||||
{ | ||||
:key => 'right.heartbeat_response', | ||||
:value_type => 'string', | ||||
:default_value => 'OK', | ||||
:description => 'Heart beat response text' | ||||
}, | ||||
r625 | { | |||
r649 | :key => 'right.heartbeat_response_full', | |||
:value_type => 'string', | ||||
:default_value => 'OK', | ||||
:description => 'Heart beat response text when user got full score (set this value to the empty string to disable this feature)' | ||||
}, | ||||
{ | ||||
r625 | :key => 'right.view_testcase', | |||
:value_type => 'boolean', | ||||
:default_value => 'false', | ||||
r784 | :description => 'If true, any user can view/download test data' | |||
r625 | }, | |||
|
r774 | |||
{ | ||||
:key => 'system.online_registration', | ||||
:value_type => 'boolean', | ||||
:default_value => 'false', | ||||
:description => 'This option enables online registration.' | ||||
}, | ||||
|
r269 | # If Configuration['system.online_registration'] is true, the | ||
# system allows online registration, and will use these | ||||
# information for sending confirmation emails. | ||||
{ | ||||
:key => 'system.online_registration.smtp', | ||||
:value_type => 'string', | ||||
|
r272 | :default_value => 'smtp.somehost.com' | ||
|
r269 | }, | ||
r424 | ||||
|
r269 | { | ||
:key => 'system.online_registration.from', | ||||
:value_type => 'string', | ||||
|
r272 | :default_value => 'your.email@address' | ||
|
r269 | }, | ||
r424 | ||||
|
r269 | { | ||
:key => 'system.admin_email', | ||||
:value_type => 'string', | ||||
|
r272 | :default_value => 'admin@admin.email' | ||
|
r269 | }, | ||
r424 | ||||
|
r269 | { | ||
:key => 'system.user_setting_enabled', | ||||
:value_type => 'boolean', | ||||
|
r272 | :default_value => 'true', | ||
|
r269 | :description => 'If this option is true, users can change their settings' | ||
}, | ||||
r424 | ||||
{ | ||||
:key => 'system.user_setting_enabled', | ||||
:value_type => 'boolean', | ||||
:default_value => 'true', | ||||
:description => 'If this option is true, users can change their settings' | ||||
r465 | }, | |||
r424 | ||||
|
r269 | # If Configuration['contest.test_request.early_timeout'] is true | ||
# the user will not be able to use test request at 30 minutes | ||||
# before the contest ends. | ||||
{ | ||||
:key => 'contest.test_request.early_timeout', | ||||
:value_type => 'boolean', | ||||
|
r272 | :default_value => 'false' | ||
|
r279 | }, | ||
{ | ||||
:key => 'system.multicontests', | ||||
:value_type => 'boolean', | ||||
:default_value => 'false' | ||||
|
r302 | }, | ||
{ | ||||
:key => 'contest.confirm_indv_contest_start', | ||||
:value_type => 'boolean', | ||||
:default_value => 'false' | ||||
|
r308 | }, | ||
{ | ||||
:key => 'contest.default_contest_name', | ||||
:value_type => 'string', | ||||
:default_value => 'none', | ||||
:description => "New user will be assigned to this contest automatically, if it exists. Set to 'none' if there is no default contest." | ||||
r672 | }, | |||
{ | ||||
:key => 'system.use_problem_group', | ||||
:value_type => 'boolean', | ||||
:default_value => 'false', | ||||
:description => "If true, available problem to the user will be only ones associated with the group of the user." | ||||
}, | ||||
r755 | { | |||
r784 | :key => 'right.whitelist_ignore', | |||
r755 | :value_type => 'boolean', | |||
r784 | :default_value => 'true', | |||
:description => "If true, no IP check against whitelist_ip is perform. However, when false, non-admin user must have their ip in 'whitelist_ip' to be able to login." | ||||
r755 | }, | |||
{ | ||||
:key => 'right.whitelist_ip', | ||||
:value_type => 'string', | ||||
:default_value => '0.0.0.0/0', | ||||
r784 | :description => "list of whitelist ip, given in comma separated CIDR notation. For example '192.168.90.0/23, 192.168.1.23/32'" | |||
r755 | }, | |||
r424 | ||||
|
r269 | ] | ||
|
r276 | |||
r755 | def create_configuration_key(key, | |||
value_type, | ||||
default_value, | ||||
|
r276 | description='') | ||
r755 | conf = (GraderConfiguration.find_by_key(key) || | |||
|
r320 | GraderConfiguration.new(:key => key, | ||
|
r276 | :value_type => value_type, | ||
:value => default_value)) | ||||
conf.description = description | ||||
conf.save | ||||
end | ||||
def seed_config | ||||
CONFIGURATIONS.each do |conf| | ||||
if conf.has_key? :description | ||||
desc = conf[:description] | ||||
else | ||||
desc = '' | ||||
end | ||||
r755 | create_configuration_key(conf[:key], | |||
|
r276 | conf[:value_type], | ||
conf[:default_value], | ||||
desc) | ||||
|
r269 | end | ||
|
r276 | end | ||
def seed_roles | ||||
r802 | Role.find_or_create_by(name: 'ta') | |||
|
r276 | return if Role.find_by_name('admin') | ||
role = Role.create(:name => 'admin') | ||||
user_admin_right = Right.create(:name => 'user_admin', | ||||
:controller => 'user_admin', | ||||
:action => 'all') | ||||
problem_admin_right = Right.create(:name=> 'problem_admin', | ||||
:controller => 'problems', | ||||
:action => 'all') | ||||
graders_right = Right.create(:name => 'graders_admin', | ||||
:controller => 'graders', | ||||
:action => 'all') | ||||
r755 | ||||
|
r276 | role.rights << user_admin_right; | ||
role.rights << problem_admin_right; | ||||
role.rights << graders_right; | ||||
role.save | ||||
|
r269 | end | ||
|
r276 | |||
def seed_root | ||||
return if User.find_by_login('root') | ||||
root = User.new(:login => 'root', | ||||
:full_name => 'Administrator', | ||||
:alias => 'root') | ||||
root.password = 'ioionrails'; | ||||
class << root | ||||
public :encrypt_new_password | ||||
|
r333 | def valid?(context=nil) | ||
|
r276 | true | ||
end | ||||
end | ||||
root.encrypt_new_password | ||||
root.roles << Role.find_by_name('admin') | ||||
root.activated = true | ||||
root.save | ||||
end | ||||
r418 | def seed_users_and_roles | |||
seed_roles | ||||
seed_root | ||||
end | ||||
r417 | def seed_more_languages | |||
r783 | #Language.delete_all | |||
r758 | Language.find_or_create_by( name: 'c', pretty_name: 'C', ext: 'c', common_ext: 'c' ) | |||
Language.find_or_create_by( name: 'cpp', pretty_name: 'C++', ext: 'cpp', common_ext: 'cpp,cc' ) | ||||
Language.find_or_create_by( name: 'pas', pretty_name: 'Pascal', ext: 'pas', common_ext: 'pas' ) | ||||
Language.find_or_create_by( name: 'ruby', pretty_name: 'Ruby', ext: 'rb', common_ext: 'rb' ) | ||||
Language.find_or_create_by( name: 'python', pretty_name: 'Python', ext: 'py', common_ext: 'py' ) | ||||
Language.find_or_create_by( name: 'java', pretty_name: 'Java', ext: 'java', common_ext: 'java' ) | ||||
|
r276 | end | ||
seed_config | ||||
seed_users_and_roles | ||||
r417 | seed_more_languages | |||