##// 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
queries_controller.rb
107 lines | 3.5 KiB | text/x-ruby | RubyLexer
/ app / controllers / queries_controller.rb
Jean-Philippe Lang
Makes custom queries available through the REST API (#5737)....
r6066 # Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
Jean-Philippe Lang
"queries" branch merged...
r92 #
# 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/queries_controller.rb....
r6772 #
Jean-Philippe Lang
"queries" branch merged...
r92 # 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/queries_controller.rb....
r6772 #
Jean-Philippe Lang
"queries" branch merged...
r92 # 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 QueriesController < ApplicationController
Jean-Philippe Lang
Highlight the current item of the main menu....
r1062 menu_item :issues
Etienne Massip
Refactor : convert queries to REST resources (also fixes #9108)....
r7529 before_filter :find_query, :except => [:new, :create, :index]
before_filter :find_optional_project, :only => [:new, :create]
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/queries_controller.rb....
r6772
Jean-Philippe Lang
Separation of RSS/API auth actions....
r6077 accept_api_auth :index
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/queries_controller.rb....
r6772
Etienne Massip
Refactor : convert queries to REST resources (also fixes #9108)....
r7529 include QueriesHelper
Jean-Philippe Lang
Makes custom queries available through the REST API (#5737)....
r6066 def index
case params[:format]
when 'xml', 'json'
@offset, @limit = api_offset_and_limit
else
@limit = per_page_option
end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/queries_controller.rb....
r6772
Jean-Philippe Lang
Makes custom queries available through the REST API (#5737)....
r6066 @query_count = Query.visible.count
@query_pages = Paginator.new self, @query_count, @limit, params['page']
@queries = Query.visible.all(:limit => @limit, :offset => @offset, :order => "#{Query.table_name}.name")
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/queries_controller.rb....
r6772
Jean-Philippe Lang
Makes custom queries available through the REST API (#5737)....
r6066 respond_to do |format|
format.html { render :nothing => true }
format.api
end
end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/queries_controller.rb....
r6772
Jean-Philippe Lang
Added per user custom queries....
r563 def new
Etienne Massip
Refactor : convert queries to REST resources (also fixes #9108)....
r7529 @query = Query.new
Jean-Philippe Lang
Anonymous users can now be allowed to create, edit, comment issues, comment news and post messages in the forums....
r906 @query.user = User.current
Etienne Massip
Refactor : convert queries to REST resources (also fixes #9108)....
r7529 @query.project = @project
Jean-Philippe Lang
Allows multiple roles on the same project (#706). Prerequisite for user groups feature....
r2627 @query.is_public = false unless User.current.allowed_to?(:manage_public_queries, @project) || User.current.admin?
Etienne Massip
Refactor : convert queries to REST resources (also fixes #9108)....
r7529 build_query_from_params
end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/queries_controller.rb....
r6772
Etienne Massip
Refactor : convert queries to REST resources (also fixes #9108)....
r7529 def create
@query = Query.new(params[:query])
@query.user = User.current
@query.project = params[:query_is_for_all] ? nil : @project
@query.is_public = false unless User.current.allowed_to?(:manage_public_queries, @project) || User.current.admin?
build_query_from_params
Jean-Philippe Lang
Shorten query[column_names] param name....
r5184 @query.column_names = nil if params[:default_columns]
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/queries_controller.rb....
r6772
Etienne Massip
Refactor : convert queries to REST resources (also fixes #9108)....
r7529 if @query.save
Jean-Philippe Lang
Added per user custom queries....
r563 flash[:notice] = l(:notice_successful_create)
Jean-Philippe Lang
ProjectsController#list_issues, #export_issues_csv and #export_issues_pdf merged into IssuesController#index...
r874 redirect_to :controller => 'issues', :action => 'index', :project_id => @project, :query_id => @query
Etienne Massip
Refactor : convert queries to REST resources (also fixes #9108)....
r7529 else
render :action => 'new', :layout => !request.xhr?
Jean-Philippe Lang
Added per user custom queries....
r563 end
end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/queries_controller.rb....
r6772
Jean-Philippe Lang
"queries" branch merged...
r92 def edit
Etienne Massip
Refactor : convert queries to REST resources (also fixes #9108)....
r7529 end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/queries_controller.rb....
r6772
Etienne Massip
Refactor : convert queries to REST resources (also fixes #9108)....
r7529 def update
@query.attributes = params[:query]
@query.project = nil if params[:query_is_for_all]
@query.is_public = false unless User.current.allowed_to?(:manage_public_queries, @project) || User.current.admin?
build_query_from_params
@query.column_names = nil if params[:default_columns]
if @query.save
flash[:notice] = l(:notice_successful_update)
redirect_to :controller => 'issues', :action => 'index', :project_id => @project, :query_id => @query
else
render :action => 'edit'
Jean-Philippe Lang
"queries" branch merged...
r92 end
end
def destroy
Etienne Massip
Refactor : convert queries to REST resources (also fixes #9108)....
r7529 @query.destroy
Jean-Philippe Lang
Queries can be marked as 'For all projects'. Such queries will be available on all projects and on the global issue list (#897, closes #671)....
r1296 redirect_to :controller => 'issues', :action => 'index', :project_id => @project, :set_filter => 1
Jean-Philippe Lang
"queries" branch merged...
r92 end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/queries_controller.rb....
r6772
Jean-Philippe Lang
"queries" branch merged...
r92 private
Jean-Philippe Lang
Queries can be marked as 'For all projects'. Such queries will be available on all projects and on the global issue list (#897, closes #671)....
r1296 def find_query
@query = Query.find(params[:id])
@project = @query.project
render_403 unless @query.editable_by?(User.current)
rescue ActiveRecord::RecordNotFound
render_404
end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/queries_controller.rb....
r6772
Jean-Philippe Lang
Global queries can be saved from the global issue list (follows r1311 and closes #897)....
r1297 def find_optional_project
@project = Project.find(params[:project_id]) if params[:project_id]
Jean-Philippe Lang
Fixes permission check in QueriesController (#5181)....
r3497 render_403 unless User.current.allowed_to?(:save_queries, @project, :global => true)
Jean-Philippe Lang
ActiveRecord::RecordNotFound exceptions handled more gracefully...
r130 rescue ActiveRecord::RecordNotFound
render_404
Jean-Philippe Lang
"queries" branch merged...
r92 end
end