Example #1
0
 def test_anonymous_user(self):
     template = ''.join((
         '{% load guardian_tags %}',
         '{% get_obj_perms user for contenttype as "obj_perms" %}{{ perms }}',
     ))
     context = {'user': AnonymousUser(), 'contenttype': self.ctype}
     anon_output = render(template, context)
     context = {'user': User.get_anonymous(), 'contenttype': self.ctype}
     real_anon_user_output = render(template, context)
     self.assertEqual(anon_output, real_anon_user_output)
Example #2
0
    def render(self, context):
        for_whom = self.for_whom.resolve(context)
        if isinstance(for_whom, User):
            self.user = for_whom
            self.group = None
        elif isinstance(for_whom, AnonymousUser):
            self.user = User.get_anonymous()
            self.group = None
        elif isinstance(for_whom, Group):
            self.user = None
            self.group = for_whom
        else:
            raise NotUserNorGroup("User or Group instance required (got %s)"
                % for_whom.__class__)
        obj = self.obj.resolve(context)

        check = ObjectPermissionChecker(for_whom)
        perms = check.get_perms(obj)

        context[self.context_var] = perms
        return ''
Example #3
0
    def test_wrong_formats(self):
        wrong_formats = (
            '{% get_obj_perms user for contenttype as obj_perms %}', # no quotes
            '{% get_obj_perms user for contenttype as \'obj_perms" %}', # wrong quotes
            '{% get_obj_perms user for contenttype as \'obj_perms" %}', # wrong quotes
            '{% get_obj_perms user for contenttype as obj_perms" %}', # wrong quotes
            '{% get_obj_perms user for contenttype as obj_perms\' %}', # wrong quotes
            '{% get_obj_perms user for contenttype as %}', # no context_var
            '{% get_obj_perms for contenttype as "obj_perms" %}', # no user/group
            '{% get_obj_perms user contenttype as "obj_perms" %}', # no "for" bit
            '{% get_obj_perms user for contenttype "obj_perms" %}', # no "as" bit
            '{% get_obj_perms user for as "obj_perms" %}', # no object
        )

        context = {'user': User.get_anonymous(), 'contenttype': self.ctype}
        for wrong in wrong_formats:
            fullwrong = '{% load guardian_tags %}' + wrong
            try:
                render(fullwrong, context)
                self.fail("Used wrong get_obj_perms tag format: \n\n\t%s\n\n "
                    "but TemplateSyntaxError have not been raised" % wrong)
            except TemplateSyntaxError:
                pass