diff --git a/app/controllers/organizations/organizations_controller.rb b/app/controllers/organizations/organizations_controller.rb index e03ddf121..73335cf11 100644 --- a/app/controllers/organizations/organizations_controller.rb +++ b/app/controllers/organizations/organizations_controller.rb @@ -36,8 +36,10 @@ class Organizations::OrganizationsController < Organizations::BaseController def update ActiveRecord::Base.transaction do login = @organization.login - @organization.update!(login: organization_params[:name]) if organization_params[:name].present? - @organization.organization_extension.update_attributes!(organization_params.except(:name)) + @organization.login = organization_params[:name] if organization_params[:name].present? + @organization.nickname = organization_params[:nickname] if organization_params[:nickname].present? + @organization.save! + @organization.organization_extension.update_attributes!(organization_params.except(:name, :nickname)) Gitea::Organization::UpdateService.call(@organization.gitea_token, login, @organization.reload) Util.write_file(@image, avatar_path(@organization)) if params[:image].present? end @@ -82,7 +84,7 @@ class Organizations::OrganizationsController < Organizations::BaseController def organization_params params.permit(:name, :description, :website, :location, :repo_admin_change_team_access, :visibility, - :max_repo_creation) + :max_repo_creation, :nickname) end def password diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index f6ab38369..2ca3ff462 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -16,6 +16,7 @@ class ProjectsController < ApplicationController menu.append(menu_hash_by_name("pulls")) if @project.has_menu_permission("pulls") menu.append(menu_hash_by_name("devops")) if @project.has_menu_permission("devops") menu.append(menu_hash_by_name("versions")) if @project.has_menu_permission("versions") + menu.append(menu_hash_by_name("resources")) if @project.has_menu_permission("resources") menu.append(menu_hash_by_name("activity")) menu.append(menu_hash_by_name("setting")) if current_user.admin? || @project.manager?(current_user) diff --git a/app/helpers/repositories_helper.rb b/app/helpers/repositories_helper.rb index a6426083e..e704acb83 100644 --- a/app/helpers/repositories_helper.rb +++ b/app/helpers/repositories_helper.rb @@ -1,7 +1,6 @@ module RepositoriesHelper def render_permission(user, project) return "Admin" if user&.admin? - return "Owner" if user === project.owner project.get_premission(user) end diff --git a/app/models/organization.rb b/app/models/organization.rb index a541b203f..48dab55a2 100644 --- a/app/models/organization.rb +++ b/app/models/organization.rb @@ -78,8 +78,8 @@ class Organization < Owner scope :with_visibility, ->(visibility) { joins(:organization_extension).where(organization_extensions: {visibility: visibility}) if visibility.present? } - def self.build(name, gitea_token=nil) - self.create!(login: name, gitea_token: gitea_token) + def self.build(name, nickname, gitea_token=nil) + self.create!(login: name, nickname: nickname, gitea_token: gitea_token) end def can_create_project?(user_id) @@ -113,7 +113,9 @@ class Organization < Owner end def real_name - login + name = lastname + firstname + name = name.blank? ? (nickname.blank? ? login : nickname) : name + name.gsub(/\s+/, '').strip #6.11 -hs end def show_real_name diff --git a/app/models/project.rb b/app/models/project.rb index 828a259dc..9aa6283f6 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -1,75 +1,75 @@ -# == Schema Information -# -# Table name: projects -# -# id :integer not null, primary key -# name :string(255) default(""), not null -# description :text(4294967295) -# homepage :string(255) default("") -# is_public :boolean default("1"), not null -# parent_id :integer -# created_on :datetime -# updated_on :datetime -# identifier :string(255) -# status :integer default("1"), not null -# lft :integer -# rgt :integer -# inherit_members :boolean default("0"), not null -# project_type :integer default("0") -# hidden_repo :boolean default("0"), not null -# attachmenttype :integer default("1") -# user_id :integer -# dts_test :integer default("0") -# enterprise_name :string(255) -# organization_id :integer -# project_new_type :integer -# gpid :integer -# forked_from_project_id :integer -# forked_count :integer default("0") -# publish_resource :integer default("0") -# visits :integer default("0") -# hot :integer default("0") -# invite_code :string(255) -# qrcode :string(255) -# qrcode_expiretime :integer default("0") -# script :text(65535) -# training_status :integer default("0") -# rep_identifier :string(255) -# project_category_id :integer -# project_language_id :integer -# license_id :integer -# ignore_id :integer -# praises_count :integer default("0") -# watchers_count :integer default("0") -# issues_count :integer default("0") -# pull_requests_count :integer default("0") -# language :string(255) -# versions_count :integer default("0") -# issue_tags_count :integer default("0") -# closed_issues_count :integer default("0") -# open_devops :boolean default("0") -# gitea_webhook_id :integer -# open_devops_count :integer default("0") -# recommend :boolean default("0") -# platform :integer default("0") -# default_branch :string(255) default("master") -# website :string(255) -# -# Indexes -# -# index_projects_on_forked_from_project_id (forked_from_project_id) -# index_projects_on_identifier (identifier) -# index_projects_on_is_public (is_public) -# index_projects_on_lft (lft) -# index_projects_on_name (name) -# index_projects_on_platform (platform) -# index_projects_on_project_type (project_type) -# index_projects_on_recommend (recommend) -# index_projects_on_rgt (rgt) -# index_projects_on_status (status) -# index_projects_on_updated_on (updated_on) -# - +# == Schema Information +# +# Table name: projects +# +# id :integer not null, primary key +# name :string(255) default(""), not null +# description :text(4294967295) +# homepage :string(255) default("") +# is_public :boolean default("1"), not null +# parent_id :integer +# created_on :datetime +# updated_on :datetime +# identifier :string(255) +# status :integer default("1"), not null +# lft :integer +# rgt :integer +# inherit_members :boolean default("0"), not null +# project_type :integer default("0") +# hidden_repo :boolean default("0"), not null +# attachmenttype :integer default("1") +# user_id :integer +# dts_test :integer default("0") +# enterprise_name :string(255) +# organization_id :integer +# project_new_type :integer +# gpid :integer +# forked_from_project_id :integer +# forked_count :integer default("0") +# publish_resource :integer default("0") +# visits :integer default("0") +# hot :integer default("0") +# invite_code :string(255) +# qrcode :string(255) +# qrcode_expiretime :integer default("0") +# script :text(65535) +# training_status :integer default("0") +# rep_identifier :string(255) +# project_category_id :integer +# project_language_id :integer +# license_id :integer +# ignore_id :integer +# praises_count :integer default("0") +# watchers_count :integer default("0") +# issues_count :integer default("0") +# pull_requests_count :integer default("0") +# language :string(255) +# versions_count :integer default("0") +# issue_tags_count :integer default("0") +# closed_issues_count :integer default("0") +# open_devops :boolean default("0") +# gitea_webhook_id :integer +# open_devops_count :integer default("0") +# recommend :boolean default("0") +# platform :integer default("0") +# default_branch :string(255) default("master") +# website :string(255) +# +# Indexes +# +# index_projects_on_forked_from_project_id (forked_from_project_id) +# index_projects_on_identifier (identifier) +# index_projects_on_is_public (is_public) +# index_projects_on_lft (lft) +# index_projects_on_name (name) +# index_projects_on_platform (platform) +# index_projects_on_project_type (project_type) +# index_projects_on_recommend (recommend) +# index_projects_on_rgt (rgt) +# index_projects_on_status (status) +# index_projects_on_updated_on (updated_on) +# + @@ -242,10 +242,12 @@ class Project < ApplicationRecord end def get_premission user - permission = "Reporter" - member = members.find_by(user: user) + return "Owner" if owner?(user) + return "Manager" if manager?(user) + return "Developer" if develper?(user) + return "Reporter" if reporter?(user) - member&.roles&.last&.name || permission + return "" end def fork_project diff --git a/app/models/project_unit.rb b/app/models/project_unit.rb index b5b4fe290..0f4275345 100644 --- a/app/models/project_unit.rb +++ b/app/models/project_unit.rb @@ -16,7 +16,7 @@ class ProjectUnit < ApplicationRecord belongs_to :project - enum unit_type: {code: 1, issues: 2, pulls: 3, devops: 4, versions: 5} + enum unit_type: {code: 1, issues: 2, pulls: 3, devops: 4, versions: 5, resources: 6} validates :unit_type, uniqueness: { scope: :project_id} diff --git a/app/services/organizations/create_service.rb b/app/services/organizations/create_service.rb index 2d2b29e0f..96bb3f46a 100644 --- a/app/services/organizations/create_service.rb +++ b/app/services/organizations/create_service.rb @@ -47,7 +47,7 @@ class Organizations::CreateService < ApplicationService end def create_org_and_extension - @organization = Organization.build(params[:name], user.gitea_token) + @organization = Organization.build(params[:name], params[:nickname], user.gitea_token) org_extension = OrganizationExtension.build(organization.id, description, website, location, repo_admin_change_team_access, visibility, max_repo_creation) diff --git a/app/views/organizations/organizations/_detail.json.jbuilder b/app/views/organizations/organizations/_detail.json.jbuilder index e7aafd4e9..64feadca1 100644 --- a/app/views/organizations/organizations/_detail.json.jbuilder +++ b/app/views/organizations/organizations/_detail.json.jbuilder @@ -1,5 +1,6 @@ json.id organization.id json.name organization.login +json.nickname organization.nickname json.description organization.description json.website organization.website json.location organization.location diff --git a/app/views/projects/index.json.jbuilder b/app/views/projects/index.json.jbuilder index 5556cfe27..0e23ac03d 100644 --- a/app/views/projects/index.json.jbuilder +++ b/app/views/projects/index.json.jbuilder @@ -25,6 +25,7 @@ json.projects @projects do |project| json.image_url render_educoder_avatar_url(project.project_educoder) else user = project.owner + json.type user.type json.name user.try(:show_real_name) json.login user.login json.image_url render_avatar_url(user)