Final tweaks to the version and release report decoupling (#1737) (#1849)

This commit is contained in:
daveoconnor
2025-07-15 13:52:26 -07:00
committed by GitHub
parent b462936ebf
commit ea501cba90
4 changed files with 55 additions and 16 deletions

View File

@@ -30,7 +30,6 @@ class VersionAdmin(admin.ModelAdmin):
search_fields = ["name", "description"]
date_hierarchy = "release_date"
inlines = [VersionFileInline]
filter_horizontal = ["financial_committee_members"]
change_list_template = "admin/version_change_list.html"
def get_urls(self):

View File

@@ -0,0 +1,34 @@
# Generated by Django 4.2.16 on 2025-07-12 00:34
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("versions", "0020_decouple_report_configuration_migration"),
]
operations = [
migrations.RemoveField(
model_name="version",
name="financial_committee_members",
),
migrations.RemoveField(
model_name="version",
name="release_report_cover_image",
),
migrations.RemoveField(
model_name="version",
name="sponsor_message",
),
migrations.AlterField(
model_name="reportconfiguration",
name="version",
field=models.CharField(
help_text="The version name for this report configuration. e.g. boost-1.75.0",
max_length=256,
unique=True,
),
),
]

View File

@@ -7,6 +7,7 @@ from django.utils.text import slugify
from .converters import to_url
from .managers import VersionManager, VersionFileManager
from .utils.model_validators import validate_version_name_format
User = get_user_model()
@@ -37,21 +38,7 @@ class Version(models.Model):
"beta release or a development version",
)
data = models.JSONField(default=dict)
release_report_cover_image = models.ImageField(
null=True,
blank=True,
upload_to="release_report_cover/",
)
sponsor_message = models.TextField(
default="",
blank=True,
help_text='Message to show in release reports on the "Fiscal Sponsorship Committee" page.', # noqa: E501
)
financial_committee_members = models.ManyToManyField(
User,
blank=True,
help_text="Financial Committee members who are responsible for this release.",
)
objects = VersionManager()
def __str__(self):
@@ -296,6 +283,7 @@ class ReportConfiguration(models.Model):
blank=False,
help_text="The version name for this report configuration. e.g. boost-1.75.0",
unique=True,
validators=[validate_version_name_format],
)
release_report_cover_image = models.ImageField(
null=True,

View File

@@ -0,0 +1,18 @@
import re
from django.core.exceptions import ValidationError
def validate_version_name_format(value: str) -> None:
"""
Validate that the version name follows the format 'boost-X.Y.Zw' where X, Y, and Z
are integers and w is freeform.
"""
if value in ["master", "develop"]:
return
if not re.match(r"^boost-[0-9]+\.[0-9]+\.[0-9]+[.\-a-zA-Z0-9]*$", value):
raise ValidationError(
f"Invalid version name format: '{value}'. "
"Expected format is that it begins with 'boost-X.Y.Zw' where X, Y, and Z "
"are integers and w is free form."
)