funkwhale/api/funkwhale_api/users/factories.py

90 wiersze
2.6 KiB
Python
Czysty Zwykły widok Historia

import factory
from django.contrib.auth.models import Permission
2018-06-19 19:47:43 +00:00
from django.utils import timezone
2018-06-10 08:55:16 +00:00
from funkwhale_api.factories import ManyToManyFromList, registry
2018-07-22 10:20:16 +00:00
from . import models
@registry.register
class GroupFactory(factory.django.DjangoModelFactory):
2018-06-09 13:36:16 +00:00
name = factory.Sequence(lambda n: "group-{0}".format(n))
class Meta:
2018-06-09 13:36:16 +00:00
model = "auth.Group"
@factory.post_generation
def perms(self, create, extracted, **kwargs):
if not create:
# Simple build, do nothing.
return
if extracted:
perms = [
Permission.objects.get(
2018-06-09 13:36:16 +00:00
content_type__app_label=p.split(".")[0], codename=p.split(".")[1]
)
for p in extracted
]
# A list of permissions were passed in, use them
self.permissions.add(*perms)
2018-06-19 19:47:43 +00:00
@registry.register
class InvitationFactory(factory.django.DjangoModelFactory):
owner = factory.LazyFunction(lambda: UserFactory())
class Meta:
model = "users.Invitation"
class Params:
expired = factory.Trait(expiration_date=factory.LazyFunction(timezone.now))
@registry.register
class UserFactory(factory.django.DjangoModelFactory):
2018-06-09 13:36:16 +00:00
username = factory.Sequence(lambda n: "user-{0}".format(n))
email = factory.Sequence(lambda n: "user-{0}@example.com".format(n))
password = factory.PostGenerationMethodCall("set_password", "test")
subsonic_api_token = None
2018-06-09 13:36:16 +00:00
groups = ManyToManyFromList("groups")
2018-07-22 10:20:16 +00:00
avatar = factory.django.ImageField()
class Meta:
2018-06-09 13:36:16 +00:00
model = "users.User"
django_get_or_create = ("username",)
2018-06-19 19:47:43 +00:00
class Params:
invited = factory.Trait(invitation=factory.SubFactory(InvitationFactory))
@factory.post_generation
def perms(self, create, extracted, **kwargs):
if not create:
# Simple build, do nothing.
return
if extracted:
perms = [
Permission.objects.get(
2018-06-09 13:36:16 +00:00
content_type__app_label=p.split(".")[0], codename=p.split(".")[1]
)
for p in extracted
]
# A list of permissions were passed in, use them
self.user_permissions.add(*perms)
2018-07-22 10:20:16 +00:00
@factory.post_generation
def with_actor(self, create, extracted, **kwargs):
if not create or not extracted:
return
self.actor = models.create_actor(self)
self.save(update_fields=["actor"])
return self.actor
2018-06-09 13:36:16 +00:00
@registry.register(name="users.SuperUser")
class SuperUserFactory(UserFactory):
is_staff = True
is_superuser = True