summaryrefslogtreecommitdiff
path: root/app/presenters
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-12-20 14:22:11 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2022-12-20 14:22:11 +0000
commit0c872e02b2c822e3397515ec324051ff540f0cd5 (patch)
treece2fb6ce7030e4dad0f4118d21ab6453e5938cdd /app/presenters
parentf7e05a6853b12f02911494c4b3fe53d9540d74fc (diff)
downloadgitlab-ce-0c872e02b2c822e3397515ec324051ff540f0cd5.tar.gz
Add latest changes from gitlab-org/gitlab@15-7-stable-eev15.7.0-rc42
Diffstat (limited to 'app/presenters')
-rw-r--r--app/presenters/blob_presenter.rb2
-rw-r--r--app/presenters/ci/freeze_period_presenter.rb13
-rw-r--r--app/presenters/group_member_presenter.rb4
-rw-r--r--app/presenters/member_presenter.rb4
-rw-r--r--app/presenters/packages/pypi/simple_package_versions_presenter.rb5
-rw-r--r--app/presenters/project_member_presenter.rb6
-rw-r--r--app/presenters/project_presenter.rb16
-rw-r--r--app/presenters/search_service_presenter.rb8
8 files changed, 44 insertions, 14 deletions
diff --git a/app/presenters/blob_presenter.rb b/app/presenters/blob_presenter.rb
index 92dcfeed104..f25436c54be 100644
--- a/app/presenters/blob_presenter.rb
+++ b/app/presenters/blob_presenter.rb
@@ -98,7 +98,7 @@ class BlobPresenter < Gitlab::View::Presenter::Delegated
end
def permalink_path
- url_helpers.project_blob_path(project, File.join(project.repository.commit.sha, blob.path))
+ url_helpers.project_blob_path(project, File.join(project.repository.commit(blob.commit_id).sha, blob.path))
end
def environment_formatted_external_url
diff --git a/app/presenters/ci/freeze_period_presenter.rb b/app/presenters/ci/freeze_period_presenter.rb
new file mode 100644
index 00000000000..064197f34dd
--- /dev/null
+++ b/app/presenters/ci/freeze_period_presenter.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+module Ci
+ class FreezePeriodPresenter < Gitlab::View::Presenter::Delegated
+ presents ::Ci::FreezePeriod, as: :freeze_period
+
+ def start_time
+ return freeze_period.time_start if freeze_period.active?
+
+ freeze_period.next_time_start
+ end
+ end
+end
diff --git a/app/presenters/group_member_presenter.rb b/app/presenters/group_member_presenter.rb
index 88facc3608d..18554df4bd9 100644
--- a/app/presenters/group_member_presenter.rb
+++ b/app/presenters/group_member_presenter.rb
@@ -3,6 +3,10 @@
class GroupMemberPresenter < MemberPresenter
presents ::GroupMember
+ def last_owner?
+ member.last_owner_of_the_group?
+ end
+
private
def admin_member_permission
diff --git a/app/presenters/member_presenter.rb b/app/presenters/member_presenter.rb
index 67d044dd01c..4cdaca3c39e 100644
--- a/app/presenters/member_presenter.rb
+++ b/app/presenters/member_presenter.rb
@@ -37,6 +37,10 @@ class MemberPresenter < Gitlab::View::Presenter::Delegated
false
end
+ def last_owner?
+ raise NotImplementedError
+ end
+
private
def admin_member_permission
diff --git a/app/presenters/packages/pypi/simple_package_versions_presenter.rb b/app/presenters/packages/pypi/simple_package_versions_presenter.rb
index 0baa0714463..2bccaf4db72 100644
--- a/app/presenters/packages/pypi/simple_package_versions_presenter.rb
+++ b/app/presenters/packages/pypi/simple_package_versions_presenter.rb
@@ -13,7 +13,10 @@ module Packages
def links
refs = []
- available_packages.each_batch do |batch|
+ available_packages.each_batch do |relation|
+ batch = relation.preload_files
+ .preload_pypi_metadatum
+
batch.each do |package|
package_files = package.installable_package_files
diff --git a/app/presenters/project_member_presenter.rb b/app/presenters/project_member_presenter.rb
index da24972775a..bb389b7a3ab 100644
--- a/app/presenters/project_member_presenter.rb
+++ b/app/presenters/project_member_presenter.rb
@@ -21,6 +21,12 @@ class ProjectMemberPresenter < MemberPresenter
super
end
+ def last_owner?
+ # all owners of a project in a group are removable.
+ # but in personal projects, the namespace holder is not removable.
+ member.holder_of_the_personal_namespace?
+ end
+
private
def admin_member_permission
diff --git a/app/presenters/project_presenter.rb b/app/presenters/project_presenter.rb
index 0be13197343..4d1a9b3f589 100644
--- a/app/presenters/project_presenter.rb
+++ b/app/presenters/project_presenter.rb
@@ -68,7 +68,7 @@ class ProjectPresenter < Gitlab::View::Presenter::Delegated
user_view = current_user.project_view
- if can?(current_user, :download_code, project)
+ if can?(current_user, :read_code, project)
user_view
elsif user_view == 'activity'
'activity'
@@ -179,7 +179,7 @@ class ProjectPresenter < Gitlab::View::Presenter::Delegated
return if releases_count < 1
AnchorData.new(true,
- statistic_icon('rocket') +
+ statistic_icon('deployments') +
n_('%{strong_start}%{release_count}%{strong_end} Release', '%{strong_start}%{release_count}%{strong_end} Releases', releases_count).html_safe % {
release_count: number_with_delimiter(releases_count),
strong_start: '<strong class="project-stat-value">'.html_safe,
@@ -290,16 +290,10 @@ class ProjectPresenter < Gitlab::View::Presenter::Delegated
'btn-default',
nil,
'license')
- else
- if can_current_user_push_to_default_branch?
- AnchorData.new(false,
+ elsif can_current_user_push_to_default_branch?
+ AnchorData.new(false,
content_tag(:span, statistic_icon + _('Add LICENSE'), class: 'add-license-link d-flex'),
empty_repo? ? add_license_ide_path : add_license_path)
- else
- AnchorData.new(false,
- icon + content_tag(:span, _('No license. All rights reserved'), class: 'project-stat-value'),
- nil)
- end
end
end
@@ -423,7 +417,7 @@ class ProjectPresenter < Gitlab::View::Presenter::Delegated
end
def anonymous_project_view
- if !project.empty_repo? && can?(current_user, :download_code, project)
+ if !project.empty_repo? && can?(current_user, :read_code, project)
'files'
elsif project.wiki_repository_exists? && can?(current_user, :read_wiki, project)
'wiki'
diff --git a/app/presenters/search_service_presenter.rb b/app/presenters/search_service_presenter.rb
index 4755b88cbea..d7d959217b0 100644
--- a/app/presenters/search_service_presenter.rb
+++ b/app/presenters/search_service_presenter.rb
@@ -25,7 +25,7 @@ class SearchServicePresenter < Gitlab::View::Presenter::Delegated
case scope
when 'users'
- objects.eager_load(:status) if objects.respond_to?(:eager_load) # rubocop:disable CodeReuse/ActiveRecord
+ objects.respond_to?(:eager_load) ? objects.eager_load(:status) : objects # rubocop:disable CodeReuse/ActiveRecord
when 'commits'
prepare_commits_for_rendering(objects)
else
@@ -45,4 +45,10 @@ class SearchServicePresenter < Gitlab::View::Presenter::Delegated
def without_count?
search_objects.is_a?(Kaminari::PaginatableWithoutCount)
end
+
+ def advanced_search_enabled?
+ false
+ end
end
+
+SearchServicePresenter.prepend_mod_with('SearchServicePresenter')