[FIX]为组织创建项目做准备
This commit is contained in:
parent
31858a79e3
commit
1dc43a23b7
|
@ -124,7 +124,7 @@ class VersionReleasesController < ApplicationController
|
||||||
|
|
||||||
private
|
private
|
||||||
def set_user
|
def set_user
|
||||||
@user = @repository.user
|
@user = @repository.owner
|
||||||
end
|
end
|
||||||
|
|
||||||
def find_version
|
def find_version
|
||||||
|
|
|
@ -5,7 +5,7 @@ class SyncMirroredRepositoryJob < ApplicationJob
|
||||||
repo = Repository.find_by(id: repo_id)
|
repo = Repository.find_by(id: repo_id)
|
||||||
current_user = User.find_by(id: user_id)
|
current_user = User.find_by(id: user_id)
|
||||||
return if repo.blank? || current_user.blank?
|
return if repo.blank? || current_user.blank?
|
||||||
result = Gitea::Repository::SyncMirroredService.new(repo.user.login, repo.identifier, token: current_user.gitea_token).call
|
result = Gitea::Repository::SyncMirroredService.new(repo.owner.login, repo.identifier, token: current_user.gitea_token).call
|
||||||
repo&.mirror.set_status! if result[:status] === 200
|
repo&.mirror.set_status! if result[:status] === 200
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -58,8 +58,7 @@
|
||||||
# index_users_on_type (type)
|
# index_users_on_type (type)
|
||||||
#
|
#
|
||||||
|
|
||||||
class Organization < ApplicationRecord
|
class Organization < Owner
|
||||||
self.table_name = "users"
|
|
||||||
default_scope { where(type: "Organization") }
|
default_scope { where(type: "Organization") }
|
||||||
|
|
||||||
has_one :organization_extension, dependent: :destroy
|
has_one :organization_extension, dependent: :destroy
|
||||||
|
@ -74,8 +73,8 @@ class Organization < ApplicationRecord
|
||||||
|
|
||||||
scope :with_visibility, ->(visibility) { joins(:organization_extension).where(organization_extensions: {visibility: visibility}) if visibility.present? }
|
scope :with_visibility, ->(visibility) { joins(:organization_extension).where(organization_extensions: {visibility: visibility}) if visibility.present? }
|
||||||
|
|
||||||
def self.build(name)
|
def self.build(name, gitea_token=nil)
|
||||||
self.create!(login: name)
|
self.create!(login: name, gitea_token: gitea_token)
|
||||||
end
|
end
|
||||||
|
|
||||||
def is_owner?(user)
|
def is_owner?(user)
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
class Owner < ApplicationRecord
|
||||||
|
self.table_name = "users"
|
||||||
|
|
||||||
|
include ProjectOperable
|
||||||
|
include ProjectAbility
|
||||||
|
|
||||||
|
has_many :projects, foreign_key: :user_id, dependent: :destroy
|
||||||
|
has_many :repositories, foreign_key: :user_id, dependent: :destroy
|
||||||
|
end
|
|
@ -1,73 +1,73 @@
|
||||||
# == Schema Information
|
# == Schema Information
|
||||||
#
|
#
|
||||||
# Table name: projects
|
# Table name: projects
|
||||||
#
|
#
|
||||||
# id :integer not null, primary key
|
# id :integer not null, primary key
|
||||||
# name :string(255) default(""), not null
|
# name :string(255) default(""), not null
|
||||||
# description :text(4294967295)
|
# description :text(4294967295)
|
||||||
# homepage :string(255) default("")
|
# homepage :string(255) default("")
|
||||||
# is_public :boolean default("1"), not null
|
# is_public :boolean default("1"), not null
|
||||||
# parent_id :integer
|
# parent_id :integer
|
||||||
# created_on :datetime
|
# created_on :datetime
|
||||||
# updated_on :datetime
|
# updated_on :datetime
|
||||||
# identifier :string(255)
|
# identifier :string(255)
|
||||||
# status :integer default("1"), not null
|
# status :integer default("1"), not null
|
||||||
# lft :integer
|
# lft :integer
|
||||||
# rgt :integer
|
# rgt :integer
|
||||||
# inherit_members :boolean default("0"), not null
|
# inherit_members :boolean default("0"), not null
|
||||||
# project_type :integer default("0")
|
# project_type :integer default("0")
|
||||||
# hidden_repo :boolean default("0"), not null
|
# hidden_repo :boolean default("0"), not null
|
||||||
# attachmenttype :integer default("1")
|
# attachmenttype :integer default("1")
|
||||||
# user_id :integer
|
# user_id :integer
|
||||||
# dts_test :integer default("0")
|
# dts_test :integer default("0")
|
||||||
# enterprise_name :string(255)
|
# enterprise_name :string(255)
|
||||||
# organization_id :integer
|
# organization_id :integer
|
||||||
# project_new_type :integer
|
# project_new_type :integer
|
||||||
# gpid :integer
|
# gpid :integer
|
||||||
# forked_from_project_id :integer
|
# forked_from_project_id :integer
|
||||||
# forked_count :integer default("0")
|
# forked_count :integer default("0")
|
||||||
# publish_resource :integer default("0")
|
# publish_resource :integer default("0")
|
||||||
# visits :integer default("0")
|
# visits :integer default("0")
|
||||||
# hot :integer default("0")
|
# hot :integer default("0")
|
||||||
# invite_code :string(255)
|
# invite_code :string(255)
|
||||||
# qrcode :string(255)
|
# qrcode :string(255)
|
||||||
# qrcode_expiretime :integer default("0")
|
# qrcode_expiretime :integer default("0")
|
||||||
# script :text(65535)
|
# script :text(65535)
|
||||||
# training_status :integer default("0")
|
# training_status :integer default("0")
|
||||||
# rep_identifier :string(255)
|
# rep_identifier :string(255)
|
||||||
# project_category_id :integer
|
# project_category_id :integer
|
||||||
# project_language_id :integer
|
# project_language_id :integer
|
||||||
# license_id :integer
|
# license_id :integer
|
||||||
# ignore_id :integer
|
# ignore_id :integer
|
||||||
# praises_count :integer default("0")
|
# praises_count :integer default("0")
|
||||||
# watchers_count :integer default("0")
|
# watchers_count :integer default("0")
|
||||||
# issues_count :integer default("0")
|
# issues_count :integer default("0")
|
||||||
# pull_requests_count :integer default("0")
|
# pull_requests_count :integer default("0")
|
||||||
# language :string(255)
|
# language :string(255)
|
||||||
# versions_count :integer default("0")
|
# versions_count :integer default("0")
|
||||||
# issue_tags_count :integer default("0")
|
# issue_tags_count :integer default("0")
|
||||||
# closed_issues_count :integer default("0")
|
# closed_issues_count :integer default("0")
|
||||||
# open_devops :boolean default("0")
|
# open_devops :boolean default("0")
|
||||||
# gitea_webhook_id :integer
|
# gitea_webhook_id :integer
|
||||||
# open_devops_count :integer default("0")
|
# open_devops_count :integer default("0")
|
||||||
# recommend :boolean default("0")
|
# recommend :boolean default("0")
|
||||||
# platform :integer default("0")
|
# platform :integer default("0")
|
||||||
#
|
#
|
||||||
# Indexes
|
# Indexes
|
||||||
#
|
#
|
||||||
# index_projects_on_forked_from_project_id (forked_from_project_id)
|
# index_projects_on_forked_from_project_id (forked_from_project_id)
|
||||||
# index_projects_on_identifier (identifier)
|
# index_projects_on_identifier (identifier)
|
||||||
# index_projects_on_is_public (is_public)
|
# index_projects_on_is_public (is_public)
|
||||||
# index_projects_on_lft (lft)
|
# index_projects_on_lft (lft)
|
||||||
# index_projects_on_name (name)
|
# index_projects_on_name (name)
|
||||||
# index_projects_on_platform (platform)
|
# index_projects_on_platform (platform)
|
||||||
# index_projects_on_project_type (project_type)
|
# index_projects_on_project_type (project_type)
|
||||||
# index_projects_on_recommend (recommend)
|
# index_projects_on_recommend (recommend)
|
||||||
# index_projects_on_rgt (rgt)
|
# index_projects_on_rgt (rgt)
|
||||||
# index_projects_on_status (status)
|
# index_projects_on_status (status)
|
||||||
# index_projects_on_updated_on (updated_on)
|
# index_projects_on_updated_on (updated_on)
|
||||||
#
|
#
|
||||||
|
|
||||||
class Project < ApplicationRecord
|
class Project < ApplicationRecord
|
||||||
include Matchable
|
include Matchable
|
||||||
include Publicable
|
include Publicable
|
||||||
|
@ -85,7 +85,7 @@ class Project < ApplicationRecord
|
||||||
|
|
||||||
belongs_to :ignore, optional: true
|
belongs_to :ignore, optional: true
|
||||||
belongs_to :license, optional: true
|
belongs_to :license, optional: true
|
||||||
belongs_to :owner, class_name: 'User', foreign_key: :user_id, optional: true
|
belongs_to :owner, class_name: 'Owner', foreign_key: :user_id, optional: true
|
||||||
belongs_to :project_category, optional: true , :counter_cache => true
|
belongs_to :project_category, optional: true , :counter_cache => true
|
||||||
belongs_to :project_language, optional: true , :counter_cache => true
|
belongs_to :project_language, optional: true , :counter_cache => true
|
||||||
has_many :project_trends, dependent: :destroy
|
has_many :project_trends, dependent: :destroy
|
||||||
|
@ -248,7 +248,7 @@ class Project < ApplicationRecord
|
||||||
def self.find_with_namespace(namespace_path, identifier)
|
def self.find_with_namespace(namespace_path, identifier)
|
||||||
logger.info "########namespace_path: #{namespace_path} ########identifier: #{identifier} "
|
logger.info "########namespace_path: #{namespace_path} ########identifier: #{identifier} "
|
||||||
|
|
||||||
user = User.find_by_login namespace_path
|
user = Owner.find_by_login namespace_path
|
||||||
project = user&.projects&.find_by(identifier: identifier) || Project.find_by(identifier: "#{namespace_path}/#{identifier}")
|
project = user&.projects&.find_by(identifier: identifier) || Project.find_by(identifier: "#{namespace_path}/#{identifier}")
|
||||||
return nil if project.blank?
|
return nil if project.blank?
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
class Repository < ApplicationRecord
|
class Repository < ApplicationRecord
|
||||||
self.inheritance_column = nil # FIX The single-table inheritance mechanism failed
|
self.inheritance_column = nil # FIX The single-table inheritance mechanism failed
|
||||||
belongs_to :project, :touch => true
|
belongs_to :project, :touch => true
|
||||||
belongs_to :user, optional: true
|
belongs_to :owner, class_name: 'Owner', foreign_key: :user_id, optional: true
|
||||||
has_one :mirror, foreign_key: :repo_id
|
has_one :mirror, foreign_key: :repo_id
|
||||||
has_one :ci_cloud_account, class_name: 'Ci::CloudAccount', foreign_key: :repo_id
|
has_one :ci_cloud_account, class_name: 'Ci::CloudAccount', foreign_key: :repo_id
|
||||||
has_many :version_releases, dependent: :destroy
|
has_many :version_releases, dependent: :destroy
|
||||||
|
|
|
@ -58,15 +58,13 @@
|
||||||
# index_users_on_type (type)
|
# index_users_on_type (type)
|
||||||
#
|
#
|
||||||
|
|
||||||
class User < ApplicationRecord
|
class User < Owner
|
||||||
default_scope {where(type: %w(User AnonymousUser))}
|
default_scope {where(type: %w(User AnonymousUser))}
|
||||||
extend Enumerize
|
extend Enumerize
|
||||||
|
|
||||||
include Watchable
|
include Watchable
|
||||||
include Likeable
|
include Likeable
|
||||||
include BaseModel
|
include BaseModel
|
||||||
include ProjectOperable
|
|
||||||
include ProjectAbility
|
|
||||||
include Droneable
|
include Droneable
|
||||||
# include Searchable::Dependents::User
|
# include Searchable::Dependents::User
|
||||||
|
|
||||||
|
@ -155,9 +153,6 @@ class User < ApplicationRecord
|
||||||
# 项目
|
# 项目
|
||||||
has_many :applied_projects, dependent: :destroy
|
has_many :applied_projects, dependent: :destroy
|
||||||
|
|
||||||
has_many :projects, dependent: :destroy
|
|
||||||
has_many :repositories, dependent: :destroy
|
|
||||||
|
|
||||||
# 教学案例
|
# 教学案例
|
||||||
# has_many :libraries, dependent: :destroy
|
# has_many :libraries, dependent: :destroy
|
||||||
has_many :project_trends, dependent: :destroy
|
has_many :project_trends, dependent: :destroy
|
||||||
|
|
|
@ -47,7 +47,7 @@ class Organizations::CreateService < ApplicationService
|
||||||
end
|
end
|
||||||
|
|
||||||
def create_org_and_extension
|
def create_org_and_extension
|
||||||
@organization = Organization.build(params[:name])
|
@organization = Organization.build(params[:name], user.gitea_token)
|
||||||
org_extension = OrganizationExtension.build(organization.id, description, website,
|
org_extension = OrganizationExtension.build(organization.id, description, website,
|
||||||
location, repo_admin_change_team_access,
|
location, repo_admin_change_team_access,
|
||||||
visibility, max_repo_creation)
|
visibility, max_repo_creation)
|
||||||
|
|
|
@ -20,7 +20,7 @@ class Projects::ForkService < ApplicationService
|
||||||
clone_project.save!
|
clone_project.save!
|
||||||
|
|
||||||
new_repository = clone_project.repository
|
new_repository = clone_project.repository
|
||||||
new_repository.user = @target_owner
|
new_repository.owner = @target_owner
|
||||||
new_repository.identifier = @project.identifier
|
new_repository.identifier = @project.identifier
|
||||||
new_repository.save!
|
new_repository.save!
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue