Commit | Line | Data |
---|---|---|
53722fb0 | 1 | # -*- coding: utf-8 -*- |
626048e1 | 2 | from django.contrib.webdesign import lorem_ipsum |
53722fb0 BG |
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) | |
626048e1 | 14 | kind = factory.InfiniteIterator(k[0] for k in models.XGroup.KIND_CHOICES) |
53722fb0 | 15 | domain = models.XGroup.DOMAIN_REGION |
626048e1 AD |
16 | web = u"http://google.fr" |
17 | description = factory.LazyAttribute(lambda _: lorem_ipsum.paragraph()) | |
53722fb0 BG |
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 |