funkwhale/api/funkwhale_api/playlists/factories.py

60 wiersze
1.9 KiB
Python
Czysty Zwykły widok Historia

import factory
2025-01-03 18:17:25 +00:00
from django.conf import settings
from funkwhale_api.factories import NoUpdateOnCreate, registry
2025-01-03 18:17:25 +00:00
from funkwhale_api.federation import models
from funkwhale_api.federation.factories import ActorFactory, MusicLibraryFactory
2018-03-18 20:31:59 +00:00
from funkwhale_api.music.factories import TrackFactory
@registry.register
2019-01-04 13:36:08 +00:00
class PlaylistFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
2018-06-09 13:36:16 +00:00
name = factory.Faker("name")
2025-01-03 18:17:25 +00:00
actor = factory.SubFactory(ActorFactory)
fid = factory.Faker("federation_url")
uuid = factory.Faker("uuid4")
library = factory.SubFactory(MusicLibraryFactory)
class Meta:
2018-06-09 13:36:16 +00:00
model = "playlists.Playlist"
2018-03-18 20:31:59 +00:00
2025-01-03 18:17:25 +00:00
@factory.post_generation
def local(self, create, extracted, **kwargs):
if not extracted and not kwargs:
return
domain = models.Domain.objects.get_or_create(name=settings.FEDERATION_HOSTNAME)[
0
]
self.fid = f"https://{domain}/federation/music/playlists/{self.uuid}"
self.save(update_fields=["fid"])
2018-03-18 20:31:59 +00:00
@registry.register
2019-01-04 13:36:08 +00:00
class PlaylistTrackFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
2018-03-18 20:31:59 +00:00
playlist = factory.SubFactory(PlaylistFactory)
track = factory.SubFactory(TrackFactory)
2025-01-03 18:17:25 +00:00
fid = factory.Faker("federation_url")
uuid = factory.Faker("uuid4")
2018-03-18 20:31:59 +00:00
class Meta:
2018-06-09 13:36:16 +00:00
model = "playlists.PlaylistTrack"
2025-01-03 18:17:25 +00:00
@factory.post_generation
def local(self, create, extracted, **kwargs):
if not extracted and not kwargs:
return
domain = models.Domain.objects.get_or_create(name=settings.FEDERATION_HOSTNAME)[
0
]
self.fid = f"https://{domain}/federation/music/playlists-tracks/{self.uuid}"
self.save(update_fields=["fid"])
@registry.register
class PlaylistScanFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
playlist = factory.SubFactory(PlaylistFactory)
actor = factory.SubFactory(ActorFactory)
class Meta:
model = "playlists.PlaylistScan"