Files @ 2465f2645e2e
Branch filter:

Location: symposion_app/vendor/symposion/reviews/forms.py

James Polley
urlize abstracts

I've looked through the database and I can't find any accepted
proposals that actually contain anything to linkify - but I've had
several requests from people that I think are reasonable, things like
being able to link to their project (we ask them to provide a project
url but we don't use that link)

This seems like a reasonably fast way to let those people add a
link. We still have to manually accept changes to their proposal so we
have a chance to look at the content of the url if we want.

The urlize filter adds rel=nofollow to the link automatically.
import bleach
from django import forms
from django.utils.translation import ugettext_lazy as _

from symposion.reviews.models import Review, Comment, ProposalMessage, VOTES


class ReviewForm(forms.ModelForm):

    required_css_class = 'label-required'

    class Meta:
        model = Review
        fields = ["vote", "comment"]

    def __init__(self, *args, **kwargs):
        super(ReviewForm, self).__init__(*args, **kwargs)
        self.fields["vote"] = forms.ChoiceField(
            widget=forms.RadioSelect(),
            choices=VOTES.CHOICES
        )

    def clean_comment(self):
        comment = self.cleaned_data.get('comment')
        cleaned_comment = bleach.clean(comment)
        return cleaned_comment


class ReviewCommentForm(forms.ModelForm):

    required_css_class = 'label-required'

    class Meta:
        model = Comment
        fields = ["text"]

    def clean_text(self):
        text = self.cleaned_data.get('text')
        cleaned_text = bleach.clean(text)
        return cleaned_text


class SpeakerCommentForm(forms.ModelForm):

    required_css_class = 'label-required'

    class Meta:
        model = ProposalMessage
        fields = ["message"]

    def clean_message(self):
        message = self.cleaned_data.get('message')
        cleaned_message = bleach.clean(message)
        return cleaned_message


class BulkPresentationForm(forms.Form):

    required_css_class = 'label-required'

    status = forms.ChoiceField(
        choices=(
            ('accepted', 'accepted'),
            ('rejected', 'rejected'),
            ('undecided', 'undecided'),
            ('standby', 'standby')
        ),
        label="Set status to:",
        help_text="Status to apply to the listed talk ids"
    )
    talk_ids = forms.CharField(
        label=_("Talk ids"),
        max_length=500,
        help_text=_("Provide a comma seperated list of talk ids to update.")
    )