mirror of
https://github.com/boostorg/website-v2.git
synced 2026-02-27 05:32:08 +00:00
🏦 Add Version.slug
This commit is contained in:
@@ -45,7 +45,7 @@ def test_library_version_multiple_versions(library, library_version):
|
||||
assert library.versions.filter(
|
||||
library_version__version=library_version.version
|
||||
).exists()
|
||||
other_version = baker.make("versions.Version")
|
||||
other_version = baker.make("versions.Version", name="New Version")
|
||||
new_library_version = baker.make(
|
||||
"libraries.LibraryVersion", library=library, version=other_version
|
||||
)
|
||||
|
||||
18
versions/migrations/0006_version_slug.py
Normal file
18
versions/migrations/0006_version_slug.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 3.2.2 on 2023-02-08 21:40
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("versions", "0005_version_active"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="version",
|
||||
name="slug",
|
||||
field=models.SlugField(blank=True, null=True),
|
||||
),
|
||||
]
|
||||
@@ -1,5 +1,6 @@
|
||||
import hashlib
|
||||
from django.db import models
|
||||
from django.utils.text import slugify
|
||||
|
||||
from .managers import VersionManager, VersionFileManager
|
||||
|
||||
@@ -8,6 +9,7 @@ class Version(models.Model):
|
||||
name = models.CharField(
|
||||
max_length=256, null=False, blank=False, help_text="Version name"
|
||||
)
|
||||
slug = models.SlugField(blank=True, null=True)
|
||||
release_date = models.DateField(auto_now=False, auto_now_add=False)
|
||||
description = models.TextField(blank=True)
|
||||
active = models.BooleanField(
|
||||
@@ -20,6 +22,17 @@ class Version(models.Model):
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
if not self.slug:
|
||||
self.slug = self.get_slug()
|
||||
return super(Version, self).save(*args, **kwargs)
|
||||
|
||||
def get_slug(self):
|
||||
if self.slug:
|
||||
return self.slug
|
||||
name = self.name.replace(".", " ")
|
||||
return slugify(name)[:50]
|
||||
|
||||
|
||||
class VersionFile(models.Model):
|
||||
Unix = "Unix"
|
||||
|
||||
@@ -6,8 +6,8 @@ from versions.models import Version, VersionFile
|
||||
|
||||
|
||||
def test_active_manager(version):
|
||||
v2 = baker.make("versions.Version", active=False)
|
||||
v3 = baker.make("versions.Version", active=False)
|
||||
v2 = baker.make("versions.Version", name="Sample 1", active=False)
|
||||
v3 = baker.make("versions.Version", name="Sample 2", active=False)
|
||||
|
||||
assert Version.objects.active().count() == 1
|
||||
|
||||
|
||||
@@ -1,10 +1,26 @@
|
||||
import datetime
|
||||
|
||||
from model_bakery import baker
|
||||
|
||||
|
||||
def test_version_creation(version):
|
||||
today = datetime.date.today()
|
||||
assert version.release_date < today
|
||||
|
||||
|
||||
def test_version_slug(version):
|
||||
version.name = "New Name"
|
||||
version.slug = None
|
||||
version.save()
|
||||
version.refresh_from_db()
|
||||
assert version.slug is not None
|
||||
assert version.slug == "new-name"
|
||||
|
||||
|
||||
def test_version_get_slug(db):
|
||||
version = baker.prepare("versions.Version", name="Sample Library")
|
||||
assert version.get_slug() == "sample-library"
|
||||
|
||||
|
||||
def test_version_file_creation(full_version_one):
|
||||
assert full_version_one.files.count() == 3
|
||||
|
||||
Reference in New Issue
Block a user