Commit 6e6aa12e authored by Rémy Coutable's avatar Rémy Coutable

Merge branch 'sh-fix-forks-with-no-gravatar' into 'master'

Fix Error 500 when forking projects with Gravatar disabled

Closes #50254

See merge request gitlab-org/gitlab-ce!21985
parents f13636b6 b49e6b41
# frozen_string_literal: true
module AvatarsHelper
def project_icon(project_id, options = {})
source_icon(Project, project_id, options)
def project_icon(project, options = {})
source_icon(project, options)
end
def group_icon(group_id, options = {})
source_icon(Group, group_id, options)
def group_icon(group, options = {})
source_icon(group, options)
end
# Takes both user and email and returns the avatar_icon by
......@@ -110,16 +110,11 @@ module AvatarsHelper
private
def source_icon(klass, source_id, options = {})
source =
if source_id.respond_to?(:avatar_url)
source_id
else
klass.find_by_full_path(source_id)
end
def source_icon(source, options = {})
avatar_url = source.try(:avatar_url)
if source.avatar_url
image_tag source.avatar_url, options
if avatar_url
image_tag avatar_url, options
else
source_identicon(source, options)
end
......
......@@ -47,7 +47,7 @@
.form-group
- if @project.avatar?
.avatar-container.s160.append-bottom-15
= project_icon(@project.full_path, alt: '', class: 'avatar project-avatar s160', width: 160, height: 160)
= project_icon(@project, alt: '', class: 'avatar project-avatar s160', width: 160, height: 160)
- if @project.avatar_in_git
%p.light
= _("Project avatar in repository: %{link}").html_safe % { link: @project.avatar_in_git }
......
......@@ -5,7 +5,7 @@
.bordered-box.fork-thumbnail.text-center.prepend-left-default.append-right-default.prepend-top-default.append-bottom-default.forked
= link_to project_path(forked_project) do
- if /no_((\w*)_)*avatar/.match(avatar)
= project_icon(namespace, class: "avatar s100 identicon")
= group_icon(namespace, class: "avatar s100 identicon")
- else
.avatar-container.s100
= image_tag(avatar, class: "avatar s100")
......@@ -18,7 +18,7 @@
class: ("disabled has-tooltip" unless can_create_project),
title: (_('You have reached your project limit') unless can_create_project) do
- if /no_((\w*)_)*avatar/.match(avatar)
= project_icon(namespace, class: "avatar s100 identicon")
= group_icon(namespace, class: "avatar s100 identicon")
- else
.avatar-container.s100
= image_tag(avatar, class: "avatar s100")
......
---
title: Fix Error 500 when forking projects with Gravatar disabled
merge_request:
author:
type: fixed
......@@ -53,6 +53,18 @@ describe 'Project fork' do
expect(current_path).to have_content(/#{user.namespace.name}/i)
end
it 'shows avatars when Gravatar is disabled' do
stub_application_setting(gravatar_enabled: false)
visit project_path(project)
click_link 'Fork'
page.within('.fork-thumbnail-container') do
expect(page).to have_css('div.identicon')
end
end
it 'shows the forked project on the list' do
visit project_path(project)
......
......@@ -32,18 +32,6 @@ describe AvatarsHelper do
end
end
context 'when providing a project path' do
it_behaves_like 'resource with a default avatar', 'project' do
let(:resource) { create(:project, name: 'foo') }
let(:helper_args) { [resource.full_path] }
end
it_behaves_like 'resource with a custom avatar', 'project' do
let(:resource) { create(:project, :public, avatar: File.open(uploaded_image_temp_path)) }
let(:helper_args) { [resource.full_path] }
end
end
context 'when providing a group' do
it_behaves_like 'resource with a default avatar', 'group' do
let(:resource) { create(:group, name: 'foo') }
......@@ -55,18 +43,6 @@ describe AvatarsHelper do
let(:helper_args) { [resource] }
end
end
context 'when providing a group path' do
it_behaves_like 'resource with a default avatar', 'group' do
let(:resource) { create(:group, name: 'foo') }
let(:helper_args) { [resource.full_path] }
end
it_behaves_like 'resource with a custom avatar', 'group' do
let(:resource) { create(:group, avatar: File.open(uploaded_image_temp_path)) }
let(:helper_args) { [resource.full_path] }
end
end
end
describe '#avatar_icon_for' do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment