Merge remote-tracking branch 'origin/trustie_server' into trustie_server
This commit is contained in:
commit
fe4751c2f5
|
@ -680,6 +680,14 @@ class ApplicationController < ActionController::Base
|
||||||
relation.page(page).per(limit)
|
relation.page(page).per(limit)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def kaminari_unlimit_paginate(relation)
|
||||||
|
limit = params[:limit] || params[:per_page]
|
||||||
|
limit = (limit.to_i.zero? || limit.to_i > 9999) ? 9999 : limit.to_i
|
||||||
|
page = params[:page].to_i.zero? ? 1 : params[:page].to_i
|
||||||
|
|
||||||
|
relation.page(page).per(limit)
|
||||||
|
end
|
||||||
|
|
||||||
def kaminari_array_paginate(relation)
|
def kaminari_array_paginate(relation)
|
||||||
limit = params[:limit] || params[:per_page]
|
limit = params[:limit] || params[:per_page]
|
||||||
limit = (limit.to_i.zero? || limit.to_i > 20) ? 20 : limit.to_i
|
limit = (limit.to_i.zero? || limit.to_i > 20) ? 20 : limit.to_i
|
||||||
|
|
|
@ -169,18 +169,12 @@ class RepositoriesController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def contributors
|
def contributors
|
||||||
@cache_result = $redis_cache.get("ProjectSpecialCommit:#{@project.id}")
|
if params[:filepath].present? || @project.educoder?
|
||||||
if @cache_result.present?
|
@contributors = []
|
||||||
@total_count = Project.mindspore_contributors.size
|
else
|
||||||
@contributors = kaminari_array_paginate(Project.mindspore_contributors)
|
result = Gitea::Repository::Contributors::GetService.call(@owner, @repository.identifier, {page: params[:page], limit: params[:limit]})
|
||||||
else
|
@total_count = result[:total_count]
|
||||||
if params[:filepath].present? || @project.educoder?
|
@contributors = result.is_a?(Hash) ? result[:body] : []
|
||||||
@contributors = []
|
|
||||||
else
|
|
||||||
result = Gitea::Repository::Contributors::GetService.call(@owner, @repository.identifier, {page: params[:page], limit: params[:limit]})
|
|
||||||
@total_count = result[:total_count]
|
|
||||||
@contributors = result.is_a?(Hash) ? result[:body] : []
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
rescue
|
rescue
|
||||||
@contributors = []
|
@contributors = []
|
||||||
|
|
|
@ -406,7 +406,7 @@ class UsersController < ApplicationController
|
||||||
is_current_admin_user = User.current.logged? && (current_user&.admin? || current_user.id == @user.id)
|
is_current_admin_user = User.current.logged? && (current_user&.admin? || current_user.id == @user.id)
|
||||||
scope = Projects::ListMyQuery.call(params, @user,is_current_admin_user)
|
scope = Projects::ListMyQuery.call(params, @user,is_current_admin_user)
|
||||||
@total_count = scope.size
|
@total_count = scope.size
|
||||||
@projects = paginate(scope)
|
@projects = kaminari_unlimit_paginate(scope)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ module Watchable
|
||||||
following.size
|
following.size
|
||||||
end
|
end
|
||||||
|
|
||||||
def mindspore_contribution_perc(project)
|
def simple_contribution_perc(project)
|
||||||
@project = project
|
@project = project
|
||||||
@user = self
|
@user = self
|
||||||
|
|
||||||
|
@ -39,15 +39,19 @@ module Watchable
|
||||||
(count_user * 1.0 / (count_all + 0.000000001)).round(5)
|
(count_user * 1.0 / (count_all + 0.000000001)).round(5)
|
||||||
end
|
end
|
||||||
|
|
||||||
if @project['use_blockchain'] == true or @project['use_blockchain'] == 1
|
if (@project['use_blockchain'] == true or @project['use_blockchain'] == 1) && @user.id.present?
|
||||||
balance_user = Blockchain::BalanceQueryOneProject.call({"user_id": @user.id, "project_id": @project.id})
|
balance_user = Blockchain::BalanceQueryOneProject.call({"user_id": @user.id, "project_id": @project.id})
|
||||||
balance_all = Blockchain::RepoBasicInfo.call({"project_id": @project.id})["cur_supply"]
|
balance_all = Blockchain::RepoBasicInfo.call({"project_id": @project.id})["cur_supply"]
|
||||||
score = cal_perc(balance_user, balance_all)
|
score = cal_perc(balance_user, balance_all)
|
||||||
else
|
else
|
||||||
commits_all = Project.mindspore_contributors.map{|i| i['contributions']}.sum
|
contributors = []
|
||||||
commit_user = Project.mindspore_contributors.select{|i| i['login'] == @user.login}.map{|i| i['contributions']}.sum
|
result = Gitea::Repository::Contributors::GetService.call(@project.owner, @project.identifier,{q_name: @user.login, q_email: @user.mail})
|
||||||
score = cal_perc(commit_user, commits_all)
|
user_contribution = result[:body][0]
|
||||||
|
commits_all = result[:total_contributions]
|
||||||
|
score = cal_perc(user_contribution["contributions"], commits_all)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
(score * 100).round(1).to_s + "%"
|
||||||
end
|
end
|
||||||
|
|
||||||
def contribution_perc(project)
|
def contribution_perc(project)
|
||||||
|
|
|
@ -25,10 +25,12 @@ class ForkUser < ApplicationRecord
|
||||||
|
|
||||||
def incre_project_common
|
def incre_project_common
|
||||||
CacheAsyncSetJob.perform_later("project_common_service", {forks: 1}, self.project_id)
|
CacheAsyncSetJob.perform_later("project_common_service", {forks: 1}, self.project_id)
|
||||||
|
self.project.update_column(:updated_on, Time.now)
|
||||||
end
|
end
|
||||||
|
|
||||||
def decre_project_common
|
def decre_project_common
|
||||||
CacheAsyncSetJob.perform_later("project_common_service", {forks: -1}, self.project_id)
|
CacheAsyncSetJob.perform_later("project_common_service", {forks: -1}, self.project_id)
|
||||||
|
self.project.update_column(:updated_on, Time.now)
|
||||||
end
|
end
|
||||||
|
|
||||||
def incre_user_statistic
|
def incre_user_statistic
|
||||||
|
|
|
@ -26,10 +26,12 @@ class PraiseTread < ApplicationRecord
|
||||||
|
|
||||||
def incre_project_common
|
def incre_project_common
|
||||||
CacheAsyncSetJob.perform_later("project_common_service", {praises: 1}, self.praise_tread_object_id) if self.praise_tread_object_type == "Project"
|
CacheAsyncSetJob.perform_later("project_common_service", {praises: 1}, self.praise_tread_object_id) if self.praise_tread_object_type == "Project"
|
||||||
|
self.praise_tread_object.update_column(:updated_on, Time.now) if self.praise_tread_object_type == "Project"
|
||||||
end
|
end
|
||||||
|
|
||||||
def decre_project_common
|
def decre_project_common
|
||||||
CacheAsyncSetJob.perform_later("project_common_service", {praises: -1}, self.praise_tread_object_id) if self.praise_tread_object_type == "Project"
|
CacheAsyncSetJob.perform_later("project_common_service", {praises: -1}, self.praise_tread_object_id) if self.praise_tread_object_type == "Project"
|
||||||
|
self.praise_tread_object.update_column(:updated_on, Time.now) if self.praise_tread_object_type == "Project"
|
||||||
end
|
end
|
||||||
|
|
||||||
def incre_user_statistic
|
def incre_user_statistic
|
||||||
|
|
|
@ -28,10 +28,12 @@ class Watcher < ApplicationRecord
|
||||||
|
|
||||||
def incre_project_common
|
def incre_project_common
|
||||||
CacheAsyncSetJob.perform_later("project_common_service", {watchers: 1}, self.watchable_id) if self.watchable_type == "Project"
|
CacheAsyncSetJob.perform_later("project_common_service", {watchers: 1}, self.watchable_id) if self.watchable_type == "Project"
|
||||||
|
self.watchable.update_column(:updated_on, Time.now) if self.watchable_type == "Project"
|
||||||
end
|
end
|
||||||
|
|
||||||
def decre_project_common
|
def decre_project_common
|
||||||
CacheAsyncSetJob.perform_later("project_common_service", {watchers: -1}, self.watchable_id) if self.watchable_type == "Project"
|
CacheAsyncSetJob.perform_later("project_common_service", {watchers: -1}, self.watchable_id) if self.watchable_type == "Project"
|
||||||
|
self.watchable.update_column(:updated_on, Time.now) if self.watchable_type == "Project"
|
||||||
end
|
end
|
||||||
|
|
||||||
def incre_user_statistic
|
def incre_user_statistic
|
||||||
|
|
|
@ -34,6 +34,10 @@ class Projects::ListMyQuery < ApplicationQuery
|
||||||
elsif params[:category].to_s == "forked" #我fork的
|
elsif params[:category].to_s == "forked" #我fork的
|
||||||
fork_ids = user.fork_users.select(:id, :fork_project_id).pluck(:fork_project_id)
|
fork_ids = user.fork_users.select(:id, :fork_project_id).pluck(:fork_project_id)
|
||||||
projects = projects.where(id: fork_ids)
|
projects = projects.where(id: fork_ids)
|
||||||
|
elsif params[:category].to_s == "admin"
|
||||||
|
normal_projects = projects.joins(members: :roles).where(members: {user_id: user.id}, roles: {name: %w(Manager)}).to_sql
|
||||||
|
org_projects = projects.joins(team_projects: [team: :team_users]).where(teams: {authorize: "owner"},team_users: {user_id: user.id}).to_sql
|
||||||
|
projects = Project.from("( #{ normal_projects} UNION #{ org_projects } ) AS projects").distinct
|
||||||
# elsif params[:category].to_s == "public"
|
# elsif params[:category].to_s == "public"
|
||||||
# projects = projects.visible.joins(:members).where(members: { user_id: user.id })
|
# projects = projects.visible.joins(:members).where(members: { user_id: user.id })
|
||||||
# elsif params[:category].to_s == "private"
|
# elsif params[:category].to_s == "private"
|
||||||
|
|
|
@ -69,7 +69,7 @@ class Api::V1::Issues::ListService < ApplicationService
|
||||||
issues = issues.joins(:assigners).where(users: {id: assigner_id}) if assigner_id.present?
|
issues = issues.joins(:assigners).where(users: {id: assigner_id}) if assigner_id.present?
|
||||||
|
|
||||||
# status_id
|
# status_id
|
||||||
issues = issues.where(status_id: status_id) if status_id.present?
|
issues = issues.where(status_id: status_id) if status_id.present? && category != 'closed'
|
||||||
|
|
||||||
if begin_date&.present? || end_date&.present?
|
if begin_date&.present? || end_date&.present?
|
||||||
issues = issues.where("issues.created_on between ? and ?", begin_date&.present? ? begin_date.to_time : Time.now.beginning_of_day, end_date&.present? ? end_date.to_time.end_of_day : Time.now.end_of_day)
|
issues = issues.where("issues.created_on between ? and ?", begin_date&.present? ? begin_date.to_time : Time.now.beginning_of_day, end_date&.present? ? end_date.to_time.end_of_day : Time.now.end_of_day)
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
class Gitea::Repository::Contributors::GetService < Gitea::ClientService
|
class Gitea::Repository::Contributors::GetService < Gitea::ClientService
|
||||||
attr_reader :owner, :repo_name, :page, :limit
|
attr_reader :owner, :repo_name, :page, :limit, :q_name, :q_email
|
||||||
|
|
||||||
def initialize(owner, repo_name, params)
|
def initialize(owner, repo_name, params)
|
||||||
@owner = owner
|
@owner = owner
|
||||||
@repo_name = repo_name
|
@repo_name = repo_name
|
||||||
@page = params[:page] || 1
|
@page = params[:page] || 1
|
||||||
@limit = params[:limit] || 20
|
@limit = params[:limit] || 20
|
||||||
|
@q_name = params[:q_name] || ""
|
||||||
|
@q_email = params[:q_email] || ""
|
||||||
end
|
end
|
||||||
|
|
||||||
def call
|
def call
|
||||||
|
@ -15,7 +17,7 @@ class Gitea::Repository::Contributors::GetService < Gitea::ClientService
|
||||||
|
|
||||||
private
|
private
|
||||||
def params
|
def params
|
||||||
Hash.new.merge(token: owner.gitea_token, page: page, limit: limit)
|
Hash.new.merge(token: owner.gitea_token, page: page, limit: limit, q_name: q_name, q_email: q_email)
|
||||||
end
|
end
|
||||||
|
|
||||||
def url
|
def url
|
||||||
|
@ -29,7 +31,8 @@ class Gitea::Repository::Contributors::GetService < Gitea::ClientService
|
||||||
headers = response.headers.to_hash
|
headers = response.headers.to_hash
|
||||||
body = JSON.parse(response.body)
|
body = JSON.parse(response.body)
|
||||||
total_count = headers["x-total"]
|
total_count = headers["x-total"]
|
||||||
result.merge(total_count: total_count.to_i, body: body)
|
total_contributions = headers["x-total-contributions"]
|
||||||
|
result.merge(total_count: total_count.to_i, total_contributions: total_contributions.to_i, body: body)
|
||||||
else
|
else
|
||||||
nil
|
nil
|
||||||
# {status: -1, message: "#{body['message']}"}
|
# {status: -1, message: "#{body['message']}"}
|
||||||
|
|
|
@ -8,6 +8,7 @@ end
|
||||||
json.status_name issue.issue_status&.name
|
json.status_name issue.issue_status&.name
|
||||||
json.priority_name issue.priority&.name
|
json.priority_name issue.priority&.name
|
||||||
json.milestone_name issue.version&.name
|
json.milestone_name issue.version&.name
|
||||||
|
json.milestone_id issue.fixed_version_id
|
||||||
json.author do
|
json.author do
|
||||||
if issue.user.present?
|
if issue.user.present?
|
||||||
json.partial! "api/v1/users/simple_user", locals: {user: issue.user}
|
json.partial! "api/v1/users/simple_user", locals: {user: issue.user}
|
||||||
|
|
|
@ -2,16 +2,11 @@ user = $redis_cache.hgetall("v2-owner-common:#{contributor["login"]}-#{contribut
|
||||||
if user.blank?
|
if user.blank?
|
||||||
json.contributions contributor["contributions"]
|
json.contributions contributor["contributions"]
|
||||||
# json.gid contributor["id"]
|
# json.gid contributor["id"]
|
||||||
json.login contributor["login"]
|
json.login contributor["login"].downcase
|
||||||
json.type nil
|
json.type nil
|
||||||
json.name contributor["login"]
|
json.name contributor["login"].downcase
|
||||||
json.image_url User::Avatar.get_letter_avatar_url(contributor["login"])
|
json.image_url User::Avatar.get_letter_avatar_url(contributor["login"])
|
||||||
if @cache_result.present?
|
json.contribution_perc User.new(login: contributor["login"], mail: contributor["email"]).simple_contribution_perc(project)
|
||||||
db_user = User.find_by_id(contributor["id"])
|
|
||||||
if db_user.present?
|
|
||||||
json.contribution_perc db_user.contribution_perc(project)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
else
|
else
|
||||||
json.contributions contributor["contributions"]
|
json.contributions contributor["contributions"]
|
||||||
# json.gid contributor["id"]
|
# json.gid contributor["id"]
|
||||||
|
@ -21,6 +16,6 @@ else
|
||||||
json.image_url user["avatar_url"]
|
json.image_url user["avatar_url"]
|
||||||
db_user = User.find_by_id(user["id"])
|
db_user = User.find_by_id(user["id"])
|
||||||
if db_user.present?
|
if db_user.present?
|
||||||
json.contribution_perc db_user.contribution_perc(project)
|
json.contribution_perc db_user.simple_contribution_perc(project)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue