mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-09-07 21:55:20 +08:00
Add additional info to API project_user_assignments type error [SCI-6273] (#3674)
* Add additional info to API project_user_assignments type error [SCI-6273] * Generalize user_assignments api controllers [SCI-6237]
This commit is contained in:
parent
2a135ac120
commit
6b6a49428c
8 changed files with 56 additions and 58 deletions
|
@ -17,14 +17,14 @@ module Api
|
|||
.per(params.dig(:page, :size))
|
||||
|
||||
render jsonapi: user_assignments,
|
||||
each_serializer: ExperimentUserAssignmentSerializer,
|
||||
include: %i(user user_role)
|
||||
each_serializer: UserAssignmentSerializer,
|
||||
include: include_params
|
||||
end
|
||||
|
||||
def show
|
||||
render jsonapi: @user_assignment,
|
||||
serializer: ExperimentUserAssignmentSerializer,
|
||||
include: %i(user user_role)
|
||||
serializer: UserAssignmentSerializer,
|
||||
include: include_params
|
||||
end
|
||||
|
||||
def update
|
||||
|
@ -42,7 +42,7 @@ module Api
|
|||
|
||||
experiment_member.update(user_role_id: user_role.id, user_id: user.id)
|
||||
render jsonapi: experiment_member.user_assignment.reload,
|
||||
serializer: ExperimentUserAssignmentSerializer,
|
||||
serializer: UserAssignmentSerializer,
|
||||
status: :ok
|
||||
end
|
||||
|
||||
|
@ -61,10 +61,14 @@ module Api
|
|||
end
|
||||
|
||||
def user_assignment_params
|
||||
raise TypeError unless params.require(:data).require(:type) == 'experiment_user_assignments'
|
||||
raise TypeError unless params.require(:data).require(:type) == 'user_assignments'
|
||||
|
||||
params.require(:data).require(:attributes).permit(:user_id, :user_role_id)
|
||||
end
|
||||
|
||||
def permitted_includes
|
||||
%w(user user_role assignable)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -9,6 +9,15 @@ module Api
|
|||
before_action :load_user_assignment, only: %i(show update destroy)
|
||||
before_action :load_user_project_for_managing, only: %i(show update destroy)
|
||||
|
||||
rescue_from TypeError do
|
||||
# TEMP (17.10.2021) additional error details when using the deprecated user_projects
|
||||
detail_key = params.dig('data', 'type') == 'user_projects' ? 'user_projects_detail' : 'detail'
|
||||
|
||||
render_error(I18n.t('api.core.errors.type.title'),
|
||||
I18n.t("api.core.errors.type.#{detail_key}"),
|
||||
:bad_request)
|
||||
end
|
||||
|
||||
def index
|
||||
user_assignments = @project.user_assignments
|
||||
.includes(:user_role)
|
||||
|
@ -16,14 +25,14 @@ module Api
|
|||
.per(params.dig(:page, :size))
|
||||
|
||||
render jsonapi: user_assignments,
|
||||
each_serializer: ProjectUserAssignmentSerializer,
|
||||
include: %i(user user_role)
|
||||
each_serializer: UserAssignmentSerializer,
|
||||
include: include_params
|
||||
end
|
||||
|
||||
def show
|
||||
render jsonapi: @user_assignment,
|
||||
serializer: ProjectUserAssignmentSerializer,
|
||||
include: %i(user user_role)
|
||||
serializer: UserAssignmentSerializer,
|
||||
include: include_params
|
||||
end
|
||||
|
||||
def create
|
||||
|
@ -38,7 +47,7 @@ module Api
|
|||
project_member.create
|
||||
|
||||
render jsonapi: project_member.user_assignment.reload,
|
||||
serializer: ProjectUserAssignmentSerializer,
|
||||
serializer: UserAssignmentSerializer,
|
||||
status: :created
|
||||
end
|
||||
|
||||
|
@ -52,7 +61,7 @@ module Api
|
|||
|
||||
project_member.user_role_id = user_role.id
|
||||
project_member.update
|
||||
render jsonapi: @user_assignment.reload, serializer: ProjectUserAssignmentSerializer, status: :ok
|
||||
render jsonapi: @user_assignment.reload, serializer: UserAssignmentSerializer, status: :ok
|
||||
end
|
||||
|
||||
def destroy
|
||||
|
@ -76,10 +85,14 @@ module Api
|
|||
end
|
||||
|
||||
def user_project_params
|
||||
raise TypeError unless params.require(:data).require(:type) == 'project_user_assignments'
|
||||
raise TypeError unless params.require(:data).require(:type) == 'user_assignments'
|
||||
|
||||
params.require(:data).require(:attributes).permit(:user_id, :user_role_id)
|
||||
end
|
||||
|
||||
def permitted_includes
|
||||
%w(user user_role assignable)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -18,14 +18,14 @@ module Api
|
|||
.per(params.dig(:page, :size))
|
||||
|
||||
render jsonapi: user_assignments,
|
||||
each_serializer: TaskUserAssignmentSerializer,
|
||||
include: %i(user user_role)
|
||||
each_serializer: UserAssignmentSerializer,
|
||||
include: include_params
|
||||
end
|
||||
|
||||
def show
|
||||
render jsonapi: @user_assignment,
|
||||
serializer: TaskUserAssignmentSerializer,
|
||||
include: %i(user user_role)
|
||||
serializer: UserAssignmentSerializer,
|
||||
include: include_params
|
||||
end
|
||||
|
||||
def update
|
||||
|
@ -45,7 +45,7 @@ module Api
|
|||
my_module_member.update(user_role_id: user_role.id, user_id: user.id)
|
||||
|
||||
render jsonapi: my_module_member.user_assignment.reload,
|
||||
serializer: TaskUserAssignmentSerializer,
|
||||
serializer: UserAssignmentSerializer,
|
||||
status: :ok
|
||||
end
|
||||
|
||||
|
@ -64,10 +64,14 @@ module Api
|
|||
end
|
||||
|
||||
def user_assignment_params
|
||||
raise TypeError unless params.require(:data).require(:type) == 'task_user_assignments'
|
||||
raise TypeError unless params.require(:data).require(:type) == 'user_assignments'
|
||||
|
||||
params.require(:data).require(:attributes).permit(:user_id, :user_role_id)
|
||||
end
|
||||
|
||||
def permitted_includes
|
||||
%w(user user_role assignable)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Api
|
||||
module V1
|
||||
class ExperimentUserAssignmentSerializer < ActiveModel::Serializer
|
||||
type :experiment_user_assignments
|
||||
attributes :id
|
||||
|
||||
belongs_to :user, serializer: UserSerializer
|
||||
belongs_to :user_role, serializer: UserRoleSerializer
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,13 +0,0 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Api
|
||||
module V1
|
||||
class ProjectUserAssignmentSerializer < ActiveModel::Serializer
|
||||
type :project_user_assignments
|
||||
attributes :id
|
||||
|
||||
belongs_to :user, serializer: UserSerializer
|
||||
belongs_to :user_role, serializer: UserRoleSerializer
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,13 +0,0 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Api
|
||||
module V1
|
||||
class TaskUserAssignmentSerializer < ActiveModel::Serializer
|
||||
type :task_user_assignments
|
||||
attributes :id
|
||||
|
||||
belongs_to :user, serializer: UserSerializer
|
||||
belongs_to :user_role, serializer: UserRoleSerializer
|
||||
end
|
||||
end
|
||||
end
|
15
app/serializers/api/v1/user_assignment_serializer.rb
Normal file
15
app/serializers/api/v1/user_assignment_serializer.rb
Normal file
|
@ -0,0 +1,15 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Api
|
||||
module V1
|
||||
class UserAssignmentSerializer < ActiveModel::Serializer
|
||||
type :user_assignments
|
||||
attributes :id
|
||||
belongs_to :user_role
|
||||
belongs_to :user
|
||||
belongs_to :assignable
|
||||
|
||||
include TimestampableModel
|
||||
end
|
||||
end
|
||||
end
|
|
@ -2726,6 +2726,7 @@ en:
|
|||
type:
|
||||
title: "Wrong type"
|
||||
detail: "Wrong object type within parameters"
|
||||
user_projects_detail: "Wrong object type within parameters. This endpoint has been changed and you should use 'user_assignments' instead of 'user_projects'"
|
||||
inventory_column_type:
|
||||
detail: "Update of data_type attribute is not allowed"
|
||||
result_missing_tinymce:
|
||||
|
|
Loading…
Add table
Reference in a new issue