Compare commits

..

4 Commits

Author SHA1 Message Date
jasder 2932866198 Merge branch 'master' of https://git.trustie.net/jasder/forgeplus 2021-03-22 09:50:35 +08:00
jasder 0d8ddc34cc FIX update Changelog 2021-03-22 09:50:24 +08:00
jasder bd46d2dcc7 fix 2021-03-11 14:59:21 +08:00
jasder 6063c7c414 fix 更新api文档 2021-03-11 14:58:44 +08:00
77 changed files with 303 additions and 905 deletions

View File

@ -1,6 +1,17 @@
# Changelog
## [v3.0.0](https://github.com/go-gitea/gitea/releases/tag/v1.13.1) - 2020-12-29
## [v3.0.1](https://forgeplus.trustie.net/projects/jasder/forgeplus/releases) - 2021-03-19
* BUGFIXES
* Fix pull reqeust模块中用户头像显示问题
* Fix 解决issue模块中指派用户的问题
* Fix 解决合并请求失败的后显示message信息不正确
* Fix 代码目录页面readme文件提供单独的api
* ENHANCEMENTS
* 重构项目详情页面
## [v3.0.0](https://forgeplus.trustie.net/projects/jasder/forgeplus/releases) - 2020-12-29
* BUGFIXES
* Fix pull reqeust的访问权限问题 (#14156) (#14171)

View File

@ -93,26 +93,26 @@ http://localhost:3000/
- 代码库
![](docs/figs/code.png)
![](docs/figs/code.png?raw=true)
- 任务管理
![](docs/figs/issue_manage.png)
![](docs/figs/issue_manage.png?raw=true)
- 任务查看
![](docs/figs/issue_view.png)
![](docs/figs/issue_view.png?raw=true)
- 任务指派
![](docs/figs/issue_assign2.png)
![](docs/figs/issue_assign2.png?raw=true)
- 里程碑
![](docs/figs/milestone.png)
![](docs/figs/milestone.png?raw=true)
### API
- [API](api_document.md)
- [API文档](https://forgeplus.trustie.net/docs/api)
- [API](showdoc.com.cn)
账号forgeplus@admin.com 密码forge123

View File

@ -6,27 +6,6 @@ class AccountsController < ApplicationController
render json: session
end
# 为了同步平台上未注册gitea的用户
def gitea_register
Users::SyncGiteaForm.new(sync_gitea_params).validate!
user = User.find_by(login: sync_gitea_params[:login])
return render_error("该用户已同步协作平台") if user.gitea_token.present? && user.gitea_uid.present?
interactor = Gitea::RegisterInteractor.call({username: sync_gitea_params[:login], email: sync_gitea_params[:email], password: sync_gitea_params[:password]})
if interactor.success?
gitea_user = interactor.result
result = Gitea::User::GenerateTokenService.call(sync_gitea_params[:login], sync_gitea_params[:password])
user.gitea_token = result['sha1']
user.gitea_uid = gitea_user[:body]['id']
user.save!
render_ok
else
render_error(interactor.error)
end
rescue Exception => e
uid_logger_error(e.message)
tip_exception(-1, e.message)
end
# 其他平台同步注册的用户
def remote_register
username = params[:username]&.gsub(/\s+/, "")
@ -362,10 +341,6 @@ class AccountsController < ApplicationController
{ login: pre + code, email: email, phone: phone }
end
def sync_gitea_params
params.permit(:login, :email, :password)
end
def user_params
params.require(:user).permit(:login, :email, :phone)
end

View File

@ -35,15 +35,15 @@ module LaboratoryHelper
# my_projects: "/users/#{current_user.try(:login)}/projects",
# my_projects: "https://www.trustie.net/users/#{current_user.try(:login)}/user_projectlist",
{
new_syllabuses: "https://forgeplus.educoder.net/syllabuses/new",
new_course: "https://forgeplus.educoder.net/courses/new",
edit_account: "https://forgeplus.educoder.net/my/account",
my_courses: "https://forgeplus.educoder.net/users/#{current_user.try(:login)}/user_courselist",
new_syllabuses: "https://www.trustie.net/syllabuses/new",
new_course: "https://www.trustie.net/courses/new",
edit_account: "https://www.trustie.net/my/account",
my_courses: "https://www.trustie.net/users/#{current_user.try(:login)}/user_courselist",
my_projects: "/users/#{current_user.try(:login)}/projects",
my_organ: "https://forgeplus.educoder.net/users/#{current_user.try(:login)}/user_organizations",
default_url: "https://www.educoder.net/",
tiding_url: "https://www.educoder.net/users/#{current_user.try(:login)}/user_tidings",
register_url: "https://www.educoder.net/user/register"
my_organ: "https://www.trustie.net/users/#{current_user.try(:login)}/user_organizations",
default_url: "https://www.trustie.net/",
tiding_url: "https://www.trustie.net/users/#{current_user.try(:login)}/user_messages",
register_url: "https://www.trustie.net/login?login=false"
}
end
end

View File

@ -5,14 +5,6 @@ class ForksController < ApplicationController
def create
@new_project = Projects::ForkService.new(current_user, @project, params[:organization]).call
# TODO: fix Educoder shixun
if @new_project.persisted?
ProjectScore.create(:project_id => @new_project.id, :score => 0) if @new_project.project_score.nil?
project_info = ProjectInfo.new(:user_id => current_user.id, :project_id => @new_project.id)
@project.project_infos << project_info
end
end
private

View File

@ -11,14 +11,14 @@ class ProjectsController < ApplicationController
menu = []
menu.append(menu_hash_by_name("home"))
menu.append(menu_hash_by_name("code"))
menu.append(menu_hash_by_name("code")) if @project.has_menu_permission("code")
menu.append(menu_hash_by_name("issues")) if @project.has_menu_permission("issues")
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("activity"))
menu.append(menu_hash_by_name("setting")) if current_user.admin? || @project.owner?(current_user)
render json: menu
end
@ -26,7 +26,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, :project_units)
@projects = paginate scope.includes(:project_category, :project_language, :repository, :project_educoder, :owner)
category_id = params[:category_id]
@total_count =
@ -44,13 +44,6 @@ class ProjectsController < ApplicationController
Projects::CreateForm.new(project_params).validate!
@project = Projects::CreateService.new(current_user, project_params).call
# TODO: fix Educoder shixun
if @project.persisted?
ProjectScore.create(:project_id => @project.id, :score => 0) if @project.project_score.nil?
project_info = ProjectInfo.new(:user_id => current_user.id, :project_id => @project.id)
@project.project_infos << project_info
end
end
rescue Exception => e
uid_logger_error(e.message)

View File

@ -18,6 +18,7 @@ class RepositoriesController < ApplicationController
# 新版项目详情
def detail
return render_not_found unless @project.has_menu_permission("code")
@user = current_user
@result = Repositories::DetailService.call(@owner, @repository, @user)
@project_fork_id = @project.try(:forked_from_project_id)

View File

@ -1,31 +1,6 @@
class SettingsController < ApplicationController
def show
@old_projects_url = nil
@old_projects_url = nil
@old_projects_url = "https://www.trustie.net/users/#{current_user.try(:login)}/projects" if User.current.logged?
@add = Site.add.select(:id, :name, :url, :key)
@personal =
if User.current.logged?
arr =[]
Site.personal.select(:id, :name, :url, :key).to_a.map(&:serializable_hash).each do |site|
hash = {}
site.each {|k, v|
hash.merge!("#{k}": v.to_s.include?("current_user") ? v.split('current_user').join(current_user&.login) : v)
}
arr << hash
end
else
[]
end
@common = []
Site.common.select(:id, :name, :url, :key).to_a.map(&:serializable_hash).each do |site|
next if site["url"].to_s.include?("current_user") && !User.current.logged?
hash = {}
site.each {|k, v|
hash.merge!("#{k}": v.to_s.include?("current_user") ? v.split('current_user').join(current_user&.login) : v)
}
@common << hash
end
end
end

View File

@ -4,7 +4,7 @@ class UsersController < ApplicationController
before_action :load_user, only: [:show, :homepage_info, :sync_token, :sync_gitea_pwd, :projects, :watch_users, :fan_users]
before_action :check_user_exist, only: [:show, :homepage_info,:projects, :watch_users, :fan_users]
before_action :require_login, only: %i[me list change_password change_email]
before_action :require_login, only: %i[me list]
before_action :connect_to_ci_db, only: [:get_user_info]
skip_before_action :check_sign, only: [:attachment_show]
@ -233,63 +233,6 @@ class UsersController < ApplicationController
render_ok
end
# TODO: For Educoder
def change_password
user = User.find_by_login params[:login]
return render_error("用户 #{params[:login]} 不存在.") unless user === current_user
form_params= {
login: params[:login],
email: user&.mail,
password: params[:password],
user: user
}
Gitea::User::ChangePasswordForm.new(form_params).validate!
sync_params = {
email: user&.mail,
password: params[:password]
}
if sync_params.present?
interactor = Gitea::User::UpdateInteractor.call(user.login, sync_params)
if interactor.success?
user.update!(password: params[:password], is_sync_pwd: true)
render_ok
else
render_error(interactor.error)
end
end
end
# TODO: For Educoder
def change_email
user = User.find_by_login params[:login]
return render_error("用户 #{rq_params[:login]} 不存在.") unless user === current_user
form_params= {
login: params[:login],
email: user&.mail,
user: user
}
Gitea::User::ChangeEmailForm.new(form_params).validate!
sync_params = {
email: params[:email]
}
if sync_params.present?
interactor = Gitea::User::UpdateInteractor.call(user.login, sync_params)
if interactor.success?
user.update!(mail: params[:email])
render_ok
else
render_error(interactor.error)
end
end
end
private
def load_user
@user = User.find_by_login(params[:id]) || User.find_by(id: params[:id])

View File

@ -1,9 +0,0 @@
class Gitea::User::ChangeEmailForm
include ActiveModel::Model
attr_accessor :user
attr_accessor :email, :login
validates :email, presence: true, format: { with: CustomRegexp::EMAIL }
validates :login, presence: true
end

View File

@ -1,22 +0,0 @@
class Gitea::User::ChangePasswordForm
include ActiveModel::Model
attr_accessor :user
attr_accessor :email, :login, :password
validates :email, presence: true, format: { with: CustomRegexp::EMAIL }
validates :login, presence: true
validates :password, presence: true
# validate :check_old_password
def check_old_password
return if user.check_password?(old_password.to_s)
errors.add(:old_password, :password_error)
end
# def check_user!
# user === current_user
# end
end

View File

@ -1,18 +0,0 @@
class Users::SyncGiteaForm
include ActiveModel::Model
attr_accessor :login, :password, :email, :user
validates :login, :password, :email, presence: true
validate :check_user, :check_password
def check_user
@user = User.find_by(login: login)
raise '用户不存在.' unless user.present?
end
def check_password
raise '用户密码错误.' unless user.check_password?(password)
end
end

View File

@ -17,7 +17,7 @@
# disk_directory :string(255)
# attachtype :integer default("1")
# is_public :integer default("1")
# copy_from :string(255)
# copy_from :integer
# quotes :integer default("0")
# is_publish :integer default("1")
# publish_time :datetime
@ -26,15 +26,15 @@
# cloud_url :string(255) default("")
# course_second_category_id :integer default("0")
# delay_publish :boolean default("0")
# link :string(255)
# clone_id :integer
#
# Indexes
#
# index_attachments_on_author_id (author_id)
# index_attachments_on_clone_id (clone_id)
# index_attachments_on_container_id_and_container_type (container_id,container_type)
# index_attachments_on_course_second_category_id (course_second_category_id)
# index_attachments_on_created_on (created_on)
# index_attachments_on_is_public (is_public)
# index_attachments_on_quotes (quotes)
#
class Attachment < ApplicationRecord

View File

@ -1,21 +1,3 @@
# == Schema Information
#
# Table name: chart_rules
#
# id :integer not null, primary key
# rule_type :string(255)
# content :text(65535)
# created_at :datetime not null
# updated_at :datetime not null
# competition_id :integer
# competition_stage_id :integer
#
# Indexes
#
# index_chart_rules_on_competition_id (competition_id)
# index_chart_rules_on_competition_stage_id (competition_stage_id)
#
class ChartRule < ApplicationRecord
validates :content, length: { maximum: 1000, too_long: "不能超过1000个字符" }

View File

@ -1,22 +1,3 @@
# == Schema Information
#
# Table name: stages
#
# id :integer not null
# subject_id :integer
# name :string(255)
# description :text(65535)
# user_id :integer
# position :integer
# created_at :datetime not null
# updated_at :datetime not null
# shixuns_count :integer default("0")
#
# Indexes
#
# index_stages_on_subject_id (subject_id)
#
class Ci::Stage < Ci::RemoteBase
self.primary_key = 'stage_id'

View File

@ -39,14 +39,13 @@
# business :boolean default("0")
# profile_completed :boolean default("0")
# laboratory_id :integer
# is_shixun_marker :boolean default("0")
# admin_visitable :boolean default("0")
# collaborator :boolean default("0")
# platform :string(255) default("0")
# gitea_token :string(255)
# gitea_uid :integer
# is_shixun_marker :boolean default("0")
# is_sync_pwd :boolean default("1")
# watchers_count :integer default("0")
# devops_step :integer default("0")
# gitea_token :string(255)
#
# Indexes
#
@ -54,9 +53,8 @@
# index_users_on_homepage_engineer (homepage_engineer)
# index_users_on_homepage_teacher (homepage_teacher)
# index_users_on_laboratory_id (laboratory_id)
# index_users_on_login (login) UNIQUE
# index_users_on_mail (mail) UNIQUE
# index_users_on_phone (phone) UNIQUE
# index_users_on_login (login)
# index_users_on_mail (mail)
# index_users_on_type (type)
#

View File

@ -1,38 +1,3 @@
# == Schema Information
#
# Table name: discusses
#
# id :integer not null, primary key
# user_id :integer
# dis_type :string(255)
# dis_id :integer
# content :text(65535)
# parent_id :integer
# root_id :integer
# praise_count :integer
# created_at :datetime not null
# updated_at :datetime not null
# challenge_id :integer
# reward :integer
# hidden :boolean default("0")
# last_reply_id :integer
# position :integer
# praises_count :integer default("0")
# sticky :boolean default("0")
# course_sticky :boolean default("0")
# course_hidden :boolean default("0")
# copy_message_id :integer
#
# Indexes
#
# index_discusses_on_challenge_id (challenge_id)
# index_discusses_on_copy_message_id (copy_message_id)
# index_discusses_on_course_hidden (course_hidden)
# index_discusses_on_course_sticky (course_sticky)
# index_discusses_on_dis_id_and_dis_type (dis_id,dis_type)
# index_discusses_on_user_id (user_id)
#
class Discuss < ApplicationRecord
default_scope { order(created_at: :desc) }

View File

@ -1,24 +1,5 @@
# == Schema Information
#
# Table name: forge_activities
#
# id :integer not null, primary key
# user_id :integer
# project_id :integer
# forge_act_id :integer
# forge_act_type :string(255)
# org_id :integer
# created_at :datetime not null
# updated_at :datetime not null
#
# Indexes
#
# forge_act_index (project_id,forge_act_id,created_at,forge_act_type)
# index_forge_activities_on_forge_act_id (forge_act_id)
#
class ForgeActivity < ApplicationRecord
belongs_to :user
belongs_to :project
belongs_to :forge_act, polymorphic: true
end
end

View File

@ -1,17 +1,3 @@
# == Schema Information
#
# Table name: helps
#
# id :integer not null, primary key
# created_at :datetime not null
# updated_at :datetime not null
# about_us :text(65535)
# agreement :text(65535)
# status :text(65535)
# help_center :text(65535)
# join_us :text(65535)
#
class Help < ApplicationRecord
end
end

View File

@ -10,12 +10,6 @@
# sync_course :boolean default("0")
# sync_subject :boolean default("0")
# sync_shixun :boolean default("0")
# is_local :boolean default("0")
#
# Indexes
#
# index_laboratories_on_identifier (identifier) UNIQUE
# index_laboratories_on_school_id (school_id)
#
class Laboratory < ApplicationRecord

View File

@ -6,10 +6,6 @@
# laboratory_id :integer
# config :text(65535)
#
# Indexes
#
# index_laboratory_settings_on_laboratory_id (laboratory_id)
#
class LaboratorySetting < ApplicationRecord
belongs_to :laboratory

View File

@ -7,6 +7,7 @@
# content :text(65535)
# created_at :datetime not null
# updated_at :datetime not null
# is_secret :boolean default("0")
#
class License < ApplicationRecord

View File

@ -1,27 +1,3 @@
# == Schema Information
#
# Table name: live_links
#
# id :integer not null, primary key
# course_id :integer
# user_id :integer
# url :string(255)
# description :text(65535)
# on_status :boolean default("0")
# created_at :datetime not null
# updated_at :datetime not null
# course_name :string(255)
# platform :string(255)
# live_time :datetime
# duration :integer
# position :integer
#
# Indexes
#
# index_live_links_on_course_id (course_id)
# index_live_links_on_user_id (user_id)
#
class LiveLink < ApplicationRecord
# belongs_to :course
belongs_to :user

View File

@ -11,6 +11,7 @@
# course_group_id :integer default("0")
# is_collect :integer default("1")
# graduation_group_id :integer default("0")
# is_apply_signature :boolean default("0")
#
# Indexes
#

View File

@ -1,18 +1,3 @@
# == Schema Information
#
# Table name: message_details
#
# id :integer not null, primary key
# content :text(4294967295)
# message_id :integer
# created_at :datetime not null
# updated_at :datetime not null
#
# Indexes
#
# index_message_details_on_message_id (message_id)
#
class MessageDetail < ApplicationRecord
# belongs_to :message, :touch => true
validates :content, length: { maximum: 10000, too_long: "内容不能超过10000个字符" }

View File

@ -39,14 +39,13 @@
# business :boolean default("0")
# profile_completed :boolean default("0")
# laboratory_id :integer
# is_shixun_marker :boolean default("0")
# admin_visitable :boolean default("0")
# collaborator :boolean default("0")
# platform :string(255) default("0")
# gitea_token :string(255)
# gitea_uid :integer
# is_shixun_marker :boolean default("0")
# is_sync_pwd :boolean default("1")
# watchers_count :integer default("0")
# devops_step :integer default("0")
# gitea_token :string(255)
#
# Indexes
#
@ -54,9 +53,8 @@
# index_users_on_homepage_engineer (homepage_engineer)
# index_users_on_homepage_teacher (homepage_teacher)
# index_users_on_laboratory_id (laboratory_id)
# index_users_on_login (login) UNIQUE
# index_users_on_mail (mail) UNIQUE
# index_users_on_phone (phone) UNIQUE
# index_users_on_login (login)
# index_users_on_mail (mail)
# index_users_on_type (type)
#

View File

@ -1,75 +1,77 @@
# == 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
# 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")
# license_id :integer
# ignore_id :integer
# 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)
#
class Project < ApplicationRecord
include Matchable
@ -99,7 +101,6 @@ class Project < ApplicationRecord
has_one :project_educoder, dependent: :destroy
has_one :project_score, dependent: :destroy
has_many :project_infos, :dependent => :destroy
has_one :repository, dependent: :destroy
has_many :pull_requests, dependent: :destroy
has_many :issue_tags, -> { order("issue_tags.created_at DESC") }, dependent: :destroy

View File

@ -8,6 +8,11 @@
# projects_count :integer default("0")
# created_at :datetime not null
# updated_at :datetime not null
# ancestry :string(255)
#
# Indexes
#
# index_project_categories_on_ancestry (ancestry)
#
class ProjectCategory < ApplicationRecord

View File

@ -1,8 +0,0 @@
class ProjectInfo < ActiveRecord::Base
belongs_to :project
belongs_to :user
validates_presence_of :project_id, :user_id
validates_uniqueness_of :project_id, :scope => :user_id
end

View File

@ -25,6 +25,7 @@
#
# Indexes
#
# index_repositories_on_identifier (identifier)
# index_repositories_on_project_id (project_id)
# index_repositories_on_user_id (user_id)
#

View File

@ -1,39 +1,3 @@
# == Schema Information
#
# Table name: schools
#
# id :integer not null, primary key
# name :string(255)
# province :string(255)
# created_at :datetime not null
# updated_at :datetime not null
# logo_link :string(255)
# pinyin :string(255)
# school_type :integer default("0")
# city :string(255)
# address :string(255)
# auto_users_trial :boolean default("0")
# shool_code :string(255)
# authorization_time :datetime
# ec_auth :integer default("0")
# identifier :string(255)
# is_online :boolean default("0")
# video_name :string(255)
# video_desc :string(255)
# course_link :string(255)
# course_name :string(255)
# partner_id :integer
# customer_id :integer
# school_property_id :integer
#
# Indexes
#
# index_schools_on_customer_id (customer_id)
# index_schools_on_identifier (identifier)
# index_schools_on_partner_id (partner_id)
# index_schools_on_school_property_id (school_property_id)
#
class School < ApplicationRecord
has_many :departments, dependent: :destroy

View File

@ -1,23 +0,0 @@
# == Schema Information
#
# Table name: sites
#
# id :integer not null, primary key
# name :string(255)
# url :string(255)
# key :string(255)
# site_type :integer
# created_at :datetime not null
# updated_at :datetime not null
#
class Site < ApplicationRecord
# add: 添加类链接
# personal: 个人名下类链接,
# common: 普通链接
enum site_type: { add: 0, personal: 1, common: 2 }
def self.set_default
end
end

View File

@ -1,87 +1,4 @@
# == Schema Information
#
# Table name: courses
#
# id :integer not null, primary key
# tea_id :integer
# name :string(255)
# state :integer
# code :string(255)
# time :integer
# extra :string(255)
# created_at :datetime not null
# updated_at :datetime not null
# location :string(255)
# term :string(255)
# string :string(255)
# password :string(255)
# setup_time :string(255)
# endup_time :string(255)
# class_period :integer default("0")
# school_id :integer
# description :text(65535)
# status :integer default("1")
# attachmenttype :integer default("2")
# lft :integer
# rgt :integer
# is_public :integer default("1")
# inherit_members :integer default("1")
# open_student :integer default("0")
# outline :integer default("0")
# publish_resource :integer default("0")
# is_delete :integer default("0")
# end_time :integer
# end_term :string(255)
# is_excellent :integer default("0")
# excellent_option :integer default("0")
# is_copy :integer default("0")
# visits :integer default("0")
# syllabus_id :integer
# invite_code :string(255)
# qrcode :string(255)
# qrcode_expiretime :integer default("0")
# invite_code_halt :integer default("0")
# os_allow :integer default("0")
# credit :float(24)
# is_end :boolean default("0")
# end_date :date
# choose_group_allow :boolean default("0")
# homepage_show :boolean default("0")
# course_list_id :integer
# members_count :integer default("0")
# homework_commons_count :integer default("0")
# show_unit :boolean default("0")
# teacher_list :string(255) default("老师")
# student_list :string(255) default("学生")
# is_hidden :boolean default("0")
# course_members_count :integer default("0")
# course_groups_count :integer default("0")
# authentication :boolean default("0")
# professional_certification :boolean default("0")
# graduation_topics_count :integer default("0")
# graduation_tasks_count :integer default("0")
# polls_count :integer default("0")
# exercises_count :integer default("0")
# start_date :date
# subject_id :integer default("0")
# excellent :boolean default("0")
# email_notify :boolean default("0")
# sticky :boolean default("0")
# sticky_time :datetime
# laboratory_id :integer
# mooc_course_id :integer
#
# Indexes
#
# index_courses_on_invite_code (invite_code) UNIQUE
# index_courses_on_laboratory_id (laboratory_id)
# index_courses_on_mooc_course_id (mooc_course_id)
# index_courses_on_school_id_and_is_delete (school_id,is_delete)
# index_courses_on_subject_id (subject_id)
# index_courses_on_tea_id (tea_id)
#
class Trustie::Course < Trustie::Database
has_many :course_groups, class_name: "Trustie::CourseGroup"
has_many :homework_commons, class_name: "Trustie::HomeworkCommon"
end
end

View File

@ -1,25 +1,3 @@
# == Schema Information
#
# Table name: course_groups
#
# id :integer not null, primary key
# name :string(255)
# course_id :integer
# created_at :datetime not null
# updated_at :datetime not null
# members_count :integer
# invite_code :string(255)
# position :integer default("0")
# course_members_count :integer default("0")
# invite_code_halt :boolean default("0")
# invite_code_set :integer default("0")
#
# Indexes
#
# index_course_groups_on_course_id (course_id)
# index_course_groups_on_invite_code (invite_code) UNIQUE
#
class Trustie::CourseGroup < Trustie::Database
belongs_to :course, class_name: "Trustie::Course"
end
end

View File

@ -1,54 +1,3 @@
# == Schema Information
#
# Table name: homework_commons
#
# id :integer not null, primary key
# name :string(255)
# user_id :integer
# description :text(65535)
# publish_time :datetime
# end_time :datetime
# homework_type :integer default("1")
# late_penalty :string(255) default("0")
# course_id :integer
# created_at :datetime not null
# updated_at :datetime not null
# teacher_priority :integer default("1")
# anonymous_comment :boolean default("0")
# quotes :integer default("0")
# is_open :integer default("0")
# simi_time :datetime
# score_open :boolean default("0")
# anonymous_appeal :boolean default("0")
# homework_bank_id :integer
# is_update :boolean default("0")
# is_public :boolean default("0")
# reference_answer :text(65535)
# answer_public :boolean default("0")
# archive_time :datetime
# allow_late :boolean default("0")
# late_time :datetime
# work_public :boolean default("0")
# explanation :text(65535)
# unified_setting :boolean default("1")
# comment_public :boolean default("1")
# course_homework_category_id :integer
# work_efficiency :boolean default("0")
# eff_score :float(24) default("0")
# max_efficiency :float(24) default("0")
# course_second_category_id :integer default("0")
# calculation_time :datetime
# position :integer default("0")
# total_score :float(24) default("100")
# category_position :integer default("0")
#
# Indexes
#
# index_homework_commons_on_course_id_and_id (course_id,id)
# index_homework_commons_on_course_second_category_id (course_second_category_id)
# index_homework_commons_on_homework_bank_id (homework_bank_id)
#
class Trustie::HomeworkCommon < Trustie::Database
belongs_to :course, class_name: "Trustie::Course"
end
end

View File

@ -39,14 +39,13 @@
# business :boolean default("0")
# profile_completed :boolean default("0")
# laboratory_id :integer
# is_shixun_marker :boolean default("0")
# admin_visitable :boolean default("0")
# collaborator :boolean default("0")
# platform :string(255) default("0")
# gitea_token :string(255)
# gitea_uid :integer
# is_shixun_marker :boolean default("0")
# is_sync_pwd :boolean default("1")
# watchers_count :integer default("0")
# devops_step :integer default("0")
# gitea_token :string(255)
#
# Indexes
#
@ -54,9 +53,8 @@
# index_users_on_homepage_engineer (homepage_engineer)
# index_users_on_homepage_teacher (homepage_teacher)
# index_users_on_laboratory_id (laboratory_id)
# index_users_on_login (login) UNIQUE
# index_users_on_mail (mail) UNIQUE
# index_users_on_phone (phone) UNIQUE
# index_users_on_login (login)
# index_users_on_mail (mail)
# index_users_on_type (type)
#

View File

@ -12,9 +12,7 @@
#
# Indexes
#
# index_user_actions_on_ip (ip)
# index_user_actions_on_user_id (user_id)
# index_user_actions_on_user_id_and_action_type (user_id,action_type)
# index_user_actions_on_ip (ip)
#
class UserAction < ApplicationRecord

View File

@ -10,13 +10,10 @@
# updated_at :datetime not null
# register_status :integer default("0")
# action_status :integer default("0")
# is_delete :boolean default("0")
# user_id :integer
#
# Indexes
#
# index_user_agents_on_ip (ip)
# index_user_agents_on_user_id (user_id)
# index_user_agents_on_ip (ip) UNIQUE
#
class UserAgent < ApplicationRecord

View File

@ -22,9 +22,6 @@
# school_id :integer
# description :string(255) default("")
# department_id :integer
# honor :text(65535)
# edu_background :integer
# edu_entry_year :integer
#
# Indexes
#

View File

@ -24,7 +24,7 @@
#
class Version < ApplicationRecord
belongs_to :project, counter_cache: true, optional: true
belongs_to :project, counter_cache: true
has_many :issues, class_name: "Issue", foreign_key: "fixed_version_id"
belongs_to :user, optional: true

View File

@ -46,6 +46,7 @@ class Projects::CreateService < ApplicationService
{
hidden: !repo_is_public,
user_id: params[:user_id],
website: params[:website],
identifier: params[:repository_name]
}
end

View File

@ -9,11 +9,11 @@
<% end %>
</td>
<td>
<%# if school && school.identifier.present? %>
<%#= link_to school.identifier.to_s, statistics_college_path(school.identifier), target: '_blank' %>
<%# else %>
<% if school && school.identifier.present? %>
<%= link_to school.identifier.to_s, statistics_college_path(school.identifier), target: '_blank' %>
<% else %>
--
<%# end %>
<% end %>
</td>
<td class="member-container">
<div class="laboratory-user">

View File

@ -1,7 +1,7 @@
json.content @project.content
json.website @project.website
if @result[:readme].blank?
json.readme nil
json.readme nil!
else
json.readme @result[:readme].merge(content: readme_render_decode64_content(@result[:readme]["content"], nil))
end

View File

@ -48,15 +48,4 @@ json.setting do
json.old_projects_url @old_projects_url
json.add do
json.array! @add, :name, :url, :key
end
json.personal do
json.array! @personal
end
json.common do
json.array! @common
end
end

View File

@ -5,13 +5,11 @@ json.user_id @user.id
json.image_url url_to_avatar(@user)
json.admin @user.admin?
json.is_teacher @user.user_extension&.teacher?
json.has_gitea_user @user.gitea_token.present? && @user.gitea_uid.present?
json.is_sync_pwd @user.is_sync_pwd
json.user_identity @user.identity
json.tidding_count 0
json.user_phone_binded @user.phone.present?
# json.phone @user.phone
json.email @user.mail
# json.email @user.mail
json.profile_completed @user.profile_completed?
json.professional_certification @user.professional_certification
json.devops_step @user.devops_step

View File

@ -1,17 +0,0 @@
'zh-CN':
activemodel:
attributes:
gitea/user/change_password_form:
user: ''
email: 邮箱
login: 用户名
old_password: 旧密码
password: 新密码
errors:
models:
gitea/user/change_password_form:
attributes:
old_password:
password_error: 错误
user:
not_exist: 不存在

View File

@ -23,6 +23,7 @@ Rails.application.routes.draw do
resources :edu_settings
resources :edu_settings
scope '/api' do
namespace :ci do
resources :languages, only: [:index, :show] do
@ -72,12 +73,12 @@ Rails.application.routes.draw do
end
resources :statistic, only: [:index] do
collection do
collection do
get :platform_profile
get :platform_code
get :active_project_rank
get :active_developer_rank
end
end
end
resources :sync_forge, only: [:create] do
collection do
@ -185,7 +186,6 @@ Rails.application.routes.draw do
get :logout
get :get_verification_code
get :valid_email_and_phone
post :gitea_register
post :remote_register
post :remote_update
post :remote_login
@ -219,8 +219,6 @@ Rails.application.routes.draw do
post :sync_salt
get :trustie_projects
get :trustie_related_projects
post :change_password
post :change_email
scope '/ci', module: :ci do
scope do
@ -381,7 +379,7 @@ Rails.application.routes.draw do
end
end
resource :repositories, path: '/', only: [:show, :create, :edit] do
resource :repositories, path: '/', only: [:show, :create, :edit] do
member do
get :files
get :detail

View File

@ -1,5 +1,5 @@
class AddPlatformToUsers < ActiveRecord::Migration[5.2]
def change
add_column :users, :platform, :string, default: 0
# add_column :users, :platform, :string, default: 0
end
end

View File

@ -1,5 +1,5 @@
class AddGiteaTokenToUsers < ActiveRecord::Migration[5.2]
def change
add_column :users, :gitea_token, :string
# add_column :users, :gitea_token, :string
end
end

View File

@ -1,6 +1,6 @@
class AddProjectCategoryIdAndProjectLanguageIdToProjects < ActiveRecord::Migration[5.2]
def change
add_column :projects, :project_category_id, :integer
add_column :projects, :project_language_id, :integer
# add_column :projects, :project_category_id, :integer
# add_column :projects, :project_language_id, :integer
end
end

View File

@ -1,7 +1,7 @@
class AddUserRefToRepository < ActiveRecord::Migration[5.2]
def change
add_column :repositories, :user_id, :integer
add_index :repositories, :user_id
# add_column :repositories, :user_id, :integer
# add_index :repositories, :user_id
Project.joins(:repository).find_each do |project|
project&.repository&.update_column(:user_id, project&.user_id) unless project&.repository.blank?

View File

@ -1,5 +1,5 @@
class AddGiteaUidToUsers < ActiveRecord::Migration[5.2]
def change
add_column :users, :gitea_uid, :integer
# add_column :users, :gitea_uid, :integer
end
end

View File

@ -1,5 +1,5 @@
class AddMirrorUrlToRepositories < ActiveRecord::Migration[5.2]
def change
add_column :repositories, :mirror_url, :string
# add_column :repositories, :mirror_url, :string
end
end

View File

@ -1,14 +1,14 @@
class CreateIssueTags < ActiveRecord::Migration[5.2]
def change
create_table :issue_tags do |t|
t.string :title
t.string :description
t.string :color
t.integer :user_id
t.integer :project_id
t.integer :issues_count,default: 0
t.timestamps
end
add_index :issue_tags, [:user_id, :title,:project_id]
# create_table :issue_tags do |t|
# t.string :title
# t.string :description
# t.string :color
# t.integer :user_id
# t.integer :project_id
# t.integer :issues_count,default: 0
# t.timestamps
# end
# add_index :issue_tags, [:user_id, :title,:project_id]
end
end

View File

@ -1,5 +1,5 @@
class AddPraisesCountToProjects < ActiveRecord::Migration[5.2]
def change
add_column :projects, :praises_count, :integer, :default => 0
# add_column :projects, :praises_count, :integer, :default => 0
end
end

View File

@ -1,8 +1,8 @@
class AddIssuesTypeAndToken < ActiveRecord::Migration[5.2]
def change
add_column :issues, :issue_type, :string
add_column :issues, :token, :string
add_column :issues, :issue_tag_ids, :string
# add_column :issues, :issue_type, :string
# add_column :issues, :token, :string
# add_column :issues, :issue_tag_ids, :string
end
end

View File

@ -1,5 +1,5 @@
class RenameIssueTagTitle < ActiveRecord::Migration[5.2]
def change
rename_column :issue_tags, :title, :name
# rename_column :issue_tags, :title, :name
end
end

View File

@ -1,10 +1,10 @@
class CreateIssueTagsRelates < ActiveRecord::Migration[5.2]
def change
create_table :issue_tags_relates do |t|
t.integer :issue_id
t.integer :issue_tag_id
t.timestamps
end
add_index :issue_tags_relates, [:issue_id, :issue_tag_id]
# create_table :issue_tags_relates do |t|
# t.integer :issue_id
# t.integer :issue_tag_id
# t.timestamps
# end
# add_index :issue_tags_relates, [:issue_id, :issue_tag_id]
end
end

View File

@ -1,5 +1,5 @@
class RenameIssuesIssueTagIds < ActiveRecord::Migration[5.2]
def change
rename_column :issues, :issue_tag_ids, :issue_tags_value
# rename_column :issues, :issue_tag_ids, :issue_tags_value
end
end

View File

@ -1,13 +1,13 @@
class CreateIssueTimes < ActiveRecord::Migration[5.2]
def change
create_table :issue_times do |t|
t.integer :issue_id
t.integer :user_id
t.datetime :start_time
t.datetime :end_time
t.string :cost_time
t.timestamps
end
add_index :issue_times, [:issue_id, :user_id]
# create_table :issue_times do |t|
# t.integer :issue_id
# t.integer :user_id
# t.datetime :start_time
# t.datetime :end_time
# t.string :cost_time
# t.timestamps
# end
# add_index :issue_times, [:issue_id, :user_id]
end
end

View File

@ -1,5 +1,5 @@
class AddIsLockToIssue < ActiveRecord::Migration[5.2]
def change
add_column :issues, :is_lock, :boolean, default: false
# add_column :issues, :is_lock, :boolean, default: false
end
end

View File

@ -1,5 +1,5 @@
class AddWatchersCountToProjects < ActiveRecord::Migration[5.2]
def change
add_column :projects, :watchers_count, :integer, :default => 0
# add_column :projects, :watchers_count, :integer, :default => 0
end
end

View File

@ -1,18 +1,18 @@
class CreateVersionReleases < ActiveRecord::Migration[5.2]
def change
create_table :version_releases do |t|
t.integer :user_id
t.string :name
t.text :body
t.string :tag_name
t.string :target_commitish
t.boolean :draft, default: false
t.boolean :prerelease, default: false
t.string :tarball_url
t.string :zipball_url
t.string :url
t.string :version_gid
t.timestamps
end
# create_table :version_releases do |t|
# t.integer :user_id
# t.string :name
# t.text :body
# t.string :tag_name
# t.string :target_commitish
# t.boolean :draft, default: false
# t.boolean :prerelease, default: false
# t.string :tarball_url
# t.string :zipball_url
# t.string :url
# t.string :version_gid
# t.timestamps
# end
end
end

View File

@ -1,6 +1,6 @@
class AddProjectIdToVersionRelease < ActiveRecord::Migration[5.2]
def change
add_column :version_releases, :repository_id, :integer
add_index :version_releases, [:repository_id]
# add_column :version_releases, :repository_id, :integer
# add_index :version_releases, [:repository_id]
end
end

View File

@ -1,6 +1,6 @@
class AddColumnToIssueTags < ActiveRecord::Migration[5.2]
def change
add_column :issue_tags, :gid, :integer
add_column :issue_tags, :gitea_url, :string
# add_column :issue_tags, :gid, :integer
# add_column :issue_tags, :gitea_url, :string
end
end

View File

@ -1,8 +1,8 @@
class AddColumnToPullRequests < ActiveRecord::Migration[5.2]
def change
add_column :pull_requests, :version_id, :integer
add_column :pull_requests, :body, :text
add_column :pull_requests, :from_ref, :string
add_column :pull_requests, :to_ref, :string
# add_column :pull_requests, :version_id, :integer
# add_column :pull_requests, :body, :text
# add_column :pull_requests, :from_ref, :string
# add_column :pull_requests, :to_ref, :string
end
end

View File

@ -4,10 +4,10 @@ class ChangePullRequestsColumns < ActiveRecord::Migration[5.2]
# add_column :pull_request_assigns, :user_login, :string
#
# add_index :pull_request_assigns, [:user_login]
rename_column :pull_requests, :version_id, :milestone
rename_column :pull_requests, :from_ref, :head
rename_column :pull_requests, :to_ref, :base
#
# rename_column :pull_requests, :version_id, :milestone
# rename_column :pull_requests, :from_ref, :head
# rename_column :pull_requests, :to_ref, :base
end

View File

@ -1,6 +1,6 @@
class AddColumnsToPullRequests < ActiveRecord::Migration[5.2]
def change
add_column :pull_requests, :issue_id, :integer
add_column :issues, :issue_classify, :string
# add_column :pull_requests, :issue_id, :integer
# add_column :issues, :issue_classify, :string
end
end

View File

@ -1,6 +1,6 @@
class AddIssuesRefNameAndBranchName < ActiveRecord::Migration[5.2]
def change
add_column :issues, :ref_name, :string
add_column :issues, :branch_name, :string
# add_column :issues, :ref_name, :string
# add_column :issues, :branch_name, :string
end
end

View File

@ -1,9 +1,9 @@
class MigrateTidingStatus < ActiveRecord::Migration[5.2]
def change
# Tiding.where(container_type: "JoinCourse", status: 0).each do |tiding|
# unless CourseMessage.where(course_message_id: tiding.trigger_user_id, course_id: tiding.container_id, course_message_type: "JoinCourseRequest", status: 0).exists?
# tiding.update!(status: 1)
# end
# end
Tiding.where(container_type: "JoinCourse", status: 0).each do |tiding|
unless CourseMessage.where(course_message_id: tiding.trigger_user_id, course_id: tiding.container_id, course_message_type: "JoinCourseRequest", status: 0).exists?
tiding.update!(status: 1)
end
end
end
end

View File

@ -1,6 +1,6 @@
class AddIssuesCountAndPullRequestsCountToProjects < ActiveRecord::Migration[5.2]
def change
add_column :projects, :issues_count, :integer, :default => 0
add_column :projects, :pull_requests_count, :integer, :default => 0
# add_column :projects, :issues_count, :integer, :default => 0
# add_column :projects, :pull_requests_count, :integer, :default => 0
end
end

View File

@ -1,11 +1,11 @@
class MigrateUserLocation < ActiveRecord::Migration[5.2]
def change
# UserExtension.where("location like '%省'").each do |ue|
# ue.update_column("location", ue.location.chop)
# end
#
# UserExtension.where("location_city like '%市'").each do |ue|
# ue.update_column("location_city", ue.location_city.chop)
# end
UserExtension.where("location like '%省'").each do |ue|
ue.update_column("location", ue.location.chop)
end
UserExtension.where("location_city like '%市'").each do |ue|
ue.update_column("location_city", ue.location_city.chop)
end
end
end

View File

@ -1,7 +1,7 @@
class AddIssuesCountToVersions < ActiveRecord::Migration[5.2]
def change
add_column :versions, :issues_count, :integer, :default => 0
add_column :versions, :closed_issues_count, :integer, :default => 0
add_column :versions, :percent, :float, default: 0.0
# add_column :versions, :issues_count, :integer, :default => 0
# add_column :versions, :closed_issues_count, :integer, :default => 0
# add_column :versions, :percent, :float, default: 0.0
end
end

View File

@ -1,69 +1,69 @@
class ChangeQuillToMd < ActiveRecord::Migration[5.2]
#迁移quill编辑器的内容为md
def change
migrate_time = Time.current - 20.days
migrate_time = Time.current - 20.days
all_issues = Issue.where("updated_on > ?", migrate_time)
pros = PullRequest.where("updated_at > ?", migrate_time)
journals = Journal.where("created_on > ?", migrate_time)
# Issue.transaction do
# if all_issues.size > 0
# all_issues.each do |i|
# description = i.description
# if description.present? && description.include?("insert")
# new_content = change_content(description)
# i.update_attribute(:description, new_content)
# end
# puts "__update_issue_content_____id:#{i.id}__"
# end
# end
# end
Issue.transaction do
if all_issues.size > 0
all_issues.each do |i|
description = i.description
if description.present? && description.include?("insert")
new_content = change_content(description)
i.update_attribute(:description, new_content)
end
puts "__update_issue_content_____id:#{i.id}__"
end
end
end
# Journal.transaction do
# if journals.size > 0
# journals.each do |j|
# description = j.notes
# if description.present? && description.include?("insert")
# new_content = change_content(description)
# j.update_attribute(:notes, new_content)
# end
# puts "__update_journal_content_____id:#{j.id}__"
# end
# end
#
# end
Journal.transaction do
if journals.size > 0
journals.each do |j|
description = j.notes
if description.present? && description.include?("insert")
new_content = change_content(description)
j.update_attribute(:notes, new_content)
end
puts "__update_journal_content_____id:#{j.id}__"
end
end
end
# PullRequest.transaction do
# if pros.size > 0
# pros.each do |p|
# description = p.body
# if description.present? && description.include?("insert")
# new_content = change_content(description)
# p.update_attribute(:body, new_content)
# end
# puts "__update_pull_request_content_____id:#{p.id}__"
# end
# end
# end
PullRequest.transaction do
if pros.size > 0
pros.each do |p|
description = p.body
if description.present? && description.include?("insert")
new_content = change_content(description)
p.update_attribute(:body, new_content)
end
puts "__update_pull_request_content_____id:#{p.id}__"
end
end
end
end
# def change_content(content)
# puts "####________content_____######{content}"
# new_content = ""
# return "" if content.blank?
# desc = JSON.parse(content)["ops"]
# if desc.length > 0
# desc.each do |d|
# image = d["insert"]["image"]
# if image.present?
# new_content += "![#{image['alt']}](#{image['url']})"
# else
# new_content += d["insert"].gsub("\n", "")
# end
# end
# end
# new_content
# end
def change_content(content)
puts "####________content_____######{content}"
new_content = ""
return "" if content.blank?
desc = JSON.parse(content)["ops"]
if desc.length > 0
desc.each do |d|
image = d["insert"]["image"]
if image.present?
new_content += "![#{image['alt']}](#{image['url']})"
else
new_content += d["insert"].gsub("\n", "")
end
end
end
new_content
end
end

View File

@ -1,6 +0,0 @@
class AddColumnsToProjects < ActiveRecord::Migration[5.2]
def change
add_column :projects, :license_id, :integer
add_column :projects, :ignore_id, :integer
end
end

View File

@ -1,12 +0,0 @@
class CreateSites < ActiveRecord::Migration[5.2]
def change
create_table :sites do |t|
t.string :name, comment: "中文名称"
t.string :url, comment: "具体链接"
t.string :key, comment: "标识"
t.integer :site_type, comment: "分类,按照分类编排链接"
t.timestamps
end
end
end

View File

@ -15,27 +15,15 @@ namespace :sync_data_to_gitea do
next unless regx.match user.mail
tmp_password = set_password
user_params = {
username: user.login,
email: user.mail,
password: tmp_password
}
# TODO: Educoder sync
interactor = Gitea::RegisterInteractor.call({username: user.login, email: user.mail, password: tmp_password})
if interactor.success?
gitea_user = interactor.result
result = Gitea::User::GenerateTokenService.call(user.login, tmp_password)
user.update_columns(gitea_token: result['sha1'], gitea_uid: gitea_user[:body]['id'])
else
puts "#################【Gitea: 用户同步失败: #{interactor.error} #################"
end
# TODO: Trustie sync
# user_params = {
# username: user.login,
# email: user.mail,
# password: tmp_password
# }
#
# gitea_user = Gitea::User::RegisterService.new(user_params).call
# result = Gitea::User::GenerateTokenService.new(user.login, tmp_password).call
# user.update_columns(gitea_token: result['sha1'], gitea_uid: gitea_user['id'])
gitea_user = Gitea::User::RegisterService.new(user_params).call
result = Gitea::User::GenerateTokenService.new(user.login, tmp_password).call
user.update_columns(gitea_token: result['sha1'], gitea_uid: gitea_user['id'])
rescue Exception => e
Rails.logger.error e
next