summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMagnus Hagander2012-01-14 15:55:53 +0000
committerMagnus Hagander2012-01-14 15:55:53 +0000
commit78ab264578376553bdd23f2d76e47a1f14803e75 (patch)
tree54ef07f6b8e361d5b51e1869d94df52745d7078f
parentad895a76613b5d7cc9c1d8ab57bfcf22da1c4060 (diff)
Include last modified date in sitemap
-rw-r--r--pgweb/core/models.py2
-rw-r--r--pgweb/core/views.py4
-rw-r--r--pgweb/docs/struct.py18
-rw-r--r--pgweb/util/sitestruct.py2
4 files changed, 16 insertions, 10 deletions
diff --git a/pgweb/core/models.py b/pgweb/core/models.py
index 54e9b4dd..50248f8f 100644
--- a/pgweb/core/models.py
+++ b/pgweb/core/models.py
@@ -12,7 +12,7 @@ class Version(PgModel, models.Model):
relnotes = models.CharField(max_length=32, null=False, blank=False)
current = models.BooleanField(null=False, blank=False, default=False)
supported = models.BooleanField(null=False, blank=False, default=True)
- docsloaded = models.DateTimeField(null=True, blank=True, help_text="The timestamp of the latest docs load. Really only used for developer docs for now, but set for all of them.")
+ docsloaded = models.DateTimeField(null=True, blank=True, help_text="The timestamp of the latest docs load. Used to control indexing and info on developer docs.")
firstreldate = models.DateField(null=False, blank=False, help_text="The date of the .0 release in this tree")
eoldate = models.DateField(null=False, blank=False, help_text="The planned EOL date for this tree")
diff --git a/pgweb/core/views.py b/pgweb/core/views.py
index d3d62fbf..6dce53c0 100644
--- a/pgweb/core/views.py
+++ b/pgweb/core/views.py
@@ -138,8 +138,10 @@ def sitemap(request):
pages+=1
x.startElement('url', {})
x.add_xml_element('loc', 'http://www.postgresql.org/%s' % urllib.quote(p[0]))
- if p[1]:
+ if len(p) > 1 and p[1]:
x.add_xml_element('priority', unicode(p[1]))
+ if len(p) > 2 and p[2]:
+ x.add_xml_element('lastmod', p[2].isoformat() + "Z")
x.endElement('url')
x.endElement('urlset')
x.endDocument()
diff --git a/pgweb/docs/struct.py b/pgweb/docs/struct.py
index c302886b..dcc66618 100644
--- a/pgweb/docs/struct.py
+++ b/pgweb/docs/struct.py
@@ -1,16 +1,20 @@
from datetime import date
-from models import DocPage
+from django.db import connection
from core.models import Version
def get_struct():
now = date.today()
currentversion = Version.objects.get(current=True)
- for d in DocPage.objects.all().extra(where=['version in (select tree from core_version where supported)']):
- yield ('docs/%s/static/%s' % (d.version, d.file),
- None)
+ # Can't use a model here, because we don't (for some reason) have a
+ # hard link to the versions table here
+ curs = connection.cursor()
+ curs.execute("SELECT d.version, d.file, v.docsloaded FROM docs d INNER JOIN core_version v ON v.tree=d.version WHERE v.supported")
+ for version, filename, loaded in curs.fetchall():
+ yield ('docs/%s/static/%s' % (version, filename),
+ None, loaded)
#FIXME ^ do something smart with priorities on older
#versions
- if d.version == currentversion.tree:
- yield ('docs/current/static/%s' % d.file,
- 1.0)
+ if version == currentversion.tree:
+ yield ('docs/current/static/%s' % filename,
+ 1.0, loaded)
diff --git a/pgweb/util/sitestruct.py b/pgweb/util/sitestruct.py
index c5ddf803..01153d80 100644
--- a/pgweb/util/sitestruct.py
+++ b/pgweb/util/sitestruct.py
@@ -4,7 +4,7 @@ def get_all_pages_struct():
"""
Return an iterator over all distinct pages on the site.
Each page is returned as a tuple consisting of:
- (url, search weight)
+ (url, search weight, last_modified)
It will do so by looking for the module "struct" in all
installed applications, and calling the get_struct() function