51 lines
1.5 KiB
Ruby
51 lines
1.5 KiB
Ruby
class Api::V1::Projects::DatasetsController < Api::V1::BaseController
|
|
before_action :require_public_and_member_above, only: [:show]
|
|
before_action :require_member_above, only: [:create, :update]
|
|
before_action :find_dataset, only: [:update, :show]
|
|
before_action :check_menu_authorize
|
|
|
|
def create
|
|
::Projects::Datasets::CreateForm.new(dataset_params).validate!
|
|
return render_error('该项目下已存在数据集!') if @project.project_dataset.present?
|
|
@project_dataset = ProjectDataset.new(dataset_params.merge!(project_id: @project.id))
|
|
if @project_dataset.save!
|
|
render_ok
|
|
else
|
|
render_error('创建数据集失败!')
|
|
end
|
|
rescue Exception => e
|
|
uid_logger_error(e.message)
|
|
tip_exception(e.message)
|
|
end
|
|
|
|
def update
|
|
::Projects::Datasets::CreateForm.new(dataset_params).validate!
|
|
@project_dataset.attributes = dataset_params
|
|
if @project_dataset.save!
|
|
render_ok
|
|
else
|
|
render_error("更新数据集失败!")
|
|
end
|
|
rescue Exception => e
|
|
uid_logger_error(e.message)
|
|
tip_exception(e.message)
|
|
end
|
|
|
|
def show
|
|
@attachments = kaminari_paginate(@project_dataset.attachments.includes(:author))
|
|
end
|
|
|
|
private
|
|
def dataset_params
|
|
params.permit(:title, :description, :license_id, :paper_content)
|
|
end
|
|
|
|
def find_dataset
|
|
@project_dataset = @project.project_dataset
|
|
return render_not_found unless @project_dataset.present?
|
|
end
|
|
|
|
def check_menu_authorize
|
|
return render_not_found unless @project.has_menu_permission("dataset")
|
|
end
|
|
end |