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 test_add_existed_member_with_invitation(self): self.account = AccountFactory() self.admin = AdminFactory(accounts=[self.account]) self.login_admin() old_acc = list(self.user.accounts.all().values_list('id', flat=True)) old_acc.append(get_current_account(self).id) 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, _('Member was added successfully.')) self.assertItemsEqual( list(self.user.accounts.all().values_list('id', flat=True)), old_acc)
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 test_wrong_data(self): self.account = AccountFactory() self.admin = AdminFactory(accounts=[self.account]) self.login_admin() url = reverse('member_create', kwargs={'url': get_current_account(self).url}) data = {'email': self.user.email, 'account': get_current_account(self)} response = self.client.post(url, data, follow=True) self.assertEqual(response.status_code, 200) self.assertContains(response, _('This field is required.'), 3)
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() sys.stdout.write('Completed fill db\r\n')
def test_delete_news_forbidden(self): self.login_admin() new_acc = AccountFactory() AdminFactory(accounts=[new_acc]) news2 = NewsFactory(account=new_acc) url = reverse('news:delete', kwargs={ 'pk': news2.pk, 'url': get_current_account(self).url }) response = self.ajax(url) self.assertEqual(response.status_code, 404)
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 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')
def test_wrong_email(self): self.account = AccountFactory() self.admin = AdminFactory(accounts=[self.account]) self.login_admin() 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': u'{}_{}'.format(self.account.id, lorem_ipsum.words(1, False)), '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, _('Enter a valid email address.'))
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_member_create_with_invitation(self): self.account = AccountFactory() self.admin = AdminFactory(accounts=[self.account]) self.user = UserFactory(accounts=[self.account]) self.login_admin() 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': u'{}_{}@example.com'.format( self.account.id, lorem_ipsum.words(38, False)[:75 - len(str(self.account.id)) - len('*****@*****.**')].replace( ' ', '_')), '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, _('Member was added successfully.')) new_user = User.objects.all().order_by('-pk')[0] self.assertEqual(new_user.email, data['email']) self.assertEqual(len(mail.outbox), 0)