Implement tag models

This commit is contained in:
Eliot Berriot 2019-07-08 15:26:14 +02:00
parent c170ee9394
commit 6dde4b73cd
28 changed files with 1034 additions and 141 deletions

View file

@ -2,10 +2,11 @@ import os
import factory
from funkwhale_api.factories import ManyToManyFromList, registry, NoUpdateOnCreate
from funkwhale_api.factories import registry, NoUpdateOnCreate
from funkwhale_api.federation import factories as federation_factories
from funkwhale_api.music import licenses
from funkwhale_api.tags import models as tags_models
from funkwhale_api.users import factories as users_factories
SAMPLES_PATH = os.path.join(
@ -103,7 +104,6 @@ class TrackFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
album = factory.SubFactory(AlbumFactory)
artist = factory.SelfAttribute("album.artist")
position = 1
tags = ManyToManyFromList("tags")
playable = playable_factory("track")
class Meta:
@ -127,6 +127,15 @@ class TrackFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
self.license = LicenseFactory(code=extracted)
self.save()
@factory.post_generation
def set_tags(self, create, extracted, **kwargs):
if not create:
# Simple build, do nothing.
return
if extracted:
tags_models.set_tags(self, *extracted)
@registry.register
class UploadFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
@ -164,18 +173,6 @@ class UploadVersionFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
model = "music.UploadVersion"
@registry.register
class TagFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
name = factory.SelfAttribute("slug")
slug = factory.Faker("slug")
class Meta:
model = "taggit.Tag"
# XXX To remove
class ImportBatchFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
submitted_by = factory.SubFactory(users_factories.UserFactory)