def test_add_new_article(self): author = create_author() self.client.login(username=author.username, password="******") response = self.client.post( url_reverse("new-article"), { "title": "Some Article", "slug": "some-article", "active": True, "content": "*Some* Article", "creation_date": "2015-06-01 00:00", } ) edit_url = url_reverse("edit-article", kwargs={"slug": "some-article"}) self.assertRedirects(response, edit_url) article = Article.objects.get(slug="some-article") self.assertEqual(article.title, "Some Article") self.assertEqual(article.slug, "some-article") self.assertTrue(article.active) self.assertEqual(article.content, "*Some* Article")
def article_bounce_view(request, slug): return bounce_view( request, url_reverse( "article-detail", kwargs={"slug": slug}, ) + "#last_comment")
def test_post_valid_file(self, save_mock, url_mock): author = create_author() self.client.login(username=author.username, password="******") upload = {'filename': None, 'data': None} def save_side_effect(filename, file_obj): upload['filename'] = filename upload['data'] = file_obj.read() return 'New Filename' save_mock.side_effect = save_side_effect url_mock.return_value = '/media/foobar' response = self.client.post(url_reverse('upload-file'), { 'file': File(BytesIO(b'123'), 'My Filename'), }) self.assertEqual(response.status_code, 201) self.assertEqual(save_mock.call_count, 1) self.assertEqual(upload['filename'], 'My Filename') self.assertEqual(upload['data'], b'123') self.assertEqual(url_mock.call_count, 1) self.assertEqual(url_mock.call_args, mock.call('New Filename')) self.assertEqual( response.content, json.dumps({"url": "/media/foobar"}).encode('utf-8'), )
def test_post_without_file(self): author = create_author() self.client.login(username=author.username, password="******") response = self.client.post(url_reverse('upload-file')) self.assertEqual(response.status_code, 400) self.assertEqual(response.content, b'{}')
def test_get_response_as_authenticated_user(self): author = create_author() self.client.login(username=author.username, password="******") response = self.client.get(url_reverse('upload-file')) self.assertEqual(response.status_code, 405) self.assertEqual(response.content, b'{}')
def test_user_by_id_get(self): url = url_reverse('user_by_id', kwargs={'user_id': user_ids[2]}) response_2nd = self.client.get(url) self.assertIn(response_2nd.status_code, [200, 302]) self.assertDictEqual(response_2nd.json()['user'], { 'id': user_ids[2], 'username': user_names[2] })
def test_view_month_article_404(self): create_sample_article_list(create_author()) response = self.client.get( url_reverse("article-archive", kwargs={ "year": "2016", "month": "01", }), ) self.assertEqual(response.status_code, 404)
def test_second_page(self): create_sample_article_list(create_author()) response = self.client.get( url_reverse("article-page", kwargs={"page": 2})) self.assertEqual(response.status_code, 200) self.assertTrue("article_list" in response.context) self.assertEqual([x.slug for x in response.context["article_list"]], ["first-article"])
def test_view_month_article_404(self): create_sample_article_list(create_author()) response = self.client.get( url_reverse("article-archive", kwargs={ "year": "2016", "month": "01", }), ) self.assertEqual(response.status_code, 404)
def test_delete_article(self): author = create_author() article = create_article(author) self.client.login(username=author.username, password="******") response = self.client.post(article.delete_url()) self.assertRedirects( response, url_reverse("article-edit-list", kwargs={"page": 1})) self.assertEqual(Article.objects.all().count(), 0)
def test_add_new_article_forbidden(self): response = self.client.post( url_reverse("new-article"), { "title": "Some Article", "slug": "some-article", "active": True, "content": "*Some* Article", "creation_date": "2015-06-01 00:00", }) self.assertEqual(response.status_code, 302) self.assertEqual(Article.objects.all().count(), 0)
def test_second_page(self): create_sample_article_list(create_author()) response = self.client.get( url_reverse("article-page", kwargs={"page": 2}) ) self.assertEqual(response.status_code, 200) self.assertTrue("article_list" in response.context) self.assertEqual( [x.slug for x in response.context["article_list"]], ["first-article"] )
def test_delete_article(self): author = create_author() article = create_article(author) self.client.login(username=author.username, password="******") response = self.client.post(article.delete_url()) self.assertRedirects( response, url_reverse("article-edit-list", kwargs={"page": 1}) ) self.assertEqual(Article.objects.all().count(), 0)
def test_view_month_article(self): create_sample_article_list(create_author()) response = self.client.get( url_reverse("article-archive", kwargs={ "year": "2014", "month": "06", }), ) self.assertEqual(response.status_code, 200) self.assertTrue("article_list" in response.context) self.assertEqual([x.slug for x in response.context["article_list"]], ["second-article", "first-article"])
def test_add_new_article_forbidden(self): response = self.client.post( url_reverse("new-article"), { "title": "Some Article", "slug": "some-article", "active": True, "content": "*Some* Article", "creation_date": "2015-06-01 00:00", } ) self.assertEqual(response.status_code, 302) self.assertEqual(Article.objects.all().count(), 0)
def test_add_new_article(self): author = create_author() self.client.login(username=author.username, password="******") response = self.client.post( url_reverse("new-article"), { "title": "Some Article", "slug": "some-article", "active": True, "content": "*Some* Article", "creation_date": "2015-06-01 00:00", }) edit_url = url_reverse("edit-article", kwargs={"slug": "some-article"}) self.assertRedirects(response, edit_url) article = Article.objects.get(slug="some-article") self.assertEqual(article.title, "Some Article") self.assertEqual(article.slug, "some-article") self.assertTrue(article.active) self.assertEqual(article.content, "*Some* Article")
def test_view_month_article(self): create_sample_article_list(create_author()) response = self.client.get( url_reverse("article-archive", kwargs={ "year": "2014", "month": "06", }), ) self.assertEqual(response.status_code, 200) self.assertTrue("article_list" in response.context) self.assertEqual( [x.slug for x in response.context["article_list"]], ["second-article", "first-article"] )
def setup_user(request): # before we do anything, make sure the user isn't already set up customer_record = Customer.objects.filter(user=request.user).first() if customer_record is not None: # user already has a link return redirect('gocardless:index') params = { "description": "London Hackspace", "session_token": request.session['PHPSESSID'], "success_redirect_url": request.build_absolute_uri(url_reverse('gocardless:setup_redirect')), "prefilled_customer": { "email": request.user.email } } flow = gc_client.redirect_flows.create(params=params) return redirect(flow.redirect_url)
def __init__(self, *args, **kwargs): if kwargs.get('instance'): instance = kwargs['instance'] if not 'initial' in kwargs: kwargs['initial'] = {} url = '%s://%s%s' % ( settings.SITE_SCHEME, settings.SITE_HOST, url_reverse('api:invitation-activate', kwargs={'key': instance.key}) ) kwargs['initial']['url'] = url qr = qrcode.QRCode( version=1, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=4, border=1) qr.add_data(url) qr.make(fit=True) image = qr.make_image() bio = io.BytesIO() image.save(bio) b64 = base64.b64encode(bio.getvalue()) kwargs['initial']['qr'] = b64 super(MemberInvitationForm, self).__init__(*args, **kwargs)
def test_chat_messages_wrong(self): url = url_reverse('chat_messages', kwargs={'chat_id': chat_ids[2]}) self.client.login(username=user_names[1], password=user_passwords[1]) response_4th = self.client.get(url) self.assertRaises(KeyError, lambda: response_4th.json()['messages'])
def get_success_url(self): # Redirect away to make it hard to accidentally submit twice. return url_reverse( "article-comment-bounce", args=[self.article.slug], )
def test_post_response_as_anonymous_user(self): response = self.client.post(url_reverse('upload-file')) self.assertEqual(response.status_code, 403) self.assertEqual(response.content, b'{}')
def test_chat_detail_get(self): url = url_reverse('chat_detail', kwargs={'chat_id': chat_ids[1]}) self.client.login(username=user_names[1], password=user_passwords[1]) response_3rd = self.client.get(url) self.assertIn(response_3rd.status_code, [200, 304]) self.assertEqual(len(response_3rd.json()['members']), 2)
def test_chat_messages_get(self): url = url_reverse('chat_messages', kwargs={'chat_id': chat_ids[1]}) self.client.login(username=user_names[1], password=user_passwords[1]) response_3rd = self.client.get(url) self.assertIn(response_3rd.status_code, [200, 304]) self.assertListEqual(response_3rd.json()['messages'], [])
def index(request): return HttpResponseRedirect(url_reverse("authentication:login"))
def test_user_new_post(self): url = url_reverse('user_new') response_2nd = self.client.post(url, {}) self.assertEqual(response_2nd.json()['User creation:'], 'invalid form data')
def build_table_row(row_obj, table_obj, onclick_column=None, target_link=None): print( '--->onclick', onclick_column, ) row_ele = "<tr>" for index, column_name in enumerate(table_obj.list_display): try: column_data = row_obj._meta.get_field( column_name)._get_val_from_obj(row_obj) except Exception as e: if hasattr(row_obj, column_name): column_data = getattr(row_obj, column_name)() else: raise ValueError pass if column_name in table_obj.choice_fields: column_data = getattr(row_obj, 'get_%s_display' % column_name)() if column_name in table_obj.fk_fields: column_data = getattr(row_obj, column_name).__str__() if onclick_column == column_name: column = ''' <td><a href=%s>%s</a></td> ''' % (url_reverse( target_link, args=(column_data, )), column_data) else: column = "<td>%s</td>" % column_data row_ele += column #for dynamic display if table_obj.dynamic_fk: if hasattr(row_obj, table_obj.dynamic_fk): #print("----dynamic:",getattr(row_obj,table_obj.dynamic_fk), row_obj) #print(row_obj.networkdevice) dy_fk = getattr(row_obj, table_obj.dynamic_fk) #拿到的是asset_type的值 if hasattr(row_obj, dy_fk): dy_fk_obj = getattr(row_obj, dy_fk) print("-->type", type(dy_fk_obj), dy_fk_obj) for index, column_name in enumerate( table_obj.dynamic_list_display): if hasattr(dy_fk_obj, column_name): if column_name in table_obj.dynamic_choice_fields: column_data = getattr( dy_fk_obj, 'get_%s_display' % column_name)() else: column_data = dy_fk_obj._meta.get_field( column_name)._get_val_from_obj(dy_fk_obj) print("dynamic column data", column_data) column = "<td>%s</td>" % column_data else: column = "<td>n/a</td>" row_ele += column else: #这个关联的表还没创建呢, 但也要创建空的html td占位符 for index, column_name in enumerate( table_obj.dynamic_list_display): row_ele += "<td></td>" for field in table_obj.m2m_fields: m2m_obj = getattr(row_obj, field) column = "<td> " for obj in m2m_obj.select_related(): column += "<span style='display:inline-block' class='label label-mint label-info'>%s</span>" % obj.__str__( ) column += "</td>" row_ele += column row_ele += "</tr>" return mark_safe(row_ele)
def test_user_new_get(self): url = url_reverse('user_new') response_1st = self.client.get(url) self.assertEqual(len(response_1st.templates), 10) self.assertEqual(response_1st.templates[0].name, 'users/new_user.html')
def test_user_by_id_post(self): url = url_reverse('user_by_id', kwargs={'user_id': user_ids[2]}) response_1st = self.client.post(url, {}) self.assertEqual(response_1st.status_code, 405)
def test_user_self_get(self): url = url_reverse('user_self') self.client.login(username=user_names[1], password=user_passwords[1]) response_3rd = self.client.get(url) self.assertIn(response_3rd.status_code, [200, 302])
def test_user_self_post(self): url = url_reverse('user_self') self.client.login(username=user_names[1], password=user_passwords[1]) response_2nd = self.client.post(url, {}) self.assertEqual(response_2nd.status_code, 405)
def get_absolute_url(self): return url_reverse("article-detail", args=(self.slug,))
def article_bounce_view(request, slug): return bounce_view(request, url_reverse( "article-detail", kwargs={"slug": slug}, ) + "#last_comment")
def test_chat_detail_unlogged(self): url = url_reverse('chat_detail', kwargs={'chat_id': chat_ids[1]}) response_1st = self.client.get(url) self.assertIn(response_1st.status_code, [302]) self.assertEqual(response_1st['Location'], '/login/?next=' + url)
def test_chat_detail_post(self): url = url_reverse('chat_detail', kwargs={'chat_id': chat_ids[1]}) self.client.login(username=user_names[1], password=user_passwords[1]) response_2nd = self.client.post(url, {}) self.assertEqual(response_2nd.status_code, 405)
def get_success_url(self): # Redirect away to make it hard to accidentally submit twice. return url_reverse( "article-comment-bounce", args=[self.article.slug], )
def test_user_self_unlogged(self): url = url_reverse('user_self') response_1st = self.client.get(url) self.assertIn(response_1st.status_code, [302]) self.assertEqual(response_1st['Location'], '/login/?next=' + url)
def build_table_row(row_obj,table_obj,onclick_column=None,target_link=None): row_ele = "<tr>" row_ele += "<td><input type='checkbox' tag='row-check' value='%s' > </td>" % row_obj.id for index,column_name in enumerate(table_obj.list_display): if hasattr(row_obj,column_name): field_obj = row_obj._meta.get_field(column_name) column_data = field_obj._get_val_from_obj(row_obj) if column_name in table_obj.choice_fields: column_data = getattr(row_obj,'get_%s_display'%column_name)() if column_name in table_obj.fk_fields: column_data = r"%s" %getattr(row_obj,column_name).__str__().strip("<>") if 'DateTimeField' in field_obj.__repr__(): column_data = getattr(row_obj,column_name).strftime( "%Y-%m-%d %H:%M:%S") \ if getattr(row_obj,column_name) else None if 'ManyToManyField' in field_obj.__repr__(): column_data = getattr(row_obj, column_name).select_related().count() if onclick_column == column_name: column = ''' <td><a class='btn-link' href=%s>%s</a></td> '''% (url_reverse(target_link,args=(column_data, )),column_data) if column_name in table_obj.onclick_fields: column = '''<td><a class='btn-link' href='%s' target='_blank'>%s</a></td>''' % \ (url_reverse(table_obj.onclick_fields[column_name],args=(row_obj.id, )), column_data) elif index == 0:#首列可点击进入更改页 column = '''<td><a class='btn-link' href='%schange/%s/' >%s</a> </td> ''' %(table_obj.request.path, row_obj.id, column_data) elif column_name in table_obj.colored_fields: #特定字段需要显示color color_dic = table_obj.colored_fields[column_name] if column_data in color_dic: column = "<td style='background-color:%s'>%s</td>" % (color_dic[column_data], column_data) else: column = "<td>%s</td>" % column_data else: column = "<td>%s</td>" % column_data elif hasattr(table_obj.admin_class, column_name): #customized field field_func = getattr(table_obj.admin_class, column_name) table_obj.admin_class.instance = row_obj column = "<td>%s</td>" % field_func() row_ele += column #for dynamic display if table_obj.dynamic_fk : if hasattr(row_obj,table_obj.dynamic_fk ): #print("----dynamic:",getattr(row_obj,table_obj.dynamic_fk), row_obj) #print(row_obj.networkdevice) dy_fk = getattr(row_obj,table_obj.dynamic_fk) #拿到的是asset_type的值 if hasattr(row_obj,dy_fk): dy_fk_obj = getattr(row_obj,dy_fk) print("-->type",type(dy_fk_obj), dy_fk_obj ) for index,column_name in enumerate(table_obj.dynamic_list_display): if column_name in table_obj.dynamic_choice_fields: column_data = getattr(dy_fk_obj, 'get_%s_display' % column_name)() else: column_data = dy_fk_obj._meta.get_field(column_name)._get_val_from_obj(dy_fk_obj) print("dynamic column data", column_data) column = "<td>%s</td>" % column_data row_ele += column else: #这个关联的表还没创建呢 pass row_ele += "</tr>" return mark_safe(row_ele)
def delete_url(self): return url_reverse("delete-comment", args=(self.article.slug, self.id))