diff options
author | Magnus Hagander | 2013-08-17 13:35:42 +0000 |
---|---|---|
committer | Magnus Hagander | 2013-08-17 13:37:45 +0000 |
commit | 8be717d99d3a2e29ff9fe4801bee5efd633c4600 (patch) | |
tree | f4755ed92dfd4df8270b7360278d3ef942d6117f | |
parent | 8fc39d7359c1cb56b5d8422039fb10a61d58deb3 (diff) |
Use a proper database field for beta releases
This replaces the previous ugly hack where beta versions had a negative number
as latestminor, giving a much cleaner model.
Requires SQL:
ALTER TABLE core_version ADD COLUMN beta boolean NOT NULL DEFAULT 'f';
ALTER TABLE core_version ALTER COLUMN beta DROP DEFAULT;
(Yes, we really need to move to something that can do automatic migrations)
-rw-r--r-- | pgweb/core/feeds.py | 2 | ||||
-rw-r--r-- | pgweb/core/models.py | 8 | ||||
-rw-r--r-- | pgweb/core/views.py | 2 | ||||
-rw-r--r-- | pgweb/docs/struct.py | 2 | ||||
-rw-r--r-- | pgweb/misc/forms.py | 11 |
5 files changed, 18 insertions, 7 deletions
diff --git a/pgweb/core/feeds.py b/pgweb/core/feeds.py index 3dbeea2f..42894c7e 100644 --- a/pgweb/core/feeds.py +++ b/pgweb/core/feeds.py @@ -13,7 +13,7 @@ class VersionFeed(Feed): title_template = 'core/version_rss_title.html' def items(self): - return Version.objects.filter(tree__gt=0).filter(latestminor__gte=0) + return Version.objects.filter(tree__gt=0).filter(beta=False) def item_link(self, obj): return "http://www.postgresql.org/docs/%s/static/%s" % (obj.tree, obj.relnotes) diff --git a/pgweb/core/models.py b/pgweb/core/models.py index f18a228c..e2b4511f 100644 --- a/pgweb/core/models.py +++ b/pgweb/core/models.py @@ -7,11 +7,12 @@ from datetime import datetime class Version(PgModel, models.Model): tree = models.DecimalField(max_digits=3, decimal_places=1, null=False, blank=False) - latestminor = models.IntegerField(null=False, blank=False, default=0) + latestminor = models.IntegerField(null=False, blank=False, default=0, help_text="For beta versions, latestminor means latest beta number. For other releases, it's the latest minor release number in the tree.") reldate = models.DateField(null=False, blank=False) relnotes = models.CharField(max_length=32, null=False, blank=False) current = models.BooleanField(null=False, blank=False, default=False) supported = models.BooleanField(null=False, blank=False, default=True) + beta = models.BooleanField(null=False, blank=False, default=False, help_text="For beta versions, latestminor means beta number") 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.") 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 planned EOL date for this tree") @@ -21,7 +22,10 @@ class Version(PgModel, models.Model): @property def versionstring(self): - return "%s.%s" % (self.tree, self.latestminor) + if not self.beta: + return "%s.%s" % (self.tree, self.latestminor) + else: + return "%sbeta%s" % (self.tree, self.latestminor) def save(self): # Make sure only one version at a time can be the current one. diff --git a/pgweb/core/views.py b/pgweb/core/views.py index 9b19e74a..7d31d54a 100644 --- a/pgweb/core/views.py +++ b/pgweb/core/views.py @@ -79,7 +79,7 @@ def community(request): # List of supported versions def versions(request): return render_to_response('support/versioning.html', { - 'versions': Version.objects.filter(tree__gt=0).filter(latestminor__gte=0), + 'versions': Version.objects.filter(tree__gt=0).filter(beta=False), }, NavContext(request, 'support')) re_staticfilenames = re.compile("^[0-9A-Z/_-]+$", re.IGNORECASE) diff --git a/pgweb/docs/struct.py b/pgweb/docs/struct.py index 28271f05..ea64d443 100644 --- a/pgweb/docs/struct.py +++ b/pgweb/docs/struct.py @@ -9,7 +9,7 @@ def get_struct(): # Can't use a model here, because we don't (for some reason) have a # hard link to the versions table here curs = connection.cursor() - curs.execute("SELECT d.version, d.file, v.docsloaded FROM docs d INNER JOIN core_version v ON v.tree=d.version WHERE d.version > 0 AND v.latestminor >= 0 ORDER BY d.version DESC") + curs.execute("SELECT d.version, d.file, v.docsloaded FROM docs d INNER JOIN core_version v ON v.tree=d.version WHERE d.version > 0 AND NOT beta ORDER BY d.version DESC") # Start priority is higher than average but lower than what we assign # to the current version of the docs. diff --git a/pgweb/misc/forms.py b/pgweb/misc/forms.py index eaad46c3..e298d74d 100644 --- a/pgweb/misc/forms.py +++ b/pgweb/misc/forms.py @@ -1,13 +1,20 @@ from django import forms +from django.db.models import Q from pgweb.core.models import Version class _version_choices(): def __iter__(self): yield ('-1', '** Select version') - for v in Version.objects.filter(supported=True): + q = Q(supported=True) | Q(beta=True) + for v in Version.objects.filter(q): for minor in range(v.latestminor,-1,-1): - s = "%s.%s" % (v.tree, minor) + if not v.beta: + s = "%s.%s" % (v.tree, minor) + else: + # For beta versions, there is no beta0 + if minor==0: continue + s = "%s.beta%s" % (v.tree, minor) yield (s,s) yield ('Unsupported/Unknown', 'Unsupported/Unknown') |