Invent the concept of a "numtree" for versions
authorMagnus Hagander <magnus@hagander.net>
Fri, 19 May 2017 11:42:58 +0000 (13:42 +0200)
committerMagnus Hagander <magnus@hagander.net>
Fri, 19 May 2017 11:42:58 +0000 (13:42 +0200)
This property returns a single digit numbers for versions 10 and up (10,
11 etc), and keeps the two digit number for earlier (9.0, 9.1 etc).

12 files changed:
pgweb/core/feeds.py
pgweb/core/models.py
pgweb/docs/models.py
pgweb/docs/views.py
pgweb/urls.py
templates/core/version_rss_description.html
templates/core/version_rss_title.html
templates/docs/archive.html
templates/docs/docspage.html
templates/docs/manuals.html
templates/index.html
templates/support/versioning.html

index 4ac8777fdd55e340abb9df51740925f56ddae35d..7e588455150c9fa35fa70e927bc891c928f897fa 100644 (file)
@@ -16,7 +16,7 @@ class VersionFeed(Feed):
                return Version.objects.filter(tree__gt=0).filter(testing=0)
 
        def item_link(self, obj):
-               return "https://www.postgresql.org/docs/%s/static/%s" % (obj.tree, obj.relnotes)
+               return "https://www.postgresql.org/docs/%s/static/%s" % (obj.numtree, obj.relnotes)
 
        def item_pubdate(self, obj):
                return datetime.combine(obj.reldate,time.min)
index b6e9702a442ea9b39017e8a4230444c7bd9de549..6adb688487eabb58339fb46f669f00795b87ec95 100644 (file)
@@ -29,18 +29,27 @@ class Version(models.Model):
        def versionstring(self):
                return self.buildversionstring(self.latestminor)
 
+       @property
+       def numtree(self):
+               # Return the proper numeric tree version, taking into account that PostgreSQL 10
+               # changed from x.y to x for major version.
+               if self.tree >= 10:
+                       return int(self.tree)
+               else:
+                       return self.tree
+
        def buildversionstring(self, minor):
                if not self.testing:
-                       return "%s.%s" % (self.tree, minor)
+                       return "%s.%s" % (self.numtree, minor)
                else:
-                       return "%s%s%s" % (self.tree, TESTING_SHORTSTRING[self.testing], minor)
+                       return "%s%s%s" % (self.numtree, TESTING_SHORTSTRING[self.testing], minor)
 
        @property
        def treestring(self):
                if not self.testing:
-                       return self.tree
+                       return "%s" % self.numtree
                else:
-                       return "%s %s" % (self.tree, TESTING_SHORTSTRING[self.testing])
+                       return "%s %s" % (self.numtree, TESTING_SHORTSTRING[self.testing])
 
        def save(self):
                # Make sure only one version at a time can be the current one.
index 5df5a98ddee9b5b2178e65fa26feeb246c48c289..0c99240b6c6d79b634eacff2a6bd5de2556f6cc0 100644 (file)
@@ -14,7 +14,7 @@ class DocPage(models.Model):
                if self.version.tree == 0:
                        return 'devel'
                else:
-                       return str(self.version.tree)
+                       return str(self.version.numtree)
 
        class Meta:
                db_table = 'docs'
index cf8930bfc77e9589959c469f6106528cb35f1c7f..405da52e36a43156f87a2b919772c11e35f6ce17 100644 (file)
@@ -102,7 +102,7 @@ class _VersionPdfWrapper(Version):
                return getattr(self.__version, name)
        def _find_pdf(self, pagetype):
                try:
-                       return os.stat('%s/documentation/pdf/%s/postgresql-%s-%s.pdf' % (settings.STATIC_CHECKOUT, self.__version.tree, self.__version.tree, pagetype)).st_size
+                       return os.stat('%s/documentation/pdf/%s/postgresql-%s-%s.pdf' % (settings.STATIC_CHECKOUT, self.__version.numtree, self.__version.numtree, pagetype)).st_size
                except:
                        return 0
 
index 2080ff0b0fce9cdd54ca487805752e124f28a727..7a94d87a60d2419ad3ccd3a02390ff9b039e6276 100644 (file)
@@ -39,9 +39,9 @@ urlpatterns = patterns('',
        (r'^docs/$', 'pgweb.docs.views.root'),
        (r'^docs/manuals/$', 'pgweb.docs.views.manuals'),
        (r'^docs/manuals/archive/$', 'pgweb.docs.views.manualarchive'),
-       (r'^docs/(current|devel|[0-9]+\.\d)/(static|interactive)/(.*).html?$', 'pgweb.docs.views.docpage'),
-       (r'^docs/(current|devel|[0-9]+\.\d)/(static|interactive)/$', 'pgweb.docs.views.docsrootpage'),
-       (r'^docs/(current|devel|[0-9]+\.\d)/$', 'pgweb.docs.views.redirect_root'),
+       (r'^docs/(current|devel|\d+(?:\.\d)?)/(static|interactive)/(.*).html?$', 'pgweb.docs.views.docpage'),
+       (r'^docs/(current|devel|\d+(?:\.\d)?)/(static|interactive)/$', 'pgweb.docs.views.docsrootpage'),
+       (r'^docs/(current|devel|\d+(?:\.\d)?)/$', 'pgweb.docs.views.redirect_root'),
 
        (r'^community/$', 'pgweb.core.views.community'),
        (r'^community/contributors/$', 'pgweb.contributors.views.completelist'),
index d15889e7601f2be879ad7f86b0bf4cd87c7861c3..01ba69327de3d9f84ff016993c86667954ef8a1f 100644 (file)
@@ -1,2 +1,2 @@
-{{obj.tree}}.{{obj.latestminor}} is the latest release in the {{obj.tree}} series.
+{{obj.numtree}}.{{obj.latestminor}} is the latest release in the {{obj.numtree}} series.
 {%if not obj.supported%}This version is unsupported!{%endif%}
index d1d58aa1b2f701890b5af38913ca114cade84751..decda65f7cdfcd47d80129527caec0b9221b4f7d 100644 (file)
@@ -1 +1 @@
-{{obj.tree}}.{{obj.latestminor}}
+{{obj.numtree}}.{{obj.latestminor}}
index b899d7b1c0c4376075e00c5be2444556e66240cf..fb11d798f098beb77973bf784c9321a431105cbb 100644 (file)
@@ -18,13 +18,13 @@ If you are still using any of these releases, you are strongly advised to upgrad
 <tr{%if forloop.last%} class="lastrow"{%endif%}>
     <td class="colMid">
           <ul>
-            <li><a href="/docs/{{v.tree}}/static/{{v.indexname}}">{{v.treestring}}</a></li>
+            <li><a href="/docs/{{v.numtree}}/static/{{v.indexname}}">{{v.treestring}}</a></li>
           </ul>
       </td>
       <td class="colLast">
        <ul>
-         {%if v.a4pdf%}<li>Comprehensive Manual: <a href="/files/documentation/pdf/{{v.tree}}/postgresql-{{v.tree}}-A4.pdf">A4 PDF</a> <span class="txtMediumGrey">({{v.a4pdf|filesizeformat}})</span></li>{%endif%}
-         {%if v.uspdf%}<li>Comprehensive Manual: <a href="/files/documentation/pdf/{{v.tree}}/postgresql-{{v.tree}}-US.pdf">US PDF</a> <span class="txtMediumGrey">({{v.uspdf|filesizeformat}})</span></li>{%endif%}
+         {%if v.a4pdf%}<li>Comprehensive Manual: <a href="/files/documentation/pdf/{{v.numtree}}/postgresql-{{v.numtree}}-A4.pdf">A4 PDF</a> <span class="txtMediumGrey">({{v.a4pdf|filesizeformat}})</span></li>{%endif%}
+         {%if v.uspdf%}<li>Comprehensive Manual: <a href="/files/documentation/pdf/{{v.numtree}}/postgresql-{{v.numtree}}-US.pdf">US PDF</a> <span class="txtMediumGrey">({{v.uspdf|filesizeformat}})</span></li>{%endif%}
          {%if not v.a4pdf and not v4.uspdf%}<li>PDF version not available</li>{%endif%}
        </ul>
       </td>
index f808f9b9191416af4dfb3af158979e127c03c764..26c85a8a50433b1aa35e909863c8fc1a05c03cbe 100644 (file)
@@ -95,7 +95,7 @@ This page in other versions:
 If you see anything in the documentation that is not correct, does not match
 your experience with the particular feature or requires further clarification,
 please use
-<a href="/account/comments/new/{{page.version.tree}}/{{page.file}}/" rel="nofollow">this form</a>
+<a href="/account/comments/new/{{page.version.numtree}}/{{page.file}}/" rel="nofollow">this form</a>
 to report a documentation issue.
 </p>
 </div>
index 9945ca7362f0e4e72c8a6617b7109a4f1010d621..5f9b2dd0f36c29348a8df31153cf0dc315440930 100644 (file)
 <tr{%if forloop.last%} class="lastrow"{%endif%}>
     <td class="colMid">
           <ul>
-            <li><a href="/docs/{{v.tree}}/static/index.html">{{v.treestring}}</a></li>
+            <li><a href="/docs/{{v.numtree}}/static/index.html">{{v.treestring}}</a></li>
          </ul>
     </td>
     <td class="colLast">
        <ul>
-         {%if v.a4pdf%}<li>Comprehensive Manual: <a href="/files/documentation/pdf/{{v.tree}}/postgresql-{{v.tree}}-A4.pdf">A4 PDF</a> <span class="txtMediumGrey">({{v.a4pdf|filesizeformat}})</span></li>{%endif%}
-         {%if v.uspdf%}<li>Comprehensive Manual: <a href="/files/documentation/pdf/{{v.tree}}/postgresql-{{v.tree}}-US.pdf">US PDF</a> <span class="txtMediumGrey">({{v.uspdf|filesizeformat}})</span></li>{%endif%}
+         {%if v.a4pdf%}<li>Comprehensive Manual: <a href="/files/documentation/pdf/{{v.numtree}}/postgresql-{{v.numtree}}-A4.pdf">A4 PDF</a> <span class="txtMediumGrey">({{v.a4pdf|filesizeformat}})</span></li>{%endif%}
+         {%if v.uspdf%}<li>Comprehensive Manual: <a href="/files/documentation/pdf/{{v.numtree}}/postgresql-{{v.numtree}}-US.pdf">US PDF</a> <span class="txtMediumGrey">({{v.uspdf|filesizeformat}})</span></li>{%endif%}
        </ul>
     </td>
 </tr>
index f496dbfefa914d8838ca97599aa2d89cf3d54717..44086536728ea755336475f00985078ae81c7143 100644 (file)
@@ -56,7 +56,7 @@
             <h2><img src="/media/img/hdr/hdr_latestreleases.png" width="120" height="10" alt="Latest Releases" /></h2>
             <div id="pgFrontLatestReleasesWrap">
              {%for v in versions %}
-             <b>{{v.tree}}.{{v.latestminor}}</b> &middot; {{v.reldate}} &middot; <a href="/docs/{{v.tree}}/static/{{v.relnotes}}">Notes</a>
+             <b>{{v.numtree}}.{{v.latestminor}}</b> &middot; {{v.reldate}} &middot; <a href="/docs/{{v.numtree}}/static/{{v.relnotes}}">Notes</a>
              <br />
              {%endfor%}
             </div>
index 4c40dea3805c6c87278e135f7d1211a42c63dd43..f75fac567e1dfb7223f51e3487be6dd888e61047 100644 (file)
@@ -65,8 +65,8 @@ version may be required.
 
 {%for v in versions%}
   <tr {%if forloop.last%}class="lastrow"{%endif%}>
-   <td class="colFirst">{{v.tree}}</td>
-   <td class="colMid">{{v.tree}}.{{v.latestminor}}</td>
+   <td class="colFirst">{{v.numtree}}</td>
+   <td class="colMid">{{v.numtree}}.{{v.latestminor}}</td>
    <td class="colMid">{{v.supported|yesno:"Yes,No"}}</td>
    <td class="colMid">{{v.firstreldate|date:"F Y"}}</td>
    <td class="colLast">{{v.eoldate|date:"F Y"}}</td>