Skip to content

Commit

Permalink
Merge pull request #41 from stuartmaxwell:rss-template-tag-improvement
Browse files Browse the repository at this point in the history
HTML link tag for RSS feed

Fixes #42
  • Loading branch information
stuartmaxwell authored Oct 29, 2024
2 parents 6759f37 + bf7cc47 commit 9046954
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 4 deletions.
2 changes: 1 addition & 1 deletion src/djpress/templates/djpress/default/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{% blog_page_title post_text="| " %}{% blog_title %}</title>
<link rel="stylesheet" href="{% static 'default/css/style.css' %}">
<link rel="alternate" type="application/rss+xml" title="Latest Posts" href="{% rss_url %}">
{% rss_link %}
</head>
<body>
<header>
Expand Down
1 change: 1 addition & 0 deletions src/djpress/templates/djpress/simple/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
<title>{% blog_page_title post_text="| " %}{% blog_title %}</title>
<link rel="stylesheet" href="{% static "simple/css/simple.min.css" %}">
<link rel="stylesheet" href="{% static "simple/css/style.css" %}">
{% rss_link %}
</head>
<body>
<header>
Expand Down
29 changes: 28 additions & 1 deletion src/djpress/templatetags/djpress_tags.py
Original file line number Diff line number Diff line change
Expand Up @@ -828,7 +828,7 @@ def page_link(


@register.simple_tag
def rss_url() -> str:
def get_rss_url() -> str:
"""Return the URL to the RSS feed.
Returns:
Expand All @@ -837,6 +837,33 @@ def rss_url() -> str:
return url_utils.get_rss_url()


@register.simple_tag
def rss_link() -> str:
"""Return an HTML link to the RSS feed.
If the RSS feed is enabled, then return an HTML link tag that points to the RSS feed. Otherwise, return an empty
string.
Example:
```django
{% rss_link %}
```
```html
<link rel="alternate" type="application/rss+xml" title="Latest Posts" href="/rss/">
```
Returns:
str: The HTML link to the RSS feed.
"""
if not djpress_settings.RSS_ENABLED:
return ""

rss_url = url_utils.get_rss_url()

return mark_safe(f'<link rel="alternate" type="application/rss+xml" title="Latest Posts" href="{rss_url}">')


@register.tag(name="post_wrap")
def post_wrapper_tag(parser: template.base.Parser, token: template.base.Token) -> helpers.BlogPostWrapper:
"""Parse the blog post wrapper tag.
Expand Down
25 changes: 23 additions & 2 deletions tests/test_templatetags_djpress_tags.py
Original file line number Diff line number Diff line change
Expand Up @@ -1543,9 +1543,30 @@ def test_page_link(test_page1):


def test_rss_url(settings):
assert settings.DJPRESS_SETTINGS["RSS_PATH"] == "test-rss"
settings.DJPRESS_SETTINGS["RSS_ENABLED"] = True

settings.DJPRESS_SETTINGS["RSS_PATH"] = "test-rss"
expected_output = "/test-rss/"
assert djpress_tags.rss_url() == expected_output
assert settings.DJPRESS_SETTINGS["RSS_PATH"] == "test-rss"
assert settings.DJPRESS_SETTINGS["RSS_ENABLED"] is True
assert djpress_tags.get_rss_url() == expected_output

settings.DJPRESS_SETTINGS["RSS_PATH"] = "foobar"
expected_output = "/foobar/"
assert settings.DJPRESS_SETTINGS["RSS_PATH"] == "foobar"
assert settings.DJPRESS_SETTINGS["RSS_ENABLED"] is True
assert djpress_tags.get_rss_url() == expected_output


def test_rss_link(settings):
settings.DJPRESS_SETTINGS["RSS_ENABLED"] = True
settings.DJPRESS_SETTINGS["RSS_PATH"] = "test-rss"
expected_output = f'<link rel="alternate" type="application/rss+xml" title="Latest Posts" href="/test-rss/">'
assert djpress_tags.rss_link() == expected_output

settings.DJPRESS_SETTINGS["RSS_ENABLED"] = False
expected_output = ""
assert djpress_tags.rss_link() == expected_output


@pytest.mark.django_db
Expand Down

0 comments on commit 9046954

Please sign in to comment.