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