view apps/bundle/forms.py @ 184:b711f0087709

Use DESCRIPTION file for bundles (SCHEMA CHANGE) * Added two new fields to the Bundle model: * octave_format, which allows users to specify if their bundle has been formatted according to octave packaging standards or not * description_file, which points to a file named DESCRIPTION in the root directory (or the next top-level directory), if the octave_format checkbox is ticked and if one exists * Fixed the uploader field for form by making it a hidden input and preventing hidden inputs from showing up entirely
author dellsystem <ilostwaldo@gmail.com>
date Sat, 27 Oct 2012 15:58:08 -0400
parents cdcbfaa65cfe
children ff9c95239c3a
line wrap: on
line source

from django import forms

from apps.bundle.models import Bundle


class BundleForm(forms.ModelForm):
    class Meta:
        model = Bundle
        fields = ('uploader', 'name', 'description', 'free_license',
            'octave_format')
        widgets = {
            # Ideally, the uploader field should just not show up at all
            # Not really possible if we want to validate the name
            # This is the next best option (hidden fields just aren't shown)
            'uploader': forms.HiddenInput,
        }

    file = forms.FileField(help_text=("Upload a plain text file or an \
        archive file."))

    def clean(self):
        data = self.cleaned_data
        name_used = Bundle.objects.filter(uploader=data.get('uploader'),
            name=data.get('name')).exists()

        # If a bundle with this user/name combo exists, raise an error
        if name_used:
            raise forms.ValidationError("You have already created a bundle"
                " with this name.")

        return data


class BundleEditForm(forms.ModelForm):
    """
    Like BundleForm, but for editing bundles. A new form is needed because
    the name field should not be editable after creation, and because the
    file field shouldn't be required in this case
    """
    class Meta:
        model = Bundle
        fields = ('description', 'free_license')

    file = forms.FileField(help_text=("Upload a plain text file or an \
        archive file to update the version."), required=False)