Merge remote-tracking branch 'origin/trustie_server' into trustie_server
This commit is contained in:
commit
7ef5e48b9d
|
@ -22,6 +22,12 @@ class RepositoriesController < ApplicationController
|
||||||
def detail
|
def detail
|
||||||
@user = current_user
|
@user = current_user
|
||||||
@result = Repositories::DetailService.call(@owner, @repository, @user)
|
@result = Repositories::DetailService.call(@owner, @repository, @user)
|
||||||
|
cache_total_forks = $redis_cache.get("ProjectSpecialForks:#{@project.id}")
|
||||||
|
if cache_total_forks.present?
|
||||||
|
@project_forked_count = cache_total_forks.to_i
|
||||||
|
else
|
||||||
|
@project_forked_count = @project.forked_count.to_i
|
||||||
|
end
|
||||||
@project_fork_id = @project.try(:forked_from_project_id)
|
@project_fork_id = @project.try(:forked_from_project_id)
|
||||||
if @project_fork_id.present?
|
if @project_fork_id.present?
|
||||||
@fork_project = Project.find_by(id: @project_fork_id)
|
@fork_project = Project.find_by(id: @project_fork_id)
|
||||||
|
@ -166,8 +172,9 @@ class RepositoriesController < ApplicationController
|
||||||
if params[:filepath].present? || @project.educoder?
|
if params[:filepath].present? || @project.educoder?
|
||||||
@contributors = []
|
@contributors = []
|
||||||
else
|
else
|
||||||
result = Gitea::Repository::Contributors::GetService.call(@owner, @repository.identifier)
|
result = Gitea::Repository::Contributors::GetService.call(@owner, @repository.identifier, {page: params[:page], limit: params[:limit]})
|
||||||
@contributors = result.is_a?(Hash) && result.key?(:status) ? [] : result
|
@total_count = result[:total_count]
|
||||||
|
@contributors = result.is_a?(Hash) ? result[:body] : []
|
||||||
end
|
end
|
||||||
rescue
|
rescue
|
||||||
@contributors = []
|
@contributors = []
|
||||||
|
@ -321,7 +328,12 @@ class RepositoriesController < ApplicationController
|
||||||
def get_latest_commit
|
def get_latest_commit
|
||||||
latest_commit = @project.educoder? ? nil : project_commits
|
latest_commit = @project.educoder? ? nil : project_commits
|
||||||
@latest_commit = latest_commit.present? ? latest_commit[:body][0] : nil
|
@latest_commit = latest_commit.present? ? latest_commit[:body][0] : nil
|
||||||
@commits_count = latest_commit.present? ? latest_commit[:total_count] : 0
|
cache_total_commits = $redis_cache.get("ProjectSpecialCommit:#{@project.id}")
|
||||||
|
if cache_total_commits.present?
|
||||||
|
@commits_count = cache_total_commits.to_i
|
||||||
|
else
|
||||||
|
@commits_count = latest_commit.present? ? latest_commit[:total_count] : 0
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def content_params
|
def content_params
|
||||||
|
|
|
@ -1,22 +1,38 @@
|
||||||
class Gitea::Repository::Contributors::GetService < Gitea::ClientService
|
class Gitea::Repository::Contributors::GetService < Gitea::ClientService
|
||||||
attr_reader :owner, :repo_name
|
attr_reader :owner, :repo_name, :page, :limit
|
||||||
|
|
||||||
def initialize(owner, repo_name)
|
def initialize(owner, repo_name, params)
|
||||||
@owner = owner
|
@owner = owner
|
||||||
@repo_name = repo_name
|
@repo_name = repo_name
|
||||||
|
@page = params[:page] || 1
|
||||||
|
@limit = params[:limit] || 20
|
||||||
end
|
end
|
||||||
|
|
||||||
def call
|
def call
|
||||||
response = get(url, params)
|
response = get(url, params)
|
||||||
render_status(response)
|
render_result(response)
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
def params
|
def params
|
||||||
Hash.new.merge(token: owner.gitea_token)
|
Hash.new.merge(token: owner.gitea_token, page: page, limit: limit)
|
||||||
end
|
end
|
||||||
|
|
||||||
def url
|
def url
|
||||||
"/repos/#{owner.login}/#{repo_name}/contributors"
|
"/repos/#{owner.login}/#{repo_name}/contributors"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def render_result(response)
|
||||||
|
case response.status
|
||||||
|
when 200
|
||||||
|
result = {}
|
||||||
|
headers = response.headers.to_hash
|
||||||
|
body = JSON.parse(response.body)
|
||||||
|
total_count = headers["x-total"]
|
||||||
|
result.merge(total_count: total_count.to_i, body: body)
|
||||||
|
else
|
||||||
|
nil
|
||||||
|
# {status: -1, message: "#{body['message']}"}
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
|
@ -1,7 +1,6 @@
|
||||||
total_count = @contributors.size
|
|
||||||
json.list @contributors.each do |contributor|
|
json.list @contributors.each do |contributor|
|
||||||
json.partial! 'contributor', locals: { contributor: contributor, project: @project }
|
json.partial! 'contributor', locals: { contributor: contributor, project: @project }
|
||||||
end
|
end
|
||||||
json.total_count total_count
|
json.total_count @total_count
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ json.issues_count @project.issues.issue_issue.size - @project.issues.issue_issue
|
||||||
json.pull_requests_count @project.pull_requests.opening.size
|
json.pull_requests_count @project.pull_requests.opening.size
|
||||||
json.project_identifier render_identifier(@project)
|
json.project_identifier render_identifier(@project)
|
||||||
json.praises_count @project.praises_count.to_i
|
json.praises_count @project.praises_count.to_i
|
||||||
json.forked_count @project.forked_count.to_i
|
json.forked_count @project_forked_count.to_i
|
||||||
json.watchers_count @project.watchers_count.to_i
|
json.watchers_count @project.watchers_count.to_i
|
||||||
json.versions_count @project.versions.opening.size #里程碑数量
|
json.versions_count @project.versions.opening.size #里程碑数量
|
||||||
json.version_releases_count @project.releases_size(@user.try(:id), "all")
|
json.version_releases_count @project.releases_size(@user.try(:id), "all")
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
# 执行示例 bundle exec rake "special_commit:load[yystopf, pig]"
|
||||||
|
# RAILS_ENV=production bundle exec rake "special_commit:load[yystopf, pig]"
|
||||||
|
#
|
||||||
|
namespace :special_commit do
|
||||||
|
desc "Sync Special Commit to Cache"
|
||||||
|
task :load, [:login, :identifier] => :environment do |t, args|
|
||||||
|
owner = Owner.find_by(login: args.login)
|
||||||
|
project = Project.find_by(user_id: owner&.id, identifier: args.identifier)
|
||||||
|
if owner.nil? || project.nil?
|
||||||
|
puts "====Project is not found.===="
|
||||||
|
else
|
||||||
|
puts "====Sync Project: #{owner.real_name}/#{project.name}===="
|
||||||
|
puts "====Sync Count Project Self Commit===="
|
||||||
|
self_commit_list_result = $gitea_client.get_repos_commits_by_owner_repo(owner.login, project.identifier)
|
||||||
|
total_commits = self_commit_list_result[:total_data].to_i
|
||||||
|
puts "====Sync Count Project Submodule Commit===="
|
||||||
|
entries = $gitea_client.get_repos_contents_by_owner_repo(owner.login, project.identifier)
|
||||||
|
entries.each do |entry|
|
||||||
|
next if entry["submodule_git_url"].nil?
|
||||||
|
submodule_git_url = entry["submodule_git_url"].gsub(Rails.application.config_for(:configuration)['platform_url'], '').gsub(".git", '')
|
||||||
|
real_relative_path = File.expand_path(submodule_git_url, "#{owner.login}/#{project.identifier}").gsub("#{Rails.root}/", '')
|
||||||
|
sub_project_owner_login = real_relative_path.split("/")[0]
|
||||||
|
sub_project_identifier = real_relative_path.split("/")[1]
|
||||||
|
sub_owner = Owner.find_by(login: sub_project_owner_login)
|
||||||
|
sub_project = sub_owner.projects.find_by(identifier: sub_project_identifier)
|
||||||
|
next if sub_owner.nil? || sub_project.nil?
|
||||||
|
sub_commit_list_result = $gitea_client.get_repos_commits_by_owner_repo(sub_project_owner_login, sub_project_identifier)
|
||||||
|
total_commits += sub_commit_list_result[:total_data].to_i
|
||||||
|
puts "====Sync Count Project Submodule forkproject Commit===="
|
||||||
|
sub_project.forked_projects.each do |p|
|
||||||
|
forked_project_owner_login = p.owner&.login
|
||||||
|
forked_project_identifier = p.identifier
|
||||||
|
next if forked_project_owner_login.nil? || forked_project_owner_login.nil?
|
||||||
|
forked_commit_list_result = $gitea_client.get_repos_commits_by_owner_repo(forked_project_owner_login, forked_project_identifier)
|
||||||
|
total_commits += forked_commit_list_result[:total_data].to_i
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
puts "====Write total commits to cache===="
|
||||||
|
$redis_cache.set("ProjectSpecialCommit:#{project.id}", total_commits)
|
||||||
|
$redis_cache.expireat("ProjectSpecialCommit:#{project.id}", (Date.today+30.days).to_time.to_i)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue