Example #1
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")
Example #2
0
def article_bounce_view(request, slug):
    return bounce_view(
        request,
        url_reverse(
            "article-detail",
            kwargs={"slug": slug},
        ) + "#last_comment")
Example #3
0
    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'),
        )
Example #4
0
    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'{}')
Example #5
0
    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'{}')
Example #6
0
 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]
     })
Example #7
0
    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)
Example #8
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"])
Example #9
0
    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)
Example #10
0
    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)
Example #11
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)
Example #12
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"]
        )
Example #13
0
    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)
Example #14
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"])
Example #15
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)
Example #16
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")
Example #17
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"]
        )
Example #18
0
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)
Example #19
0
 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'])
Example #21
0
 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],
     )
Example #22
0
    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'], [])
Example #25
0
def index(request):
    return HttpResponseRedirect(url_reverse("authentication:login"))
Example #26
0
 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')
Example #27
0
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)
Example #28
0
 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')
Example #29
0
 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)
Example #30
0
 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])
Example #31
0
 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)
Example #32
0
 def get_absolute_url(self):
     return url_reverse("article-detail", args=(self.slug,))
Example #33
0
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)
Example #36
0
 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],
     )
Example #37
0
 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)
Example #38
0
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)
Example #39
0
 def delete_url(self):
     return url_reverse("delete-comment", args=(self.article.slug, self.id))