mirror of
https://github.com/postgres/pgweb.git
synced 2025-08-05 18:34:52 +00:00
56 lines
2.1 KiB
Python
56 lines
2.1 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)
|