Пример #1
0
 def test_two_levels_namespace(self):
     user1 = UserFactory()
     user2 = UserFactory()
     ACLRuleFactory(slug='section/special', permissions=['change_page'],
                    as_namespace=True, users=[user1])
     self.assertTrue(check_perms('change_page', user1, 'section/special'))
     self.assertTrue(check_perms('change_page', user1, 'section/special/page'))
     self.assertTrue(check_perms('change_page', user2, 'section/no-special'))
     self.assertFalse(check_perms('change_page', user2, 'section/special/page'))
Пример #2
0
 def test_simple_namespace(self):
     user1 = UserFactory()
     user2 = UserFactory()
     ACLRuleFactory(slug='user1-section', permissions=['change_page'],
                    as_namespace=True, users=[user1])
     self.assertTrue(check_perms('change_page', user1, 'user1-section'))
     self.assertTrue(check_perms('change_page', user1, 'user1-section/nested/page'))
     self.assertFalse(check_perms('change_page', user2, 'user1-section'))
     self.assertFalse(check_perms('change_page', user2, 'user1-section/nested/page'))
Пример #3
0
 def test_a_section_for_staff(self):
     user = UserFactory()
     staff_member = UserFactory(is_staff=True)
     ACLRuleFactory(slug='staff-section', permissions=['view_page', 'add_page', 'change_page'],
                    as_namespace=True, apply_to=ACLRule.TO_STAFF)
     for perm in ['view_page', 'add_page', 'change_page']:
         self.assertFalse(check_perms(perm, user, 'staff-section'))
         self.assertFalse(check_perms(perm, user, 'staff-section/a-page'))
         self.assertTrue(check_perms(perm, staff_member, 'staff-section'))
         self.assertTrue(check_perms(perm, staff_member, 'staff-section/a-page'))
Пример #4
0
 def test_simple_namespace(self):
     user1 = UserFactory()
     user2 = UserFactory()
     ACLRuleFactory(slug='user1-section',
                    permissions=['change_page'],
                    as_namespace=True,
                    users=[user1])
     self.assertTrue(check_perms('change_page', user1, 'user1-section'))
     self.assertTrue(
         check_perms('change_page', user1, 'user1-section/nested/page'))
     self.assertFalse(check_perms('change_page', user2, 'user1-section'))
     self.assertFalse(
         check_perms('change_page', user2, 'user1-section/nested/page'))
Пример #5
0
 def test_a_section_for_staff(self):
     user = UserFactory()
     staff_member = UserFactory(is_staff=True)
     ACLRuleFactory(slug='staff-section',
                    permissions=['view_page', 'add_page', 'change_page'],
                    as_namespace=True,
                    apply_to=ACLRule.TO_STAFF)
     for perm in ['view_page', 'add_page', 'change_page']:
         self.assertFalse(check_perms(perm, user, 'staff-section'))
         self.assertFalse(check_perms(perm, user, 'staff-section/a-page'))
         self.assertTrue(check_perms(perm, staff_member, 'staff-section'))
         self.assertTrue(
             check_perms(perm, staff_member, 'staff-section/a-page'))
Пример #6
0
 def test_two_levels_namespace(self):
     user1 = UserFactory()
     user2 = UserFactory()
     ACLRuleFactory(slug='section/special',
                    permissions=['change_page'],
                    as_namespace=True,
                    users=[user1])
     self.assertTrue(check_perms('change_page', user1, 'section/special'))
     self.assertTrue(
         check_perms('change_page', user1, 'section/special/page'))
     self.assertTrue(check_perms('change_page', user2,
                                 'section/no-special'))
     self.assertFalse(
         check_perms('change_page', user2, 'section/special/page'))
Пример #7
0
def whatchanged(request, pag=1):
    now = timezone.now()
    changes = []
    # The argument passed for pag might be a string, but we want to
    # do calculations on it. So we must cast just to be sure.
    pag = int(pag or 1)
    skip = (pag - 1) * settings.WALIKI_PAGINATE_BY
    max_count = settings.WALIKI_PAGINATE_BY
    # Git().total_commits() returns a unicode string
    # but we want to do calculations on the number it represents,
    # therefore, we cast
    total = int(Git().total_commits())
    for version in Git().whatchanged(skip, max_count):
        for path in version[-1]:
            try:
                page = Page.objects.get(path=path)
            except Page.DoesNotExist:
                continue
            if not check_perms('view_page', request.user, page.slug):
                # Don't show changes on pages that user can't see
                continue
            changes.append({'page': page, 'author': version[0],
                            'version': version[2], 'message': version[3],
                            'date': datetime.fromtimestamp(int(version[4]))})

    return render(request, 'waliki/whatchanged.html', {'changes': changes, 'now': now,
                                                       'prev': pag - 1 if pag > 1 else None,
                                                       'next': pag + 1 if skip + max_count < total else None})
Пример #8
0
 def items(self):
     changes = []
     for version, diff in Git().whatchanged_diff():
         for path in version[-1]:
             try:
                 page = Page.objects.get(path=path)
             except Page.DoesNotExist:
                 continue
             if not check_perms('view_page', AnonymousUser(), page.slug):
                 # Don't show changes on pages that anonymous user can't see
                 continue
             changes.append({'page': page, 'author': version[0],
                             'version': version[2], 'message': version[3],
                             'date': datetime.fromtimestamp(int(version[4])),
                             'diff': diff[1:-1].strip()})
     return changes