# HG changeset patch # User dellsystem # Date 1351366918 14400 # Node ID cdcbfaa65cfee0f980684815d9d9d3ee00d6dfa3 # Parent 4a63f5d762a39743a1f4d65e4430a94445ba9204 Catch integrity error when creating bundles If the user has already created a bundle with that name, then the form should raise a ValidationError instead of showing a 500. diff -r 4a63f5d762a3 -r cdcbfaa65cfe apps/bundle/forms.py --- a/apps/bundle/forms.py Sat Oct 27 15:40:33 2012 -0400 +++ b/apps/bundle/forms.py Sat Oct 27 15:41:58 2012 -0400 @@ -6,11 +6,24 @@ class BundleForm(forms.ModelForm): class Meta: model = Bundle - fields = ('name', 'description', 'free_license') + fields = ('uploader', 'name', 'description', 'free_license', + 'octave_format') 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): """ diff -r 4a63f5d762a3 -r cdcbfaa65cfe apps/bundle/views.py --- a/apps/bundle/views.py Sat Oct 27 15:40:33 2012 -0400 +++ b/apps/bundle/views.py Sat Oct 27 15:41:58 2012 -0400 @@ -48,12 +48,12 @@ def index(request): if request.method == 'POST': post_data = request.POST.copy() - bundle = Bundle(uploader=request.user) - form = BundleForm(post_data, request.FILES, instance=bundle) + post_data['uploader'] = request.user.id + form = BundleForm(post_data, request.FILES) if form.is_valid(): file = request.FILES.get('file') - form.save() + bundle = form.save() bundle.file_name = file.name bundle.save()