From 0c58447afb12058e5a5c17736673c55b54028870 Mon Sep 17 00:00:00 2001 From: viletyy Date: Tue, 26 Jan 2021 17:44:04 +0800 Subject: [PATCH] =?UTF-8?q?[FIX]=E7=BB=84=E7=BB=87=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E5=A4=B4=E5=83=8F=E6=94=AF=E6=8C=81=E5=A4=9A=E7=A7=8D=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E3=80=81=E9=A1=B9=E7=9B=AE=E8=AF=A6=E6=83=85=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E6=8B=A5=E6=9C=89=E8=80=85=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [FIX] [FIX] --- .../organizations/base_controller.rb | 9 +++++++ .../organizations/organizations_controller.rb | 17 +++++++++--- app/controllers/projects_controller.rb | 4 +-- app/helpers/projects_helper.rb | 2 ++ app/models/user.rb | 2 +- app/services/organizations/create_service.rb | 26 +++++++++++++++++++ .../projects/index.json.jbuilder | 4 ++- .../projects/_project_detail.json.jbuilder | 2 ++ app/views/repositories/_author.json.jbuilder | 2 ++ 9 files changed, 60 insertions(+), 8 deletions(-) diff --git a/app/controllers/organizations/base_controller.rb b/app/controllers/organizations/base_controller.rb index 2e8ae0cf9..580185426 100644 --- a/app/controllers/organizations/base_controller.rb +++ b/app/controllers/organizations/base_controller.rb @@ -31,4 +31,13 @@ class Organizations::BaseController < ApplicationController def project_mark params[:repo_name] || params[:id] end + + private + def limited_condition + @organization.organization_extension.limited? && !current_user.logged? + end + + def privacy_condition + @organization.organization_extension.privacy? && @organization.organization_users.where(user_id: current_user.id).blank? + end end \ No newline at end of file diff --git a/app/controllers/organizations/organizations_controller.rb b/app/controllers/organizations/organizations_controller.rb index e4fda4e8e..8ad88a8f0 100644 --- a/app/controllers/organizations/organizations_controller.rb +++ b/app/controllers/organizations/organizations_controller.rb @@ -1,6 +1,6 @@ class Organizations::OrganizationsController < Organizations::BaseController before_action :require_login, except: [:index, :show] - before_action :convert_base64_image!, only: [:create, :update] + before_action :convert_image!, only: [:create, :update] before_action :load_organization, only: [:show, :update, :destroy] before_action :check_user_can_edit_org, only: [:update, :destroy] @@ -11,6 +11,7 @@ class Organizations::OrganizationsController < Organizations::BaseController @organizations = Organization.from("( #{ logged_organizations_sql } UNION #{ privacy_organizations_sql } ) AS users") else @organizations = Organization.with_visibility("common") + kaminari_paginate(@organizations) end @organizations = @organizations.ransack(login_cont: params[:search]).result if params[:search].present? @organizations = @organizations.includes(:organization_extension).order("organization_extensions.#{sort_by} #{sort_direction}") @@ -56,9 +57,17 @@ class Organizations::OrganizationsController < Organizations::BaseController end private - def convert_base64_image! - max_size = EduSetting.get('upload_avatar_max_size') - @image = Util.convert_base64_image(params[:image].to_s.strip, max_size: max_size) + def convert_image! + max_size = EduSetting.get('upload_avatar_max_size') || 2 * 1024 * 1024 # 2M + if params[:image].class == ActionDispatch::Http::UploadedFile + @image = params[:image] + render_error('请上传文件') if @image.size.zero? + render_error('文件大小超过限制') if @image.size > max_size + else + image = params[:image].to_s.strip + return render_error('请上传正确的图片') if image.blank? + @image = Util.convert_base64_image(image, max_size: max_size) + end rescue Base64ImageConverter::Error => ex render_error(ex.message) end diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index bf6c213f1..2939e7fb8 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -11,7 +11,7 @@ class ProjectsController < ApplicationController scope = Projects::ListQuery.call(params) # @projects = kaminari_paginate(scope) - @projects = paginate scope.includes(:project_category, :project_language, :repository, :project_educoder, owner: :user_extension) + @projects = paginate scope.includes(:project_category, :project_language, :repository, :project_educoder, :owner) category_id = params[:category_id] @total_count = @@ -128,7 +128,7 @@ class ProjectsController < ApplicationController end def recommend - @projects = Project.recommend.includes(:repository, :project_category, owner: :user_extension).limit(5) + @projects = Project.recommend.includes(:repository, :project_category, :owner).limit(5) end def about diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index c00010b2b..6fbc22eb5 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -61,12 +61,14 @@ module ProjectsHelper { login: project.project_educoder.owner, name: project.project_educoder.owner, + type: 'Educoder', image_url: project.project_educoder.image_url } else { login: @owner.login, name: @owner.real_name, + type: @owner.type, image_url: url_to_avatar(@owner) } end diff --git a/app/models/user.rb b/app/models/user.rb index 23f957d1a..250a9b8b2 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -167,7 +167,7 @@ class User < Owner where("LOWER(concat(lastname, firstname, login, mail)) LIKE ?", "%#{keywords.split(" ").join('|')}%") unless keywords.blank? } - scope :simple_select, -> {select(:id, :login, :lastname,:firstname, :nickname, :gitea_uid)} + scope :simple_select, -> {select(:id, :login, :lastname,:firstname, :nickname, :gitea_uid, :type)} attr_accessor :password, :password_confirmation diff --git a/app/services/organizations/create_service.rb b/app/services/organizations/create_service.rb index 02065135b..2727f4c9b 100644 --- a/app/services/organizations/create_service.rb +++ b/app/services/organizations/create_service.rb @@ -11,16 +11,30 @@ class Organizations::CreateService < ApplicationService Rails.logger.info("######Organization create_service begin######") Rails.logger.info("######params #{params}######") ActiveRecord::Base.transaction do +<<<<<<< HEAD create_org_and_extension create_owner_info create_gitea_org sync_owner_team_gtid +======= + @organization = Organization.build(params[:name]) + org_extension = OrganizationExtension.build(@organization.id, description, website, + location, repo_admin_change_team_access, + visibility, max_repo_creation) + team = Team.build_owner(@organization.id) + TeamUnit.build_owner(@organization.id, team.id) + OrganizationUser.build(@organization.id, user.id, true) + TeamUser.build(@organization.id, user.id, team.id) + + Gitea::Organization::CreateService.call(user.gitea_token, @organization) +>>>>>>> 38887e6... [FIX] Rails.logger.info("######Organization create_service end######") end @organization end +<<<<<<< HEAD private def description params[:description] @@ -32,6 +46,18 @@ class Organizations::CreateService < ApplicationService def location params[:location] +======= + def description + params[:description].present? ? params[:description] : nil + end + + def website + params[:website].present? ? params[:website] : nil + end + + def location + params[:location].present? ? params[:location] : nil +>>>>>>> 38887e6... [FIX] end def repo_admin_change_team_access diff --git a/app/views/organizations/projects/index.json.jbuilder b/app/views/organizations/projects/index.json.jbuilder index 5ade6ad5c..a663b0c18 100644 --- a/app/views/organizations/projects/index.json.jbuilder +++ b/app/views/organizations/projects/index.json.jbuilder @@ -1,6 +1,8 @@ json.total_count @projects.total_count json.projects @projects.each do |project| - json.(project, :id, :name, :identifier, :description, :forked_count, :praises_count) + json.(project, :id, :name, :identifier, :description, :forked_count, :praises_count, :forked_from_project_id) + json.mirror_url project.repository&.mirror_url + json.type project.numerical_for_project_type json.praised project.praised_by?(current_user) json.last_update_time render_unix_time(project.updated_on) json.time_ago time_from_now(project.updated_on) diff --git a/app/views/projects/_project_detail.json.jbuilder b/app/views/projects/_project_detail.json.jbuilder index fdbd05dfb..94aee427e 100644 --- a/app/views/projects/_project_detail.json.jbuilder +++ b/app/views/projects/_project_detail.json.jbuilder @@ -18,11 +18,13 @@ json.author do if project.educoder? project_educoder = project.project_educoder json.name project_educoder&.owner + json.type 'Educoder' json.login project_educoder&.repo_name.split('/')[0] json.image_url render_educoder_avatar_url(project.project_educoder) else user = project.owner json.name user.try(:show_real_name) + json.type user&.type json.login user.login json.image_url render_avatar_url(user) end diff --git a/app/views/repositories/_author.json.jbuilder b/app/views/repositories/_author.json.jbuilder index 326920223..1dbcc4ebc 100644 --- a/app/views/repositories/_author.json.jbuilder +++ b/app/views/repositories/_author.json.jbuilder @@ -1,11 +1,13 @@ json.author do if @project.forge? json.login user.login + json.type user&.type json.name user.real_name json.image_url url_to_avatar(user) else json.login @project.project_educoder&.repo_name&.split('/')[0] json.name @project.project_educoder&.owner + json.type 'Educoder' json.image_url @project.project_educoder&.image_url end end