##// END OF EJS Templates
scm: git: performance improvements in fetching revisions (#8857, #9472)...
scm: git: performance improvements in fetching revisions (#8857, #9472) Parse a revision for a given branch, just if we haven't parsed it for any branches before. Moved the db check to for existing revisions into a grouped search. Search for many revisions at once: this reduces db load. Revisions are grouped into sets of 100. This is to improve memory consumption. There will be just one query instead of each 100. The above two methods significantly increase parsing speed. Test case was a git repo with 6000+ commits on a master branch, and several other branches originating for master. Speed improved from 1.4h to 18min. Contributed by Gergely Fábián. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9144 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r8941:b3866b05c14b
r9024:999a4ba30d7b
Show More
roles_controller.rb
99 lines | 2.8 KiB | text/x-ruby | RubyLexer
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/roles_controller.rb....
r6749 # Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 #
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/roles_controller.rb....
r6749 #
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/roles_controller.rb....
r6749 #
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class RolesController < ApplicationController
Jean-Philippe Lang
Adds an admin layout that displays the admin menu in the sidebar....
r3062 layout 'admin'
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/roles_controller.rb....
r6749
Jean-Philippe Lang
Adds a simple API for listing roles (#9725)....
r8679 before_filter :require_admin, :except => :index
before_filter :require_admin_or_api_request, :only => :index
Jean-Philippe Lang
Resourcified roles....
r8025 before_filter :find_role, :only => [:edit, :update, :destroy]
Jean-Philippe Lang
Adds a simple API for listing roles (#9725)....
r8679 accept_api_auth :index
Jean-Philippe Lang
indentation corrections...
r198
Jean-Philippe Lang
Initial commit...
r2 def index
Jean-Philippe Lang
Adds a simple API for listing roles (#9725)....
r8679 respond_to do |format|
format.html {
@role_pages, @roles = paginate :roles, :per_page => 25, :order => 'builtin, position'
render :action => "index", :layout => false if request.xhr?
}
format.api {
@roles = Role.givable.all
}
end
Jean-Philippe Lang
Initial commit...
r2 end
def new
Jean-Philippe Lang
When creating a new role, permissions are pre-filled with 'Non member' role permissions....
r930 # Prefills the form with 'Non member' role permissions
@role = Role.new(params[:role] || {:permissions => Role.non_member.permissions})
Jean-Philippe Lang
Restores migration broken by r8182 and removes default scope on Role (#9800)....
r8093 @roles = Role.sorted.all
Jean-Philippe Lang
Resourcified roles....
r8025 end
def create
@role = Role.new(params[:role])
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663 if request.post? && @role.save
Jean-Philippe Lang
Workflow copy:...
r1237 # workflow copy
if !params[:copy_workflow_from].blank? && (copy_from = Role.find_by_id(params[:copy_workflow_from]))
@role.workflows.copy(copy_from)
end
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663 flash[:notice] = l(:notice_successful_create)
Jean-Philippe Lang
Allows multiple roles on the same project (#706). Prerequisite for user groups feature....
r2627 redirect_to :action => 'index'
Toshi MARUYAMA
Fix potential Execution After Redirect bugs....
r5491 else
Jean-Philippe Lang
Restores migration broken by r8182 and removes default scope on Role (#9800)....
r8093 @roles = Role.sorted.all
Jean-Philippe Lang
Resourcified roles....
r8025 render :action => 'new'
Jean-Philippe Lang
Initial commit...
r2 end
end
def edit
Jean-Philippe Lang
Resourcified roles....
r8025 end
def update
if request.put? and @role.update_attributes(params[:role])
Jean-Philippe Lang
notice messages translation...
r15 flash[:notice] = l(:notice_successful_update)
Jean-Philippe Lang
Allows multiple roles on the same project (#706). Prerequisite for user groups feature....
r2627 redirect_to :action => 'index'
Toshi MARUYAMA
Fix potential Execution After Redirect bugs....
r5491 else
Jean-Philippe Lang
Resourcified roles....
r8025 render :action => 'edit'
Jean-Philippe Lang
Initial commit...
r2 end
end
def destroy
Jean-Philippe Lang
Rescue and display an error message when trying to delete a role that is in use....
r1145 @role.destroy
Jean-Philippe Lang
Allows multiple roles on the same project (#706). Prerequisite for user groups feature....
r2627 redirect_to :action => 'index'
Jean-Philippe Lang
Rescue and display an error message when trying to delete a role that is in use....
r1145 rescue
Azamat Hackimov
New strings to localization (#5225)...
r3513 flash[:error] = l(:error_can_not_remove_role)
Jean-Philippe Lang
Rescue and display an error message when trying to delete a role that is in use....
r1145 redirect_to :action => 'index'
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/roles_controller.rb....
r6749
Jean-Philippe Lang
Resourcified roles....
r8025 def permissions
Jean-Philippe Lang
Restores migration broken by r8182 and removes default scope on Role (#9800)....
r8093 @roles = Role.sorted.all
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663 @permissions = Redmine::AccessControl.permissions.select { |p| !p.public? }
Jean-Philippe Lang
Added permissions report (link available on roles list view)....
r430 if request.post?
@roles.each do |role|
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663 role.permissions = params[:permissions][role.id.to_s]
role.save
Jean-Philippe Lang
Added permissions report (link available on roles list view)....
r430 end
flash[:notice] = l(:notice_successful_update)
Jean-Philippe Lang
Allows multiple roles on the same project (#706). Prerequisite for user groups feature....
r2627 redirect_to :action => 'index'
Jean-Philippe Lang
Added permissions report (link available on roles list view)....
r430 end
end
Jean-Philippe Lang
Resourcified roles....
r8025
private
def find_role
@role = Role.find(params[:id])
rescue ActiveRecord::RecordNotFound
render_404
end
Jean-Philippe Lang
Initial commit...
r2 end