Source code for forums.forms

__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3"


from django import forms
from django.contrib.auth.models import Group

from dal import autocomplete

from .models import Forum, Meeting, Post, Motion
from organizations.models import Organization


[docs]class ForumForm(forms.ModelForm):
[docs] class Meta: model = Forum fields = ['name', 'slug', 'description', 'publicly_visible', 'moderators', 'parent_content_type', 'parent_object_id']
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields['parent_content_type'].widget = forms.HiddenInput() self.fields['parent_object_id'].widget = forms.HiddenInput()
[docs]class MeetingForm(ForumForm):
[docs] class Meta: model = Meeting fields = ['name', 'slug', 'description', 'publicly_visible', 'moderators', 'parent_content_type', 'parent_object_id', 'date_from', 'date_until', 'preamble']
[docs]class ForumGroupPermissionsForm(forms.ModelForm): """ Used for granting specific Groups some rights to a given Forum. """ groups = forms.ModelMultipleChoiceField( queryset=Group.objects.all(), widget=autocomplete.ModelSelect2Multiple(url='/group-autocomplete') ) can_view = forms.BooleanField(required=False) can_post = forms.BooleanField(required=False)
[docs] class Meta: model = Forum fields = []
[docs]class ForumOrganizationPermissionsForm(forms.Form): organization = forms.ModelChoiceField( queryset=Organization.objects.all(), widget=autocomplete.ModelSelect2( url='/organizations/organization-autocomplete', attrs={'data-html': True} ) ) can_view = forms.BooleanField() can_post = forms.BooleanField()
[docs]class PostForm(forms.ModelForm): """ Create a new Post. The parent must be defined, the model class and instance being defined by url parameters. """
[docs] class Meta: model = Post fields = ['posted_by', 'posted_on', 'needs_vetting', 'parent_content_type', 'parent_object_id', 'subject', 'text']
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields['posted_by'].widget = forms.HiddenInput() self.fields['posted_on'].widget = forms.HiddenInput() self.fields['needs_vetting'].widget = forms.HiddenInput() self.fields['parent_content_type'].widget = forms.HiddenInput() self.fields['parent_object_id'].widget = forms.HiddenInput()
[docs]class MotionForm(PostForm): """ Form for creating a Motion to be voted on in a Forum or during a Meeting. """
[docs] class Meta: model = Motion fields = ['posted_by', 'posted_on', 'needs_vetting', 'parent_content_type', 'parent_object_id', 'subject', 'text', 'eligible_for_voting', 'voting_deadline']
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields['eligible_for_voting'].widget = forms.HiddenInput() self.fields['eligible_for_voting'].disabled = True