def __init__(self, article, request, *args, **kwargs):
self.article = article
self.user = request.user
self.request = request
kwargs['instance'] = article
kwargs['initial'] = {'locked': article.current_revision.locked}
super(PermissionsForm, self).__init__(*args, **kwargs)
self.can_change_groups = False
self.can_assign = False
if permissions.can_assign(article, request.user):
self.can_assign = True
self.can_change_groups = True
self.fields['group'].queryset = Group.objects.all()
elif permissions.can_assign_owner(article, request.user):
self.fields['group'].queryset = Group.objects.filter(
user=request.user)
self.can_change_groups = True
else:
# Quick-fix...
# Set the group dropdown to readonly and with the current
# group as only selectable option
self.fields['group'] = forms.ModelChoiceField(
queryset=Group.objects.filter(
id=self.instance.group.id)
if self.instance.group else Group.objects.none(),
empty_label=_('(none)'),
required=False, widget=SelectWidgetBootstrap(
disabled=True)
if settings.USE_BOOTSTRAP_SELECT_WIDGET else forms.Select(
attrs={'disabled': True}))
self.fields['group_read'].widget = forms.HiddenInput()
self.fields['group_write'].widget = forms.HiddenInput()
if not self.can_assign:
self.fields['owner_username'].widget = forms.TextInput(
attrs={
'readonly': 'true'})
self.fields['recursive'].widget = forms.HiddenInput()
self.fields['recursive_group'].widget = forms.HiddenInput()
self.fields['recursive_owner'].widget = forms.HiddenInput()
self.fields['locked'].widget = forms.HiddenInput()
self.fields['owner_username'].initial = getattr(
article.owner,
User.USERNAME_FIELD) if article.owner else ""
评论列表
文章目录