diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-07-20 15:26:25 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-07-20 15:26:25 +0300 |
commit | a09983ae35713f5a2bbb100981116d31ce99826e (patch) | |
tree | 2ee2af7bd104d57086db360a7e6d8c9d5d43667a /app/serializers/fork_namespace_entity.rb | |
parent | 18c5ab32b738c0b6ecb4d0df3994000482f34bd8 (diff) |
Add latest changes from gitlab-org/gitlab@13-2-stable-ee
Diffstat (limited to 'app/serializers/fork_namespace_entity.rb')
-rw-r--r-- | app/serializers/fork_namespace_entity.rb | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/app/serializers/fork_namespace_entity.rb b/app/serializers/fork_namespace_entity.rb new file mode 100644 index 00000000000..068862e0951 --- /dev/null +++ b/app/serializers/fork_namespace_entity.rb @@ -0,0 +1,52 @@ +# frozen_string_literal: true + +class ForkNamespaceEntity < Grape::Entity + include ActionView::Helpers::NumberHelper + include RequestAwareEntity + include MarkupHelper + + expose :id, :name, :description, :visibility, :full_name, + :created_at, :updated_at, :avatar_url + + expose :fork_path do |namespace, options| + project_forks_path(options[:project], namespace_key: namespace.id) + end + + expose :forked_project_path do |namespace, options| + if forked_project = namespace.find_fork_of(options[:project]) + project_path(forked_project) + end + end + + expose :permission do |namespace, options| + membership(options[:current_user], namespace)&.human_access + end + + expose :relative_path do |namespace| + polymorphic_path(namespace) + end + + expose :markdown_description do |namespace| + markdown_description(namespace) + end + + expose :can_create_project do |namespace, options| + options[:current_user].can?(:create_projects, namespace) + end + + private + + # rubocop: disable CodeReuse/ActiveRecord + def membership(user, object) + return unless user + + @membership ||= user.members.find_by(source: object) + end + # rubocop: enable CodeReuse/ActiveRecord + + def markdown_description(namespace) + markdown_field(namespace, :description) + end +end + +ForkNamespaceEntity.prepend_if_ee('EE::ForkNamespaceEntity') |