def test_swap(self): with user_grant_permission(self.user, ['auth.change_user', 'auth.adminactions_merge_user']): # removed = User.objects.get(pk=self._selected_rows[0]) # preserved = User.objects.get(pk=self._selected_rows[1]) res = self.app.get('/', user='******') res = res.click('Users') form = res.forms['changelist-form'] form['action'] = 'merge' self._select_rows(form, [1, 2]) res = form.submit() removed = User.objects.get(pk=self._selected_values[0]) preserved = User.objects.get(pk=self._selected_values[1]) # steps = 2 (swap): res.form['master_pk'] = self._selected_values[1] res.form['other_pk'] = self._selected_values[0] res.form['username'] = res.form['form-0-username'].value res.form['email'] = res.form['form-0-email'].value res.form['last_login'] = res.form['form-1-last_login'].value res.form['date_joined'] = res.form['form-1-date_joined'].value # res.form['field_names'] = 'username,email' res = res.form.submit('preview') # steps = 3: res = res.form.submit('apply') preserved_after = User.objects.get(pk=self._selected_values[1]) self.assertFalse(User.objects.filter(pk=removed.pk).exists()) self.assertTrue(User.objects.filter(pk=preserved.pk).exists()) self.assertEqual(preserved_after.email, removed.email) self.assertFalse(LogEntry.objects.filter(pk=removed.pk).exists())
def test_success(self): with user_grant_permission(self.user, ['auth.change_user', 'auth.adminactions_export_user']): res = self.app.get('/', user='******') res = res.click('Users') form = res.forms['changelist-form'] form['action'] = self.action_name # form.set('_selected_action', True, 0) # form.set('_selected_action', True, 1) # form.set('_selected_action', True, 2) self._select_rows(form) res = form.submit() res.form['header'] = 1 res.form['columns'] = ['id', 'username', 'first_name' ''] res = res.form.submit('apply') io = six.BytesIO(res.body) io.seek(0) w = xlrd.open_workbook(file_contents=io.read()) sheet = w.sheet_by_index(0) self.assertEquals(sheet.cell_value(0, 0), u'#') self.assertEquals(sheet.cell_value(0, 1), u'ID') self.assertEquals(sheet.cell_value(0, 2), u'username') self.assertEquals(sheet.cell_value(0, 3), u'first name') self.assertEquals(sheet.cell_value(1, 1), 1.0) self.assertEquals(sheet.cell_value(1, 2), u'sax') self.assertEquals(sheet.cell_value(2, 2), u'user')
def test_merge_delete_detail(self): from adminactions.merge import MergeForm with user_grant_permission(self.user, ['auth.change_user', 'auth.adminactions_merge_user']): # removed = User.objects.get(pk=self._selected_rows[0]) # preserved = User.objects.get(pk=self._selected_rows[1]) res = self.app.get('/', user='******') res = res.click('Users') form = res.forms['changelist-form'] form['action'] = 'merge' self._select_rows(form, [1, 2]) res = form.submit() removed = User.objects.get(pk=self._selected_values[0]) preserved = User.objects.get(pk=self._selected_values[1]) removed.userdetail_set.create(note='1') preserved.userdetail_set.create(note='2') # steps = 2: res.form['master_pk'] = self._selected_values[1] res.form['other_pk'] = self._selected_values[0] res.form['username'] = res.form['form-0-username'].value res.form['email'] = res.form['form-0-email'].value res.form['last_login'] = res.form['form-1-last_login'].value res.form['date_joined'] = res.form['form-1-date_joined'].value res.form['dependencies'] = MergeForm.DEP_DELETE res = res.form.submit('preview') # steps = 3: res = res.form.submit('apply') preserved_after = User.objects.get(pk=self._selected_values[1]) self.assertEqual(preserved_after.userdetail_set.count(), 1) self.assertFalse(User.objects.filter(pk=removed.pk).exists())
def test_use_display_ko(self): with user_grant_permission( self.user, ['demo.change_demomodel', 'demo.adminactions_export_demomodel']): res = self.app.get('/', user='******') res = res.click('Demo models') form = res.forms['changelist-form'] form['action'] = self.action_name self._select_rows(form) res = form.submit() res.form['header'] = 1 res.form['columns'] = ['char', 'text', 'bigint', 'choices' ''] res = res.form.submit('apply') io = six.BytesIO(res.body) io.seek(0) w = xlrd.open_workbook(file_contents=io.read()) sheet = w.sheet_by_index(0) self.assertEquals(sheet.cell_value(0, 1), u'Chäř') self.assertEquals(sheet.cell_value(0, 2), u'bigint') self.assertEquals(sheet.cell_value(0, 3), u'text') self.assertEquals(sheet.cell_value(0, 4), u'choices') self.assertEquals(sheet.cell_value(1, 1), u'Pizzä ïs Gööd') self.assertEquals(sheet.cell_value(1, 2), 333333333.0) self.assertEquals(sheet.cell_value(1, 3), u'lorem ipsum') self.assertEquals(sheet.cell_value(1, 4), 2.0)
def test_success(self): with user_grant_permission( self.user, ['auth.change_user', 'auth.adminactions_export_user']): res = self.app.get('/', user='******') res = res.click('Users') form = res.forms['changelist-form'] form['action'] = self.action_name # form.set('_selected_action', True, 0) # form.set('_selected_action', True, 1) # form.set('_selected_action', True, 2) self._select_rows(form) res = form.submit() res.form['header'] = 1 res.form['columns'] = ['id', 'username', 'first_name' ''] res = res.form.submit('apply') io = six.BytesIO(res.body) io.seek(0) w = xlrd.open_workbook(file_contents=io.read()) sheet = w.sheet_by_index(0) self.assertEquals(sheet.cell_value(0, 0), u'#') self.assertEquals(sheet.cell_value(0, 1), u'ID') self.assertEquals(sheet.cell_value(0, 2), u'username') self.assertEquals(sheet.cell_value(0, 3), u'first name') self.assertEquals(sheet.cell_value(1, 1), 1.0) self.assertEquals(sheet.cell_value(1, 2), u'sax') self.assertEquals(sheet.cell_value(2, 2), u'user')
def test_use_display_ko(self): with user_grant_permission(self.user, ['demo.change_demomodel', 'demo.adminactions_export_demomodel']): res = self.app.get('/', user='******') res = res.click('Demo models') form = res.forms['changelist-form'] form['action'] = self.action_name self._select_rows(form) res = form.submit() res.form['header'] = 1 res.form['columns'] = ['char', 'text', 'bigint', 'choices' ''] res = res.form.submit('apply') io = six.BytesIO(res.body) io.seek(0) w = xlrd.open_workbook(file_contents=io.read()) sheet = w.sheet_by_index(0) self.assertEquals(sheet.cell_value(0, 1), u'Chäř') self.assertEquals(sheet.cell_value(0, 2), u'bigint') self.assertEquals(sheet.cell_value(0, 3), u'text') self.assertEquals(sheet.cell_value(0, 4), u'choices') self.assertEquals(sheet.cell_value(1, 1), u'Pizzä ïs Gööd') self.assertEquals(sheet.cell_value(1, 2), 333333333.0) self.assertEquals(sheet.cell_value(1, 3), u'lorem ipsum') self.assertEquals(sheet.cell_value(1, 4), 2.0)
def _run_action(self, steps=3, page_start=None): with user_grant_permission(self.user, ['auth.change_user', 'auth.adminactions_merge_user']): if isinstance(steps, int): steps = list(range(1, steps + 1)) res = self.app.get('/', user='******') res = res.click('Users') else: res = page_start if 1 in steps: form = res.forms['changelist-form'] form['action'] = 'merge' self._select_rows(form) res = form.submit() assert not hasattr(res.form, 'errors') if 2 in steps: res.form['username'] = res.form['form-1-username'].value res.form['email'] = res.form['form-1-email'].value res.form['last_login'] = res.form['form-1-last_login'].value res.form['date_joined'] = res.form['form-1-date_joined'].value res = res.form.submit('preview') assert not hasattr(res.form, 'errors') if 3 in steps: res = res.form.submit('apply') return res
def test_error_if_too_many_records(self): with user_grant_permission(self.user, ['auth.change_user', 'auth.adminactions_merge_user']): res = self.app.get('/', user='******') res = res.click('Users') form = res.forms['changelist-form'] form['action'] = 'merge' self._select_rows(form, [1, 2, 3]) res = form.submit().follow() self.assertContains(res, 'Please select exactly 2 records')
def test_no_permission(self): with user_grant_permission(self.user, ['auth.change_user']): res = self.app.get('/', user='******') res = res.click('Users') form = res.forms['changelist-form'] form['action'] = self.action_name form.set('_selected_action', True, 0) res = form.submit().follow() assert six.b('Sorry you do not have rights to execute this action') in res.body
def test_no_permission(self): with user_grant_permission(self.user, ['auth.change_user']): res = self.app.get('/', user='******') res = res.click('Users') form = res.forms['changelist-form'] form['action'] = 'merge' self._select_rows(form) res = form.submit().follow() assert six.b('Sorry you do not have rights to execute this action') in res.body
def test_no_permission(self): with user_grant_permission(self.user, ['demo.change_demomodel']): res = self.app.get('/', user='******') res = res.click('Demo models') form = res.forms['changelist-form'] form['action'] = 'mass_update' form.set('_selected_action', True, 0) res = form.submit().follow() assert six.b('Sorry you do not have rights to execute this action' ) in res.body
def test_messages(self): with user_grant_permission(self.user, ['demo.change_demomodel', 'demo.adminactions_massupdate_demomodel']): res = self._run_action(**{'_clean': 1}).follow() messages = [m.message for m in list(res.context['messages'])] self.assertTrue(messages) self.assertEqual('Updated 2 records', messages[0]) res = self._run_action(selected_rows=[1]).follow() messages = [m.message for m in list(res.context['messages'])] self.assertTrue(messages) self.assertEqual('Updated 1 records', messages[0])
def test_success(self): with user_grant_permission(self.user, ['auth.change_user', 'auth.adminactions_export_user']): res = self.app.get('/', user='******') res = res.click('Users') form = res.forms['changelist-form'] form['action'] = self.action_name self._select_rows(form, [0, 1]) res = form.submit() res.form['use_natural_key'] = True res = res.form.submit('apply') assert res.json[0]['pk'] == 1
def _run_action(self, steps=2): with user_grant_permission(self.user, ['auth.change_user', 'auth.adminactions_export_user']): res = self.app.get('/', user='******') res = res.click('Users') if steps >= 1: form = res.forms['changelist-form'] form['action'] = self.action_name self._select_rows(form) res = form.submit() if steps >= 2: res = res.form.submit('apply') return res
def test_success(self): with user_grant_permission( self.user, ['auth.change_user', 'auth.adminactions_export_user']): res = self.app.get('/', user='******') res = res.click('Users') form = res.forms['changelist-form'] form['action'] = self.action_name self._select_rows(form, [0, 1]) res = form.submit() res.form['use_natural_key'] = True res = res.form.submit('apply') assert res.json[0]['pk'] == 1
def test_add_foreign_keys(self): with user_grant_permission(self.user, ['auth.change_user', 'auth.adminactions_export_user']): res = self.app.get('/', user='******') res = res.click('Users') form = res.forms['changelist-form'] form['action'] = self.action_name form.set('_selected_action', True, 0) form.set('_selected_action', True, 1) res = form.submit() res.form['use_natural_key'] = True res.form['add_foreign_keys'] = True res = res.form.submit('apply') assert res.json[0]['pk'] == 1
def test_messages(self): with user_grant_permission(self.user, [ 'demo.change_demomodel', 'demo.adminactions_massupdate_demomodel' ]): res = self._run_action(**{'_clean': 1}).follow() messages = [m.message for m in list(res.context['messages'])] self.assertTrue(messages) self.assertEqual('Updated 2 records', messages[0]) res = self._run_action(selected_rows=[1]).follow() messages = [m.message for m in list(res.context['messages'])] self.assertTrue(messages) self.assertEqual('Updated 1 records', messages[0])
def _run_action(self, steps=2): with user_grant_permission( self.user, ['auth.change_user', 'auth.adminactions_export_user']): res = self.app.get('/', user='******') res = res.click('Users') if steps >= 1: form = res.forms['changelist-form'] form['action'] = self.action_name self._select_rows(form) res = form.submit() if steps >= 2: res = res.form.submit('apply') return res
def test_add_foreign_keys(self): with user_grant_permission( self.user, ['auth.change_user', 'auth.adminactions_export_user']): res = self.app.get('/', user='******') res = res.click('Users') form = res.forms['changelist-form'] form['action'] = self.action_name form.set('_selected_action', True, 0) form.set('_selected_action', True, 1) res = form.submit() res.form['use_natural_key'] = True res.form['add_foreign_keys'] = True res = res.form.submit('apply') assert res.json[0]['pk'] == 1
def _run_action(self, steps=2): with user_grant_permission(self.user, ['auth.change_user']): res = self.app.get('/', user='******') res = res.click('Users') if steps >= 1: form = res.forms['changelist-form'] form['action'] = 'graph_queryset' self._select_rows(form) # form.set('_selected_action', True, 0) # form.set('_selected_action', True, 1) res = form.submit() if steps >= 2: res.form['axes_x'] = 'username' res = res.form.submit('apply') return res
def test_custom_filename(self): """ if the ModelAdmin has `get_export_as_csv_filename()` use that method to get the attachment filename """ with user_grant_permission(self.user, ['auth.change_user', 'auth.adminactions_export_user']): res = self.app.get('/', user='******') with admin_register(User) as md: with mock.patch.object(md, 'get_export_as_csv_filename', lambda r, q: 'new.test', create=True): res = res.click('Users') form = res.forms['changelist-form'] form['action'] = 'export_as_csv' form.set('_selected_action', True, 0) form['select_across'] = 1 res = form.submit() res = res.form.submit('apply') self.assertEqual(res.content_disposition, u'attachment;filename="new.test"')
def test_success(self): with user_grant_permission(self.user, ['demo.change_demomodel', 'demo.adminactions_export_demomodel']): res = self.app.get('/', user='******') res = res.click('Demo models') form = res.forms['changelist-form'] form['action'] = self.action_name # form.set('_selected_action', True, 1) self._select_rows(form) res = form.submit() res = res.form.submit('apply') if six.PY2: buff = io.BytesIO(res.body) else: buff = io.StringIO(smart_text(res.body)) csv_reader = csv.reader(buff) self.assertEqual(len(list(csv_reader)), 2)
def test_success(self): with user_grant_permission( self.user, ['demo.change_demomodel', 'demo.adminactions_export_demomodel']): res = self.app.get('/', user='******') res = res.click('Demo models') form = res.forms['changelist-form'] form['action'] = self.action_name # form.set('_selected_action', True, 1) self._select_rows(form) res = form.submit() res = res.form.submit('apply') if six.PY2: buff = io.BytesIO(res.body) else: buff = io.StringIO(smart_text(res.body)) csv_reader = csv.reader(buff) self.assertEqual(len(list(csv_reader)), 2)
def _run_action(self, steps=2, **kwargs): selected_rows = kwargs.pop('selected_rows', self._selected_rows) with user_grant_permission(self.user, ['demo.change_demomodel', 'demo.adminactions_massupdate_demomodel']): res = self.app.get('/', user='******') res = res.click('Demo models') if steps >= 1: form = res.forms['changelist-form'] form['action'] = 'mass_update' self._select_rows(form, selected_rows) res = form.submit() if steps >= 2: for k, v in kwargs.items(): res.form[k] = v res.form['chk_id_char'].checked = True res.form['func_id_char'] = 'upper' res.form['chk_id_choices'].checked = True res.form['func_id_choices'] = 'set' res.form['choices'] = '1' res = res.form.submit('apply') return res
def test_custom_filename(self): """ if the ModelAdmin has `get_export_as_csv_filename()` use that method to get the attachment filename """ with user_grant_permission( self.user, ['auth.change_user', 'auth.adminactions_export_user']): res = self.app.get('/', user='******') with admin_register(User) as md: with mock.patch.object(md, 'get_export_as_csv_filename', lambda r, q: 'new.test', create=True): res = res.click('Users') form = res.forms['changelist-form'] form['action'] = 'export_as_csv' form.set('_selected_action', True, 0) form['select_across'] = 1 res = form.submit() res = res.form.submit('apply') self.assertEqual(res.content_disposition, u'attachment;filename="new.test"')
def _run_action(self, steps=2, **kwargs): selected_rows = kwargs.pop('selected_rows', self._selected_rows) with user_grant_permission(self.user, [ 'demo.change_demomodel', 'demo.adminactions_massupdate_demomodel' ]): res = self.app.get('/', user='******') res = res.click('Demo models') if steps >= 1: form = res.forms['changelist-form'] form['action'] = 'mass_update' self._select_rows(form, selected_rows) res = form.submit() if steps >= 2: for k, v in kwargs.items(): res.form[k] = v res.form['chk_id_char'].checked = True res.form['func_id_char'] = 'upper' res.form['chk_id_choices'].checked = True res.form['func_id_choices'] = 'set' res.form['choices'] = '1' res = res.form.submit('apply') return res