def test_members_count(self): self.account = AccountFactory() self.admin = AdminFactory(accounts=[self.account]) self.login_admin() resp = self.client.get( reverse('board_members', kwargs={'url': self.account.url})) self.assertContains(resp, 'class="member"', 1) UserFactory.create_batch(5, accounts=[self.account]) resp = self.client.get( reverse('board_members', kwargs={'url': self.account.url})) self.assertContains(resp, 'class="member"', 6) self.account = AccountFactory() self.user = UserFactory(accounts=[self.account]) resp = self.client.get( reverse('board_members', kwargs={'url': self.account.url})) self.assertContains(resp, 'class="member"', 6) self.client.logout() self.login_member() self.membership = self.user.get_membership(account=self.account) resp = self.client.get( reverse('board_members', kwargs={'url': self.account.url})) self.assertContains(resp, 'class="member"', 1) self.assertNotContains(resp, 'data-chairman="true"') CommitteeFactory(chairman=self.membership) resp = self.client.get( reverse('board_members', kwargs={'url': self.account.url})) self.assertContains(resp, 'class="member"', 1) self.assertContains(resp, 'data-chairman="true"')
def handle(self, *args, **options): self.stdout.write('Starting fill db') site = Site.objects.get(pk=1) site.domain = site.name = settings.DOMAIN site.save() user = User.objects.create_superuser(email='*****@*****.**', password='') user.set_password('admin') user.save() accounts = AccountFactory.create_batch(2) for account in Account.objects.all(): admin = AdminFactory(accounts=[account]) membership = admin.get_membership(account) BillingSettingsFactory(account=account) board_of_directors = CommitteeFactory(name=_('Board of Directors'), account=account) membership.committees.add(board_of_directors) UserFactory.create_batch(5, accounts=accounts) for account in Account.objects.all(): CommitteeFactory.create_batch(10, account=account) for membership in Membership.objects.filter(user__in=User.objects.select_related().exclude(is_superuser=True)): membership.committees.add(*random.sample(set(Committee.objects.filter(account_id=membership.account_id)), 2)) MeetingFactory.create_batch(10) DocumentFactory.create_batch(5) self.stdout.write('Completed fill db')
def init_second_account(self): """Smaller account to have one. Just Board and users, no data.""" from profiles.models import Membership from accounts.factories import AccountFactory from profiles.factories import AdminFactory, UserFactory self.account2 = AccountFactory() self.admin2 = AdminFactory(accounts=[self.account2]) UserFactory.create_batch(5, accounts=[self.account2]) self.membership2 = Membership.objects.filter(role=Membership.ROLES.member, account=self.account2)[0] self.membership_admin2 = Membership.objects.filter(is_admin=True, account=self.account2)[0] self.user2 = self.membership.user
def create_init_data(self): from committees.models import Committee from profiles.models import User, Membership from accounts.factories import AccountFactory from profiles.factories import AdminFactory, UserFactory from meetings.factories import MeetingFactory from committees.factories import CommitteeFactory from django.contrib.contenttypes.models import ContentType from dashboard.models import RecentActivity from meetings.models import Meeting self.create_manual_migrations_if_needed() self.account = AccountFactory() self.admin = AdminFactory(accounts=[self.account]) UserFactory.create_batch(5, accounts=[self.account]) CommitteeFactory.create_batch(5) for membership in Membership.objects.filter(user__in=User.objects.select_related().exclude(is_superuser=True)): membership.committees.add(*random.sample(set(Committee.objects.filter(account_id=membership.account_id)), 2)) # Set last membership as comittee chairman (comittee_set) membership.committee_set.add(*random.sample(set(Committee.objects.filter(account_id=membership.account_id)), 1)) self.meetings = MeetingFactory.create_batch(2) # Document creation is broken and needs fixing # for meeting in self.meetings: # DocumentFactory.create_batch(2, meeting=meeting) self.membership = Membership.objects.filter(is_admin=False, account=self.account).order_by('pk')[0] self.membership_admin = Membership.objects.filter(is_admin=True, account=self.account)[0] self.user = self.membership.user for meeting in self.meetings: RecentActivity.objects.create(init_user=self.user, account=self.account, content_type=ContentType.objects.get_for_model(Meeting), object_id=meeting.id, action_flag=RecentActivity.ADDITION)
def test_limit_members(self): self.login_admin() UserFactory.create_batch(3, accounts=[self.account]) url = reverse('member_create', kwargs={'url': get_current_account(self).url}) data = { 'first_name': lorem_ipsum.words(1, False).capitalize()[:50], 'last_name': lorem_ipsum.words(1, False).capitalize()[:50], 'email': self.user.email, 'password': User.objects.make_random_password(), 'date_joined_board': '{:%b. %d, %Y}'.format(timezone.now()), 'timezone': us_timezones[0], 'account': get_current_account(self), 'role': Membership.ROLES.member, 'invitation': True } response = self.client.post(url, data, follow=True) self.assertEqual(response.status_code, 200) self.assertContains( response, _('Limit of members amount for your billing plan is exceeded, ' 'you can upgrade it in your profile!'))
def handle(self, *args, **options): sys.stdout.write('Starting fill db\r\n') site = Site.objects.get(pk=1) site.domain = site.name = settings.DOMAIN site.save() AdminFactory() users = UserFactory.create_batch(50) posts = PostFactory.create_batch(20) for post in posts: likes = random.randint(1, 50) post.liked_users.add(*users[:likes]) CommentFactory.create_batch(100) sys.stdout.write('Completed fill db\r\n')