diff options
author | Magnus Hagander | 2012-01-14 15:55:53 +0000 |
---|---|---|
committer | Magnus Hagander | 2012-01-14 15:55:53 +0000 |
commit | 78ab264578376553bdd23f2d76e47a1f14803e75 (patch) | |
tree | 54ef07f6b8e361d5b51e1869d94df52745d7078f | |
parent | ad895a76613b5d7cc9c1d8ab57bfcf22da1c4060 (diff) |
Include last modified date in sitemap
-rw-r--r-- | pgweb/core/models.py | 2 | ||||
-rw-r--r-- | pgweb/core/views.py | 4 | ||||
-rw-r--r-- | pgweb/docs/struct.py | 18 | ||||
-rw-r--r-- | pgweb/util/sitestruct.py | 2 |
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 |