Skip to content

Commit ea501cb

Browse files
authored
Final tweaks to the version and release report decoupling (boostorg#1737) (boostorg#1849)
1 parent b462936 commit ea501cb

File tree

4 files changed

+55
-16
lines changed

4 files changed

+55
-16
lines changed

versions/admin.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ class VersionAdmin(admin.ModelAdmin):
3030
search_fields = ["name", "description"]
3131
date_hierarchy = "release_date"
3232
inlines = [VersionFileInline]
33-
filter_horizontal = ["financial_committee_members"]
3433
change_list_template = "admin/version_change_list.html"
3534

3635
def get_urls(self):
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# Generated by Django 4.2.16 on 2025-07-12 00:34
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("versions", "0020_decouple_report_configuration_migration"),
10+
]
11+
12+
operations = [
13+
migrations.RemoveField(
14+
model_name="version",
15+
name="financial_committee_members",
16+
),
17+
migrations.RemoveField(
18+
model_name="version",
19+
name="release_report_cover_image",
20+
),
21+
migrations.RemoveField(
22+
model_name="version",
23+
name="sponsor_message",
24+
),
25+
migrations.AlterField(
26+
model_name="reportconfiguration",
27+
name="version",
28+
field=models.CharField(
29+
help_text="The version name for this report configuration. e.g. boost-1.75.0",
30+
max_length=256,
31+
unique=True,
32+
),
33+
),
34+
]

versions/models.py

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
from .converters import to_url
99
from .managers import VersionManager, VersionFileManager
10+
from .utils.model_validators import validate_version_name_format
1011

1112
User = get_user_model()
1213

@@ -37,21 +38,7 @@ class Version(models.Model):
3738
"beta release or a development version",
3839
)
3940
data = models.JSONField(default=dict)
40-
release_report_cover_image = models.ImageField(
41-
null=True,
42-
blank=True,
43-
upload_to="release_report_cover/",
44-
)
45-
sponsor_message = models.TextField(
46-
default="",
47-
blank=True,
48-
help_text='Message to show in release reports on the "Fiscal Sponsorship Committee" page.', # noqa: E501
49-
)
50-
financial_committee_members = models.ManyToManyField(
51-
User,
52-
blank=True,
53-
help_text="Financial Committee members who are responsible for this release.",
54-
)
41+
5542
objects = VersionManager()
5643

5744
def __str__(self):
@@ -296,6 +283,7 @@ class ReportConfiguration(models.Model):
296283
blank=False,
297284
help_text="The version name for this report configuration. e.g. boost-1.75.0",
298285
unique=True,
286+
validators=[validate_version_name_format],
299287
)
300288
release_report_cover_image = models.ImageField(
301289
null=True,

versions/utils/model_validators.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import re
2+
3+
from django.core.exceptions import ValidationError
4+
5+
6+
def validate_version_name_format(value: str) -> None:
7+
"""
8+
Validate that the version name follows the format 'boost-X.Y.Zw' where X, Y, and Z
9+
are integers and w is freeform.
10+
"""
11+
if value in ["master", "develop"]:
12+
return
13+
if not re.match(r"^boost-[0-9]+\.[0-9]+\.[0-9]+[.\-a-zA-Z0-9]*$", value):
14+
raise ValidationError(
15+
f"Invalid version name format: '{value}'. "
16+
"Expected format is that it begins with 'boost-X.Y.Zw' where X, Y, and Z "
17+
"are integers and w is free form."
18+
)

0 commit comments

Comments
 (0)