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'))
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'))
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') )
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'))
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'))
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'))