diff --git a/pgweb/docs/migrations/0004_auto_20180806_1917.py b/pgweb/docs/migrations/0004_auto_20180806_1917.py new file mode 100644 index 0000000..5d67c29 --- /dev/null +++ b/pgweb/docs/migrations/0004_auto_20180806_1917.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.13 on 2018-08-06 19:17 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0001_initial'), + ('docs', '0003_docs_alias'), + ] + + operations = [ + migrations.CreateModel( + name='ReleaseNote', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('version', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Version', db_column='version', to_field=b'tree')), + ('minor_version', models.IntegerField()), + ('title', models.CharField(max_length=256)), + ('content', models.TextField()), + ], + ), + migrations.AlterUniqueTogether( + name='releasenote', + unique_together=set([('version', 'minor_version')]), + ), + ] diff --git a/pgweb/docs/models.py b/pgweb/docs/models.py index a2754b6..73f46fb 100644 --- a/pgweb/docs/models.py +++ b/pgweb/docs/models.py @@ -31,3 +31,13 @@ class DocPageAlias(models.Model): class Meta: db_table = 'docsalias' verbose_name_plural='Doc page aliases' + +class ReleaseNote(models.Model): + """Contains content for a release note""" + version = models.ForeignKey(Version, db_column='version', to_field='tree') + minor_version = models.IntegerField() + title = models.CharField(max_length=256) + content = models.TextField() + + class Meta: + unique_together = [('version', 'minor_version')] diff --git a/pgweb/docs/views.py b/pgweb/docs/views.py index 7cc1692..49e3a60 100644 --- a/pgweb/docs/views.py +++ b/pgweb/docs/views.py @@ -14,7 +14,7 @@ from pgweb.util.misc import send_template_mail from pgweb.core.models import Version -from models import DocPage +from models import DocPage, ReleaseNote from forms import DocCommentForm def docpage(request, version, typ, filename): @@ -81,6 +81,21 @@ def docsrootpage(request, version, typ): def redirect_root(request, version): return HttpResponseRedirect("/docs/%s/static/" % version) +def releasenotesarchive(request, *args): + """Have a page available to view release notes""" + # If the version is greater than 10, only use the first two arguments + if int(args[0]) >= 10: + major_version = int(args[0]) + minor_version = int(args[2]) if args[2] else 0 + else: + major_version = "%s.%s" % (args[0], args[2]) + minor_version = int(args[4]) if args[4] else 0 + page = get_object_or_404(ReleaseNote, version=major_version, minor_version=minor_version) + return render_pgweb(request, 'docs', 'docs/release-notes.html', { + 'page': page, + 'title': page.title, + }) + def root(request): versions = Version.objects.filter(Q(supported=True) | Q(testing__gt=0,tree__gt=0)).order_by('-tree') return render_pgweb(request, 'docs', 'docs/index.html', { diff --git a/pgweb/urls.py b/pgweb/urls.py index 64caf1e..5d8748f 100644 --- a/pgweb/urls.py +++ b/pgweb/urls.py @@ -57,6 +57,7 @@ urlpatterns = [ url(r'^docs/$', pgweb.docs.views.root), url(r'^docs/manuals/$', pgweb.docs.views.manuals), url(r'^docs/manuals/archive/$', pgweb.docs.views.manualarchive), + url(r'^docs/release-notes/(\d+)(.(\d+)(.(\d+))?)?/$', pgweb.docs.views.releasenotesarchive), url(r'^docs/(current|devel|\d+(?:\.\d)?)/(static|interactive)/(.*).html?$', pgweb.docs.views.docpage), url(r'^docs/(current|devel|\d+(?:\.\d)?)/(static|interactive)/$', pgweb.docs.views.docsrootpage), url(r'^docs/(current|devel|\d+(?:\.\d)?)/$', pgweb.docs.views.redirect_root), diff --git a/templates/docs/release-notes.html b/templates/docs/release-notes.html new file mode 100644 index 0000000..4b9096a --- /dev/null +++ b/templates/docs/release-notes.html @@ -0,0 +1,7 @@ +{%extends "base/page.html"%} +{%block title%}Release Notes - {{page.title}}{%endblock%} +{%block contents%} +