Fix sitemap date format - use YYYY-MM-DD for sitemaps, proper ISO 8601 for Atom
This commit is contained in:
parent
3dfbac6f3e
commit
82327c1d0b
1 changed files with 22 additions and 14 deletions
|
|
@ -14,12 +14,20 @@ from pyramid.view import view_config
|
|||
from ..models.product import Product
|
||||
|
||||
|
||||
def timestamp_to_iso8601(timestamp):
|
||||
"""Convert millisecond timestamp to ISO 8601 format."""
|
||||
def timestamp_to_sitemap_date(timestamp):
|
||||
"""Convert millisecond timestamp to YYYY-MM-DD format for sitemaps."""
|
||||
if timestamp:
|
||||
dt = datetime.fromtimestamp(timestamp / 1000.0)
|
||||
return dt.strftime("%Y-%m-%dT%H:%M:%S+00:00")
|
||||
return datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S+00:00")
|
||||
dt = datetime.utcfromtimestamp(timestamp / 1000.0)
|
||||
return dt.strftime("%Y-%m-%d")
|
||||
return datetime.utcnow().strftime("%Y-%m-%d")
|
||||
|
||||
|
||||
def timestamp_to_atom_datetime(timestamp):
|
||||
"""Convert millisecond timestamp to ISO 8601 format for Atom feeds."""
|
||||
if timestamp:
|
||||
dt = datetime.utcfromtimestamp(timestamp / 1000.0)
|
||||
return dt.strftime("%Y-%m-%dT%H:%M:%SZ")
|
||||
return datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ")
|
||||
|
||||
|
||||
def timestamp_to_rfc822(timestamp):
|
||||
|
|
@ -58,14 +66,14 @@ def build_sitemap_xml(request, shop, products, content):
|
|||
# Shop home page
|
||||
url = SubElement(urlset, "url")
|
||||
SubElement(url, "loc").text = shop.absolute_url(request)
|
||||
SubElement(url, "lastmod").text = timestamp_to_iso8601(shop.updated_timestamp)
|
||||
SubElement(url, "lastmod").text = timestamp_to_sitemap_date(shop.updated_timestamp)
|
||||
SubElement(url, "changefreq").text = "weekly"
|
||||
SubElement(url, "priority").text = "1.0"
|
||||
|
||||
# Shop about page
|
||||
url = SubElement(urlset, "url")
|
||||
SubElement(url, "loc").text = shop.absolute_about_url(request)
|
||||
SubElement(url, "lastmod").text = timestamp_to_iso8601(shop.updated_timestamp)
|
||||
SubElement(url, "lastmod").text = timestamp_to_sitemap_date(shop.updated_timestamp)
|
||||
SubElement(url, "changefreq").text = "monthly"
|
||||
SubElement(url, "priority").text = "0.5"
|
||||
|
||||
|
|
@ -73,7 +81,7 @@ def build_sitemap_xml(request, shop, products, content):
|
|||
if shop.terms_of_service_raw:
|
||||
url = SubElement(urlset, "url")
|
||||
SubElement(url, "loc").text = shop.absolute_terms_url(request)
|
||||
SubElement(url, "lastmod").text = timestamp_to_iso8601(shop.updated_timestamp)
|
||||
SubElement(url, "lastmod").text = timestamp_to_sitemap_date(shop.updated_timestamp)
|
||||
SubElement(url, "changefreq").text = "yearly"
|
||||
SubElement(url, "priority").text = "0.3"
|
||||
|
||||
|
|
@ -81,7 +89,7 @@ def build_sitemap_xml(request, shop, products, content):
|
|||
if shop.privacy_policy_raw:
|
||||
url = SubElement(urlset, "url")
|
||||
SubElement(url, "loc").text = shop.absolute_privacy_policy_url(request)
|
||||
SubElement(url, "lastmod").text = timestamp_to_iso8601(shop.updated_timestamp)
|
||||
SubElement(url, "lastmod").text = timestamp_to_sitemap_date(shop.updated_timestamp)
|
||||
SubElement(url, "changefreq").text = "yearly"
|
||||
SubElement(url, "priority").text = "0.3"
|
||||
|
||||
|
|
@ -89,7 +97,7 @@ def build_sitemap_xml(request, shop, products, content):
|
|||
for product in products:
|
||||
url = SubElement(urlset, "url")
|
||||
SubElement(url, "loc").text = product.absolute_url(request)
|
||||
SubElement(url, "lastmod").text = timestamp_to_iso8601(product.updated_timestamp)
|
||||
SubElement(url, "lastmod").text = timestamp_to_sitemap_date(product.updated_timestamp)
|
||||
SubElement(url, "changefreq").text = "weekly"
|
||||
SubElement(url, "priority").text = "0.8"
|
||||
|
||||
|
|
@ -97,7 +105,7 @@ def build_sitemap_xml(request, shop, products, content):
|
|||
for item in content:
|
||||
url = SubElement(urlset, "url")
|
||||
SubElement(url, "loc").text = item.absolute_url(request)
|
||||
SubElement(url, "lastmod").text = timestamp_to_iso8601(item.updated_timestamp)
|
||||
SubElement(url, "lastmod").text = timestamp_to_sitemap_date(item.updated_timestamp)
|
||||
SubElement(url, "changefreq").text = "weekly"
|
||||
SubElement(url, "priority").text = "0.7"
|
||||
|
||||
|
|
@ -150,7 +158,7 @@ def build_atom_xml(request, shop, products, content):
|
|||
|
||||
SubElement(feed, "title").text = shop.name
|
||||
SubElement(feed, "id").text = shop.absolute_url(request)
|
||||
SubElement(feed, "updated").text = timestamp_to_iso8601(shop.updated_timestamp)
|
||||
SubElement(feed, "updated").text = timestamp_to_atom_datetime(shop.updated_timestamp)
|
||||
|
||||
# Self link
|
||||
self_link = SubElement(feed, "link")
|
||||
|
|
@ -177,8 +185,8 @@ def build_atom_xml(request, shop, products, content):
|
|||
entry = SubElement(feed, "entry")
|
||||
SubElement(entry, "title").text = item_obj.title
|
||||
SubElement(entry, "id").text = item_obj.absolute_url(request)
|
||||
SubElement(entry, "updated").text = timestamp_to_iso8601(item_obj.updated_timestamp)
|
||||
SubElement(entry, "published").text = timestamp_to_iso8601(item_obj.created_timestamp)
|
||||
SubElement(entry, "updated").text = timestamp_to_atom_datetime(item_obj.updated_timestamp)
|
||||
SubElement(entry, "published").text = timestamp_to_atom_datetime(item_obj.created_timestamp)
|
||||
|
||||
link = SubElement(entry, "link")
|
||||
link.set("href", item_obj.absolute_url(request))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue