| @@ -385,11 +385,7 @@ class ApplicationController < ActionController::Base | |||||
| end | end | ||||
| def current_user | def current_user | ||||
| if Rails.env.development? | |||||
| User.current = User.find 1 | |||||
| else | |||||
| User.current | |||||
| end | |||||
| User.current | |||||
| end | end | ||||
| ## 默认输出json | ## 默认输出json | ||||
| @@ -745,7 +741,7 @@ class ApplicationController < ActionController::Base | |||||
| namespace = params[:owner] | namespace = params[:owner] | ||||
| id = params[:repo] || params[:id] | 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) | if @project and current_user.can_read_project?(@project) | ||||
| logger.info "###########: has project and can read 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 :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 :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] | before_action :check_token_enough, only: [:create, :update] | ||||
| include ApplicationHelper | include ApplicationHelper | ||||
| @@ -97,8 +96,7 @@ class IssuesController < ApplicationController | |||||
| end | end | ||||
| def new | def new | ||||
| @all_branches = get_branches | |||||
| @issue_chosen = issue_left_chosen(@project, nil) | |||||
| @issue_chosen = get_associated_data(@project) | |||||
| end | end | ||||
| def create | def create | ||||
| @@ -150,7 +148,6 @@ class IssuesController < ApplicationController | |||||
| end | end | ||||
| def edit | def edit | ||||
| # @all_branches = get_branches | |||||
| # @issue_chosen = issue_left_chosen(@project, @issue.id) | # @issue_chosen = issue_left_chosen(@project, @issue.id) | ||||
| @cannot_edit_tags = @issue.issue_type=="2" && @issue.status_id == 5 #悬赏任务已解决且关闭的状态下,不能修改 | @cannot_edit_tags = @issue.issue_type=="2" && @issue.status_id == 5 #悬赏任务已解决且关闭的状态下,不能修改 | ||||
| @issue_attachments = @issue.attachments | @issue_attachments = @issue.attachments | ||||
| @@ -439,17 +436,6 @@ class IssuesController < ApplicationController | |||||
| tracker_array | tracker_array | ||||
| end | 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) | def issue_send_params(params) | ||||
| { | { | ||||
| subject: params[:subject], | subject: params[:subject], | ||||
| @@ -44,7 +44,7 @@ class ProjectsController < ApplicationController | |||||
| end | end | ||||
| def branches | 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 | end | ||||
| def group_type_list | def group_type_list | ||||
| @@ -30,7 +30,7 @@ module ProjectsHelper | |||||
| def json_response(project, user) | def json_response(project, user) | ||||
| # repo = project.repository | # 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 = {} | tmp_json = {} | ||||
| unless project.common? | unless project.common? | ||||
| @@ -41,20 +41,6 @@ module ProjectsHelper | |||||
| first_sync: repo.first_sync? | first_sync: repo.first_sync? | ||||
| }) | }) | ||||
| end | 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({ | tmp_json = tmp_json.merge({ | ||||
| identifier: render_identifier(project), | identifier: render_identifier(project), | ||||
| @@ -64,12 +50,28 @@ module ProjectsHelper | |||||
| repo_id: repo.id, | repo_id: repo.id, | ||||
| open_devops: (user.blank? || user.is_a?(AnonymousUser)) ? false : project.open_devops?, | open_devops: (user.blank? || user.is_a?(AnonymousUser)) ? false : project.open_devops?, | ||||
| type: project.numerical_for_project_type, | type: project.numerical_for_project_type, | ||||
| author: author | |||||
| author: render_owner(project) | |||||
| }).compact | }).compact | ||||
| render json: tmp_json | render json: tmp_json | ||||
| end | 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) | def render_identifier(project) | ||||
| project.educoder? ? project.project_educoder&.repo_name&.split('/')[1] : project.identifier | project.educoder? ? project.project_educoder&.repo_name&.split('/')[1] : project.identifier | ||||
| end | end | ||||
| @@ -1,4 +1,143 @@ | |||||
| module TagChosenHelper | 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) | def issue_left_chosen(project,issue_id) | ||||
| issue_info = Array.new(11) | issue_info = Array.new(11) | ||||
| @@ -205,4 +344,4 @@ module TagChosenHelper | |||||
| # be_depended_issues_array | # be_depended_issues_array | ||||
| # end | # end | ||||
| end | |||||
| end | |||||
| @@ -178,18 +178,13 @@ class Project < ApplicationRecord | |||||
| def self.find_with_namespace(namespace_path, identifier) | def self.find_with_namespace(namespace_path, identifier) | ||||
| logger.info "########namespace_path: #{namespace_path} ########identifier: #{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? | 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 | end | ||||
| def ci_reactivate? | def ci_reactivate? | ||||
| @@ -1,3 +1,2 @@ | |||||
| json.partial! "commons/success" | json.partial! "commons/success" | ||||
| json.branches @all_branches | |||||
| json.issue_chosen @issue_chosen | |||||
| json.issue_chosen @issue_chosen | |||||