|
7 | 7 | from django.conf import settings |
8 | 8 |
|
9 | 9 | from decimal import Decimal, ROUND_DOWN |
| 10 | +import itertools |
10 | 11 | import os |
11 | 12 | import re |
12 | 13 |
|
@@ -293,14 +294,19 @@ def manualarchive(request): |
293 | 294 | ] |
294 | 295 | release_notes_only_versions = [{'major': major, 'minor': minor} for major, minor in _release_notes_only_versions] |
295 | 296 |
|
| 297 | +no_release_notes_versions = [ |
| 298 | + {"major": 18, "minor": 5}, |
| 299 | +] |
| 300 | +no_release_notes_per_major = dict((k, list(m['minor'] for m in v)) for k, v in itertools.groupby(no_release_notes_versions, key=lambda x: x['major'])) |
| 301 | + |
296 | 302 |
|
297 | 303 | def release_notes_list(request): |
298 | 304 | """Lists the available release notes""" |
299 | 305 | # We only keep 6.3 and newer in core_version (for legacy reasons) |
300 | 306 | releases = exec_to_dict("SELECT tree AS major, minor FROM core_version INNER JOIN generate_series(0, latestminor) g(minor) ON true WHERE testing=0 AND tree > 6.2 ORDER BY tree DESC, minor DESC") |
301 | 307 |
|
302 | 308 | r = render_pgweb(request, 'docs', 'docs/release_notes_list.html', { |
303 | | - 'releases': releases + release_notes_only_versions, |
| 309 | + 'releases': [v for v in releases + release_notes_only_versions if v not in no_release_notes_versions], |
304 | 310 | }) |
305 | 311 | r['xkey'] = 'pgdocs_all' |
306 | 312 | return r |
@@ -328,6 +334,10 @@ def release_notes(request, version): |
328 | 334 | minor_version = Decimal(version_pieces[1]) |
329 | 335 | if int(version_pieces[0]) >= 10 or int(version_pieces[0]) <= 1: |
330 | 336 | if major_version > 1: |
| 337 | + if {"major": major_version, "minor": minor_version} in no_release_notes_versions: |
| 338 | + # Redirect to the following version if this one has no release notes. In the very unlikely event we have more than one |
| 339 | + # such version, we'll just redirect more than once. |
| 340 | + return HttpResponseRedirect("/docs/release/{}.{}/".format(major_version, minor_version + 1)) |
331 | 341 | if minor_version == 0: |
332 | 342 | version_file = 'release-{}.html'.format(major_version) |
333 | 343 | else: |
@@ -366,6 +376,9 @@ def release_notes(request, version): |
366 | 376 | available_minor_versions = exec_to_dict("SELECT minor FROM generate_series(0, (SELECT latestminor FROM core_version WHERE tree=%(major_version)s)) g(minor) ORDER BY minor DESC", { |
367 | 377 | 'major_version': major_version, |
368 | 378 | }) |
| 379 | + if major_version in no_release_notes_per_major: |
| 380 | + available_minor_versions = [v for v in available_minor_versions if v['minor'] not in no_release_notes_per_major[major_version]] |
| 381 | + print(available_minor_versions) |
369 | 382 | previous_minor = minor_version - 1 if minor_version > 0 else None |
370 | 383 | next_minor = minor_version + 1 if minor_version < available_minor_versions[0]['minor'] else None |
371 | 384 | else: |
|
0 commit comments