Ejemplo n.º 1
0
 def test_secondary_email_optin_form(self):
     person = create_person(email=self.secondary_email, user=self.user)
     EmailOptout(email=person.email).save()
     form_re = self._form_re(reverse('mail-optin'), person.email)
     response = self.client.get(reverse('user-profile'))
     self.assertEqual(response.status_code, 200)
     self.assertIsNotNone(form_re.search(response.content.decode()))
Ejemplo n.º 2
0
    def test_create_duplicate_name(self):
        newbundlename = 'testbundle-dup'
        patch = self.patches[0]

        params = {'form': 'patchlistform',
                  'bundle_name': newbundlename,
                  'action': 'Create',
                  'project': self.project.id,
                  'patch_id:%d' % patch.id: 'checked'}

        response = self.client.post(
            reverse('patch-list', kwargs={
                'project_id': self.project.linkname}),
            params)

        n_bundles = Bundle.objects.count()
        self.assertContains(response, 'Bundle %s created' % newbundlename)
        self.assertContains(response, 'added to bundle %s' % newbundlename,
                            count=1)

        bundle = Bundle.objects.get(name=newbundlename)
        self.assertEqual(bundle.patches.count(), 1)
        self.assertEqual(bundle.patches.all()[0], patch)

        response = self.client.post(
            reverse('patch-list', kwargs={
                'project_id': self.project.linkname}),
            params)

        self.assertNotContains(response, 'Bundle %s created' % newbundlename)
        self.assertContains(response, 'You already have a bundle called')
        self.assertEqual(Bundle.objects.count(), n_bundles)
        self.assertEqual(bundle.patches.count(), 1)
Ejemplo n.º 3
0
    def test_redirects(self):
        for view in ['help', 'help-about', 'help-pwclient']:
            requested_url = reverse(view)
            redirect_url = reverse('about')

            response = self.client.get(requested_url)
            self.assertRedirects(response, redirect_url, 301)
Ejemplo n.º 4
0
    def test_redirects(self):
        for view in ['help', 'help-about', 'help-pwclient']:
            requested_url = reverse(view)
            redirect_url = reverse('about')

            response = self.client.get(requested_url)
            self.assertRedirects(response, redirect_url, 301)
Ejemplo n.º 5
0
    def render(self, context):
        view_name = template.Variable('list_view.view').resolve(context)
        kwargs = template.Variable('list_view.view_params').resolve(context)

        path = None
        try:
            path = reverse(view_name, args=[], kwargs=kwargs)
        except NoReverseMatch:
            try:
                project_name = settings.SETTINGS_MODULE.split('.')[0]
                path = reverse(project_name + '.' + view_name,
                               args=[], kwargs=kwargs)
            except NoReverseMatch:
                raise

        if path is None:
            return ''

        params = []
        try:
            qs_var = template.Variable('list_view.params').resolve(context)
            params = dict(qs_var)
        except (TypeError, template.VariableDoesNotExist):
            pass

        for (k, v) in self.params.items():
            params[smart_str(k, 'ascii')] = v.resolve(context)

        if not params:
            return path

        return path + '?' + '&'.join(
            ['%s=%s' % (k, escape(v)) for (k, v) in list(params.items())])
Ejemplo n.º 6
0
 def test_secondary_email_optin_form(self):
     person = create_person(email=self.secondary_email, user=self.user)
     EmailOptout(email=person.email).save()
     form_re = self._form_re(reverse('mail-optin'), person.email)
     response = self.client.get(reverse('user-profile'))
     self.assertEqual(response.status_code, 200)
     self.assertIsNotNone(form_re.search(response.content.decode()))
Ejemplo n.º 7
0
    def test_redirect(self):
        cover_id = create_cover().id

        requested_url = reverse('patch-detail', kwargs={'patch_id': cover_id})
        redirect_url = reverse('cover-detail', kwargs={'cover_id': cover_id})

        response = self.client.get(requested_url)
        self.assertRedirects(response, redirect_url)
Ejemplo n.º 8
0
    def test_xmlrpc(self):
        with self.settings(ENABLE_XMLRPC=False):
            response = self.client.get(reverse('about'))
            self.assertFalse(response.context['enabled_apis']['xmlrpc'])

        with self.settings(ENABLE_XMLRPC=True):
            response = self.client.get(reverse('about'))
            self.assertTrue(response.context['enabled_apis']['xmlrpc'])
Ejemplo n.º 9
0
    def test_xmlrpc(self):
        with self.settings(ENABLE_XMLRPC=False):
            response = self.client.get(reverse('about'))
            self.assertFalse(response.context['enabled_apis']['xmlrpc'])

        with self.settings(ENABLE_XMLRPC=True):
            response = self.client.get(reverse('about'))
            self.assertTrue(response.context['enabled_apis']['xmlrpc'])
Ejemplo n.º 10
0
 def test_post_optin(self):
     email = u'*****@*****.**'
     response = self.client.post(reverse('mail-settings'), {'email': email})
     self.assertEqual(response.status_code, 200)
     self.assertTemplateUsed(response, 'patchwork/mail-settings.html')
     self.assertEqual(response.context['is_optout'], False)
     self.assertContains(response, '<strong>may</strong>')
     self.assertContains(response, 'action="%s"' % reverse('mail-optout'))
Ejemplo n.º 11
0
 def test_post_optin(self):
     email = u'*****@*****.**'
     response = self.client.post(reverse('mail-settings'), {'email': email})
     self.assertEqual(response.status_code, 200)
     self.assertTemplateUsed(response, 'patchwork/mail-settings.html')
     self.assertEqual(response.context['is_optout'], False)
     self.assertContains(response, '<strong>may</strong>')
     self.assertContains(response, 'action="%s"' % reverse('mail-optout'))
Ejemplo n.º 12
0
 def api_url(self, item=None):
     if item is None:
         return reverse('api-check-list', args=[self.patch.id])
     return reverse('api-check-detail',
                    kwargs={
                        'patch_id': self.patch.id,
                        'check_id': item.id
                    })
Ejemplo n.º 13
0
    def test_redirect(self):
        project = utils.create_project()

        requested_url = reverse('project-list')
        redirect_url = reverse('patch-list', kwargs={
            'project_id': project.linkname})

        response = self.client.get(requested_url)
        self.assertRedirects(response, redirect_url)
Ejemplo n.º 14
0
    def test_redirect(self):
        project = utils.create_project()

        requested_url = reverse('project-list')
        redirect_url = reverse('patch-list',
                               kwargs={'project_id': project.linkname})

        response = self.client.get(requested_url)
        self.assertRedirects(response, redirect_url)
Ejemplo n.º 15
0
    def test_user_profile_todos(self):
        patches = utils.create_patches(5)
        for patch in patches:
            patch.delegate = self.user
            patch.save()

        response = self.client.get(reverse('user-profile'))

        self.assertContains(response, 'contains 5')
        self.assertContains(response, reverse('user-todos'))
Ejemplo n.º 16
0
    def _test_redirect(self, submission, submission_url, submission_id):
        comment_id = create_comment(submission=submission).id

        requested_url = reverse('comment-redirect',
                                kwargs={'comment_id': comment_id})
        redirect_url = '%s#%d' % (reverse(
            submission_url, kwargs={submission_id: submission.id}), comment_id)

        response = self.client.get(requested_url)
        self.assertRedirects(response, redirect_url)
Ejemplo n.º 17
0
    def test_unlink_non_post(self):
        secondary_email = _generate_secondary_email(self.user)

        self._create_confirmation(secondary_email)

        person = Person.objects.get(email=secondary_email)
        response = self.client.get(reverse('user-unlink', args=[person.id]))
        self.assertRedirects(response, reverse('user-profile'))

        person = Person.objects.get(email=secondary_email)
        self.assertEqual(person.user, self.user)
Ejemplo n.º 18
0
    def test_rest(self):
        # TODO(stephenfin): There appears to be a bug in Django 1.10.x under
        # Python 3.5, meaning we can't use 'override_settings' here or we cause
        # the REST API tests to fail. We should investigate this.
        with self.settings(ENABLE_REST_API=False):
            response = self.client.get(reverse('about'))
            self.assertFalse(response.context['enabled_apis']['rest'])

        with self.settings(ENABLE_REST_API=True):
            response = self.client.get(reverse('about'))
            self.assertTrue(response.context['enabled_apis']['rest'])
Ejemplo n.º 19
0
    def test_rest(self):
        # TODO(stephenfin): There appears to be a bug in Django 1.10.x under
        # Python 3.5, meaning we can't use 'override_settings' here or we cause
        # the REST API tests to fail. We should investigate this.
        with self.settings(ENABLE_REST_API=False):
            response = self.client.get(reverse('about'))
            self.assertFalse(response.context['enabled_apis']['rest'])

        with self.settings(ENABLE_REST_API=True):
            response = self.client.get(reverse('about'))
            self.assertTrue(response.context['enabled_apis']['rest'])
Ejemplo n.º 20
0
    def test_series_dropdown(self):
        patch = create_patch()
        series = [create_series() for x in range(5)]

        for series_ in series:
            series_.add_patch(patch, 1)

        response = self.client.get(
            reverse('patch-detail', kwargs={'patch_id': patch.id}))

        for series_ in series:
            self.assertContains(
                response,
                reverse('series-mbox', kwargs={'series_id': series_.id}))
Ejemplo n.º 21
0
 def test_login(self):
     self.get(reverse('auth_login'))
     self.enter_text('username', self.user.username)
     self.enter_text('password', self.user.username)
     self.click('input[value="Login"]')
     dropdown = self.wait_until_visible('a.dropdown-toggle strong')
     self.assertEqual(dropdown.text, self.user.username)
Ejemplo n.º 22
0
    def _test_order(self, ids, expected_order):
        newbundlename = 'testbundle-new'

        # need to define our querystring explicity to enforce ordering
        params = {'form': 'patchlistform',
                  'bundle_name': newbundlename,
                  'action': 'Create',
                  'project': self.project.id,
                  }

        data = urlencode(params) + \
            ''.join(['&patch_id:%d=checked' % i for i in ids])

        response = self.client.post(
            reverse('patch-list', kwargs={
                'project_id': self.project.linkname}),
            data=data,
            content_type='application/x-www-form-urlencoded',
        )

        self.assertContains(response, 'Bundle %s created' % newbundlename)
        self.assertContains(response, 'added to bundle %s' % newbundlename,
                            count=5)

        bundle = Bundle.objects.get(name=newbundlename)

        # BundlePatches should be sorted by .order by default
        bps = BundlePatch.objects.filter(bundle=bundle)

        for (bp, p) in zip(bps, expected_order):
            self.assertEqual(bp.patch.pk, p.pk)

        bundle.delete()
Ejemplo n.º 23
0
    def test_add_to_non_empty_bundle(self):
        self.bundle.append_patch(self.patches[0])
        patch = self.patches[1]
        params = {'form': 'patchlistform',
                  'action': 'Add',
                  'project': self.project.id,
                  'bundle_id': self.bundle.id,
                  'patch_id:%d' % patch.id: 'checked'}

        response = self.client.post(
            reverse('patch-list', kwargs={
                'project_id': self.project.linkname}),
            params)

        self.assertContains(response, 'added to bundle %s' % self.bundle.name,
                            count=1)

        self.assertEqual(self.bundle.patches.count(), 2)
        self.assertIn(self.patches[0], self.bundle.patches.all())
        self.assertIn(self.patches[1], self.bundle.patches.all())

        # check order
        bps = [BundlePatch.objects.get(bundle=self.bundle,
                                       patch=self.patches[i])
               for i in [0, 1]]
        self.assertTrue(bps[0].order < bps[1].order)
Ejemplo n.º 24
0
 def test_name_complete(self):
     people = [create_person(name='Test name'), create_person(name=None)]
     response = self.client.get(reverse('api-submitters'), {'q': 'name'})
     self.assertEqual(response.status_code, 200)
     data = json.loads(response.content.decode())
     self.assertEqual(len(data), 1)
     self.assertEqual(data[0]['name'], people[0].name)
Ejemplo n.º 25
0
 def test_login(self):
     self.get(reverse('auth_login'))
     self.enter_text('username', self.user.username)
     self.enter_text('password', self.user.username)
     self.click('input[value="Login"]')
     dropdown = self.wait_until_visible('a.dropdown-toggle strong')
     self.assertEqual(dropdown.text, self.user.username)
Ejemplo n.º 26
0
 def test_post_non_email(self):
     response = self.client.post(reverse('mail-optin'), {'email': 'foo'})
     self.assertEqual(response.status_code, 200)
     self.assertFormError(response, 'form', 'email', error_strings['email'])
     self.assertTrue(response.context['error'])
     self.assertNotIn('email_sent', response.context)
     self.assertEqual(len(mail.outbox), 0)
Ejemplo n.º 27
0
def bundle_detail(request, username, bundlename):
    bundle = get_object_or_404(Bundle, owner__username=username,
                               name=bundlename)
    filter_settings = [(DelegateFilter, DelegateFilter.AnyDelegate)]

    is_owner = request.user == bundle.owner

    if not (is_owner or bundle.public):
        return HttpResponseNotFound()

    if is_owner:
        if request.method == 'POST' and request.POST.get('form') == 'bundle':
            action = request.POST.get('action', '').lower()
            if action == 'delete':
                bundle.delete()
                return HttpResponseRedirect(reverse('user-profile'))
            elif action == 'update':
                form = BundleForm(request.POST, instance=bundle)
                if form.is_valid():
                    form.save()

                # if we've changed the bundle name, redirect to new URL
                bundle = Bundle.objects.get(pk=bundle.pk)
                if bundle.name != bundlename:
                    return HttpResponseRedirect(bundle.get_absolute_url())

            else:
                form = BundleForm(instance=bundle)
        else:
            form = BundleForm(instance=bundle)

        if (request.method == 'POST' and
            request.POST.get('form') == 'reorderform'):
            order = get_object_or_404(
                BundlePatch,
                bundle=bundle,
                patch__id=request.POST.get('order_start')).order

            for patch_id in request.POST.getlist('neworder'):
                bundlepatch = get_object_or_404(BundlePatch,
                                                bundle=bundle,
                                                patch__id=patch_id)
                bundlepatch.order = order
                bundlepatch.save()
                order += 1
    else:
        form = None

    context = generic_list(request, bundle.project,
                           'bundle-detail',
                           view_args={'username': bundle.owner.username,
                                      'bundlename': bundle.name},
                           filter_settings=filter_settings,
                           patches=bundle.ordered_patches(),
                           editable_order=is_owner)

    context['bundle'] = bundle
    context['bundleform'] = form

    return render(request, 'patchwork/bundle.html', context)
Ejemplo n.º 28
0
def bundle_mbox_redir(request, bundle_id):
    bundle = get_object_or_404(Bundle, id=bundle_id, owner=request.user)
    return HttpResponseRedirect(
        reverse('bundle-mbox', kwargs={
            'username': request.user.username,
            'bundlename': bundle.name,
        }))
Ejemplo n.º 29
0
 def test_post_non_email(self):
     response = self.client.post(reverse('mail-optin'), {'email': 'foo'})
     self.assertEqual(response.status_code, 200)
     self.assertFormError(response, 'form', 'email', error_strings['email'])
     self.assertTrue(response.context['error'])
     self.assertNotIn('email_sent', response.context)
     self.assertEqual(len(mail.outbox), 0)
Ejemplo n.º 30
0
 def test_name_complete(self):
     people = [create_person(name='Test name'), create_person(name=None)]
     response = self.client.get(reverse('api-submitters'), {'q': 'name'})
     self.assertEqual(response.status_code, 200)
     data = json.loads(response.content.decode())
     self.assertEqual(len(data), 1)
     self.assertEqual(data[0]['name'], people[0].name)
Ejemplo n.º 31
0
 def test_post_empty(self):
     response = self.client.post(reverse('mail-optin'), {'email': ''})
     self.assertEqual(response.status_code, 200)
     self.assertFormError(response, 'form', 'email',
                          'This field is required.')
     self.assertTrue(response.context['error'])
     self.assertNotIn('email_sent', response.context)
     self.assertEqual(len(mail.outbox), 0)
Ejemplo n.º 32
0
    def test_opt_in_without_optout(self):
        email = u'*****@*****.**'
        response = self.client.post(reverse('mail-optin'), {'email': email})

        # check for an error message
        self.assertEqual(response.status_code, 200)
        self.assertTrue(bool(response.context['error']))
        self.assertContains(response, 'not on the patchwork opt-out list')
Ejemplo n.º 33
0
def unlink(request, person_id):
    person = get_object_or_404(Person, id=person_id)

    if request.method == 'POST' and person.email != request.user.email:
        person.user = None
        person.save()

    return HttpResponseRedirect(reverse('user-profile'))
Ejemplo n.º 34
0
def unlink(request, person_id):
    person = get_object_or_404(Person, id=person_id)

    if request.method == 'POST' and person.email != request.user.email:
        person.user = None
        person.save()

    return HttpResponseRedirect(reverse('user-profile'))
Ejemplo n.º 35
0
    def test_opt_in_without_optout(self):
        email = u'*****@*****.**'
        response = self.client.post(reverse('mail-optin'), {'email': email})

        # check for an error message
        self.assertEqual(response.status_code, 200)
        self.assertTrue(bool(response.context['error']))
        self.assertContains(response, 'not on the patchwork opt-out list')
Ejemplo n.º 36
0
 def test_post_empty(self):
     response = self.client.post(reverse('mail-optin'), {'email': ''})
     self.assertEqual(response.status_code, 200)
     self.assertFormError(response, 'form', 'email',
                          'This field is required.')
     self.assertTrue(response.context['error'])
     self.assertNotIn('email_sent', response.context)
     self.assertEqual(len(mail.outbox), 0)
Ejemplo n.º 37
0
    def test_utf8_handling(self):
        """Validate handling of non-ascii characters."""
        project = create_project()
        url = reverse('patch-list', args=[project.linkname])

        response = self.client.get(url + '?submitter=%%E2%%98%%83')

        self.assertEqual(response.status_code, 200)
Ejemplo n.º 38
0
 def test_param_limit(self):
     for i in range(10):
         create_person()
     response = self.client.get(reverse('api-submitters'),
                                {'q': 'test', 'l': 5})
     self.assertEqual(response.status_code, 200)
     data = json.loads(response.content.decode())
     self.assertEqual(len(data), 5)
Ejemplo n.º 39
0
 def test_email_complete(self):
     people = [create_person(email='*****@*****.**'),
               create_person(email='*****@*****.**')]
     response = self.client.get(reverse('api-submitters'), {'q': 'test2'})
     self.assertEqual(response.status_code, 200)
     data = json.loads(response.content.decode())
     self.assertEqual(len(data), 1)
     self.assertEqual(data[0]['email'], people[1].email)
Ejemplo n.º 40
0
    def test_user_profile_bundles(self):
        bundle = create_bundle(owner=self.user)

        response = self.client.get(reverse('user-profile'))

        self.assertContains(response, 'Your Profile')
        self.assertContains(response, 'You have the following bundle')
        self.assertContains(response, bundle.get_absolute_url())
Ejemplo n.º 41
0
def bundle_mbox_redir(request, bundle_id):
    bundle = get_object_or_404(Bundle, id=bundle_id, owner=request.user)
    return HttpResponseRedirect(
        reverse('bundle-mbox',
                kwargs={
                    'username': request.user.username,
                    'bundlename': bundle.name,
                }))
Ejemplo n.º 42
0
    def test_no_redirect(self):
        utils.create_project()
        utils.create_project()

        requested_url = reverse('project-list')

        response = self.client.get(requested_url)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(len(response.context['projects']), 2)
Ejemplo n.º 43
0
 def setUp(self):
     self.url = self.live_server_url + reverse('xmlrpc')
     # url is of the form http://localhost:PORT/PATH
     # strip the http and replace it with the username/passwd of a user.
     self.project = utils.create_project()
     self.user = utils.create_maintainer(self.project)
     self.url = ('http://%s:%s@' + self.url[7:]) % (self.user.username,
                                                    self.user.username)
     self.rpc = xmlrpc_client.Server(self.url)
Ejemplo n.º 44
0
    def test_date_order(self):
        url = reverse('patch-list',
                      kwargs={'project_id': self.project.linkname})
        response = self.client.get(url + '?order=date')

        def test_fn(p1, p2):
            self.assertLessEqual(p1.date, p2.date)

        self._test_sequence(response, test_fn)
Ejemplo n.º 45
0
    def test_user_profile_invalid_post(self):
        user_profile = UserProfile.objects.get(user=self.user.id)
        old_ppp = user_profile.items_per_page
        new_ppp = -1

        self.client.post(reverse('user-profile'), {'items_per_page': new_ppp})

        user_profile = UserProfile.objects.get(user=self.user.id)
        self.assertEqual(user_profile.items_per_page, old_ppp)
Ejemplo n.º 46
0
    def test_no_redirect(self):
        utils.create_project()
        utils.create_project()

        requested_url = reverse('project-list')

        response = self.client.get(requested_url)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(len(response.context['projects']), 2)
Ejemplo n.º 47
0
 def test_date_header(self):
     patch = create_patch()
     response = self.client.get(reverse('patch-mbox', args=[patch.id]))
     mail = email.message_from_string(response.content.decode())
     mail_date = dateutil.parser.parse(mail['Date'])
     # patch dates are all in UTC
     patch_date = patch.date.replace(tzinfo=dateutil.tz.tzutc(),
                                     microsecond=0)
     self.assertEqual(mail_date, patch_date)
Ejemplo n.º 48
0
    def test_date_order(self):
        url = reverse('patch-list',
                      kwargs={'project_id': self.project.linkname})
        response = self.client.get(url + '?order=date')

        def test_fn(p1, p2):
            self.assertLessEqual(p1.date, p2.date)

        self._test_sequence(response, test_fn)
Ejemplo n.º 49
0
 def setUp(self):
     self.url = self.live_server_url + reverse('xmlrpc')
     # url is of the form http://localhost:PORT/PATH
     # strip the http and replace it with the username/passwd of a user.
     self.project = utils.create_project()
     self.user = utils.create_maintainer(self.project)
     self.url = ('http://%s:%s@' + self.url[7:]) % (self.user.username,
                                                    self.user.username)
     self.rpc = xmlrpc_client.Server(self.url)
Ejemplo n.º 50
0
 def test_date_header(self):
     patch = create_patch()
     response = self.client.get(reverse('patch-mbox', args=[patch.id]))
     mail = email.message_from_string(response.content.decode())
     mail_date = dateutil.parser.parse(mail['Date'])
     # patch dates are all in UTC
     patch_date = patch.date.replace(tzinfo=dateutil.tz.tzutc(),
                                     microsecond=0)
     self.assertEqual(mail_date, patch_date)
Ejemplo n.º 51
0
    def test_post(self):
        email = u'*****@*****.**'
        response = self.client.post(reverse('mail-optout'), {'email': email})

        # check for a confirmation object
        self.assertEqual(EmailConfirmation.objects.count(), 1)
        conf = EmailConfirmation.objects.get(email=email)

        # check confirmation page
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.context['confirmation'], conf)
        self.assertContains(response, email)

        # check email
        self.assertEqual(len(mail.outbox), 1)
        msg = mail.outbox[0]
        self.assertEqual(msg.to, [email])
        self.assertEqual(msg.subject, 'Patchwork opt-out confirmation')
        self.assertIn(reverse('confirm', kwargs={'key': conf.key}), msg.body)
Ejemplo n.º 52
0
    def test_submitter_reverse_order(self):
        url = reverse('patch-list',
                      kwargs={'project_id': self.project.linkname})
        response = self.client.get(url + '?order=-submitter')

        def test_fn(p1, p2):
            self.assertGreaterEqual(p1.submitter.name.lower(),
                                    p2.submitter.name.lower())

        self._test_sequence(response, test_fn)
Ejemplo n.º 53
0
    def test_patchwork_from_header(self):
        """Validate inclusion of generated 'X-Patchwork-From' header."""
        email = '*****@*****.**'
        from_header = 'From: Jon Doe <%s>\n' % email

        person = create_person(name='Jonathon Doe', email=email)
        patch = create_patch(submitter=person, headers=from_header)
        response = self.client.get(reverse('patch-mbox', args=[patch.id]))
        self.assertContains(response, from_header)
        self.assertContains(response, 'X-Patchwork-Submitter: %s <%s>' % (
            person.name, email))
Ejemplo n.º 54
0
 def test_patch_response(self):
     patch = create_patch(
         project=self.project,
         submitter=self.person,
         content='comment 1 text\nAcked-by: 1\n')
     create_comment(
         submission=patch,
         submitter=self.person,
         content='comment 2 text\nAcked-by: 2\n')
     response = self.client.get(reverse('patch-mbox', args=[patch.id]))
     self.assertContains(response, 'Acked-by: 1\nAcked-by: 2\n')
Ejemplo n.º 55
0
 def test_patch_utf8_nbsp(self):
     patch = create_patch(
         project=self.project,
         submitter=self.person,
         content='patch text\n')
     create_comment(
         submission=patch,
         submitter=self.person,
         content=u'comment\nAcked-by:\u00A0 foo')
     response = self.client.get(reverse('patch-mbox', args=[patch.id]))
     self.assertContains(response, u'\u00A0 foo\n')
Ejemplo n.º 56
0
def comment(request, comment_id):
    submission = shortcuts.get_object_or_404(models.Comment,
                                             id=comment_id).submission
    if models.Patch.objects.filter(id=submission.id).exists():
        url = 'patch-detail'
        key = 'patch_id'
    else:
        url = 'cover-detail'
        key = 'cover_id'

    return http.HttpResponseRedirect('%s#%s' % (
        reverse(url, kwargs={key: submission.id}), comment_id))
Ejemplo n.º 57
0
    def test_from_header(self):
        """Validate non-ascii 'From' header.

        Test that a person with characters outside ASCII in his name do
        produce correct From header. As RFC 2822 state we must retain
        the <*****@*****.**> format for the mail while the name part
        may be coded in some ways.
        """
        person = create_person(name=u'©ool guŷ')
        patch = create_patch(submitter=person)
        from_email = '<' + person.email + '>'
        response = self.client.get(reverse('patch-mbox', args=[patch.id]))
        self.assertContains(response, from_email)
Ejemplo n.º 58
0
def personify(person, project):

    if person.name:
        linktext = escape(person.name)
    else:
        linktext = escape(person.email)

    url = reverse('patch-list',
                  kwargs={'project_id': project.linkname})
    out = '<a href="%s?%s=%s">%s</a>' % (
        url, SubmitterFilter.param, escape(person.id), linktext)

    return mark_safe(out)