mirror of
https://github.com/boostorg/website-v2.git
synced 2026-01-19 04:42:17 +00:00
This commit is contained in:
@@ -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):
|
||||
|
||||
@@ -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,
|
||||
),
|
||||
),
|
||||
]
|
||||
@@ -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,
|
||||
|
||||
18
versions/utils/model_validators.py
Normal file
18
versions/utils/model_validators.py
Normal 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."
|
||||
)
|
||||
Reference in New Issue
Block a user