Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/serializers')
-rw-r--r--app/serializers/admin/user_entity.rb31
-rw-r--r--app/serializers/admin/user_serializer.rb7
-rw-r--r--app/serializers/codequality_degradation_entity.rb14
-rw-r--r--app/serializers/codequality_reports_comparer_entity.rb15
-rw-r--r--app/serializers/codequality_reports_comparer_serializer.rb5
-rw-r--r--app/serializers/concerns/user_status_tooltip.rb14
-rw-r--r--app/serializers/diff_file_base_entity.rb2
-rw-r--r--app/serializers/diffs_metadata_entity.rb4
-rw-r--r--app/serializers/environment_entity.rb8
-rw-r--r--app/serializers/import/bulk_import_entity.rb4
-rw-r--r--app/serializers/merge_request_assignee_entity.rb9
-rw-r--r--app/serializers/merge_request_current_user_entity.rb24
-rw-r--r--app/serializers/merge_request_reviewer_entity.rb9
-rw-r--r--app/serializers/merge_request_sidebar_extras_entity.rb4
-rw-r--r--app/serializers/merge_request_user_entity.rb27
-rw-r--r--app/serializers/merge_request_widget_entity.rb17
-rw-r--r--app/serializers/paginated_diff_entity.rb2
-rw-r--r--app/serializers/pipeline_serializer.rb2
-rw-r--r--app/serializers/rollout_status_entity.rb18
-rw-r--r--app/serializers/rollout_statuses/ingress_entity.rb7
-rw-r--r--app/serializers/user_entity.rb2
-rw-r--r--app/serializers/user_serializer.rb4
22 files changed, 176 insertions, 53 deletions
diff --git a/app/serializers/admin/user_entity.rb b/app/serializers/admin/user_entity.rb
new file mode 100644
index 00000000000..ad96c101822
--- /dev/null
+++ b/app/serializers/admin/user_entity.rb
@@ -0,0 +1,31 @@
+# frozen_string_literal: true
+
+module Admin
+ class UserEntity < API::Entities::UserSafe
+ include RequestAwareEntity
+ include UsersHelper
+ include UserActionsHelper
+
+ expose :created_at
+ expose :email
+ expose :last_activity_on
+ expose :avatar_url
+ expose :badges do |user|
+ user_badges_in_admin_section(user)
+ end
+
+ expose :projects_count do |user|
+ user.authorized_projects.length
+ end
+
+ expose :actions do |user|
+ admin_actions(user)
+ end
+
+ private
+
+ def current_user
+ options[:current_user]
+ end
+ end
+end
diff --git a/app/serializers/admin/user_serializer.rb b/app/serializers/admin/user_serializer.rb
new file mode 100644
index 00000000000..09036428bab
--- /dev/null
+++ b/app/serializers/admin/user_serializer.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+module Admin
+ class UserSerializer < BaseSerializer
+ entity UserEntity
+ end
+end
diff --git a/app/serializers/codequality_degradation_entity.rb b/app/serializers/codequality_degradation_entity.rb
new file mode 100644
index 00000000000..be561052507
--- /dev/null
+++ b/app/serializers/codequality_degradation_entity.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+class CodequalityDegradationEntity < Grape::Entity
+ expose :description
+ expose :severity
+
+ expose :file_path do |degradation|
+ degradation.dig(:location, :path)
+ end
+
+ expose :line do |degradation|
+ degradation.dig(:location, :lines, :begin) || degradation.dig(:location, :positions, :begin, :line)
+ end
+end
diff --git a/app/serializers/codequality_reports_comparer_entity.rb b/app/serializers/codequality_reports_comparer_entity.rb
new file mode 100644
index 00000000000..1de4e56c57d
--- /dev/null
+++ b/app/serializers/codequality_reports_comparer_entity.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+class CodequalityReportsComparerEntity < Grape::Entity
+ expose :status
+
+ expose :new_errors, using: CodequalityDegradationEntity
+ expose :resolved_errors, using: CodequalityDegradationEntity
+ expose :existing_errors, using: CodequalityDegradationEntity
+
+ expose :summary do
+ expose :total_count, as: :total
+ expose :resolved_count, as: :resolved
+ expose :errors_count, as: :errored
+ end
+end
diff --git a/app/serializers/codequality_reports_comparer_serializer.rb b/app/serializers/codequality_reports_comparer_serializer.rb
new file mode 100644
index 00000000000..2c6eb33aa9f
--- /dev/null
+++ b/app/serializers/codequality_reports_comparer_serializer.rb
@@ -0,0 +1,5 @@
+# frozen_string_literal: true
+
+class CodequalityReportsComparerSerializer < BaseSerializer
+ entity CodequalityReportsComparerEntity
+end
diff --git a/app/serializers/concerns/user_status_tooltip.rb b/app/serializers/concerns/user_status_tooltip.rb
index 633b117d392..fcf6700cb59 100644
--- a/app/serializers/concerns/user_status_tooltip.rb
+++ b/app/serializers/concerns/user_status_tooltip.rb
@@ -8,12 +8,18 @@ module UserStatusTooltip
include UsersHelper
included do
- expose :user_status_if_loaded, as: :status_tooltip_html
+ expose :status_tooltip_html, if: -> (*) { status_loaded? } do |user|
+ user_status(user)
+ end
+
+ expose :show_status do |user|
+ status_loaded? && show_status_emoji?(user.status)
+ end
- def user_status_if_loaded
- return unless object.association(:status).loaded?
+ private
- user_status(object)
+ def status_loaded?
+ object.association(:status).loaded?
end
end
end
diff --git a/app/serializers/diff_file_base_entity.rb b/app/serializers/diff_file_base_entity.rb
index 5036f28184c..1409f023f21 100644
--- a/app/serializers/diff_file_base_entity.rb
+++ b/app/serializers/diff_file_base_entity.rb
@@ -118,7 +118,7 @@ class DiffFileBaseEntity < Grape::Entity
strong_memoize(:submodule_links) do
next unless diff_file.submodule?
- options[:submodule_links].for(diff_file.blob, diff_file.content_sha, diff_file)
+ options[:submodule_links]&.for(diff_file.blob, diff_file.content_sha, diff_file)
end
end
diff --git a/app/serializers/diffs_metadata_entity.rb b/app/serializers/diffs_metadata_entity.rb
index 8973f23734a..7b0de3bce4e 100644
--- a/app/serializers/diffs_metadata_entity.rb
+++ b/app/serializers/diffs_metadata_entity.rb
@@ -2,7 +2,9 @@
class DiffsMetadataEntity < DiffsEntity
unexpose :diff_files
- expose :raw_diff_files, as: :diff_files, using: DiffFileMetadataEntity
+ expose :diff_files, using: DiffFileMetadataEntity do |diffs, _|
+ diffs.raw_diff_files(sorted: true)
+ end
expose :conflict_resolution_path do |_, options|
presenter(options[:merge_request]).conflict_resolution_path
diff --git a/app/serializers/environment_entity.rb b/app/serializers/environment_entity.rb
index 0bd9c602bf5..8c6ad010d69 100644
--- a/app/serializers/environment_entity.rb
+++ b/app/serializers/environment_entity.rb
@@ -3,6 +3,9 @@
class EnvironmentEntity < Grape::Entity
include RequestAwareEntity
+ UNNECESSARY_ENTRIES_FOR_UPCOMING_DEPLOYMENT =
+ %i[manual_actions scheduled_actions playable_build cluster].freeze
+
expose :id
expose :global_id do |environment|
@@ -17,6 +20,11 @@ class EnvironmentEntity < Grape::Entity
expose :last_deployment, using: DeploymentEntity
expose :stop_action_available?, as: :has_stop_action
+ expose :upcoming_deployment, expose_nil: false do |environment, ops|
+ DeploymentEntity.represent(environment.upcoming_deployment,
+ ops.merge(except: UNNECESSARY_ENTRIES_FOR_UPCOMING_DEPLOYMENT))
+ end
+
expose :metrics_path, if: -> (*) { environment.has_metrics? } do |environment|
metrics_project_environment_path(environment.project, environment)
end
diff --git a/app/serializers/import/bulk_import_entity.rb b/app/serializers/import/bulk_import_entity.rb
index 8f0a9dd4428..9daa6699a20 100644
--- a/app/serializers/import/bulk_import_entity.rb
+++ b/app/serializers/import/bulk_import_entity.rb
@@ -12,4 +12,8 @@ class Import::BulkImportEntity < Grape::Entity
expose :full_path do |entity|
entity['full_path']
end
+
+ expose :web_url do |entity|
+ entity['web_url']
+ end
end
diff --git a/app/serializers/merge_request_assignee_entity.rb b/app/serializers/merge_request_assignee_entity.rb
deleted file mode 100644
index b7ef7449270..00000000000
--- a/app/serializers/merge_request_assignee_entity.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-# frozen_string_literal: true
-
-class MergeRequestAssigneeEntity < ::API::Entities::UserBasic
- expose :can_merge do |assignee, options|
- options[:merge_request]&.can_be_merged_by?(assignee)
- end
-end
-
-MergeRequestAssigneeEntity.prepend_if_ee('EE::MergeRequestAssigneeEntity')
diff --git a/app/serializers/merge_request_current_user_entity.rb b/app/serializers/merge_request_current_user_entity.rb
new file mode 100644
index 00000000000..fbdb4e505ec
--- /dev/null
+++ b/app/serializers/merge_request_current_user_entity.rb
@@ -0,0 +1,24 @@
+# frozen_string_literal: true
+
+class MergeRequestCurrentUserEntity < CurrentUserEntity
+ include RequestAwareEntity
+ include BlobHelper
+ include TreeHelper
+
+ expose :can_fork do |user|
+ project && can?(user, :fork_project, request.project)
+ end
+
+ expose :can_create_merge_request do |user|
+ project && can?(user, :create_merge_request_in, project)
+ end
+
+ expose :fork_path, if: -> (*) { project } do |user|
+ params = edit_blob_fork_params("Edit")
+ project_forks_path(project, namespace_key: user.namespace.id, continue: params)
+ end
+
+ def project
+ request.respond_to?(:project) && request.project
+ end
+end
diff --git a/app/serializers/merge_request_reviewer_entity.rb b/app/serializers/merge_request_reviewer_entity.rb
deleted file mode 100644
index fefd116014f..00000000000
--- a/app/serializers/merge_request_reviewer_entity.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-# frozen_string_literal: true
-
-class MergeRequestReviewerEntity < ::API::Entities::UserBasic
- expose :can_merge do |reviewer, options|
- options[:merge_request]&.can_be_merged_by?(reviewer)
- end
-end
-
-MergeRequestReviewerEntity.prepend_if_ee('EE::MergeRequestReviewerEntity')
diff --git a/app/serializers/merge_request_sidebar_extras_entity.rb b/app/serializers/merge_request_sidebar_extras_entity.rb
index 9db8e52abef..261b6e8e519 100644
--- a/app/serializers/merge_request_sidebar_extras_entity.rb
+++ b/app/serializers/merge_request_sidebar_extras_entity.rb
@@ -2,10 +2,10 @@
class MergeRequestSidebarExtrasEntity < IssuableSidebarExtrasEntity
expose :assignees do |merge_request|
- MergeRequestAssigneeEntity.represent(merge_request.assignees, merge_request: merge_request)
+ MergeRequestUserEntity.represent(merge_request.assignees, merge_request: merge_request)
end
expose :reviewers, if: -> (m) { m.allows_reviewers? } do |merge_request|
- MergeRequestReviewerEntity.represent(merge_request.reviewers, merge_request: merge_request)
+ MergeRequestUserEntity.represent(merge_request.reviewers, merge_request: merge_request)
end
end
diff --git a/app/serializers/merge_request_user_entity.rb b/app/serializers/merge_request_user_entity.rb
index 53257b0602c..604c9cabd50 100644
--- a/app/serializers/merge_request_user_entity.rb
+++ b/app/serializers/merge_request_user_entity.rb
@@ -1,26 +1,9 @@
# frozen_string_literal: true
-class MergeRequestUserEntity < CurrentUserEntity
- include RequestAwareEntity
- include BlobHelper
- include TreeHelper
-
- expose :can_fork do |user|
- can?(user, :fork_project, request.project) if project
- end
-
- expose :can_create_merge_request do |user|
- project && can?(user, :create_merge_request_in, project)
- end
-
- expose :fork_path, if: -> (*) { project } do |user|
- params = edit_blob_fork_params("Edit")
- project_forks_path(project, namespace_key: user.namespace.id, continue: params)
- end
-
- def project
- return false unless request.respond_to?(:project) && request.project
-
- request.project
+class MergeRequestUserEntity < ::API::Entities::UserBasic
+ expose :can_merge do |reviewer, options|
+ options[:merge_request]&.can_be_merged_by?(reviewer)
end
end
+
+MergeRequestUserEntity.prepend_if_ee('EE::MergeRequestUserEntity')
diff --git a/app/serializers/merge_request_widget_entity.rb b/app/serializers/merge_request_widget_entity.rb
index e46b269ea35..afd4d5b9a2b 100644
--- a/app/serializers/merge_request_widget_entity.rb
+++ b/app/serializers/merge_request_widget_entity.rb
@@ -2,6 +2,9 @@
class MergeRequestWidgetEntity < Grape::Entity
include RequestAwareEntity
+ include ProjectsHelper
+ include ApplicationHelper
+ include ApplicationSettingsHelper
SUGGEST_PIPELINE = 'suggest_pipeline'
@@ -48,6 +51,10 @@ class MergeRequestWidgetEntity < Grape::Entity
help_page_path('user/project/merge_requests/resolve_conflicts.md')
end
+ expose :reviewing_and_managing_merge_requests_docs_path do |merge_request|
+ help_page_path('user/project/merge_requests/reviewing_and_managing_merge_requests.md', anchor: "checkout-merge-requests-locally-through-the-head-ref")
+ end
+
expose :merge_request_pipelines_docs_path do |merge_request|
help_page_path('ci/merge_request_pipelines/index.md')
end
@@ -67,15 +74,15 @@ class MergeRequestWidgetEntity < Grape::Entity
)
end
- expose :user_callouts_path, if: -> (*) { Feature.enabled?(:suggest_pipeline, default_enabled: true) } do |_merge_request|
+ expose :user_callouts_path do |_merge_request|
user_callouts_path
end
- expose :suggest_pipeline_feature_id, if: -> (*) { Feature.enabled?(:suggest_pipeline, default_enabled: true) } do |_merge_request|
+ expose :suggest_pipeline_feature_id do |_merge_request|
SUGGEST_PIPELINE
end
- expose :is_dismissed_suggest_pipeline, if: -> (*) { Feature.enabled?(:suggest_pipeline, default_enabled: true) } do |_merge_request|
+ expose :is_dismissed_suggest_pipeline do |_merge_request|
current_user && current_user.dismissed_callout?(feature_name: SUGGEST_PIPELINE)
end
@@ -87,6 +94,10 @@ class MergeRequestWidgetEntity < Grape::Entity
new_project_pipeline_path(merge_request.project)
end
+ expose :source_project_default_url do |merge_request|
+ merge_request.source_project && default_url_to_repo(merge_request.source_project)
+ end
+
# Rendering and redacting Markdown can be expensive. These links are
# just nice to have in the merge request widget, so only
# include them if they are explicitly requested on first load.
diff --git a/app/serializers/paginated_diff_entity.rb b/app/serializers/paginated_diff_entity.rb
index fe59686278c..1118b1aa4fe 100644
--- a/app/serializers/paginated_diff_entity.rb
+++ b/app/serializers/paginated_diff_entity.rb
@@ -13,7 +13,7 @@ class PaginatedDiffEntity < Grape::Entity
submodule_links = Gitlab::SubmoduleLinks.new(merge_request.project.repository)
DiffFileEntity.represent(
- diffs.diff_files,
+ diffs.diff_files(sorted: true),
options.merge(
submodule_links: submodule_links,
code_navigation_path: code_navigation_path(diffs),
diff --git a/app/serializers/pipeline_serializer.rb b/app/serializers/pipeline_serializer.rb
index a45214670fa..ab2c6dfeace 100644
--- a/app/serializers/pipeline_serializer.rb
+++ b/app/serializers/pipeline_serializer.rb
@@ -75,3 +75,5 @@ class PipelineSerializer < BaseSerializer
]
end
end
+
+PipelineSerializer.prepend_if_ee('EE::PipelineSerializer')
diff --git a/app/serializers/rollout_status_entity.rb b/app/serializers/rollout_status_entity.rb
new file mode 100644
index 00000000000..9f4c844859b
--- /dev/null
+++ b/app/serializers/rollout_status_entity.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+class RolloutStatusEntity < Grape::Entity
+ include RequestAwareEntity
+
+ expose :status, as: :status
+
+ # To be removed in API v5
+ expose :has_legacy_app_label do |_rollout_status|
+ false
+ end
+
+ expose :instances, if: -> (rollout_status, _) { rollout_status.found? }
+ expose :completion, if: -> (rollout_status, _) { rollout_status.found? }
+ expose :complete?, as: :is_completed, if: -> (rollout_status, _) { rollout_status.found? }
+ expose :canary_ingress, using: RolloutStatuses::IngressEntity, expose_nil: false,
+ if: -> (rollout_status, _) { rollout_status.found? && rollout_status.canary_ingress_exists? }
+end
diff --git a/app/serializers/rollout_statuses/ingress_entity.rb b/app/serializers/rollout_statuses/ingress_entity.rb
new file mode 100644
index 00000000000..a68d936b86c
--- /dev/null
+++ b/app/serializers/rollout_statuses/ingress_entity.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+module RolloutStatuses
+ class IngressEntity < Grape::Entity
+ expose :canary_weight
+ end
+end
diff --git a/app/serializers/user_entity.rb b/app/serializers/user_entity.rb
index 8909ae8df2c..9386c06b87a 100644
--- a/app/serializers/user_entity.rb
+++ b/app/serializers/user_entity.rb
@@ -2,3 +2,5 @@
class UserEntity < API::Entities::UserPath
end
+
+UserEntity.prepend_if_ee('EE::UserEntity')
diff --git a/app/serializers/user_serializer.rb b/app/serializers/user_serializer.rb
index d988caea92d..dfbd787298d 100644
--- a/app/serializers/user_serializer.rb
+++ b/app/serializers/user_serializer.rb
@@ -8,7 +8,7 @@ class UserSerializer < BaseSerializer
merge_request = opts[:project].merge_requests.find_by_iid!(params[:merge_request_iid])
preload_max_member_access(merge_request.project, Array(resource))
- super(resource, opts.merge(merge_request: merge_request), MergeRequestAssigneeEntity)
+ super(resource, opts.merge(merge_request: merge_request), MergeRequestUserEntity)
else
super
end
@@ -20,3 +20,5 @@ class UserSerializer < BaseSerializer
project.team.max_member_access_for_user_ids(users.map(&:id))
end
end
+
+UserSerializer.prepend_if_ee('EE::UserSerializer')