Example #1
0
 def setUp(self):
     self.site = factories.make_world()
     self.admin_site = AdminSite()
     self.request_admin = FoiRequestAdmin(FoiRequest, self.admin_site)
     self.attachment_admin = FoiAttachmentAdmin(FoiAttachment,
                                                self.admin_site)
     self.factory = RequestFactory()
     self.user = User.objects.get(username='******')
     self.user.is_superuser = True
 def setUp(self):
     self.site = factories.make_world()
     self.admin_site = AdminSite()
     self.request_admin = FoiRequestAdmin(FoiRequest,
         self.admin_site)
     self.attachment_admin = FoiAttachmentAdmin(FoiAttachment,
         self.admin_site)
     self.factory = RequestFactory()
     self.user = User.objects.get(username='******')
     self.user.is_superuser = True
Example #3
0
class AdminActionTest(TestCase):
    def setUp(self):
        self.site = factories.make_world()
        self.admin_site = AdminSite()
        self.request_admin = FoiRequestAdmin(FoiRequest, self.admin_site)
        self.attachment_admin = FoiAttachmentAdmin(FoiAttachment,
                                                   self.admin_site)
        self.factory = RequestFactory()
        self.user = User.objects.get(username='******')
        self.user.is_superuser = True

    def test_mark_same_as(self):
        req = self.factory.post('/', {})
        req.user = self.user
        factories.FoiRequestFactory(site=self.site)
        factories.FoiRequestFactory(site=self.site)
        frs = FoiRequest.objects.all()[:2]
        result = self.request_admin.mark_same_as(req, frs)
        self.assertEqual(result.status_code, 200)

        same_as = factories.FoiRequestFactory(site=self.site)
        same_as.save()

        req = self.factory.post('/', {'req_id': same_as.id})
        req.user = self.user
        req._messages = default_storage(req)

        frs = FoiRequest.objects.filter(id__in=[frs[0].id, frs[1].id])

        result = self.request_admin.mark_same_as(req, frs)
        self.assertIsNone(result)
        same_as = FoiRequest.objects.get(id=same_as.id)
        self.assertEqual(same_as.same_as_count, 2)
        frs = list(frs)
        frs[0] = FoiRequest.objects.get(id=frs[0].id)
        frs[1] = FoiRequest.objects.get(id=frs[1].id)
        self.assertEqual(frs[0].same_as, same_as)
        self.assertEqual(frs[1].same_as, same_as)

    def test_tag_all(self):
        req = self.factory.post('/', {})
        req.user = self.user
        factories.FoiRequestFactory(site=self.site)
        factories.FoiRequestFactory(site=self.site)
        frs = FoiRequest.objects.all()[:2]
        result = self.request_admin.tag_all(req, frs)
        self.assertEqual(result.status_code, 200)
        self.assertEqual(frs[0].tags.count(), 0)
        self.assertEqual(frs[1].tags.count(), 0)

        req = self.factory.post('/', {'tags': 'one, two'})
        req.user = self.user
        req._messages = default_storage(req)

        frs = FoiRequest.objects.filter(id__in=[frs[0].id, frs[1].id])

        result = self.request_admin.tag_all(req, frs)
        self.assertIsNone(result)
        frs = list(frs)
        frs[0] = FoiRequest.objects.get(id=frs[0].id)
        frs[1] = FoiRequest.objects.get(id=frs[1].id)
        self.assertEqual(frs[0].tags.count(), 2)
        self.assertEqual(frs[1].tags.count(), 2)
        self.assertEqual(set([t.name for t in frs[0].tags.all()]),
                         set(['one', 'two']))

    def check_attribute_change_action(self,
                                      klass,
                                      factory,
                                      admin_action,
                                      attr,
                                      initial,
                                      final,
                                      factory_extra=None):
        if factory_extra is None:
            d = {}
        else:
            d = factory_extra

        d.update({attr: initial})
        r0 = factory(**d)
        r0.save()
        r1 = factory(**d)
        r1.save()
        rs = klass.objects.filter(id__in=[r0.id, r1.id])

        req = self.factory.post('/', {})
        req.user = self.user
        req._messages = default_storage(req)

        result = admin_action(req, rs)
        self.assertIsNone(result)
        rs = klass.objects.filter(id__in=[r0.id, r1.id])
        for r in rs:
            self.assertEqual(getattr(r, attr), final)

    def test_mark_checked(self):
        self.check_attribute_change_action(FoiRequest,
                                           factories.FoiRequestFactory,
                                           self.request_admin.mark_checked,
                                           'checked',
                                           False,
                                           True,
                                           factory_extra={'site': self.site})

    def test_mark_not_foi(self):
        self.check_attribute_change_action(FoiRequest,
                                           factories.FoiRequestFactory,
                                           self.request_admin.mark_not_foi,
                                           'is_foi',
                                           True,
                                           False,
                                           factory_extra={'site': self.site})

    def test_approve(self):
        self.check_attribute_change_action(FoiAttachment,
                                           factories.FoiAttachmentFactory,
                                           self.attachment_admin.approve,
                                           'approved', False, True)

    def test_cannot_approve(self):
        self.check_attribute_change_action(
            FoiAttachment, factories.FoiAttachmentFactory,
            self.attachment_admin.cannot_approve, 'can_approve', True, False)
class AdminActionTest(TestCase):

    def setUp(self):
        self.site = factories.make_world()
        self.admin_site = AdminSite()
        self.request_admin = FoiRequestAdmin(FoiRequest,
            self.admin_site)
        self.attachment_admin = FoiAttachmentAdmin(FoiAttachment,
            self.admin_site)
        self.factory = RequestFactory()
        self.user = User.objects.get(username='******')
        self.user.is_superuser = True

    def test_mark_same_as(self):
        req = self.factory.post('/', {})
        req.user = self.user
        factories.FoiRequestFactory(site=self.site)
        factories.FoiRequestFactory(site=self.site)
        frs = FoiRequest.objects.all()[:2]
        result = self.request_admin.mark_same_as(req, frs)
        self.assertEqual(result.status_code, 200)

        same_as = factories.FoiRequestFactory(site=self.site)
        same_as.save()

        req = self.factory.post('/', {'req_id': same_as.id})
        req.user = self.user
        req._messages = default_storage(req)

        frs = FoiRequest.objects.filter(
            id__in=[frs[0].id, frs[1].id])

        result = self.request_admin.mark_same_as(req, frs)
        self.assertIsNone(result)
        same_as = FoiRequest.objects.get(id=same_as.id)
        self.assertEqual(same_as.same_as_count, 2)
        frs = list(frs)
        frs[0] = FoiRequest.objects.get(id=frs[0].id)
        frs[1] = FoiRequest.objects.get(id=frs[1].id)
        self.assertEqual(frs[0].same_as, same_as)
        self.assertEqual(frs[1].same_as, same_as)

    def test_tag_all(self):
        req = self.factory.post('/', {})
        req.user = self.user
        factories.FoiRequestFactory(site=self.site)
        factories.FoiRequestFactory(site=self.site)
        frs = FoiRequest.objects.all()[:2]
        result = self.request_admin.tag_all(req, frs)
        self.assertEqual(result.status_code, 200)
        self.assertEqual(frs[0].tags.count(), 0)
        self.assertEqual(frs[1].tags.count(), 0)

        req = self.factory.post('/', {'tags': 'one, two'})
        req.user = self.user
        req._messages = default_storage(req)

        frs = FoiRequest.objects.filter(
            id__in=[frs[0].id, frs[1].id])

        result = self.request_admin.tag_all(req, frs)
        self.assertIsNone(result)
        frs = list(frs)
        frs[0] = FoiRequest.objects.get(id=frs[0].id)
        frs[1] = FoiRequest.objects.get(id=frs[1].id)
        self.assertEqual(frs[0].tags.count(), 2)
        self.assertEqual(frs[1].tags.count(), 2)
        self.assertEqual(set([t.name for t in frs[0].tags.all()]), set(['one', 'two']))

    def check_attribute_change_action(self, klass, factory,
         admin_action, attr, initial, final,
         factory_extra=None):
        if factory_extra is None:
            d = {}
        else:
            d = factory_extra

        d.update({attr: initial})
        r0 = factory(**d)
        r0.save()
        r1 = factory(**d)
        r1.save()
        rs = klass.objects.filter(
            id__in=[r0.id, r1.id])

        req = self.factory.post('/', {})
        req.user = self.user
        req._messages = default_storage(req)

        result = admin_action(req, rs)
        self.assertIsNone(result)
        rs = klass.objects.filter(id__in=[
            r0.id, r1.id
        ])
        for r in rs:
            self.assertEqual(getattr(r, attr), final)

    def test_mark_checked(self):
        self.check_attribute_change_action(
            FoiRequest,
            factories.FoiRequestFactory,
            self.request_admin.mark_checked,
            'checked', False, True,
            factory_extra={'site': self.site}
        )

    def test_mark_not_foi(self):
        self.check_attribute_change_action(
            FoiRequest,
            factories.FoiRequestFactory,
            self.request_admin.mark_not_foi,
            'is_foi', True, False,
            factory_extra={'site': self.site}
        )

    def test_approve(self):
        self.check_attribute_change_action(
            FoiAttachment,
            factories.FoiAttachmentFactory,
            self.attachment_admin.approve,
            'approved', False, True
        )

    def test_cannot_approve(self):
        self.check_attribute_change_action(
            FoiAttachment,
            factories.FoiAttachmentFactory,
            self.attachment_admin.cannot_approve,
            'can_approve', True, False
        )