Mercurial > agora
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 |
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) |