mirror of
https://github.com/postgres/pgweb.git
synced 2025-08-13 13:12:42 +00:00

While the permanent redirect will fix this over the course of time, it is still better that we do not reference the old path from pgweb.
54 lines
1.9 KiB
Python
54 lines
1.9 KiB
Python
from django.db import connection
|
|
from pgweb.core.models import Version
|
|
|
|
def get_struct():
|
|
currentversion = Version.objects.get(current=True)
|
|
|
|
# Can't use a model here, because we don't (for some reason) have a
|
|
# hard link to the versions table here
|
|
# Make sure we exclude the /devel/ docs because they are blocked by
|
|
# robots.txt, and thus will cause tohusands of warnings in search
|
|
# engines.
|
|
curs = connection.cursor()
|
|
curs.execute("SELECT d.version, d.file, v.docsloaded, v.testing FROM docs d INNER JOIN core_version v ON v.tree=d.version WHERE version > 0 ORDER BY d.version DESC")
|
|
|
|
# Start priority is higher than average but lower than what we assign
|
|
# to the current version of the docs.
|
|
docprio = 0.8
|
|
lastversion = None
|
|
|
|
for version, filename, loaded, testing in curs.fetchall():
|
|
# Decrease the priority with 0.1 for every version of the docs
|
|
# we move back in time, until we reach 0.1. At 0.1 it's unlikely
|
|
# to show up in a general search, but still possible to reach
|
|
# through version specific searching for example.
|
|
if lastversion != version:
|
|
if docprio > 0.2:
|
|
docprio -= 0.1
|
|
lastversion = version
|
|
|
|
if version >= 10:
|
|
version = int(version)
|
|
|
|
yield ('docs/%s/%s' % (version, filename),
|
|
testing and 0.1 or docprio, # beta/rc versions always get 0.1 in prio
|
|
loaded)
|
|
|
|
# Also yield the current version urls, with the highest
|
|
# possible priority
|
|
if version == currentversion.tree:
|
|
yield ('docs/current/%s' % filename,
|
|
1.0, loaded)
|
|
|
|
# For our internal sitemap (used only by our own search engine),
|
|
# include the devel version of the docs (and only those, since the
|
|
# other versions are already included)
|
|
def get_internal_struct():
|
|
curs = connection.cursor()
|
|
curs.execute("SELECT d.file, v.docsloaded FROM docs d INNER JOIN core_version v ON v.tree=d.version WHERE version = 0")
|
|
|
|
for filename, loaded in curs.fetchall():
|
|
yield ('docs/devel/%s' % (filename, ),
|
|
0.1,
|
|
loaded)
|