annotate apps/bundle/forms.py @ 186:ff9c95239c3a

Change order of some fields in bundle upload form Switched free_license and octave_format
author dellsystem <ilostwaldo@gmail.com>
date Sat, 27 Oct 2012 16:25:19 -0400
parents b711f0087709
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
151
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
1 from django import forms
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
2
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
3 from apps.bundle.models import Bundle
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
4
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
5
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
6 class BundleForm(forms.ModelForm):
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
7 class Meta:
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
8 model = Bundle
186
ff9c95239c3a Change order of some fields in bundle upload form
dellsystem <ilostwaldo@gmail.com>
parents: 184
diff changeset
9 fields = ('uploader', 'name', 'description', 'octave_format',
ff9c95239c3a Change order of some fields in bundle upload form
dellsystem <ilostwaldo@gmail.com>
parents: 184
diff changeset
10 'free_license')
184
b711f0087709 Use DESCRIPTION file for bundles (SCHEMA CHANGE)
dellsystem <ilostwaldo@gmail.com>
parents: 183
diff changeset
11 widgets = {
b711f0087709 Use DESCRIPTION file for bundles (SCHEMA CHANGE)
dellsystem <ilostwaldo@gmail.com>
parents: 183
diff changeset
12 # Ideally, the uploader field should just not show up at all
b711f0087709 Use DESCRIPTION file for bundles (SCHEMA CHANGE)
dellsystem <ilostwaldo@gmail.com>
parents: 183
diff changeset
13 # Not really possible if we want to validate the name
b711f0087709 Use DESCRIPTION file for bundles (SCHEMA CHANGE)
dellsystem <ilostwaldo@gmail.com>
parents: 183
diff changeset
14 # This is the next best option (hidden fields just aren't shown)
b711f0087709 Use DESCRIPTION file for bundles (SCHEMA CHANGE)
dellsystem <ilostwaldo@gmail.com>
parents: 183
diff changeset
15 'uploader': forms.HiddenInput,
b711f0087709 Use DESCRIPTION file for bundles (SCHEMA CHANGE)
dellsystem <ilostwaldo@gmail.com>
parents: 183
diff changeset
16 }
151
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
17
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
18 file = forms.FileField(help_text=("Upload a plain text file or an \
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
19 archive file."))
177
86129d185ddb Add versioning to bundles
dellsystem <ilostwaldo@gmail.com>
parents: 151
diff changeset
20
183
cdcbfaa65cfe Catch integrity error when creating bundles
dellsystem <ilostwaldo@gmail.com>
parents: 177
diff changeset
21 def clean(self):
cdcbfaa65cfe Catch integrity error when creating bundles
dellsystem <ilostwaldo@gmail.com>
parents: 177
diff changeset
22 data = self.cleaned_data
cdcbfaa65cfe Catch integrity error when creating bundles
dellsystem <ilostwaldo@gmail.com>
parents: 177
diff changeset
23 name_used = Bundle.objects.filter(uploader=data.get('uploader'),
cdcbfaa65cfe Catch integrity error when creating bundles
dellsystem <ilostwaldo@gmail.com>
parents: 177
diff changeset
24 name=data.get('name')).exists()
cdcbfaa65cfe Catch integrity error when creating bundles
dellsystem <ilostwaldo@gmail.com>
parents: 177
diff changeset
25
cdcbfaa65cfe Catch integrity error when creating bundles
dellsystem <ilostwaldo@gmail.com>
parents: 177
diff changeset
26 # If a bundle with this user/name combo exists, raise an error
cdcbfaa65cfe Catch integrity error when creating bundles
dellsystem <ilostwaldo@gmail.com>
parents: 177
diff changeset
27 if name_used:
cdcbfaa65cfe Catch integrity error when creating bundles
dellsystem <ilostwaldo@gmail.com>
parents: 177
diff changeset
28 raise forms.ValidationError("You have already created a bundle"
cdcbfaa65cfe Catch integrity error when creating bundles
dellsystem <ilostwaldo@gmail.com>
parents: 177
diff changeset
29 " with this name.")
cdcbfaa65cfe Catch integrity error when creating bundles
dellsystem <ilostwaldo@gmail.com>
parents: 177
diff changeset
30
cdcbfaa65cfe Catch integrity error when creating bundles
dellsystem <ilostwaldo@gmail.com>
parents: 177
diff changeset
31 return data
cdcbfaa65cfe Catch integrity error when creating bundles
dellsystem <ilostwaldo@gmail.com>
parents: 177
diff changeset
32
177
86129d185ddb Add versioning to bundles
dellsystem <ilostwaldo@gmail.com>
parents: 151
diff changeset
33
86129d185ddb Add versioning to bundles
dellsystem <ilostwaldo@gmail.com>
parents: 151
diff changeset
34 class BundleEditForm(forms.ModelForm):
86129d185ddb Add versioning to bundles
dellsystem <ilostwaldo@gmail.com>
parents: 151
diff changeset
35 """
86129d185ddb Add versioning to bundles
dellsystem <ilostwaldo@gmail.com>
parents: 151
diff changeset
36 Like BundleForm, but for editing bundles. A new form is needed because
86129d185ddb Add versioning to bundles
dellsystem <ilostwaldo@gmail.com>
parents: 151
diff changeset
37 the name field should not be editable after creation, and because the
86129d185ddb Add versioning to bundles
dellsystem <ilostwaldo@gmail.com>
parents: 151
diff changeset
38 file field shouldn't be required in this case
86129d185ddb Add versioning to bundles
dellsystem <ilostwaldo@gmail.com>
parents: 151
diff changeset
39 """
86129d185ddb Add versioning to bundles
dellsystem <ilostwaldo@gmail.com>
parents: 151
diff changeset
40 class Meta:
86129d185ddb Add versioning to bundles
dellsystem <ilostwaldo@gmail.com>
parents: 151
diff changeset
41 model = Bundle
86129d185ddb Add versioning to bundles
dellsystem <ilostwaldo@gmail.com>
parents: 151
diff changeset
42 fields = ('description', 'free_license')
86129d185ddb Add versioning to bundles
dellsystem <ilostwaldo@gmail.com>
parents: 151
diff changeset
43
86129d185ddb Add versioning to bundles
dellsystem <ilostwaldo@gmail.com>
parents: 151
diff changeset
44 file = forms.FileField(help_text=("Upload a plain text file or an \
86129d185ddb Add versioning to bundles
dellsystem <ilostwaldo@gmail.com>
parents: 151
diff changeset
45 archive file to update the version."), required=False)