diff --git a/accounts/models.py b/accounts/models.py index 40c86f53..1e4f4dee 100644 --- a/accounts/models.py +++ b/accounts/models.py @@ -123,6 +123,7 @@ class User(AbstractBaseUser, PermissionsMixin, GetURLorPK): related_name='users') position = models.CharField(verbose_name=_(u'Должность'), max_length=255, blank=True) blocked = models.BooleanField(verbose_name=_(u'Заблокирован?'), default=False) + readonly = models.BooleanField(_(u'Read Only'), default=False) objects = UserManager() diff --git a/comments/forms.py b/comments/forms.py index a40bce7b..878d0b3f 100644 --- a/comments/forms.py +++ b/comments/forms.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- from django import forms +from functions.forms import EmptySelect from .models import Comment @@ -8,7 +9,13 @@ class CommentForm(forms.ModelForm): class Meta: model = Comment fields = ['parent', 'text'] + widgets = dict(parent=EmptySelect) def save(self, commit=True): obj = super(CommentForm, self).save(commit=False) return obj + + def clean(self): + if getattr(self._user, 'readonly', True): + raise forms.ValidationError(_(u'Вы не можете оставлять комментарии. Вам выдано ограничение ReadOnly.')) + return super(CommentForm, self).clean() diff --git a/comments/views.py b/comments/views.py index f562a696..306e691f 100644 --- a/comments/views.py +++ b/comments/views.py @@ -11,13 +11,16 @@ class CommentMixin(FormMixin): def get_comment_form(self): form_class = self.get_form_class() - return self.get_form(form_class) + form = self.get_form(form_class) + form._user = self.request.user + return form def post(self, request, *args, **kwargs): self.commentform = None if request.method == 'POST' and request.is_ajax(): self.commentform = self.get_comment_form() if self.commentform.is_valid(): + self.object = self.get_object() self.save_comment() return JsonResponse({'success': True}) else: diff --git a/functions/forms.py b/functions/forms.py index 0dc2fd42..b5afb4d3 100644 --- a/functions/forms.py +++ b/functions/forms.py @@ -226,4 +226,7 @@ class ML_ModelMultipleChoiceField(forms.ModelMultipleChoiceField): # choices = property(_get_choices, forms.ChoiceField._set_choices) +class EmptySelect(forms.Select): + def render_option(self, selected_choices, option_value, option_label): + return '' diff --git a/templates/c_admin/includes/admin_nav.html b/templates/c_admin/includes/admin_nav.html index 0e98eb83..66392138 100644 --- a/templates/c_admin/includes/admin_nav.html +++ b/templates/c_admin/includes/admin_nav.html @@ -32,6 +32,7 @@
  • Пользователи
  • Компании
  • Статистика
  • +
  • {% trans "Комментарии" %}