de56d20ba44980d63c196d1309a1a4d01b6c3115
[xnet] / xnet / accounts / factories.py
1 # -*- coding: utf-8 -*-
2 from django.contrib.webdesign import lorem_ipsum
3
4 import factory
5
6 from . import models
7
8
9 class XGroupFactory(factory.DjangoModelFactory):
10 FACTORY_FOR = models.XGroup
11
12 name = factory.Sequence(lambda n: u"Groupe n°%s" % n)
13 short = factory.Sequence(lambda n: u"Groupe%s" % n)
14 kind = factory.InfiniteIterator(k[0] for k in models.XGroup.KIND_CHOICES)
15 domain = models.XGroup.DOMAIN_REGION
16 web = u"http://google.fr"
17 description = factory.LazyAttribute(lambda _: lorem_ipsum.paragraph())
18
19
20 class AccountFactory(factory.DjangoModelFactory):
21 FACTORY_FOR = models.Account
22
23 username = factory.Sequence('mr_robinson{0}'.format)
24 first_name = u"John"
25 last_name = factory.Sequence(lambda n: u"D%se" % ((n % 10) * u"o"), type=int)
26 password = None
27 is_staff = True
28
29 @classmethod
30 def _prepare(cls, create, **kwargs):
31 password = kwargs.pop('password', None)
32 user = super(AccountFactory, cls)._prepare(create, **kwargs)
33 if password is not None:
34 user.set_password(password)
35 if create:
36 user.save()
37 return user
38
39
40 class SuperAccountFactory(AccountFactory):
41 is_superuser = True
42
43
44 class MembershipFactory(factory.DjangoModelFactory):
45 FACTORY_FOR = models.Membership
46
47 xgroup = factory.SubFactory(XGroupFactory)
48 xuser = factory.SubFactory(AccountFactory)
49 state = models.MembershipWorkflow.states.enabled