Ejemplo n.º 1
0
 def test_has_object_permission_success(self):
     article = self._create_author_and_article()
     # test
     self.assert_true(
         has_object_permission(self.user, article, 'articles.view_article'))
     self.assert_true(
         has_object_permission(self.user, article,
                               'articles.change_article'))
     self.assert_true(
         has_object_permission(self.user, article, 'articles.add_article'))
Ejemplo n.º 2
0
    def full_clean(self):
        super(BaseGenericInlineFormSet, self).full_clean()
        cfield = model_category_fk(self.instance)
        if not cfield:
            return
        #cat = model_category_fk_value(self.instance)

        # next part is category-based permissions (only for objects with category field)
        def add_field_error(form, field_name, message):
            err_list = ErrorList((message, ))
            form._errors[field_name] = err_list

        user = self.form._magic_user

        # Adding new object
        for form in self.extra_forms:
            change_perm = get_permission('change', form.instance)
            if not form.has_changed():
                continue
            if cfield.name not in form.changed_data:
                continue
            add_perm = get_permission('add', form.instance)
            if not has_object_permission(user, form.instance, change_perm):
                self._non_form_errors = _('Creating objects is not permitted.')
                continue
            c = form.cleaned_data[cfield.name]
            if not has_category_permission(user, c, add_perm):
                add_field_error(form, cfield.name, _('Category not permitted'))

        # Changing existing object
        for form in self.initial_forms:
            change_perm = get_permission('change', form.instance)
            delete_perm = get_permission('delete', form.instance)
            if self.can_delete and hasattr(
                    form,
                    'cleaned_data') and form.cleaned_data[DELETION_FIELD_NAME]:
                if not has_object_permission(user, form.instance, delete_perm):
                    self._non_form_errors = _(
                        'Object deletion is not permitted.')
                    continue
                if model_category_fk(
                        form.instance
                ) is not None and not has_category_permission(
                        user, form.instance.category, delete_perm):
                    self._non_form_errors = _(
                        'Object deletion is not permitted.')
                    continue
            if cfield.name not in form.changed_data:
                continue
            if not has_object_permission(user, form.instance, change_perm):
                self._non_form_errors = _('Object change is not permitted.')
                continue
            c = form.cleaned_data[cfield.name]
            if not has_category_permission(user, c, change_perm):
                add_field_error(form, cfield.name, _('Category not permitted'))
Ejemplo n.º 3
0
    def full_clean(self):
        super(BaseGenericInlineFormSet, self).full_clean()
        cfield = model_category_fk(self.instance)
        if not cfield:
            return
        #cat = model_category_fk_value(self.instance)

        # next part is category-based permissions (only for objects with category field)
        def add_field_error(form, field_name, message):
                err_list = ErrorList( (message,) )
                form._errors[field_name] = err_list
        user = self.form._magic_user

        # Adding new object
        for form in self.extra_forms:
            change_perm = get_permission('change', form.instance)
            if not form.has_changed():
                continue
            if cfield.name not in form.changed_data:
                continue
            add_perm = get_permission('add', form.instance)
            if not has_object_permission(user, form.instance, change_perm):
                self._non_form_errors = _('Creating objects is not permitted.')
                continue
            c = form.cleaned_data[cfield.name]
            if not has_category_permission(user, c, add_perm):
                add_field_error( form, cfield.name, _('Category not permitted') )

        # Changing existing object
        for form in self.initial_forms:
            change_perm = get_permission('change', form.instance)
            delete_perm = get_permission('delete', form.instance)
            if self.can_delete and form.cleaned_data[DELETION_FIELD_NAME]:
                if not has_object_permission(user, form.instance, delete_perm):
                    self._non_form_errors = _('Object deletion is not permitted.')
                    continue
                if model_category_fk(form.instance) is not None and not has_category_permission(user, form.instance.category, delete_perm):
                    self._non_form_errors = _('Object deletion is not permitted.')
                    continue
            if cfield.name not in form.changed_data:
                continue
            if not has_object_permission(user, form.instance, change_perm):
                self._non_form_errors = _('Object change is not permitted.')
                continue
            c = form.cleaned_data[cfield.name]
            if not has_category_permission(user, c, change_perm):
                add_field_error( form, cfield.name, _('Category not permitted') )
Ejemplo n.º 4
0
 def test_has_object_permission_not_given(self):
     article = self._create_author_and_article()
     self.assert_false(
         has_object_permission(self.user, article,
                               'articles.delete_article'))
Ejemplo n.º 5
0
 def test_has_object_permission_not_given(self):
     article = self._create_author_and_article()
     self.assert_false(has_object_permission(self.user, article, 'articles.delete_article'))
Ejemplo n.º 6
0
 def test_has_object_permission_success(self):
     article = self._create_author_and_article()
     # test
     self.assert_true(has_object_permission(self.user, article, 'articles.view_article'))
     self.assert_true(has_object_permission(self.user, article, 'articles.change_article'))
     self.assert_true(has_object_permission(self.user, article, 'articles.add_article'))