From 8698829678b72fc6929c6f622b2b958188361726 Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 28 Oct 2021 15:28:33 +0800 Subject: [PATCH] fix: organization recommend api --- .../organizations/organizations_controller.rb | 7 +++++-- app/models/organization.rb | 2 +- app/models/organization_extension.rb | 8 ++++++++ .../organizations/recommend.json.jbuilder | 16 +++++++++++----- ...9_add_recommend_to_organization_extensions.rb | 5 +++++ 5 files changed, 30 insertions(+), 8 deletions(-) create mode 100644 db/migrate/20211028065339_add_recommend_to_organization_extensions.rb diff --git a/app/controllers/organizations/organizations_controller.rb b/app/controllers/organizations/organizations_controller.rb index f019e8d39..dcec6c050 100644 --- a/app/controllers/organizations/organizations_controller.rb +++ b/app/controllers/organizations/organizations_controller.rb @@ -69,8 +69,7 @@ class Organizations::OrganizationsController < Organizations::BaseController def recommend recommend = %W(xuos Huawei_Technology openatom_foundation pkecosystem TensorLayer) - @organizations = Organization.with_visibility(%w(common)) - .where(login: recommend).select(:id, :login, :firstname, :lastname, :nickname) + @organizations = Organization.includes(:organization_extension).where(organization_extensions: {recommend: true}).to_a.each_slice(group_size).to_a end private @@ -81,6 +80,10 @@ class Organizations::OrganizationsController < Organizations::BaseController :max_repo_creation, :nickname) end + def group_size + params.fetch(:group_size, 4) + end + def password params.fetch(:password, "") end diff --git a/app/models/organization.rb b/app/models/organization.rb index 4fd0886da..a967e4782 100644 --- a/app/models/organization.rb +++ b/app/models/organization.rb @@ -76,7 +76,7 @@ class Organization < Owner validates_uniqueness_of :login, :if => Proc.new { |user| user.login_changed? && user.login.present? }, case_sensitive: false validates :login, format: { with: NAME_REGEX, multiline: true, message: "只能含有数字、字母、下划线且不能以下划线开头和结尾" } - delegate :description, :website, :location, :repo_admin_change_team_access, + delegate :description, :website, :location, :repo_admin_change_team_access, :recommend, :visibility, :max_repo_creation, :num_projects, :num_users, :num_teams, to: :organization_extension, allow_nil: true scope :with_visibility, ->(visibility) { joins(:organization_extension).where(organization_extensions: {visibility: visibility}) if visibility.present? } diff --git a/app/models/organization_extension.rb b/app/models/organization_extension.rb index 8b9946cd7..4b0935208 100644 --- a/app/models/organization_extension.rb +++ b/app/models/organization_extension.rb @@ -15,6 +15,7 @@ # num_projects :integer default("0") # num_users :integer default("0") # num_teams :integer default("0") +# recommend :boolean default("0") # # Indexes # @@ -30,6 +31,8 @@ class OrganizationExtension < ApplicationRecord enum visibility: {common: 0, limited: 1, privacy: 2} + before_save :set_recommend + def self.build(organization_id, description, website, location, repo_admin_change_team_access, visibility, max_repo_creation) self.create!(organization_id: organization_id, description: description, @@ -39,4 +42,9 @@ class OrganizationExtension < ApplicationRecord visibility: visibility, max_repo_creation: max_repo_creation) end + + private + def set_recommend + self.recommend = false unless self.common? + end end diff --git a/app/views/organizations/organizations/recommend.json.jbuilder b/app/views/organizations/organizations/recommend.json.jbuilder index 262cc23dd..340634e02 100644 --- a/app/views/organizations/organizations/recommend.json.jbuilder +++ b/app/views/organizations/organizations/recommend.json.jbuilder @@ -1,6 +1,12 @@ -json.organizations @organizations do |organization| - json.id organization.id - json.name organization.login - json.nickname organization.nickname.blank? ? organization.name : organization.nickname - json.avatar_url url_to_avatar(organization) +json.organizations do + + json.array! @organizations.each do |group| + json.array! group.each do |organization| + json.id organization.id + json.name organization.login + json.nickname organization.real_name + json.avatar_url url_to_avatar(organization) + json.website organization.website + end + end end \ No newline at end of file diff --git a/db/migrate/20211028065339_add_recommend_to_organization_extensions.rb b/db/migrate/20211028065339_add_recommend_to_organization_extensions.rb new file mode 100644 index 000000000..39a8d08b3 --- /dev/null +++ b/db/migrate/20211028065339_add_recommend_to_organization_extensions.rb @@ -0,0 +1,5 @@ +class AddRecommendToOrganizationExtensions < ActiveRecord::Migration[5.2] + def change + add_column :organization_extensions, :recommend, :boolean, default: false + end +end