🏦 Add Version.slug

This commit is contained in:
Lacey Williams Henschel
2023-02-08 13:57:03 -08:00
parent f3b2a3795f
commit 2c19f289f2
5 changed files with 50 additions and 3 deletions

View File

@@ -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
)

View 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),
),
]

View File

@@ -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"

View File

@@ -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

View File

@@ -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