From e6f529dd4eb2cffdada4855ee55037e4a414c96c Mon Sep 17 00:00:00 2001 From: Magnus Hagander Date: Mon, 20 Jun 2022 20:29:36 +0200 Subject: [PATCH] Store the git hash of developer docs loaded This will require some further updates on the loading side of things before it's fully valid, but for now track and show a link to the git hash used to build developer docs *if* one is specified. We only track it for devel (because releases have release numbers) and we only show it in the cases where we would already show the loading time. --- pgweb/core/migrations/0006_version_docsgit.py | 18 ++++++++++++++++++ pgweb/core/models.py | 1 + pgweb/docs/views.py | 6 +++++- templates/docs/docspage.html | 2 +- tools/docs/docload.py | 12 +++++++++++- 5 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 pgweb/core/migrations/0006_version_docsgit.py diff --git a/pgweb/core/migrations/0006_version_docsgit.py b/pgweb/core/migrations/0006_version_docsgit.py new file mode 100644 index 00000000..0afcccaa --- /dev/null +++ b/pgweb/core/migrations/0006_version_docsgit.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.11 on 2022-06-20 18:16 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0005_remove_version_relnotes'), + ] + + operations = [ + migrations.AddField( + model_name='version', + name='docsgit', + field=models.CharField(blank=True, help_text='The git hash of the loaded docs, for devel version', max_length=40), + ), + ] diff --git a/pgweb/core/models.py b/pgweb/core/models.py index df29ed37..317031d1 100644 --- a/pgweb/core/models.py +++ b/pgweb/core/models.py @@ -25,6 +25,7 @@ class Version(models.Model): supported = models.BooleanField(null=False, blank=False, default=True) testing = models.IntegerField(null=False, blank=False, default=0, help_text="Testing level of this release. latestminor indicates beta/rc number", choices=TESTING_CHOICES) 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.") + docsgit = models.CharField(max_length=40, null=False, blank=True, help_text="The git hash of the loaded docs, for devel version") 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 final release date for this tree") diff --git a/pgweb/docs/views.py b/pgweb/docs/views.py index 436e2357..573be6a7 100644 --- a/pgweb/docs/views.py +++ b/pgweb/docs/views.py @@ -30,11 +30,14 @@ def _versioned_404(msg, version): @content_sources('style', "'unsafe-inline'") def docpage(request, version, filename): loaddate = None + loadgit = None if version == 'current': ver = Version.objects.filter(current=True)[0].tree elif version == 'devel': ver = Decimal(0) - loaddate = Version.objects.get(tree=Decimal(0)).docsloaded + verobj = Version.objects.get(tree=Decimal(0)) + loaddate = verobj.docsloaded + loadgit = verobj.docsgit else: ver = Decimal(version) if ver == Decimal(0): @@ -155,6 +158,7 @@ def docpage(request, version, filename): 'title': page.title, 'doc_index_filename': indexname, 'loaddate': loaddate, + 'loadgit': loadgit, 'og': { 'url': '/docs/{}/{}'.format(page.display_version(), page.file), 'time': page.version.docsloaded, diff --git a/templates/docs/docspage.html b/templates/docs/docspage.html index d2c9341d..a99caef7 100644 --- a/templates/docs/docspage.html +++ b/templates/docs/docspage.html @@ -80,7 +80,7 @@
- DocumentationPostgreSQL {{page.display_version}}{%if loaddate%} ({{loaddate|date:"Y-m-d H:i:s"}}){%endif%} + DocumentationPostgreSQL {{page.display_version}}{%if loaddate%} ({{loaddate|date:"Y-m-d H:i:s"}}{%if loadgit%} - git commit {{loadgit}}{%endif%}){%endif%}
diff --git a/tools/docs/docload.py b/tools/docs/docload.py index 1807e214..4eff9858 100755 --- a/tools/docs/docload.py +++ b/tools/docs/docload.py @@ -104,6 +104,8 @@ parser.add_option("-q", "--quiet", action="store_true", dest="quiet", help="Run quietly (no output at all)") parser.add_option("-v", "--verbose", action="store_true", dest="verbose", help="Run verbosely") +parser.add_option("-g", "--git", type=str, + help="Specify git hash used to load") (options, args) = parser.parse_args() if len(args) != 2: @@ -233,7 +235,15 @@ if not quiet: if numchanges > 0: # Update the docs loaded timestamp - curs.execute("UPDATE core_version SET docsloaded=CURRENT_TIMESTAMP WHERE tree=%(v)s", {'v': ver}) + if ver == "0" and options.git: + githash = options.git + else: + githash = '' + + curs.execute("UPDATE core_version SET docsloaded=CURRENT_TIMESTAMP, docsgit=%(git)s WHERE tree=%(v)s", { + 'v': ver, + 'git': githash, + }) # Issue varnish purge for all docs of this version if ver == "0":