| 70 | |
| 71 | |
| 72 | class CloneImage(forms.Form): |
| 73 | name = forms.CharField(max_length=20) |
| 74 | image = forms.CharField(max_length=20) |
| 75 | convert = forms.BooleanField(required=False) |
| 76 | format = forms.ChoiceField(required=False, choices=(('qcow2', 'qcow2 (recommended)'), |
| 77 | ('qcow', 'qcow'), |
| 78 | ('raw', 'raw'))) |
| 79 | meta_prealloc = forms.BooleanField(required=False) |
| 80 | |
| 81 | def clean_name(self): |
| 82 | name = self.cleaned_data['name'] |
| 83 | have_symbol = re.match('^[a-zA-Z0-9._-]+$', name) |
| 84 | if not have_symbol: |
| 85 | raise forms.ValidationError(_('The image name must not contain any special characters')) |
| 86 | elif len(name) > 20: |
| 87 | raise forms.ValidationError(_('The image name must not exceed 20 characters')) |
| 88 | return name |