Trees | Indices | Help |
|
---|
|
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # 4 # 5 # 6 # Copyright (c) 2008 University of Dundee. 7 # 8 # This program is free software: you can redistribute it and/or modify 9 # it under the terms of the GNU Affero General Public License as 10 # published by the Free Software Foundation, either version 3 of the 11 # License, or (at your option) any later version. 12 # 13 # This program is distributed in the hope that it will be useful, 14 # but WITHOUT ANY WARRANTY; without even the implied warranty of 15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 # GNU Affero General Public License for more details. 17 # 18 # You should have received a copy of the GNU Affero General Public License 19 # along with this program. If not, see <http://www.gnu.org/licenses/>. 20 # 21 # Author: Aleksandra Tarkowska <A(dot)Tarkowska(at)dundee(dot)ac(dot)uk>, 2008. 22 # 23 # Version: 1.0 24 # 25 26 from django.conf import settings 27 from django import forms 28 from django.forms import ModelForm 29 from django.forms.widgets import Textarea 30 from django.forms.widgets import HiddenInput 31 32 from omeroweb.connector import Server 33 34 from omeroweb.custom_forms import NonASCIIForm 35 36 from custom_forms import ServerModelChoiceField, \ 37 GroupModelChoiceField, GroupModelMultipleChoiceField, \ 38 ExperimenterModelChoiceField, ExperimenterModelMultipleChoiceField, \ 39 DefaultGroupField, OmeNameField 40 from custom_widgets import DefaultGroupRadioSelect 41 42 43 ################################################################# 44 # Non-model Form 45475749 super(LoginForm, self).__init__(*args, **kwargs) 50 self.fields['server'] = ServerModelChoiceField(Server, empty_label=None) 51 52 self.fields.keyOrder = ['server', 'username', 'password', 'ssl']53 54 username = forms.CharField(max_length=50, widget=forms.TextInput(attrs={'size':22})) 55 password = forms.CharField(max_length=50, widget=forms.PasswordInput(attrs={'size':22, 'autocomplete': 'off'})) 56 ssl = forms.BooleanField(required=False, help_text='<img src="%swebgateway/img/nuvola_encrypted_grey16.png" title="Real-time encrypted data transfer can be turned on by checking the box, but it will slow down the data access. Turning it off does not affect the connection to the server which is always secure." alt="SSL"' % settings.STATIC_URL)59 60 server = ServerModelChoiceField(Server, empty_label=None) 61 username = forms.CharField(max_length=50, widget=forms.TextInput(attrs={'size':28, 'autocomplete': 'off'})) 62 email = forms.EmailField(widget=forms.TextInput(attrs={'size':28, 'autocomplete': 'off'}))6365129 130 131 PERMISSION_CHOICES = ( 132 ('0', 'Private'), 133 ('1', 'Read-Only'), 134 ('2', 'Read-Annotate'), 135 ) 13666 - def __init__(self, name_check=False, email_check=False, experimenter_is_me=False, *args, **kwargs):67 super(ExperimenterForm, self).__init__(*args, **kwargs) 68 self.name_check=name_check 69 self.email_check=email_check 70 71 try: 72 self.fields['other_groups'] = GroupModelMultipleChoiceField(queryset=kwargs['initial']['groups'], initial=kwargs['initial']['other_groups'], required=False, label="Groups") 73 except: 74 self.fields['other_groups'] = GroupModelMultipleChoiceField(queryset=kwargs['initial']['groups'], required=False, label="Groups") 75 76 try: 77 if kwargs['initial']['default_group']: pass 78 self.fields['default_group'] = GroupModelChoiceField(queryset=kwargs['initial']['groups'], initial=kwargs['initial']['default_group'], empty_label=u"---------", required=False) 79 except: 80 self.fields['default_group'] = GroupModelChoiceField(queryset=kwargs['initial']['groups'], empty_label=u"---------", required=False) 81 self.fields['default_group'].widget.attrs['class'] = 'hidden' 82 83 if kwargs['initial'].has_key('with_password') and kwargs['initial']['with_password']: 84 self.fields['password'] = forms.CharField(max_length=50, widget=forms.PasswordInput(attrs={'size':30, 'autocomplete': 'off'})) 85 self.fields['confirmation'] = forms.CharField(max_length=50, widget=forms.PasswordInput(attrs={'size':30, 'autocomplete': 'off'})) 86 87 self.fields.keyOrder = ['omename', 'password', 'confirmation', 'first_name', 'middle_name', 'last_name', 'email', 'institution', 'administrator', 'active', 'default_group', 'other_groups'] 88 else: 89 self.fields.keyOrder = ['omename', 'first_name', 'middle_name', 'last_name', 'email', 'institution', 'administrator', 'active', 'default_group', 'other_groups'] 90 if experimenter_is_me: 91 self.fields['administrator'].widget.attrs['disabled'] = True 92 self.fields['administrator'].widget.attrs['title'] = "Removal of your own admin rights would be un-doable" 93 self.fields['active'].widget.attrs['disabled'] = True 94 self.fields['active'].widget.attrs['title'] = "You cannot disable yourself"95 96 omename = OmeNameField(max_length=250, widget=forms.TextInput(attrs={'size':30, 'autocomplete': 'off'}), label="Username") 97 first_name = forms.CharField(max_length=250, widget=forms.TextInput(attrs={'size':30, 'autocomplete': 'off'})) 98 middle_name = forms.CharField(max_length=250, widget=forms.TextInput(attrs={'size':30, 'autocomplete': 'off'}), required=False) 99 last_name = forms.CharField(max_length=250, widget=forms.TextInput(attrs={'size':30, 'autocomplete': 'off'})) 100 email = forms.EmailField(widget=forms.TextInput(attrs={'size':30, 'autocomplete': 'off'}), required=False) 101 institution = forms.CharField(max_length=250, widget=forms.TextInput(attrs={'size':30, 'autocomplete': 'off'}), required=False) 102 administrator = forms.CharField(widget=forms.CheckboxInput(), required=False) 103 active = forms.CharField(widget=forms.CheckboxInput(), required=False) 104106 if self.cleaned_data.get('password') or self.cleaned_data.get('confirmation'): 107 if len(self.cleaned_data.get('password')) < 3: 108 raise forms.ValidationError('Password must be at least 3 characters long.') 109 if self.cleaned_data.get('password') != self.cleaned_data.get('confirmation'): 110 raise forms.ValidationError('Passwords do not match') 111 else: 112 return self.cleaned_data.get('password')113115 if self.name_check: 116 raise forms.ValidationError('This username already exists.') 117 return self.cleaned_data.get('omename')118120 if self.email_check: 121 raise forms.ValidationError('This email already exist.') 122 return self.cleaned_data.get('email')123138166140 super(GroupForm, self).__init__(*args, **kwargs) 141 self.name_check=name_check 142 try: 143 if kwargs['initial']['owners']: pass 144 self.fields['owners'] = ExperimenterModelMultipleChoiceField(queryset=kwargs['initial']['experimenters'], initial=kwargs['initial']['owners'], required=False) 145 except: 146 self.fields['owners'] = ExperimenterModelMultipleChoiceField(queryset=kwargs['initial']['experimenters'], required=False) 147 148 try: 149 if kwargs['initial']['members']: pass 150 self.fields['members'] = ExperimenterModelMultipleChoiceField(queryset=kwargs['initial']['experimenters'], initial=kwargs['initial']['members'], required=False) 151 except: 152 self.fields['members'] = ExperimenterModelMultipleChoiceField(queryset=kwargs['initial']['experimenters'], required=False) 153 154 155 self.fields['permissions'] = forms.ChoiceField(choices=PERMISSION_CHOICES, widget=forms.RadioSelect(), required=True, label="Permissions") 156 157 self.fields.keyOrder = ['name', 'description', 'owners', 'members', 'permissions']158 159 name = forms.CharField(max_length=100, widget=forms.TextInput(attrs={'size':25, 'autocomplete': 'off'})) 160 description = forms.CharField(max_length=250, widget=forms.TextInput(attrs={'size':25, 'autocomplete': 'off'}), required=False) 161168187170 super(GroupOwnerForm, self).__init__(*args, **kwargs) 171 172 try: 173 if kwargs['initial']['owners']: pass 174 self.fields['owners'] = ExperimenterModelMultipleChoiceField(queryset=kwargs['initial']['experimenters'], initial=kwargs['initial']['owners'], required=False) 175 except: 176 self.fields['owners'] = ExperimenterModelMultipleChoiceField(queryset=kwargs['initial']['experimenters'], required=False) 177 178 try: 179 if kwargs['initial']['members']: pass 180 self.fields['members'] = ExperimenterModelMultipleChoiceField(queryset=kwargs['initial']['experimenters'], initial=kwargs['initial']['members'], required=False) 181 except: 182 self.fields['members'] = ExperimenterModelMultipleChoiceField(queryset=kwargs['initial']['experimenters'], required=False) 183 184 self.fields.keyOrder = ['owners', 'members', 'permissions']185 186 permissions = forms.ChoiceField(choices=PERMISSION_CHOICES, widget=forms.RadioSelect(), required=True, label="Permissions")189211 212191 super(MyAccountForm, self).__init__(*args, **kwargs) 192 self.email_check=email_check 193 try: 194 if kwargs['initial']['default_group']: pass 195 self.fields['default_group'] = GroupModelChoiceField(queryset=kwargs['initial']['groups'], initial=kwargs['initial']['default_group'], empty_label=None) 196 except: 197 self.fields['default_group'] = GroupModelChoiceField(queryset=kwargs['initial']['groups'], empty_label=None) 198 self.fields.keyOrder = ['omename', 'first_name', 'middle_name', 'last_name', 'email', 'institution', 'default_group']199 200 omename = forms.CharField(max_length=50, widget=forms.TextInput(attrs={'onfocus':'this.blur()', 'size':30, 'autocomplete': 'off'}), label="Username") 201 first_name = forms.CharField(max_length=250, widget=forms.TextInput(attrs={'size':30, 'autocomplete': 'off'})) 202 middle_name = forms.CharField(max_length=250, widget=forms.TextInput(attrs={'size':30, 'autocomplete': 'off'}), required=False) 203 last_name = forms.CharField(max_length=250, widget=forms.TextInput(attrs={'size':30, 'autocomplete': 'off'})) 204 email = forms.EmailField(widget=forms.TextInput(attrs={'size':30, 'autocomplete': 'off'}), required=False) 205 institution = forms.CharField(max_length=250, widget=forms.TextInput(attrs={'size':30, 'autocomplete': 'off'}), required=False) 206214225 226216 super(ContainedExperimentersForm, self).__init__(*args, **kwargs) 217 218 try: 219 if kwargs['initial']['members']: pass 220 self.fields['members'] = ExperimenterModelMultipleChoiceField(queryset=kwargs['initial']['experimenters'], initial=kwargs['initial']['members'], required=False) 221 except: 222 self.fields['members'] = ExperimenterModelMultipleChoiceField(queryset=kwargs['initial']['experimenters'], required=False) 223 224 self.fields.keyOrder = ['members']228 229 photo = forms.FileField(required=False) 230239232 if self.cleaned_data.get('photo') is None: 233 raise forms.ValidationError('No image selected. Supported image formats (file extensions allowed): jpeg, jpg, gif, png. The maximum image size allowed is 200KB.') 234 if not self.cleaned_data.get('photo').content_type.startswith("image"): 235 raise forms.ValidationError('Supported image formats (file extensions allowed): jpeg, jpg, gif, png.') 236 if self.cleaned_data.get('photo').size > 204800: 237 raise forms.ValidationError('The maximum image size allowed is 200KB.') 238 return self.cleaned_data.get('photo')241 242 old_password = forms.CharField(max_length=50, widget=forms.PasswordInput(attrs={'size':30, 'autocomplete': 'off'}), label="Current password") 243 password = forms.CharField(max_length=50, widget=forms.PasswordInput(attrs={'size':30, 'autocomplete': 'off'}), label="New password") 244 confirmation = forms.CharField(max_length=50, widget=forms.PasswordInput(attrs={'size':30, 'autocomplete': 'off'}), label="Confirm password") 245254 258 259247 if self.cleaned_data.get('password') or self.cleaned_data.get('confirmation'): 248 if len(self.cleaned_data.get('password')) < 3: 249 raise forms.ValidationError('Password must be at least 3 characters long.') 250 if self.cleaned_data.get('password') != self.cleaned_data.get('confirmation'): 251 raise forms.ValidationError('Passwords do not match') 252 else: 253 return self.cleaned_data.get('password')261274263 super(EnumerationEntries, self).__init__(*args, **kwargs) 264 for i,e in enumerate(entries): 265 try: 266 if kwargs['initial']['entries']: 267 self.fields[str(e.id)] = forms.CharField(max_length=250, initial=e.value, widget=forms.TextInput(attrs={'size':30}), label=i+1) 268 else: 269 self.fields[str(e.id)] = forms.CharField(max_length=250, widget=forms.TextInput(attrs={'size':30}), label=i+1) 270 except: 271 self.fields[str(e.id)] = forms.CharField(max_length=250, widget=forms.TextInput(attrs={'size':30}), label=i+1) 272 273 self.fields.keyOrder = [str(k) for k in self.fields.keys()]
Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0.1 on Tue Sep 23 15:05:01 2014 | http://epydoc.sourceforge.net |