Revision 4e30244e snf-astakos-app/astakos/im/forms.py

b/snf-astakos-app/astakos/im/forms.py
45 45
from django.utils.safestring import mark_safe
46 46

  
47 47
from astakos.im.models import AstakosUser, Invitation
48
from astakos.im.settings import INVITATIONS_PER_LEVEL, DEFAULT_FROM_EMAIL, BASEURL, SITENAME, RECAPTCHA_PRIVATE_KEY, DEFAULT_CONTACT_EMAIL, RECAPTCHA_ENABLED
48
from astakos.im.settings import INVITATIONS_PER_LEVEL, DEFAULT_FROM_EMAIL, SITENAME, RECAPTCHA_PRIVATE_KEY, DEFAULT_CONTACT_EMAIL, RECAPTCHA_ENABLED
49 49
from astakos.im.widgets import DummyWidget, RecaptchaWidget, ApprovalTermsWidget
50 50

  
51 51
# since Django 1.4 use django.core.urlresolvers.reverse_lazy instead
......
160 160
        super(InvitedLocalUserCreationForm, self).__init__(*args, **kwargs)
161 161

  
162 162
        #set readonly form fields
163
        self.fields['inviter'].widget.attrs['readonly'] = True
164
        self.fields['email'].widget.attrs['readonly'] = True
165
        self.fields['username'].widget.attrs['readonly'] = True
163
        ro = ('inviter', 'email', 'username',)
164
        for f in ro:
165
            self.fields[f].widget.attrs['readonly'] = True
166
        
166 167

  
167 168
    def save(self, commit=True):
168 169
        user = super(InvitedLocalUserCreationForm, self).save(commit=False)
......
230 231
        logger.info('Created user %s', user)
231 232
        return user
232 233

  
234
#class InvitedThirdPartyUserCreationForm(ThirdPartyUserCreationForm):
235
#    def __init__(self, *args, **kwargs):
236
#        super(InvitedThirdPartyUserCreationForm, self).__init__(*args, **kwargs)
237
#        #set readonly form fields
238
#        self.fields['email'].widget.attrs['readonly'] = True
239

  
233 240
class InvitedThirdPartyUserCreationForm(ThirdPartyUserCreationForm):
241
    """
242
    Extends the LocalUserCreationForm: adds an inviter readonly field.
243
    """
244
    inviter = forms.CharField(widget=forms.TextInput(), label=_('Inviter Real Name'))
245
    
234 246
    def __init__(self, *args, **kwargs):
247
        """
248
        Changes the order of fields, and removes the username field.
249
        """
235 250
        super(InvitedThirdPartyUserCreationForm, self).__init__(*args, **kwargs)
251

  
236 252
        #set readonly form fields
237
        self.fields['email'].widget.attrs['readonly'] = True
253
        ro = ('inviter', 'email',)
254
        for f in ro:
255
            self.fields[f].widget.attrs['readonly'] = True
256
    
257
    def save(self, commit=True):
258
        user = super(InvitedThirdPartyUserCreationForm, self).save(commit=False)
259
        level = user.invitation.inviter.level + 1
260
        user.level = level
261
        user.invitations = INVITATIONS_PER_LEVEL.get(level, 0)
262
        user.email_verified = True
263
        if commit:
264
            user.save()
265
        return user
238 266

  
239 267
class ShibbolethUserCreationForm(ThirdPartyUserCreationForm):
240 268
    def clean_email(self):
......
250 278
                raise forms.ValidationError(_("This email is already associated with another shibboleth account."))
251 279
        except AstakosUser.DoesNotExist:
252 280
            return email
281

  
282
class InvitedShibbolethUserCreationForm(InvitedThirdPartyUserCreationForm):
283
    pass
253 284
    
254 285
class LoginForm(AuthenticationForm):
255 286
    username = forms.EmailField(label=_("Email"))
......
326 357
                'url': url,
327 358
                'site_name': SITENAME,
328 359
                'user': user,
329
                'baseurl': BASEURL,
360
                'baseurl': request.build_absolute_uri(),
330 361
                'support': DEFAULT_CONTACT_EMAIL
331 362
            }
332 363
            from_email = DEFAULT_FROM_EMAIL

Also available in: Unified diff