Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
D
django
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
django
Commits
31668803
Kaydet (Commit)
31668803
authored
Nis 10, 2019
tarafından
Tobias Kunze
Kaydeden (comit)
Mariusz Felisiak
May 06, 2019
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Fixed #29352 -- Allowed specifying a Feed language.
üst
86a3ad35
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
30 additions
and
5 deletions
+30
-5
views.py
django/contrib/syndication/views.py
+3
-2
syndication.txt
docs/ref/contrib/syndication.txt
+12
-2
3.0.txt
docs/releases/3.0.txt
+4
-1
feeds.py
tests/syndication_tests/feeds.py
+4
-0
tests.py
tests/syndication_tests/tests.py
+6
-0
urls.py
tests/syndication_tests/urls.py
+1
-0
No files found.
django/contrib/syndication/views.py
Dosyayı görüntüle @
31668803
from
calendar
import
timegm
from
django.conf
import
settings
from
django.contrib.sites.shortcuts
import
get_current_site
from
django.core.exceptions
import
ImproperlyConfigured
,
ObjectDoesNotExist
from
django.http
import
Http404
,
HttpResponse
...
...
@@ -10,6 +9,7 @@ from django.utils.encoding import iri_to_uri
from
django.utils.html
import
escape
from
django.utils.http
import
http_date
from
django.utils.timezone
import
get_default_timezone
,
is_naive
,
make_aware
from
django.utils.translation
import
get_language
def
add_domain
(
domain
,
url
,
secure
=
False
):
...
...
@@ -30,6 +30,7 @@ class Feed:
feed_type
=
feedgenerator
.
DefaultFeed
title_template
=
None
description_template
=
None
language
=
None
def
__call__
(
self
,
request
,
*
args
,
**
kwargs
):
try
:
...
...
@@ -134,7 +135,7 @@ class Feed:
subtitle
=
self
.
_get_dynamic_attr
(
'subtitle'
,
obj
),
link
=
link
,
description
=
self
.
_get_dynamic_attr
(
'description'
,
obj
),
language
=
se
ttings
.
LANGUAGE_CODE
,
language
=
se
lf
.
language
or
get_language
()
,
feed_url
=
add_domain
(
current_site
.
domain
,
self
.
_get_dynamic_attr
(
'feed_url'
,
obj
)
or
request
.
path
,
...
...
docs/ref/contrib/syndication.txt
Dosyayı görüntüle @
31668803
...
...
@@ -307,8 +307,14 @@ Language
--------
Feeds created by the syndication framework automatically include the
appropriate ``<language>`` tag (RSS 2.0) or ``xml:lang`` attribute (Atom). This
comes directly from your :setting:`LANGUAGE_CODE` setting.
appropriate ``<language>`` tag (RSS 2.0) or ``xml:lang`` attribute (Atom). By
default, this is :func:`django.utils.translation.get_language()`. You can change it
by setting the ``language`` class attribute.
.. versionchanged:: 3.0
The ``language`` class attribute was added. In older versions, the behavior
is the same as ``language = settings.LANGUAGE_CODE``.
URLs
----
...
...
@@ -406,6 +412,10 @@ This example illustrates all possible attributes and methods for a
title_template = None
description_template = None
# LANGUAGE -- Optional. This should be a string specifying a language
# code. Defaults to django.utils.translation.get_language().
language = 'de'
# TITLE -- One of the following three is required. The framework
# looks for them in this order.
...
...
docs/releases/3.0.txt
Dosyayı görüntüle @
31668803
...
...
@@ -116,7 +116,10 @@ Minor features
:mod:`django.contrib.syndication`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* ...
* Added the ``language`` class attribute to the
:class:`django.contrib.syndication.views.Feed` to customize a feed language.
The default value is :func:`~django.utils.translation.get_language()` instead
of setting:`LANGUAGE_CODE`.
Cache
~~~~~
...
...
tests/syndication_tests/feeds.py
Dosyayı görüntüle @
31668803
...
...
@@ -136,6 +136,10 @@ class TemplateContextFeed(TestRss2Feed):
return
context
class
TestLanguageFeed
(
TestRss2Feed
):
language
=
'de'
class
NaiveDatesFeed
(
TestAtomFeed
):
"""
A feed with naive (non-timezone-aware) dates.
...
...
tests/syndication_tests/tests.py
Dosyayı görüntüle @
31668803
...
...
@@ -82,6 +82,7 @@ class SyndicationFeedTest(FeedTestCase):
self
.
assertEqual
(
len
(
feed_elem
),
1
)
feed
=
feed_elem
[
0
]
self
.
assertEqual
(
feed
.
getAttribute
(
'version'
),
'2.0'
)
self
.
assertEqual
(
feed
.
getElementsByTagName
(
'language'
)[
0
]
.
firstChild
.
nodeValue
,
'en'
)
# Making sure there's only one `channel` element w/in the
# `rss` element.
...
...
@@ -363,6 +364,11 @@ class SyndicationFeedTest(FeedTestCase):
summary
=
entry
.
getElementsByTagName
(
'summary'
)[
0
]
self
.
assertEqual
(
summary
.
getAttribute
(
'type'
),
'html'
)
def
test_feed_generator_language_attribute
(
self
):
response
=
self
.
client
.
get
(
'/syndication/language/'
)
feed
=
minidom
.
parseString
(
response
.
content
)
.
firstChild
self
.
assertEqual
(
feed
.
firstChild
.
getElementsByTagName
(
'language'
)[
0
]
.
firstChild
.
nodeValue
,
'de'
)
def
test_title_escaping
(
self
):
"""
Titles are escaped correctly in RSS feeds.
...
...
tests/syndication_tests/urls.py
Dosyayı görüntüle @
31668803
...
...
@@ -15,6 +15,7 @@ urlpatterns = [
path
(
'syndication/atom/'
,
feeds
.
TestAtomFeed
()),
path
(
'syndication/latest/'
,
feeds
.
TestLatestFeed
()),
path
(
'syndication/custom/'
,
feeds
.
TestCustomFeed
()),
path
(
'syndication/language/'
,
feeds
.
TestLanguageFeed
()),
path
(
'syndication/naive-dates/'
,
feeds
.
NaiveDatesFeed
()),
path
(
'syndication/aware-dates/'
,
feeds
.
TZAwareDatesFeed
()),
path
(
'syndication/feedurl/'
,
feeds
.
TestFeedUrlFeed
()),
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment