Simplify filter_by_access boilerplate code
This commit is contained in:
@@ -9,6 +9,7 @@ from django.db.models import Q
|
|||||||
from django.utils.translation import ugettext
|
from django.utils.translation import ugettext
|
||||||
|
|
||||||
from common.utils import return_attrib
|
from common.utils import return_attrib
|
||||||
|
from permissions import Permission
|
||||||
from permissions.models import StoredPermission
|
from permissions.models import StoredPermission
|
||||||
|
|
||||||
from .classes import ModelPermission
|
from .classes import ModelPermission
|
||||||
@@ -88,13 +89,20 @@ class AccessControlListManager(models.Manager):
|
|||||||
if user.is_superuser or user.is_staff:
|
if user.is_superuser or user.is_staff:
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
try:
|
||||||
|
Permission.check_permissions(
|
||||||
|
requester=user, permissions=(permission,)
|
||||||
|
)
|
||||||
|
except PermissionDenied:
|
||||||
user_roles = []
|
user_roles = []
|
||||||
for group in user.groups.all():
|
for group in user.groups.all():
|
||||||
for role in group.roles.all():
|
for role in group.roles.all():
|
||||||
user_roles.append(role)
|
user_roles.append(role)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
parent_accessor = ModelPermission.get_inheritance(queryset.model)
|
parent_accessor = ModelPermission.get_inheritance(
|
||||||
|
model=queryset.model
|
||||||
|
)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
parent_acl_query = Q()
|
parent_acl_query = Q()
|
||||||
else:
|
else:
|
||||||
@@ -112,7 +120,9 @@ class AccessControlListManager(models.Manager):
|
|||||||
**{
|
**{
|
||||||
'{}__pk__in'.format(
|
'{}__pk__in'.format(
|
||||||
parent_accessor
|
parent_accessor
|
||||||
): parent_queryset.values_list('object_id', flat=True)
|
): parent_queryset.values_list(
|
||||||
|
'object_id', flat=True
|
||||||
|
)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
@@ -126,3 +136,5 @@ class AccessControlListManager(models.Manager):
|
|||||||
).values_list('object_id', flat=True))
|
).values_list('object_id', flat=True))
|
||||||
|
|
||||||
return queryset.filter(parent_acl_query | acl_query)
|
return queryset.filter(parent_acl_query | acl_query)
|
||||||
|
else:
|
||||||
|
return queryset
|
||||||
|
|||||||
@@ -89,8 +89,6 @@ class PermissionTestCase(TestCase):
|
|||||||
self.fail('PermissionDenied exception was not expected.')
|
self.fail('PermissionDenied exception was not expected.')
|
||||||
|
|
||||||
def test_filtering_with_permissions(self):
|
def test_filtering_with_permissions(self):
|
||||||
self.role.permissions.add(permission_document_view.stored_permission)
|
|
||||||
|
|
||||||
acl = AccessControlList.objects.create(
|
acl = AccessControlList.objects.create(
|
||||||
content_object=self.document_1, role=self.role
|
content_object=self.document_1, role=self.role
|
||||||
)
|
)
|
||||||
@@ -137,8 +135,6 @@ class PermissionTestCase(TestCase):
|
|||||||
self.fail('PermissionDenied exception was not expected.')
|
self.fail('PermissionDenied exception was not expected.')
|
||||||
|
|
||||||
def test_filtering_with_inherited_permissions(self):
|
def test_filtering_with_inherited_permissions(self):
|
||||||
self.role.permissions.add(permission_document_view.stored_permission)
|
|
||||||
|
|
||||||
acl = AccessControlList.objects.create(
|
acl = AccessControlList.objects.create(
|
||||||
content_object=self.document_type_1, role=self.role
|
content_object=self.document_type_1, role=self.role
|
||||||
)
|
)
|
||||||
@@ -148,6 +144,10 @@ class PermissionTestCase(TestCase):
|
|||||||
permission=permission_document_view, user=self.user,
|
permission=permission_document_view, user=self.user,
|
||||||
queryset=Document.objects.all()
|
queryset=Document.objects.all()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Since document_1 and document_2 are of document_type_1
|
||||||
|
# they are the only ones that should be returned
|
||||||
|
|
||||||
self.assertTrue(self.document_1 in result)
|
self.assertTrue(self.document_1 in result)
|
||||||
self.assertTrue(self.document_2 in result)
|
self.assertTrue(self.document_2 in result)
|
||||||
self.assertTrue(self.document_3 not in result)
|
self.assertTrue(self.document_3 not in result)
|
||||||
|
|||||||
@@ -31,18 +31,10 @@ class APICheckedoutDocumentListView(generics.ListCreateAPIView):
|
|||||||
return DocumentCheckoutSerializer
|
return DocumentCheckoutSerializer
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
documents = DocumentCheckout.objects.checked_out_documents()
|
|
||||||
|
|
||||||
try:
|
|
||||||
Permission.check_permissions(
|
|
||||||
self.request.user, (permission_document_view,)
|
|
||||||
)
|
|
||||||
except PermissionDenied:
|
|
||||||
filtered_documents = AccessControlList.objects.filter_by_access(
|
filtered_documents = AccessControlList.objects.filter_by_access(
|
||||||
(permission_document_view,), self.request.user, documents
|
(permission_document_view,), self.request.user,
|
||||||
|
queryset=DocumentCheckout.objects.checked_out_documents()
|
||||||
)
|
)
|
||||||
else:
|
|
||||||
filtered_documents = documents
|
|
||||||
|
|
||||||
return DocumentCheckout.objects.filter(
|
return DocumentCheckout.objects.filter(
|
||||||
document__pk__in=filtered_documents.values_list('pk', flat=True)
|
document__pk__in=filtered_documents.values_list('pk', flat=True)
|
||||||
@@ -104,18 +96,10 @@ class APICheckedoutDocumentView(generics.RetrieveDestroyAPIView):
|
|||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
if self.request.method == 'GET':
|
if self.request.method == 'GET':
|
||||||
documents = DocumentCheckout.objects.checked_out_documents()
|
|
||||||
|
|
||||||
try:
|
|
||||||
Permission.check_permissions(
|
|
||||||
self.request.user, (permission_document_view,)
|
|
||||||
)
|
|
||||||
except PermissionDenied:
|
|
||||||
filtered_documents = AccessControlList.objects.filter_by_access(
|
filtered_documents = AccessControlList.objects.filter_by_access(
|
||||||
(permission_document_view,), self.request.user, documents
|
(permission_document_view,), self.request.user,
|
||||||
|
queryset=DocumentCheckout.objects.checked_out_documents()
|
||||||
)
|
)
|
||||||
else:
|
|
||||||
filtered_documents = documents
|
|
||||||
|
|
||||||
return DocumentCheckout.objects.filter(
|
return DocumentCheckout.objects.filter(
|
||||||
document__pk__in=filtered_documents.values_list(
|
document__pk__in=filtered_documents.values_list(
|
||||||
|
|||||||
@@ -1,12 +1,9 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
from django.apps import apps
|
from django.apps import apps
|
||||||
from django.core.exceptions import PermissionDenied
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.translation import ugettext
|
from django.utils.translation import ugettext
|
||||||
|
|
||||||
from permissions import Permission
|
|
||||||
|
|
||||||
|
|
||||||
class ModelAttribute(object):
|
class ModelAttribute(object):
|
||||||
__registry = {}
|
__registry = {}
|
||||||
@@ -137,20 +134,9 @@ class Filter(object):
|
|||||||
queryset = queryset.distinct()
|
queryset = queryset.distinct()
|
||||||
|
|
||||||
if self.object_permission:
|
if self.object_permission:
|
||||||
try:
|
|
||||||
# Check to see if the user has the permissions globally
|
|
||||||
Permission.check_permissions(
|
|
||||||
user, (self.object_permission,)
|
|
||||||
)
|
|
||||||
except PermissionDenied:
|
|
||||||
# No global permission, filter ther queryset per object +
|
|
||||||
# permission
|
|
||||||
return AccessControlList.objects.filter_by_access(
|
return AccessControlList.objects.filter_by_access(
|
||||||
self.object_permission, user, queryset
|
self.object_permission, user, queryset=queryset
|
||||||
)
|
)
|
||||||
else:
|
|
||||||
# Has the permission globally, return all results
|
|
||||||
return queryset
|
|
||||||
else:
|
else:
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
|||||||
@@ -93,20 +93,9 @@ class ObjectListPermissionFilterMixin(object):
|
|||||||
queryset = super(ObjectListPermissionFilterMixin, self).get_queryset()
|
queryset = super(ObjectListPermissionFilterMixin, self).get_queryset()
|
||||||
|
|
||||||
if self.object_permission:
|
if self.object_permission:
|
||||||
try:
|
|
||||||
# Check to see if the user has the permissions globally
|
|
||||||
Permission.check_permissions(
|
|
||||||
self.request.user, (self.object_permission,)
|
|
||||||
)
|
|
||||||
except PermissionDenied:
|
|
||||||
# No global permission, filter ther queryset per object +
|
|
||||||
# permission
|
|
||||||
return AccessControlList.objects.filter_by_access(
|
return AccessControlList.objects.filter_by_access(
|
||||||
self.object_permission, self.request.user, queryset
|
self.object_permission, self.request.user, queryset=queryset
|
||||||
)
|
)
|
||||||
else:
|
|
||||||
# Has the permission globally, return all results
|
|
||||||
return queryset
|
|
||||||
else:
|
else:
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
from .classes import (
|
from .classes import ( # NOQA
|
||||||
BaseTransformation, TransformationResize, TransformationRotate,
|
BaseTransformation, TransformationResize, TransformationRotate,
|
||||||
TransformationZoom
|
TransformationZoom
|
||||||
) # NOQA
|
)
|
||||||
from .runtime import converter_class # NOQA
|
from .runtime import converter_class # NOQA
|
||||||
|
|
||||||
default_app_config = 'converter.apps.ConverterApp'
|
default_app_config = 'converter.apps.ConverterApp'
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ from __future__ import unicode_literals
|
|||||||
|
|
||||||
import base64
|
import base64
|
||||||
import logging
|
import logging
|
||||||
from operator import xor
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -78,13 +78,6 @@ class TransformationTestCase(TestCase):
|
|||||||
percent=TRANSFORMATION_ZOOM_PERCENT
|
percent=TRANSFORMATION_ZOOM_PERCENT
|
||||||
)
|
)
|
||||||
|
|
||||||
#self.assertEqual(
|
|
||||||
# #transformation_rotate ^ transformation_resize ^ transformation_zoom,
|
|
||||||
# transformation_rotate ^ transformation_resize ^ transformation_zoom,
|
|
||||||
# #transformation_resize ^ transformation_zoom,
|
|
||||||
# TRANSFORMATION_COMBINED_CACHE_HASH
|
|
||||||
#)
|
|
||||||
|
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
BaseTransformation.combine(
|
BaseTransformation.combine(
|
||||||
(transformation_rotate, transformation_resize, transformation_zoom)
|
(transformation_rotate, transformation_resize, transformation_zoom)
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
from __future__ import absolute_import, unicode_literals
|
from __future__ import absolute_import, unicode_literals
|
||||||
|
|
||||||
from django.core.exceptions import PermissionDenied
|
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.encoding import python_2_unicode_compatible
|
from django.utils.encoding import python_2_unicode_compatible
|
||||||
@@ -12,7 +11,6 @@ from mptt.models import MPTTModel
|
|||||||
from acls.models import AccessControlList
|
from acls.models import AccessControlList
|
||||||
from documents.models import Document, DocumentType
|
from documents.models import Document, DocumentType
|
||||||
from documents.permissions import permission_document_view
|
from documents.permissions import permission_document_view
|
||||||
from permissions import Permission
|
|
||||||
|
|
||||||
from .managers import (
|
from .managers import (
|
||||||
DocumentIndexInstanceNodeManager, IndexManager, IndexInstanceNodeManager
|
DocumentIndexInstanceNodeManager, IndexManager, IndexInstanceNodeManager
|
||||||
@@ -177,13 +175,8 @@ class IndexInstanceNode(MPTTModel):
|
|||||||
|
|
||||||
def get_item_count(self, user):
|
def get_item_count(self, user):
|
||||||
if self.index_template_node.link_documents:
|
if self.index_template_node.link_documents:
|
||||||
queryset = self.documents
|
|
||||||
|
|
||||||
try:
|
|
||||||
Permission.check_permissions(user, (permission_document_view,))
|
|
||||||
except PermissionDenied:
|
|
||||||
queryset = AccessControlList.objects.filter_by_access(
|
queryset = AccessControlList.objects.filter_by_access(
|
||||||
permission_document_view, user, queryset
|
permission_document_view, user, queryset=self.documents
|
||||||
)
|
)
|
||||||
|
|
||||||
return queryset.count()
|
return queryset.count()
|
||||||
|
|||||||
@@ -86,18 +86,10 @@ class SetupIndexDocumentTypesView(AssignRemoveView):
|
|||||||
self.get_object().document_types.add(item)
|
self.get_object().document_types.add(item)
|
||||||
|
|
||||||
def get_document_queryset(self):
|
def get_document_queryset(self):
|
||||||
|
return AccessControlList.objects.filter_by_access(
|
||||||
|
permission_document_view, self.request.user,
|
||||||
queryset=DocumentType.objects.all()
|
queryset=DocumentType.objects.all()
|
||||||
|
|
||||||
try:
|
|
||||||
Permission.check_permissions(
|
|
||||||
self.request.user, (permission_document_view,)
|
|
||||||
)
|
)
|
||||||
except PermissionDenied:
|
|
||||||
queryset = AccessControlList.objects.filter_by_access(
|
|
||||||
permission_document_view, self.request.user, queryset
|
|
||||||
)
|
|
||||||
|
|
||||||
return queryset
|
|
||||||
|
|
||||||
def get_extra_context(self):
|
def get_extra_context(self):
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -3,11 +3,9 @@ from __future__ import absolute_import, unicode_literals
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.core.exceptions import PermissionDenied
|
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
from acls.models import AccessControlList
|
from acls.models import AccessControlList
|
||||||
from permissions import Permission
|
|
||||||
|
|
||||||
from common.forms import DetailForm
|
from common.forms import DetailForm
|
||||||
from django_gpg.models import Key
|
from django_gpg.models import Key
|
||||||
@@ -35,13 +33,8 @@ class DocumentVersionSignatureCreateForm(forms.Form):
|
|||||||
DocumentVersionSignatureCreateForm, self
|
DocumentVersionSignatureCreateForm, self
|
||||||
).__init__(*args, **kwargs)
|
).__init__(*args, **kwargs)
|
||||||
|
|
||||||
queryset = Key.objects.private_keys()
|
|
||||||
|
|
||||||
try:
|
|
||||||
Permission.check_permissions(user, (permission_key_sign,))
|
|
||||||
except PermissionDenied:
|
|
||||||
queryset = AccessControlList.objects.filter_by_access(
|
queryset = AccessControlList.objects.filter_by_access(
|
||||||
permission_key_sign, user, queryset
|
permission_key_sign, user, queryset=Key.objects.private_keys()
|
||||||
)
|
)
|
||||||
|
|
||||||
self.fields['key'].queryset = queryset
|
self.fields['key'].queryset = queryset
|
||||||
|
|||||||
@@ -154,8 +154,9 @@ class DocumentsApp(MayanAppConfig):
|
|||||||
func=lambda context: document_html_widget(
|
func=lambda context: document_html_widget(
|
||||||
document_page=context['object'].latest_version.pages.first(),
|
document_page=context['object'].latest_version.pages.first(),
|
||||||
click_view='rest_api:documentpage-image',
|
click_view='rest_api:documentpage-image',
|
||||||
click_view_arguments_lazy=lambda: (context['object'].latest_version.pages.first().pk,),
|
click_view_arguments_lazy=lambda: (
|
||||||
click_view_querydict={'size': setting_display_size.value},
|
context['object'].latest_version.pages.first().pk,
|
||||||
|
), click_view_querydict={'size': setting_display_size.value},
|
||||||
gallery_name='documents:document_list',
|
gallery_name='documents:document_list',
|
||||||
size=setting_thumbnail_size.value,
|
size=setting_thumbnail_size.value,
|
||||||
title=getattr(context['object'], 'label', None),
|
title=getattr(context['object'], 'label', None),
|
||||||
@@ -212,8 +213,9 @@ class DocumentsApp(MayanAppConfig):
|
|||||||
func=lambda context: document_html_widget(
|
func=lambda context: document_html_widget(
|
||||||
document_page=context['object'].latest_version.pages.first(),
|
document_page=context['object'].latest_version.pages.first(),
|
||||||
click_view='rest_api:documentpage-image',
|
click_view='rest_api:documentpage-image',
|
||||||
click_view_arguments_lazy=lambda: (context['object'].latest_version.pages.first().pk,),
|
click_view_arguments_lazy=lambda: (
|
||||||
click_view_querydict={'size': setting_display_size.value},
|
context['object'].latest_version.pages.first().pk,
|
||||||
|
), click_view_querydict={'size': setting_display_size.value},
|
||||||
gallery_name='documents:delete_document_list',
|
gallery_name='documents:delete_document_list',
|
||||||
size=setting_thumbnail_size.value,
|
size=setting_thumbnail_size.value,
|
||||||
title=getattr(context['object'], 'label', None),
|
title=getattr(context['object'], 'label', None),
|
||||||
|
|||||||
@@ -4,13 +4,11 @@ import logging
|
|||||||
from operator import itemgetter
|
from operator import itemgetter
|
||||||
|
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.core.exceptions import PermissionDenied
|
|
||||||
from django.template.defaultfilters import filesizeformat
|
from django.template.defaultfilters import filesizeformat
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
from acls.models import AccessControlList
|
from acls.models import AccessControlList
|
||||||
from common.forms import DetailForm, ModelForm
|
from common.forms import DetailForm, ModelForm
|
||||||
from permissions import Permission
|
|
||||||
|
|
||||||
from .models import (
|
from .models import (
|
||||||
Document, DocumentType, DocumentPage, DocumentTypeFilename
|
Document, DocumentType, DocumentPage, DocumentTypeFilename
|
||||||
@@ -162,12 +160,9 @@ class DocumentTypeSelectForm(forms.Form):
|
|||||||
logger.debug('user: %s', user)
|
logger.debug('user: %s', user)
|
||||||
super(DocumentTypeSelectForm, self).__init__(*args, **kwargs)
|
super(DocumentTypeSelectForm, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
queryset = DocumentType.objects.all()
|
|
||||||
try:
|
|
||||||
Permission.check_permissions(user, (permission_document_create,))
|
|
||||||
except PermissionDenied:
|
|
||||||
queryset = AccessControlList.objects.filter_by_access(
|
queryset = AccessControlList.objects.filter_by_access(
|
||||||
permission_document_create, user, queryset
|
permission_document_create, user,
|
||||||
|
queryset=DocumentType.objects.all()
|
||||||
)
|
)
|
||||||
|
|
||||||
self.fields['document_type'] = forms.ModelChoiceField(
|
self.fields['document_type'] = forms.ModelChoiceField(
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import logging
|
|||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.core.exceptions import PermissionDenied
|
|
||||||
from django.core.files import File
|
from django.core.files import File
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from django.db import models, transaction
|
from django.db import models, transaction
|
||||||
@@ -23,7 +22,6 @@ from converter.exceptions import InvalidOfficeFormat, PageCountError
|
|||||||
from converter.literals import DEFAULT_ZOOM_LEVEL, DEFAULT_ROTATION
|
from converter.literals import DEFAULT_ZOOM_LEVEL, DEFAULT_ROTATION
|
||||||
from converter.models import Transformation
|
from converter.models import Transformation
|
||||||
from mimetype.api import get_mimetype
|
from mimetype.api import get_mimetype
|
||||||
from permissions import Permission
|
|
||||||
|
|
||||||
from .events import (
|
from .events import (
|
||||||
event_document_create, event_document_new_version,
|
event_document_create, event_document_new_version,
|
||||||
@@ -113,13 +111,8 @@ class DocumentType(models.Model):
|
|||||||
return DeletedDocument.objects.filter(document_type=self)
|
return DeletedDocument.objects.filter(document_type=self)
|
||||||
|
|
||||||
def get_document_count(self, user):
|
def get_document_count(self, user):
|
||||||
queryset = self.documents
|
|
||||||
|
|
||||||
try:
|
|
||||||
Permission.check_permissions(user, (permission_document_view,))
|
|
||||||
except PermissionDenied:
|
|
||||||
queryset = AccessControlList.objects.filter_by_access(
|
queryset = AccessControlList.objects.filter_by_access(
|
||||||
permission_document_view, user, queryset
|
permission_document_view, user, queryset=self.documents
|
||||||
)
|
)
|
||||||
|
|
||||||
return queryset.count()
|
return queryset.count()
|
||||||
|
|||||||
@@ -95,19 +95,9 @@ class DeletedDocumentListView(DocumentListView):
|
|||||||
}
|
}
|
||||||
|
|
||||||
def get_document_queryset(self):
|
def get_document_queryset(self):
|
||||||
queryset = Document.trash.all()
|
return AccessControlList.objects.filter_by_access(
|
||||||
|
permission_document_view, self.request.user,
|
||||||
try:
|
queryset=DeletedDocument.trash.all()
|
||||||
Permission.check_permissions(
|
|
||||||
self.request.user, (permission_document_view,)
|
|
||||||
)
|
|
||||||
except PermissionDenied:
|
|
||||||
queryset = AccessControlList.objects.filter_by_access(
|
|
||||||
permission_document_view, self.request.user, queryset
|
|
||||||
)
|
|
||||||
|
|
||||||
return DeletedDocument.objects.filter(
|
|
||||||
pk__in=queryset.values_list('pk', flat=True)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -663,13 +653,8 @@ def document_document_type_edit(request, document_id=None, document_id_list=None
|
|||||||
elif document_id_list:
|
elif document_id_list:
|
||||||
queryset = Document.objects.filter(pk__in=document_id_list)
|
queryset = Document.objects.filter(pk__in=document_id_list)
|
||||||
|
|
||||||
try:
|
|
||||||
Permission.check_permissions(
|
|
||||||
request.user, (permission_document_properties_edit,)
|
|
||||||
)
|
|
||||||
except PermissionDenied:
|
|
||||||
queryset = AccessControlList.objects.filter_by_access(
|
queryset = AccessControlList.objects.filter_by_access(
|
||||||
permission_document_properties_edit, request.user, queryset
|
permission_document_properties_edit, request.user, queryset=queryset
|
||||||
)
|
)
|
||||||
|
|
||||||
if not queryset:
|
if not queryset:
|
||||||
@@ -806,18 +791,10 @@ class DocumentDownloadFormView(FormView):
|
|||||||
return self.post_action_redirect
|
return self.post_action_redirect
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
queryset = self.get_document_queryset()
|
|
||||||
|
|
||||||
try:
|
|
||||||
Permission.check_permissions(
|
|
||||||
self.request.user, (permission_document_download,)
|
|
||||||
)
|
|
||||||
except PermissionDenied:
|
|
||||||
return AccessControlList.objects.filter_by_access(
|
return AccessControlList.objects.filter_by_access(
|
||||||
permission_document_download, self.request.user, queryset
|
permission_document_download, self.request.user,
|
||||||
|
queryset=self.get_document_queryset()
|
||||||
)
|
)
|
||||||
else:
|
|
||||||
return queryset
|
|
||||||
|
|
||||||
|
|
||||||
class DocumentDownloadView(SingleObjectDownloadView):
|
class DocumentDownloadView(SingleObjectDownloadView):
|
||||||
@@ -863,16 +840,9 @@ class DocumentDownloadView(SingleObjectDownloadView):
|
|||||||
|
|
||||||
queryset = self.model.objects.filter(pk__in=id_list.split(','))
|
queryset = self.model.objects.filter(pk__in=id_list.split(','))
|
||||||
|
|
||||||
try:
|
|
||||||
Permission.check_permissions(
|
|
||||||
self.request.user, (permission_document_download,)
|
|
||||||
)
|
|
||||||
except PermissionDenied:
|
|
||||||
return AccessControlList.objects.filter_by_access(
|
return AccessControlList.objects.filter_by_access(
|
||||||
permission_document_download, self.request.user, queryset
|
permission_document_download, self.request.user, queryset
|
||||||
)
|
)
|
||||||
else:
|
|
||||||
return queryset
|
|
||||||
|
|
||||||
def get_file(self):
|
def get_file(self):
|
||||||
queryset = self.get_document_queryset()
|
queryset = self.get_document_queryset()
|
||||||
@@ -949,13 +919,8 @@ def document_update_page_count(request, document_id=None, document_id_list=None)
|
|||||||
messages.error(request, _('At least one document must be selected.'))
|
messages.error(request, _('At least one document must be selected.'))
|
||||||
return HttpResponseRedirect(request.META.get('HTTP_REFERER', reverse(settings.LOGIN_REDIRECT_URL)))
|
return HttpResponseRedirect(request.META.get('HTTP_REFERER', reverse(settings.LOGIN_REDIRECT_URL)))
|
||||||
|
|
||||||
try:
|
|
||||||
Permission.check_permissions(
|
|
||||||
request.user, (permission_document_tools,)
|
|
||||||
)
|
|
||||||
except PermissionDenied:
|
|
||||||
documents = AccessControlList.objects.filter_by_access(
|
documents = AccessControlList.objects.filter_by_access(
|
||||||
permission_document_tools, request.user, documents
|
permission_document_tools, request.user, queryset=documents
|
||||||
)
|
)
|
||||||
|
|
||||||
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', reverse(settings.LOGIN_REDIRECT_URL))))
|
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', reverse(settings.LOGIN_REDIRECT_URL))))
|
||||||
@@ -1018,13 +983,8 @@ def document_clear_transformations(request, document_id=None, document_id_list=N
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
try:
|
|
||||||
Permission.check_permissions(
|
|
||||||
request.user, (permission_transformation_delete,)
|
|
||||||
)
|
|
||||||
except PermissionDenied:
|
|
||||||
documents = AccessControlList.objects.filter_by_access(
|
documents = AccessControlList.objects.filter_by_access(
|
||||||
permission_transformation_delete, request.user, documents
|
permission_transformation_delete, request.user, queryset=documents
|
||||||
)
|
)
|
||||||
|
|
||||||
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', post_redirect or reverse('documents:document_list'))))
|
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', post_redirect or reverse('documents:document_list'))))
|
||||||
|
|||||||
@@ -5,12 +5,10 @@ import logging
|
|||||||
import re
|
import re
|
||||||
|
|
||||||
from django.apps import apps
|
from django.apps import apps
|
||||||
from django.core.exceptions import PermissionDenied
|
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
from django.utils.module_loading import import_string
|
from django.utils.module_loading import import_string
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import ugettext as _
|
||||||
|
|
||||||
from permissions import Permission
|
|
||||||
|
|
||||||
from .settings import setting_limit
|
from .settings import setting_limit
|
||||||
|
|
||||||
@@ -229,9 +227,6 @@ class SearchModel(object):
|
|||||||
)
|
)
|
||||||
|
|
||||||
if self.permission:
|
if self.permission:
|
||||||
try:
|
|
||||||
Permission.check_permissions(user, [self.permission])
|
|
||||||
except PermissionDenied:
|
|
||||||
queryset = AccessControlList.objects.filter_by_access(
|
queryset = AccessControlList.objects.filter_by_access(
|
||||||
self.permission, user, queryset
|
self.permission, user, queryset
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -147,18 +147,10 @@ class APIFolderDocumentListView(generics.ListCreateAPIView):
|
|||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
folder = self.get_folder()
|
folder = self.get_folder()
|
||||||
|
|
||||||
documents = folder.documents.all()
|
return AccessControlList.objects.filter_by_access(
|
||||||
|
permission_document_view, self.request.user,
|
||||||
try:
|
queryset=folder.documents.all()
|
||||||
Permission.check_permissions(
|
|
||||||
self.request.user, (permission_document_view,)
|
|
||||||
)
|
)
|
||||||
except PermissionDenied:
|
|
||||||
documents = AccessControlList.objects.filter_by_access(
|
|
||||||
permission_document_view, self.request.user, documents
|
|
||||||
)
|
|
||||||
|
|
||||||
return documents
|
|
||||||
|
|
||||||
def perform_create(self, serializer):
|
def perform_create(self, serializer):
|
||||||
serializer.save(folder=self.get_folder())
|
serializer.save(folder=self.get_folder())
|
||||||
|
|||||||
@@ -3,11 +3,9 @@ from __future__ import absolute_import, unicode_literals
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.core.exceptions import PermissionDenied
|
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
from acls.models import AccessControlList
|
from acls.models import AccessControlList
|
||||||
from permissions import Permission
|
|
||||||
|
|
||||||
from .models import Folder
|
from .models import Folder
|
||||||
from .permissions import permission_folder_view
|
from .permissions import permission_folder_view
|
||||||
@@ -21,15 +19,10 @@ class FolderListForm(forms.Form):
|
|||||||
logger.debug('user: %s', user)
|
logger.debug('user: %s', user)
|
||||||
super(FolderListForm, self).__init__(*args, **kwargs)
|
super(FolderListForm, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
queryset = Folder.objects.all()
|
|
||||||
try:
|
|
||||||
Permission.check_permissions(user, (permission_folder_view,))
|
|
||||||
except PermissionDenied:
|
|
||||||
queryset = AccessControlList.objects.filter_by_access(
|
queryset = AccessControlList.objects.filter_by_access(
|
||||||
permission_folder_view, user, queryset
|
permission_folder_view, user, queryset=Folder.objects.all()
|
||||||
)
|
)
|
||||||
|
|
||||||
self.fields['folder'] = forms.ModelChoiceField(
|
self.fields['folder'] = forms.ModelChoiceField(
|
||||||
queryset=queryset,
|
queryset=queryset, label=_('Folder')
|
||||||
label=_('Folder')
|
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
from __future__ import absolute_import, unicode_literals
|
from __future__ import absolute_import, unicode_literals
|
||||||
|
|
||||||
from django.core.exceptions import PermissionDenied
|
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.encoding import python_2_unicode_compatible
|
from django.utils.encoding import python_2_unicode_compatible
|
||||||
@@ -9,7 +8,6 @@ from django.utils.translation import ugettext_lazy as _
|
|||||||
from acls.models import AccessControlList
|
from acls.models import AccessControlList
|
||||||
from documents.models import Document
|
from documents.models import Document
|
||||||
from documents.permissions import permission_document_view
|
from documents.permissions import permission_document_view
|
||||||
from permissions import Permission
|
|
||||||
|
|
||||||
from .managers import FolderManager
|
from .managers import FolderManager
|
||||||
|
|
||||||
@@ -45,13 +43,8 @@ class Folder(models.Model):
|
|||||||
verbose_name_plural = _('Folders')
|
verbose_name_plural = _('Folders')
|
||||||
|
|
||||||
def get_document_count(self, user):
|
def get_document_count(self, user):
|
||||||
queryset = self.documents
|
|
||||||
|
|
||||||
try:
|
|
||||||
Permission.check_permissions(user, (permission_document_view,))
|
|
||||||
except PermissionDenied:
|
|
||||||
queryset = AccessControlList.objects.filter_by_access(
|
queryset = AccessControlList.objects.filter_by_access(
|
||||||
permission_document_view, user, queryset
|
permission_document_view, user, queryset=self.documents
|
||||||
)
|
)
|
||||||
|
|
||||||
return queryset.count()
|
return queryset.count()
|
||||||
|
|||||||
@@ -145,13 +145,8 @@ def folder_add_document(request, document_id=None, document_id_list=None):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
try:
|
|
||||||
Permission.check_permissions(
|
|
||||||
request.user, (permission_folder_add_document,)
|
|
||||||
)
|
|
||||||
except PermissionDenied:
|
|
||||||
queryset = AccessControlList.objects.filter_by_access(
|
queryset = AccessControlList.objects.filter_by_access(
|
||||||
permission_folder_add_document, request.user, queryset
|
permission_folder_add_document, request.user, queryset=queryset
|
||||||
)
|
)
|
||||||
|
|
||||||
post_action_redirect = None
|
post_action_redirect = None
|
||||||
@@ -227,13 +222,8 @@ def folder_document_remove(request, folder_id, document_id=None, document_id_lis
|
|||||||
messages.error(request, _('Must provide at least one folder document.'))
|
messages.error(request, _('Must provide at least one folder document.'))
|
||||||
return HttpResponseRedirect(request.META.get('HTTP_REFERER', reverse(settings.LOGIN_REDIRECT_URL)))
|
return HttpResponseRedirect(request.META.get('HTTP_REFERER', reverse(settings.LOGIN_REDIRECT_URL)))
|
||||||
|
|
||||||
try:
|
|
||||||
Permission.check_permissions(
|
|
||||||
request.user, (permission_folder_remove_document,)
|
|
||||||
)
|
|
||||||
except PermissionDenied:
|
|
||||||
queryset = AccessControlList.objects.filter_by_access(
|
queryset = AccessControlList.objects.filter_by_access(
|
||||||
permission_folder_remove_document, request.user, queryset
|
permission_folder_remove_document, request.user, queryset=queryset
|
||||||
)
|
)
|
||||||
|
|
||||||
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', reverse(settings.LOGIN_REDIRECT_URL))))
|
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', reverse(settings.LOGIN_REDIRECT_URL))))
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ from __future__ import absolute_import, unicode_literals
|
|||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from django.contrib.sites.models import Site
|
from django.contrib.sites.models import Site
|
||||||
from django.core.exceptions import PermissionDenied
|
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from django.http import HttpResponseRedirect
|
from django.http import HttpResponseRedirect
|
||||||
from django.shortcuts import render_to_response
|
from django.shortcuts import render_to_response
|
||||||
@@ -14,7 +13,6 @@ from django.utils.translation import ugettext_lazy as _
|
|||||||
from acls.models import AccessControlList
|
from acls.models import AccessControlList
|
||||||
from common.generics import SingleObjectListView
|
from common.generics import SingleObjectListView
|
||||||
from documents.models import Document
|
from documents.models import Document
|
||||||
from permissions import Permission
|
|
||||||
|
|
||||||
from .forms import DocumentMailForm
|
from .forms import DocumentMailForm
|
||||||
from .models import LogEntry
|
from .models import LogEntry
|
||||||
@@ -45,11 +43,8 @@ def send_document_link(request, document_id=None, document_id_list=None, as_atta
|
|||||||
else:
|
else:
|
||||||
permission = permission_mailing_link
|
permission = permission_mailing_link
|
||||||
|
|
||||||
try:
|
|
||||||
Permission.check_permissions(request.user, (permission,))
|
|
||||||
except PermissionDenied:
|
|
||||||
documents = AccessControlList.objects.filter_by_access(
|
documents = AccessControlList.objects.filter_by_access(
|
||||||
permission, request.user, documents
|
permission, request.user, queryset=documents
|
||||||
)
|
)
|
||||||
|
|
||||||
if not documents:
|
if not documents:
|
||||||
|
|||||||
@@ -42,13 +42,8 @@ def metadata_edit(request, document_id=None, document_id_list=None):
|
|||||||
elif document_id_list:
|
elif document_id_list:
|
||||||
documents = Document.objects.filter(pk__in=document_id_list)
|
documents = Document.objects.filter(pk__in=document_id_list)
|
||||||
|
|
||||||
try:
|
|
||||||
Permission.check_permissions(
|
|
||||||
request.user, (permission_metadata_document_edit,)
|
|
||||||
)
|
|
||||||
except PermissionDenied:
|
|
||||||
documents = AccessControlList.objects.filter_by_access(
|
documents = AccessControlList.objects.filter_by_access(
|
||||||
permission_metadata_document_edit, request.user, documents
|
permission_metadata_document_edit, request.user, queryset=documents
|
||||||
)
|
)
|
||||||
|
|
||||||
if not documents:
|
if not documents:
|
||||||
@@ -201,13 +196,8 @@ def metadata_add(request, document_id=None, document_id_list=None):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
try:
|
|
||||||
Permission.check_permissions(
|
|
||||||
request.user, (permission_metadata_document_add,)
|
|
||||||
)
|
|
||||||
except PermissionDenied:
|
|
||||||
documents = AccessControlList.objects.filter_by_access(
|
documents = AccessControlList.objects.filter_by_access(
|
||||||
permission_metadata_document_add, request.user, documents
|
permission_metadata_document_add, request.user, queryset=documents
|
||||||
)
|
)
|
||||||
|
|
||||||
if not documents:
|
if not documents:
|
||||||
@@ -337,13 +327,8 @@ def metadata_remove(request, document_id=None, document_id_list=None):
|
|||||||
elif document_id_list:
|
elif document_id_list:
|
||||||
documents = Document.objects.filter(pk__in=document_id_list)
|
documents = Document.objects.filter(pk__in=document_id_list)
|
||||||
|
|
||||||
try:
|
|
||||||
Permission.check_permissions(
|
|
||||||
request.user, (permission_metadata_document_remove,)
|
|
||||||
)
|
|
||||||
except PermissionDenied:
|
|
||||||
documents = AccessControlList.objects.filter_by_access(
|
documents = AccessControlList.objects.filter_by_access(
|
||||||
permission_metadata_document_remove, request.user, documents
|
permission_metadata_document_remove, request.user, queryset=documents
|
||||||
)
|
)
|
||||||
|
|
||||||
if not documents:
|
if not documents:
|
||||||
|
|||||||
@@ -358,9 +358,11 @@ class SourceColumn(object):
|
|||||||
return cls._registry[source]
|
return cls._registry[source]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
try:
|
try:
|
||||||
|
# Try it as a queryset
|
||||||
return cls._registry[source.model]
|
return cls._registry[source.model]
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
try:
|
try:
|
||||||
|
# It seems to be an instance, try its class
|
||||||
return cls._registry[source.__class__]
|
return cls._registry[source.__class__]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ def get_source_columns(source):
|
|||||||
# Is iterable?
|
# Is iterable?
|
||||||
source = source[0]
|
source = source[0]
|
||||||
except TypeError:
|
except TypeError:
|
||||||
# It is not
|
# It is not an iterable
|
||||||
pass
|
pass
|
||||||
except IndexError:
|
except IndexError:
|
||||||
# It a list and it's empty
|
# It a list and it's empty
|
||||||
|
|||||||
@@ -1,27 +1,22 @@
|
|||||||
from __future__ import absolute_import, unicode_literals
|
from __future__ import absolute_import, unicode_literals
|
||||||
|
|
||||||
from django.core.exceptions import PermissionDenied
|
|
||||||
|
|
||||||
from rest_framework.filters import BaseFilterBackend
|
from rest_framework.filters import BaseFilterBackend
|
||||||
|
|
||||||
from acls.models import AccessControlList
|
from acls.models import AccessControlList
|
||||||
from permissions import Permission
|
|
||||||
|
|
||||||
|
|
||||||
class MayanObjectPermissionsFilter(BaseFilterBackend):
|
class MayanObjectPermissionsFilter(BaseFilterBackend):
|
||||||
def filter_queryset(self, request, queryset, view):
|
def filter_queryset(self, request, queryset, view):
|
||||||
required_permission = getattr(
|
# TODO: fix variable name to make it clear it should be a single
|
||||||
|
# permission
|
||||||
|
|
||||||
|
required_permissions = getattr(
|
||||||
view, 'mayan_object_permissions', {}
|
view, 'mayan_object_permissions', {}
|
||||||
).get(request.method, None)
|
).get(request.method, None)
|
||||||
|
|
||||||
if required_permission:
|
if required_permissions:
|
||||||
try:
|
|
||||||
Permission.check_permissions(request.user, required_permission)
|
|
||||||
except PermissionDenied:
|
|
||||||
return AccessControlList.objects.filter_by_access(
|
return AccessControlList.objects.filter_by_access(
|
||||||
required_permission[0], request.user, queryset
|
required_permissions[0], request.user, queryset=queryset
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
return queryset
|
return queryset
|
||||||
else:
|
|
||||||
return queryset
|
|
||||||
|
|||||||
@@ -3,11 +3,9 @@ from __future__ import absolute_import, unicode_literals
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.core.exceptions import PermissionDenied
|
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
from acls.models import AccessControlList
|
from acls.models import AccessControlList
|
||||||
from permissions import Permission
|
|
||||||
|
|
||||||
from .models import Tag
|
from .models import Tag
|
||||||
from .permissions import permission_tag_view
|
from .permissions import permission_tag_view
|
||||||
@@ -21,17 +19,13 @@ class TagListForm(forms.Form):
|
|||||||
logger.debug('user: %s', user)
|
logger.debug('user: %s', user)
|
||||||
super(TagListForm, self).__init__(*args, **kwargs)
|
super(TagListForm, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
queryset = Tag.objects.all()
|
|
||||||
try:
|
|
||||||
Permission.check_permissions(user, (permission_tag_view,))
|
|
||||||
except PermissionDenied:
|
|
||||||
queryset = AccessControlList.objects.filter_by_access(
|
queryset = AccessControlList.objects.filter_by_access(
|
||||||
permission_tag_view, user, queryset
|
permission_tag_view, user, queryset=Tag.objects.all()
|
||||||
)
|
)
|
||||||
|
|
||||||
self.fields['tag'] = forms.ModelChoiceField(
|
self.fields['tag'] = forms.ModelChoiceField(
|
||||||
queryset=queryset,
|
queryset=queryset, label=_('Tags')
|
||||||
label=_('Tags'))
|
)
|
||||||
|
|
||||||
|
|
||||||
class TagMultipleSelectionForm(forms.Form):
|
class TagMultipleSelectionForm(forms.Form):
|
||||||
@@ -40,12 +34,8 @@ class TagMultipleSelectionForm(forms.Form):
|
|||||||
logger.debug('user: %s', user)
|
logger.debug('user: %s', user)
|
||||||
super(TagMultipleSelectionForm, self).__init__(*args, **kwargs)
|
super(TagMultipleSelectionForm, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
queryset = Tag.objects.all()
|
|
||||||
try:
|
|
||||||
Permission.check_permissions(user, (permission_tag_view,))
|
|
||||||
except PermissionDenied:
|
|
||||||
queryset = AccessControlList.objects.filter_by_access(
|
queryset = AccessControlList.objects.filter_by_access(
|
||||||
permission_tag_view, user, queryset
|
permission_tag_view, user, queryset=Tag.objects.all()
|
||||||
)
|
)
|
||||||
|
|
||||||
self.fields['tags'] = forms.MultipleChoiceField(
|
self.fields['tags'] = forms.MultipleChoiceField(
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ from __future__ import absolute_import, unicode_literals
|
|||||||
|
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.core.exceptions import PermissionDenied
|
|
||||||
from django.utils.encoding import python_2_unicode_compatible
|
from django.utils.encoding import python_2_unicode_compatible
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
@@ -11,7 +10,6 @@ from colorful.fields import RGBColorField
|
|||||||
from acls.models import AccessControlList
|
from acls.models import AccessControlList
|
||||||
from documents.models import Document
|
from documents.models import Document
|
||||||
from documents.permissions import permission_document_view
|
from documents.permissions import permission_document_view
|
||||||
from permissions import Permission
|
|
||||||
|
|
||||||
|
|
||||||
@python_2_unicode_compatible
|
@python_2_unicode_compatible
|
||||||
@@ -35,13 +33,8 @@ class Tag(models.Model):
|
|||||||
verbose_name_plural = _('Tags')
|
verbose_name_plural = _('Tags')
|
||||||
|
|
||||||
def get_document_count(self, user):
|
def get_document_count(self, user):
|
||||||
queryset = self.documents
|
|
||||||
|
|
||||||
try:
|
|
||||||
Permission.check_permissions(user, (permission_document_view,))
|
|
||||||
except PermissionDenied:
|
|
||||||
queryset = AccessControlList.objects.filter_by_access(
|
queryset = AccessControlList.objects.filter_by_access(
|
||||||
permission_document_view, user, queryset
|
permission_document_view, user, queryset=self.documents
|
||||||
)
|
)
|
||||||
|
|
||||||
return queryset.count()
|
return queryset.count()
|
||||||
|
|||||||
@@ -45,11 +45,8 @@ def tag_attach(request, document_id=None, document_id_list=None):
|
|||||||
elif document_id_list:
|
elif document_id_list:
|
||||||
queryset = Document.objects.filter(pk__in=document_id_list)
|
queryset = Document.objects.filter(pk__in=document_id_list)
|
||||||
|
|
||||||
try:
|
|
||||||
Permission.check_permissions(request.user, (permission_tag_attach,))
|
|
||||||
except PermissionDenied:
|
|
||||||
queryset = AccessControlList.objects.filter_by_access(
|
queryset = AccessControlList.objects.filter_by_access(
|
||||||
permission_tag_attach, request.user, queryset
|
permission_tag_attach, request.user, queryset=queryset
|
||||||
)
|
)
|
||||||
|
|
||||||
if not queryset:
|
if not queryset:
|
||||||
@@ -164,11 +161,8 @@ def tag_delete(request, tag_id=None, tag_id_list=None):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
try:
|
|
||||||
Permission.check_permissions(request.user, (permission_tag_delete,))
|
|
||||||
except PermissionDenied:
|
|
||||||
queryset = AccessControlList.objects.filter_by_access(
|
queryset = AccessControlList.objects.filter_by_access(
|
||||||
permission_tag_delete, request.user, queryset
|
permission_tag_delete, request.user, queryset=queryset
|
||||||
)
|
)
|
||||||
|
|
||||||
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', reverse(settings.LOGIN_REDIRECT_URL))))
|
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', reverse(settings.LOGIN_REDIRECT_URL))))
|
||||||
@@ -291,9 +285,6 @@ def tag_remove(request, document_id=None, document_id_list=None, tag_id=None, ta
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
try:
|
|
||||||
Permission.check_permissions(request.user, (permission_tag_remove,))
|
|
||||||
except PermissionDenied:
|
|
||||||
documents = AccessControlList.objects.filter_by_access(
|
documents = AccessControlList.objects.filter_by_access(
|
||||||
permission_tag_remove, request.user, documents
|
permission_tag_remove, request.user, documents
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,12 +1,9 @@
|
|||||||
from __future__ import absolute_import, unicode_literals
|
from __future__ import absolute_import, unicode_literals
|
||||||
|
|
||||||
from django.apps import apps
|
from django.apps import apps
|
||||||
from django.core.exceptions import PermissionDenied
|
|
||||||
from django.utils.html import escape
|
from django.utils.html import escape
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
|
|
||||||
from permissions import Permission
|
|
||||||
|
|
||||||
from .permissions import permission_tag_view
|
from .permissions import permission_tag_view
|
||||||
|
|
||||||
|
|
||||||
@@ -20,13 +17,8 @@ def widget_document_tags(document, user):
|
|||||||
|
|
||||||
tags_template = []
|
tags_template = []
|
||||||
|
|
||||||
tags = document.attached_tags().all()
|
|
||||||
|
|
||||||
try:
|
|
||||||
Permission.check_permissions(user, (permission_tag_view,))
|
|
||||||
except PermissionDenied:
|
|
||||||
tags = AccessControlList.objects.filter_by_access(
|
tags = AccessControlList.objects.filter_by_access(
|
||||||
permission_tag_view, user, tags
|
permission_tag_view, user, queryset=document.attached_tags().all()
|
||||||
)
|
)
|
||||||
|
|
||||||
for tag in tags:
|
for tag in tags:
|
||||||
|
|||||||
Reference in New Issue
Block a user