Description:
user_admin ok
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r748:ff7f37009e5e - - 3 files changed: 15 inserted, 7 deleted

@@ -1,45 +1,45
1 1 require 'digest/sha1'
2 2 require 'net/pop'
3 3 require 'net/https'
4 4 require 'net/http'
5 5 require 'json'
6 6
7 7 class User < ActiveRecord::Base
8 8
9 9 has_and_belongs_to_many :roles
10 10
11 11 #has_and_belongs_to_many :groups
12 12 has_many :groups_users, class_name: GroupUser
13 13 has_many :groups, :through => :groups_users
14 14
15 - has_many :test_requests, -> {order(submitted_at: DESC)}
15 + has_many :test_requests, -> {order(submitted_at: :desc)}
16 16
17 - has_many :messages, -> { order(created_at: DESC) },
17 + has_many :messages, -> { order(created_at: :desc) },
18 18 :class_name => "Message",
19 19 :foreign_key => "sender_id"
20 20
21 - has_many :replied_messages, -> { order(created_at: DESC) },
21 + has_many :replied_messages, -> { order(created_at: :desc) },
22 22 :class_name => "Message",
23 23 :foreign_key => "receiver_id"
24 24
25 25 has_one :contest_stat, :class_name => "UserContestStat", :dependent => :destroy
26 26
27 27 belongs_to :site
28 28 belongs_to :country
29 29
30 30 has_and_belongs_to_many :contests, -> { order(:name); uniq}
31 31
32 32 scope :activated_users, -> {where activated: true}
33 33
34 34 validates_presence_of :login
35 35 validates_uniqueness_of :login
36 36 validates_format_of :login, :with => /\A[\_A-Za-z0-9]+\z/
37 37 validates_length_of :login, :within => 3..30
38 38
39 39 validates_presence_of :full_name
40 40 validates_length_of :full_name, :minimum => 1
41 41
42 42 validates_presence_of :password, :if => :password_required?
43 43 validates_length_of :password, :within => 4..20, :if => :password_required?
44 44 validates_confirmation_of :password, :if => :password_required?
45 45
@@ -20,49 +20,49
20 20 .form-group
21 21 = label_tag 'user_email', 'email'
22 22 = text_field 'user', 'email', :size => 10,class: 'form-control'
23 23 =submit_tag "Create", class: 'btn btn-primary'
24 24
25 25 .panel.panel-primary
26 26 .panel-title.panel-heading
27 27 Import from site management
28 28 .panel-body
29 29 = form_tag({:action => 'import'}, :multipart => true,class: 'form form-inline') do
30 30 .form-group
31 31 = label_tag :file, 'File:'
32 32 .input-group
33 33 %span.input-group-btn
34 34 %span.btn.btn-default.btn-file
35 35 Browse
36 36 = file_field_tag 'file'
37 37 = text_field_tag '' , nil, {readonly: true, class: 'form-control'}
38 38 = submit_tag 'Submit', class: 'btn btn-default'
39 39
40 40
41 41 %p
42 42 = link_to '+ New user', { :action => 'new' }, { class: 'btn btn-success '}
43 43 = link_to '+ New list of users', { :action => 'new_list' }, { class: 'btn btn-success '}
44 - = link_to 'Bulk Manage', bulk_manage_user_admin_path , { class: 'btn btn-default btn-info'}
44 + = link_to 'Bulk Manage', { action: :bulk_manage} , { class: 'btn btn-default btn-info'}
45 45 = link_to 'View administrators',{ :action => 'admin'}, { class: 'btn btn-default '}
46 46 = link_to 'Random passwords',{ :action => 'random_all_passwords'}, { class: 'btn btn-default '}
47 47 = link_to 'View active users',{ :action => 'active'}, { class: 'btn btn-default '}
48 48 = link_to 'Mass mailing',{ :action => 'mass_mailing'}, { class: 'btn btn-default '}
49 49
50 50 - if GraderConfiguration.multicontests?
51 51 %br/
52 52 %b Multi-contest:
53 53 = link_to '[Manage bulk users in contests]', :action => 'contest_management'
54 54 View users in:
55 55 - @contests.each do |contest|
56 56 = link_to "[#{contest.name}]", :action => 'contests', :id => contest.id
57 57 = link_to "[no contest]", :action => 'contests', :id => 'none'
58 58
59 59 -# Total #{@user_count} users |
60 60 -# - if !@paginated
61 61 -# Display all users.
62 62 -# \#{link_to '[show in pages]', :action => 'index', :page => '1'}
63 63 -# - else
64 64 -# Display in pages.
65 65 -# \#{link_to '[display all]', :action => 'index', :page => 'all'} |
66 66 -# \#{will_paginate @users, :container => false}
67 67
68 68
@@ -74,33 +74,33
74 74 %th Remark
75 75 %th
76 76 Activated
77 77 %sup{class: 'text-primary',data: {toggle: 'tooltip', placement: 'top'}, title: 'User has already confirmed the email?' } [?]
78 78 %th
79 79 Enabled
80 80 %sup{class: 'text-primary',data: {toggle: 'tooltip', placement: 'top'}, title: 'Allow the user to login?' } [?]
81 81 %th Last IP
82 82 %th
83 83 %th
84 84 %th
85 85 %th
86 86 - for user in @users
87 87 %tr
88 88 %td= link_to user.login, stat_user_path(user)
89 89 %td= user.full_name
90 90 %td= user.email
91 91 %td= user.remark
92 92 %td= toggle_button(user.activated?, toggle_activate_user_path(user),"toggle_activate_user_#{user.id}")
93 93 %td= toggle_button(user.enabled?, toggle_enable_user_path(user),"toggle_enable_user_#{user.id}")
94 94 %td= user.last_ip
95 95 %td= link_to 'Clear IP', {:action => 'clear_last_ip', :id => user, :page=>params[:page]}, :confirm => 'This will reset last logging in ip of the user, are you sure?', class: 'btn btn-default btn-xs btn-block'
96 96 %td= link_to 'Show', {:action => 'show', :id => user}, class: 'btn btn-default btn-xs btn-block'
97 97 %td= link_to 'Edit', {:action => 'edit', :id => user}, class: 'btn btn-default btn-xs btn-block'
98 - %td= link_to 'Destroy', user_admin_destroy_path(user), data: {confirm: 'Are you sure?'}, method: :delete, class: 'btn btn-danger btn-xs btn-block'
98 + %td= link_to 'Destroy', {action: :destroy, id: user}, data: {confirm: 'Are you sure?'}, method: :delete, class: 'btn btn-danger btn-xs btn-block'
99 99 %br/
100 100 = link_to '+ New user', { :action => 'new' }, { class: 'btn btn-success '}
101 101 = link_to '+ New list of users', { :action => 'new_list' }, { class: 'btn btn-success '}
102 102
103 103 :javascript
104 104 $('.datatable').DataTable({
105 105 'pageLength': 50
106 106 });
@@ -70,51 +70,59
70 70 resources :users do
71 71 member do
72 72 get 'toggle_activate', 'toggle_enable'
73 73 get 'stat'
74 74 end
75 75 end
76 76
77 77 resources :submissions do
78 78 member do
79 79 get 'download'
80 80 get 'compiler_msg'
81 81 get 'rejudge'
82 82 end
83 83 collection do
84 84 get 'prob/:problem_id', to: 'submissions#index', as: 'problem'
85 85 get 'direct_edit_problem/:problem_id(/:user_id)', to: 'submissions#direct_edit_problem', as: 'direct_edit_problem'
86 86 get 'get_latest_submission_status/:uid/:pid', to: 'submissions#get_latest_submission_status', as: 'get_latest_submission_status'
87 87 end
88 88 end
89 89
90 90
91 91 #user admin
92 92 resources :user_admin do
93 93 collection do
94 - get 'bulk_manage', as: 'bulk_manage_user_admin'
95 - delete ':id', to: 'user_admin#destroy', as: 'user_admin_destroy'
94 + get 'bulk_manage'
96 95 get 'user_stat'
96 + get 'import'
97 + get 'new_list'
98 + get 'admin'
99 + get 'random_all_passwords'
100 + get 'active'
101 + get 'mass_mailing'
102 + end
103 + member do
104 + get 'clear_last_ip'
97 105 end
98 106 end
99 107
100 108 resources :contest_management, only: [:index] do
101 109 collection do
102 110 get 'user_stat'
103 111 get 'clear_stat'
104 112 get 'clear_all_stat'
105 113 end
106 114 end
107 115
108 116 #get 'user_admin', to: 'user_admin#index'
109 117 #get 'user_admin/bulk_manage', to: 'user_admin#bulk_manage', as: 'bulk_manage_user_admin'
110 118 #post 'user_admin', to: 'user_admin#create'
111 119 #delete 'user_admin/:id', to: 'user_admin#destroy', as: 'user_admin_destroy'
112 120
113 121 #singular resource
114 122 #---- BEWARE ---- singular resource maps to plural controller by default, we can override by provide controller name directly
115 123 #report
116 124 resource :report, only: [], controller: 'report' do
117 125 get 'login'
118 126 get 'multiple_login'
119 127 get 'problem_hof/:id', action: 'problem_hof'
120 128 get 'current_score'
You need to be logged in to leave comments. Login now