forked from Gitlink/forgeplus
FIX code review and user cache
This commit is contained in:
parent
ece6cba4a4
commit
1bc935ffd5
|
@ -385,11 +385,7 @@ class ApplicationController < ActionController::Base
|
|||
end
|
||||
|
||||
def current_user
|
||||
if Rails.env.development?
|
||||
User.current = User.find 1
|
||||
else
|
||||
User.current
|
||||
end
|
||||
User.current
|
||||
end
|
||||
|
||||
## 默认输出json
|
||||
|
@ -745,7 +741,7 @@ class ApplicationController < ActionController::Base
|
|||
namespace = params[:owner]
|
||||
id = params[:repo] || params[:id]
|
||||
|
||||
@project = Project.find_with_namespace(namespace, id)
|
||||
@project, @owner = Project.find_with_namespace(namespace, id)
|
||||
|
||||
if @project and current_user.can_read_project?(@project)
|
||||
logger.info "###########: has project and can read project"
|
||||
|
|
|
@ -6,7 +6,6 @@ class IssuesController < ApplicationController
|
|||
before_action :check_project_public, only: [:index ,:show, :copy, :index_chosen, :close_issue]
|
||||
|
||||
before_action :set_issue, only: [:edit, :update, :destroy, :show, :copy, :close_issue, :lock_issue]
|
||||
before_action :get_branches, only: [:new, :edit]
|
||||
before_action :check_token_enough, only: [:create, :update]
|
||||
|
||||
include ApplicationHelper
|
||||
|
@ -97,8 +96,7 @@ class IssuesController < ApplicationController
|
|||
end
|
||||
|
||||
def new
|
||||
@all_branches = get_branches
|
||||
@issue_chosen = issue_left_chosen(@project, nil)
|
||||
@issue_chosen = get_associated_data(@project)
|
||||
end
|
||||
|
||||
def create
|
||||
|
@ -150,7 +148,6 @@ class IssuesController < ApplicationController
|
|||
end
|
||||
|
||||
def edit
|
||||
# @all_branches = get_branches
|
||||
# @issue_chosen = issue_left_chosen(@project, @issue.id)
|
||||
@cannot_edit_tags = @issue.issue_type=="2" && @issue.status_id == 5 #悬赏任务已解决且关闭的状态下,不能修改
|
||||
@issue_attachments = @issue.attachments
|
||||
|
@ -439,17 +436,6 @@ class IssuesController < ApplicationController
|
|||
tracker_array
|
||||
end
|
||||
|
||||
def get_branches
|
||||
all_branches = []
|
||||
get_all_branches = Gitea::Repository::Branches::ListService.new(@user, @project&.repository.try(:identifier)).call
|
||||
if get_all_branches && get_all_branches.size > 0
|
||||
get_all_branches.each do |b|
|
||||
all_branches.push(b["name"])
|
||||
end
|
||||
end
|
||||
all_branches
|
||||
end
|
||||
|
||||
def issue_send_params(params)
|
||||
{
|
||||
subject: params[:subject],
|
||||
|
|
|
@ -44,7 +44,7 @@ class ProjectsController < ApplicationController
|
|||
end
|
||||
|
||||
def branches
|
||||
@branches = @project.forge? ? Gitea::Repository::Branches::ListService.new(@project.owner, @project.identifier).call : []
|
||||
@branches = @project.forge? ? Gitea::Repository::Branches::ListService.new(@owner, @project.identifier).call : []
|
||||
end
|
||||
|
||||
def group_type_list
|
||||
|
|
|
@ -30,7 +30,7 @@ module ProjectsHelper
|
|||
|
||||
def json_response(project, user)
|
||||
# repo = project.repository
|
||||
repo = Repository.select(:id, :mirror_url).find_by(project: project)
|
||||
repo = Repository.includes(:mirror).select(:id, :mirror_url).find_by(project: project)
|
||||
|
||||
tmp_json = {}
|
||||
unless project.common?
|
||||
|
@ -41,20 +41,6 @@ module ProjectsHelper
|
|||
first_sync: repo.first_sync?
|
||||
})
|
||||
end
|
||||
author =
|
||||
if project.educoder?
|
||||
{
|
||||
login: project.project_educoder.owner,
|
||||
name: project.project_educoder.owner,
|
||||
image_url: project.project_educoder.image_url
|
||||
}
|
||||
else
|
||||
{
|
||||
login: project.owner.login,
|
||||
name: project.owner.real_name,
|
||||
image_url: url_to_avatar(project.owner)
|
||||
}
|
||||
end
|
||||
|
||||
tmp_json = tmp_json.merge({
|
||||
identifier: render_identifier(project),
|
||||
|
@ -64,12 +50,28 @@ module ProjectsHelper
|
|||
repo_id: repo.id,
|
||||
open_devops: (user.blank? || user.is_a?(AnonymousUser)) ? false : project.open_devops?,
|
||||
type: project.numerical_for_project_type,
|
||||
author: author
|
||||
author: render_owner(project)
|
||||
}).compact
|
||||
|
||||
render json: tmp_json
|
||||
end
|
||||
|
||||
def render_owner(project)
|
||||
if project.educoder?
|
||||
{
|
||||
login: project.project_educoder.owner,
|
||||
name: project.project_educoder.owner,
|
||||
image_url: project.project_educoder.image_url
|
||||
}
|
||||
else
|
||||
{
|
||||
login: @owner.login,
|
||||
name: @owner.real_name,
|
||||
image_url: url_to_avatar(@owner)
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
def render_identifier(project)
|
||||
project.educoder? ? project.project_educoder&.repo_name&.split('/')[1] : project.identifier
|
||||
end
|
||||
|
|
|
@ -1,4 +1,143 @@
|
|||
module TagChosenHelper
|
||||
def get_associated_data(project)
|
||||
issue_comment_users_array = []
|
||||
cost_time_array = []
|
||||
all_issues = []
|
||||
{
|
||||
"assign_user": render_cache_collaborators(project),
|
||||
"tracker": render_cache_trackers,
|
||||
"issue_status": render_cache_issue_statuses,
|
||||
"priority": render_cache_issue_priorities,
|
||||
"issue_version": render_cache_milestones(project),
|
||||
"start_date": "",
|
||||
"due_date": "",
|
||||
"joins_users": issue_comment_users_array,
|
||||
"cost_time_users": cost_time_array,
|
||||
# "total_cost_time": Time.at(all_cost_time).utc.strftime('%H h %M min %S s'),
|
||||
# "be_depended_issues": be_depended_issues_array,
|
||||
# "depended_issues":depended_issues_array,
|
||||
# "estimated_hours": issue_info[7],
|
||||
"done_ratio": render_complete_percentage,
|
||||
"issue_tag": render_issue_tags(project),
|
||||
"issue_type": render_issue_species,
|
||||
"all_issues": all_issues
|
||||
}
|
||||
end
|
||||
|
||||
def render_cache_trackers
|
||||
cache_key = "all_trackers/#{Tracker.maximum('id')}"
|
||||
|
||||
Rails.cache.fetch(cache_key) do
|
||||
Tracker.select(:id, :name, :position).collect do |event|
|
||||
{
|
||||
id: event.id,
|
||||
name: event.name,
|
||||
position: event.position,
|
||||
is_chosen: '0'
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def render_cache_issue_statuses
|
||||
cache_key = "all_issue_statuses/#{IssueStatus.maximum('id')}"
|
||||
|
||||
Rails.cache.fetch(cache_key) do
|
||||
IssueStatus.select(:id, :name, :position).collect do |event|
|
||||
{
|
||||
id: event.id,
|
||||
name: event.name,
|
||||
position: event.position,
|
||||
is_chosen: '0'
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def render_cache_issue_priorities
|
||||
cache_key = "all_issue_priorities/#{IssuePriority.maximum('id')}"
|
||||
|
||||
Rails.cache.fetch(cache_key) do
|
||||
IssuePriority.select(:id, :name, :position).collect do |event|
|
||||
{
|
||||
id: event.id,
|
||||
name: event.name,
|
||||
position: event.position,
|
||||
is_chosen: '0'
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def render_complete_percentage
|
||||
completion_nums = %w(0 10 20 30 40 50 60 70 80 90 100)
|
||||
completion_nums.collect do |event|
|
||||
{
|
||||
id: event.to_i,
|
||||
name: event + "%",
|
||||
is_chosen: '0'
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
def render_issue_species
|
||||
species = %W(普通 悬赏)
|
||||
|
||||
species.collect do |event|
|
||||
{
|
||||
id: event.to_i + 1,
|
||||
token: nil,
|
||||
is_chosen: '0'
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
def render_issue_tags(project)
|
||||
# project.issue_tags.last&.cache_key
|
||||
cache_key = "all_issue_tags/#{project.issue_tags.maximum('updated_at')}"
|
||||
|
||||
Rails.cache.fetch(cache_key) do
|
||||
project.issue_tags.select(:id, :name, :color).collect do |event|
|
||||
{
|
||||
id: event.id,
|
||||
name: event.name,
|
||||
color: event.color,
|
||||
is_chosen: '0'
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def render_cache_milestones(project)
|
||||
cache_key = "all_milestones/#{project.versions.maximum('updated_on')}"
|
||||
|
||||
Rails.cache.fetch(cache_key) do
|
||||
project.versions.select(:id, :name, :status).collect do |event|
|
||||
{
|
||||
id: event.id,
|
||||
name: event.name,
|
||||
status: event.status,
|
||||
is_chosen: '0'
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def render_cache_collaborators(project)
|
||||
cache_key = "all_collaborators/#{project.members.maximum('created_on')}"
|
||||
|
||||
Rails.cache.fetch(cache_key) do
|
||||
project.members.includes(:user).collect do |event|
|
||||
{
|
||||
id: event.user&.id,
|
||||
name: event.user&.show_real_name,
|
||||
avatar_url: url_to_avatar(event.user),
|
||||
is_chosen: '0'
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
def issue_left_chosen(project,issue_id)
|
||||
issue_info = Array.new(11)
|
||||
|
@ -205,4 +344,4 @@ module TagChosenHelper
|
|||
# be_depended_issues_array
|
||||
# end
|
||||
|
||||
end
|
||||
end
|
||||
|
|
|
@ -178,18 +178,13 @@ class Project < ApplicationRecord
|
|||
def self.find_with_namespace(namespace_path, identifier)
|
||||
logger.info "########namespace_path: #{namespace_path} ########identifier: #{identifier} "
|
||||
|
||||
project = Project.find_by(identifier: identifier) || Project.find_by(identifier: "#{namespace_path}/#{identifier}")
|
||||
user = User.find_by_login namespace_path
|
||||
return nil if user.blank?
|
||||
|
||||
project = user.projects.find_by(identifier: identifier) || Project.find_by(identifier: "#{namespace_path}/#{identifier}")
|
||||
return nil if project.blank?
|
||||
|
||||
if project.forge?
|
||||
user = User.find_by_login namespace_path
|
||||
return nil if user.blank?
|
||||
|
||||
project = user.projects.find_by(identifier: identifier)
|
||||
return nil if project.blank?
|
||||
end
|
||||
project
|
||||
[project, user]
|
||||
end
|
||||
|
||||
def ci_reactivate?
|
||||
|
|
|
@ -1,3 +1,2 @@
|
|||
json.partial! "commons/success"
|
||||
json.branches @all_branches
|
||||
json.issue_chosen @issue_chosen
|
||||
json.issue_chosen @issue_chosen
|
||||
|
|
Loading…
Reference in New Issue