Skip to content
Open
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion tests/unit/sponsors/test_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@

def test_sponsor_color_logo_img_tag(db_request):
sponsor = SponsorFactory.create()
expected = f'<img src="{sponsor.color_logo_url}" alt="" loading="lazy">'
expected = (
'<img class="sponsors__image" '
+ f'src="{sponsor.color_logo_url}" alt="" loading="lazy">'
)
assert sponsor.color_logo_img == expected


Expand Down
32 changes: 32 additions & 0 deletions tests/unit/sponsors/test_tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,38 @@ def test_update_remote_sponsor_with_same_slug_with_new_logo(
assert "Sponsor description" == db_sponsor.service


@pytest.mark.parametrize(
("level_name", "expected_footer"),
[
("Visionary", True),
("Sustainability", True),
("Partner", False),
],
)
def test_footer_set_based_on_level(
monkeypatch,
db_request,
fake_task_request,
sponsor_api_data,
level_name,
expected_footer,
):
sponsor_api_data[0]["level_name"] = level_name
response = pretend.stub(
raise_for_status=lambda: None, json=lambda: sponsor_api_data
)
requests = pretend.stub(
get=pretend.call_recorder(lambda url, headers, timeout: response)
)
monkeypatch.setattr(tasks, "requests", requests)

fake_task_request.db = db_request.db
tasks.update_pypi_sponsors(fake_task_request)

db_sponsor = db_request.db.query(Sponsor).one()
assert db_sponsor.footer is expected_footer


def test_flag_existing_psf_sponsor_to_false_if_not_present_in_api_response(
monkeypatch, db_request, fake_task_request, sponsor_api_data
):
Expand Down
5 changes: 4 additions & 1 deletion warehouse/sponsors/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,10 @@ class Sponsor(db.Model):

@property
def color_logo_img(self):
return f'<img src="{self.color_logo_url}" alt="" loading="lazy">'
return (
'<img class="sponsors__image" '
+ f'src="{self.color_logo_url}" alt="" loading="lazy">'
)

@property
def white_logo_img(self):
Expand Down
3 changes: 3 additions & 0 deletions warehouse/sponsors/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,11 @@ def update_pypi_sponsors(request):
sponsor.service = sponsor_info["description"]
sponsor.link_url = sponsor_info["sponsor_url"]
sponsor.color_logo_url = sponsor_info["logo"]
if sponsor_info.get("white_logo"):
sponsor.white_logo_url = sponsor_info["white_logo"]
sponsor.level_name = sponsor_info["level_name"]
sponsor.level_order = sponsor_info["level_order"]
sponsor.is_active = True
sponsor.psf_sponsor = True
sponsor.footer = sponsor_info["level_name"] in {"Visionary", "Sustainability"}
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This condition is no longer used in the template

sponsor.origin = "remote"
50 changes: 29 additions & 21 deletions warehouse/templates/includes/sponsors-footer.html
Original file line number Diff line number Diff line change
Expand Up @@ -14,28 +14,36 @@
<div class="sponsors">
<p class="sponsors__title">Supported by</p>
<div class="sponsors__divider"></div>
{% for sponsor in request.sponsors | sort(attribute='name') %}
{# Short-circuit if we don't have an image for them #}
{% if sponsor.white_logo_url %}
{# Check if they belong in the footer #}
{% if sponsor.infra_sponsor or sponsor.footer %}
<a class="sponsors__sponsor"
target="_blank"
rel="noopener"
href="{{ sponsor.link_url }}">
{% for sponsor in request.sponsors | selectattr('footer') | rejectattr('infra_sponsor') | sort(attribute='name') | sort(attribute='level_order') %}
{% if sponsor.white_logo_url or sponsor.color_logo_url %}
<a class="sponsors__sponsor"
target="_blank"
rel="noopener"
href="{{ sponsor.link_url }}">
{% if sponsor.white_logo_url %}
{{ sponsor.white_logo_img|camoify|safe }}
<span class="sponsors__name">{{ sponsor.name }}</span>
<span class="sponsors__service">
{# If they're an infra sponsor, we should have a service for them,
otherwise they're a PSF sponsor #}
{% if sponsor.infra_sponsor %}
{{ sponsor.service }}
{% elif sponsor.footer %}
PSF Sponsor
{% endif %}
</span>
</a>
{% endif %}
{% else %}
{{ sponsor.color_logo_img|camoify|safe }}
{% endif %}
<span class="sponsors__name">{{ sponsor.name }}</span>
<span class="sponsors__service">PSF Sponsor</span>
</a>
{% endif %}
{% endfor %}
{% for sponsor in request.sponsors | selectattr('infra_sponsor') | sort(attribute='name') %}
{% if sponsor.white_logo_url or sponsor.color_logo_url %}
<a class="sponsors__sponsor"
target="_blank"
rel="noopener"
href="{{ sponsor.link_url }}">
{% if sponsor.white_logo_url %}
{{ sponsor.white_logo_img|camoify|safe }}
{% else %}
{{ sponsor.color_logo_img|camoify|safe }}
{% endif %}
<span class="sponsors__name">{{ sponsor.name }}</span>
<span class="sponsors__service">{{ sponsor.service }}</span>
</a>
{% endif %}
{% endfor %}
</div>
Loading