Simplify document to folder inclusion view, form and logic, add proper acl checking for folder document inclusion, add proper folder permission and acl checks to folder document inclusion form
This commit is contained in:
+21
-11
@@ -1,9 +1,18 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
import logging
|
||||
|
||||
from django import forms
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.core.exceptions import PermissionDenied
|
||||
|
||||
from acls.models import AccessEntry
|
||||
from permissions.models import Permission
|
||||
|
||||
from .models import Folder
|
||||
from .permissions import PERMISSION_FOLDER_VIEW
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class FolderForm(forms.ModelForm):
|
||||
@@ -12,17 +21,18 @@ class FolderForm(forms.ModelForm):
|
||||
fields = ('title',)
|
||||
|
||||
|
||||
class AddDocumentForm(forms.ModelForm):
|
||||
class FolderListForm(forms.Form):
|
||||
def __init__(self, *args, **kwargs):
|
||||
user = kwargs.pop('user', None)
|
||||
super(AddDocumentForm, self).__init__(*args, **kwargs)
|
||||
self.fields['existing_folder'] = forms.ModelChoiceField(
|
||||
required=False,
|
||||
queryset=Folder.objects.filter(user=user),
|
||||
label=_(u'Existing folders'))
|
||||
self.fields['title'].required = False
|
||||
self.fields['title'].label = _(u'New folder')
|
||||
logger.debug('user: %s' % user)
|
||||
super(FolderListForm, self).__init__(*args, **kwargs)
|
||||
|
||||
class Meta:
|
||||
model = Folder
|
||||
fields = ('title',)
|
||||
queryset = Folder.objects.all()
|
||||
try:
|
||||
Permission.objects.check_permissions(user, [PERMISSION_FOLDER_VIEW])
|
||||
except PermissionDenied:
|
||||
queryset = AccessEntry.objects.filter_objects_by_access(PERMISSION_FOLDER_VIEW, user, queryset)
|
||||
|
||||
self.fields['folder'] = forms.ModelChoiceField(
|
||||
queryset=queryset,
|
||||
label=_(u'Folder'))
|
||||
|
||||
Reference in New Issue
Block a user