New Register form Complete! Old one deprecated.
authorYasin <mohammed-yasin.rahman@lip6.fr>
Thu, 22 Aug 2013 16:35:18 +0000 (18:35 +0200)
committerYasin <mohammed-yasin.rahman@lip6.fr>
Thu, 22 Aug 2013 16:35:18 +0000 (18:35 +0200)
myslice/viewutils.py
portal/forms.py
portal/static/my_account.edit_profile.js
portal/templates/register_4m_f4f.html
portal/urls.py
portal/views.py
views/templates/view-login.html

index c469d5c..bc635bf 100644 (file)
@@ -24,7 +24,7 @@ def topmenu_items (current,request=None):
     else:
         result = []
         result.append({'label':'Home', 'href': '/login'})
-        result.append({ 'label':'Register', 'href': '/portal/user/register/'})
+        result.append({ 'label':'Register', 'href': '/portal/register/'})
         result.append({'label':'Contact Support', 'href': '/portal/contact/'})
     for d in result:
         #if d['label'].lower()find(current)>=0: d['is_active']=True
index fb920c7..46a60bd 100644 (file)
@@ -27,82 +27,82 @@ from portal.models import PendingUser, PendingSlice
 #from crispy_forms.layout import Submit
 from django.utils.translation import ugettext_lazy as _
 
-class UserRegisterForm(forms.Form): # Not ModelForm
-    """
-    Form for registering a new user account.
-    
-    Validates that the requested username is not already in use, and
-    requires the password to be entered twice to catch typos.
-    
-    Subclasses should feel free to add any additional validation they
-    need, but should avoid defining a ``save()`` method -- the actual
-    saving of collected user data is delegated to the active
-    registration backend.
-
-    """
-    required_css_class = 'required'
-    
-    first_name = forms.RegexField(regex=r'^[\w+\s.@+-]+$',
-                                 max_length=30,
-                                 label=_("First name"),
-                                 error_messages={'invalid': _("This value may contain only letters, numbers and @/./+/-/_ characters.")})
-    last_name = forms.RegexField(regex=r'^[\w+\s.@+-]+$',
-                                 max_length=30,
-                                 label=_("Last name"),
-                                 error_messages={'invalid': _("This value may contain only letters, numbers and @/./+/-/_ characters.")})
-    affiliation = forms.RegexField(regex=r'^[\w+\s.@+-]+$',
-                             max_length=30,
-                             label=_("Affiliation"),
-                             error_messages={'invalid': _("This value may contain only letters, numbers and @/./+/-/_ characters.")})
-
-    email = forms.EmailField(label=_("E-mail"))
-    password1 = forms.CharField(widget=forms.PasswordInput,
-                                label=_("Password"))
-    password2 = forms.CharField(widget=forms.PasswordInput,
-                                label=_("Password (again)"))
-    keypair    = forms.CharField( widget=forms.FileInput )
-   
-    #my_keypairs = forms.ChoiceField(widget = forms.Select(), 
-    #             choices = ([('1','generate'), ('2','upload')])) 
-    tos = forms.BooleanField(widget=forms.CheckboxInput,
-                             label=_(u'I have read and agree to the Terms of Service'),
-                             error_messages={'required': _("You must agree to the terms to register")})
-
-#    def clean_username(self):
-#        """
-#        Validate that the username is alphanumeric and is not already
-#        in use.
-#        
-#        """
-#        existing = User.objects.filter(username__iexact=self.cleaned_data['username'])
-#        if existing.exists():
-#            raise forms.ValidationError(_("A user with that username already exists."))
-#        else:
-#            return self.cleaned_data['username']
-
-    def clean_email(self):
-        """
-        Validate that the supplied email address is unique for the
-        site.
-        
-        """
-        if PendingUser.objects.filter(email__iexact=self.cleaned_data['email']):
-            raise forms.ValidationError(_("This email address is already in use. Please supply a different email address."))
-        return self.cleaned_data['email']
-
-    def clean(self):
-        """
-        Verifiy that the values entered into the two password fields
-        match. Note that an error here will end up in
-        ``non_field_errors()`` because it doesn't apply to a single
-        field.
-        
-        """
-        if 'password1' in self.cleaned_data and 'password2' in self.cleaned_data:
-            if self.cleaned_data['password1'] != self.cleaned_data['password2']:
-                raise forms.ValidationError(_("The two password fields didn't match."))
-        return self.cleaned_data
-
+# DEPRECATED # class UserRegisterForm(forms.Form): # Not ModelForm
+# DEPRECATED #     """
+# DEPRECATED #     Form for registering a new user account.
+# DEPRECATED #     
+# DEPRECATED #     Validates that the requested username is not already in use, and
+# DEPRECATED #     requires the password to be entered twice to catch typos.
+# DEPRECATED #     
+# DEPRECATED #     Subclasses should feel free to add any additional validation they
+# DEPRECATED #     need, but should avoid defining a ``save()`` method -- the actual
+# DEPRECATED #     saving of collected user data is delegated to the active
+# DEPRECATED #     registration backend.
+# DEPRECATED # 
+# DEPRECATED #     """
+# DEPRECATED #     required_css_class = 'required'
+# DEPRECATED #     
+# DEPRECATED #     first_name = forms.RegexField(regex=r'^[\w+\s.@+-]+$',
+# DEPRECATED #                                  max_length=30,
+# DEPRECATED #                                  label=_("First name"),
+# DEPRECATED #                                  error_messages={'invalid': _("This value may contain only letters, numbers and @/./+/-/_ characters.")})
+# DEPRECATED #     last_name = forms.RegexField(regex=r'^[\w+\s.@+-]+$',
+# DEPRECATED #                                  max_length=30,
+# DEPRECATED #                                  label=_("Last name"),
+# DEPRECATED #                                  error_messages={'invalid': _("This value may contain only letters, numbers and @/./+/-/_ characters.")})
+# DEPRECATED #     affiliation = forms.RegexField(regex=r'^[\w+\s.@+-]+$',
+# DEPRECATED #                              max_length=30,
+# DEPRECATED #                              label=_("Affiliation"),
+# DEPRECATED #                              error_messages={'invalid': _("This value may contain only letters, numbers and @/./+/-/_ characters.")})
+# DEPRECATED # 
+# DEPRECATED #     email = forms.EmailField(label=_("E-mail"))
+# DEPRECATED #     password1 = forms.CharField(widget=forms.PasswordInput,
+# DEPRECATED #                                 label=_("Password"))
+# DEPRECATED #     password2 = forms.CharField(widget=forms.PasswordInput,
+# DEPRECATED #                                 label=_("Password (again)"))
+# DEPRECATED #     keypair    = forms.CharField( widget=forms.FileInput )
+# DEPRECATED #    
+# DEPRECATED #     #my_keypairs = forms.ChoiceField(widget = forms.Select(), 
+# DEPRECATED #     #             choices = ([('1','generate'), ('2','upload')])) 
+# DEPRECATED #     tos = forms.BooleanField(widget=forms.CheckboxInput,
+# DEPRECATED #                              label=_(u'I have read and agree to the Terms of Service'),
+# DEPRECATED #                              error_messages={'required': _("You must agree to the terms to register")})
+# DEPRECATED # 
+# DEPRECATED # #    def clean_username(self):
+# DEPRECATED # #        """
+# DEPRECATED # #        Validate that the username is alphanumeric and is not already
+# DEPRECATED # #        in use.
+# DEPRECATED # #        
+# DEPRECATED # #        """
+# DEPRECATED # #        existing = User.objects.filter(username__iexact=self.cleaned_data['username'])
+# DEPRECATED # #        if existing.exists():
+# DEPRECATED # #            raise forms.ValidationError(_("A user with that username already exists."))
+# DEPRECATED # #        else:
+# DEPRECATED # #            return self.cleaned_data['username']
+# DEPRECATED # 
+# DEPRECATED #     def clean_email(self):
+# DEPRECATED #         """
+# DEPRECATED #         Validate that the supplied email address is unique for the
+# DEPRECATED #         site.
+# DEPRECATED #         
+# DEPRECATED #         """
+# DEPRECATED #         if PendingUser.objects.filter(email__iexact=self.cleaned_data['email']):
+# DEPRECATED #             raise forms.ValidationError(_("This email address is already in use. Please supply a different email address."))
+# DEPRECATED #         return self.cleaned_data['email']
+# DEPRECATED # 
+# DEPRECATED #     def clean(self):
+# DEPRECATED #         """
+# DEPRECATED #         Verifiy that the values entered into the two password fields
+# DEPRECATED #         match. Note that an error here will end up in
+# DEPRECATED #         ``non_field_errors()`` because it doesn't apply to a single
+# DEPRECATED #         field.
+# DEPRECATED #         
+# DEPRECATED #         """
+# DEPRECATED #         if 'password1' in self.cleaned_data and 'password2' in self.cleaned_data:
+# DEPRECATED #             if self.cleaned_data['password1'] != self.cleaned_data['password2']:
+# DEPRECATED #                 raise forms.ValidationError(_("The two password fields didn't match."))
+# DEPRECATED #         return self.cleaned_data
+# DEPRECATED # 
 # DEPRECATED #    class Meta:
 # DEPRECATED #        model = PendingUser
 
index de71b10..dcbfbb3 100644 (file)
@@ -171,13 +171,13 @@ alert("You have requested to generate new key pairs. Please download and save th
 function emailAlert()
 {
 alert("To edit email please contact the administratior. You will be redirected to the support page now");
-window.location.href = "/support";
+window.location.href = "/portal/contact/";
 }
 
 function affAlert()
 {
 alert("To edit affiliation please contact the administratior. You will be redirected to the support page now");
-window.location.href = "/support";
+window.location.href = "/portal/contact/";
 }
 /*
  // alert having ok or cancel option
index b13196d..3a78a44 100644 (file)
 
 
 
-
-
-{% if messages %}
-<ul class="messages">
-    {% for message in messages %}
-    <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
-    {% endfor %}
-</ul>
-{% endif %}
+{% if errors %}
+        <ul>
+            {% for error in errors %}
+            <li>{{ error }}</li>
+            {% endfor %}
+        </ul>
+    {% endif %}
 
 
 <form class="cmxform" id="commentForm" method="post" action="" enctype="multipart/form-data" >
    
    <div class="field">
      <label for="cname">First Name</label>
-     <input type="text" id="firstname" name="firstname" size="25" class="required" minlength="2" value="{{ form.field.value|default_if_none:"" }}" /> 
+     <input type="text" id="firstname" name="firstname" size="25" class="required" minlength="2" value="{{ firstname}}" /> 
      <p class="hint">Enter your first name</p>
      <?php echo $errfName;?>
    </div>
    <div class="field">
      <label for="lname">Last Name</label>
-     <input type="text" id="lastname" name="lastname" size="25" class="required" minlength="2" value="{{ form.field.value|default_if_none:"" }}"/> 
+     <input type="text" id="lastname" name="lastname" size="25" class="required" minlength="2" value="{{ lastname }}"/> 
      <p class="hint">Enter your last name</p>
      <?php echo $errlName;?>
    </div>
    <div class="field">
      <label for="aff_list">Affiliation</label>
-     <input type="text" id="aff_list" name="affiliation" size="25" class="required"  value="{{ form.field.value|default_if_none:"" }}"/> 
+     <input type="text" id="aff_list" name="affiliation" size="25" class="required"  value="{{ affiliation }}"/> 
      <p class="hint">Enter your Institution name</p>
      <?php echo $erraffiliation;?>
    </div>
    <div class="field">
      <label for="cemail">Email</label>
-     <input type="text" id="email" name="email" size="25"  class="required email" value="{{ form.field.value|default_if_none:"" }}"/> 
+     <input type="text" id="email" name="email" size="25"  class="required email" value="{{ email }}"/> 
      <p class="hint">Enter a valid email address</p>
      <?php echo $errEmail; ?>
    </div>
    <div class="field">
      <label for="password">Password</label>
-     <input type="password"  id="password" name="password"   class="required" minlength="4" value="{{ form.field.value|default_if_none:"" }}"/> 
+     <input type="password"  id="password" name="password"   class="required" minlength="4" value="{{ password }}"/> 
      <p class="hint">Enter password</p>
      <?php //echo $errPass;?>
    </div>
    <div class="field">
      <label for="password">Confirm Password</label>
-     <input type="password"  id="confirmpassword" name="confirmpassword"   minlength="4" class="required" value='{{ form.field.value|default_if_none:"" }}'/>
+     <input type="password"  id="confirmpassword" name="confirmpassword"   minlength="4" class="required" value=""/>
      <p class="hint">Retype the password</p>
    </div>
    <div class="field">
index eba1c9c..f0e5ecd 100644 (file)
@@ -22,7 +22,7 @@
 
 from django.conf.urls import patterns, include, url
 from portal           import views
-from portal.views     import UserRegisterView, UserValidateView, DashboardView, PresViewView
+from portal.views     import  DashboardView, PresViewView
 from portal.util      import TemplateView
 
 # DEPRECATED #named_register_forms = (
@@ -35,12 +35,12 @@ from portal.util      import TemplateView
 
 urlpatterns = patterns('',
     # User registration
-    url(r'^user/register/?$', UserRegisterView.as_view(), name='user_register'),
+    #url(r'^user/register/?$', UserRegisterView.as_view(), name='user_register'),
     url(r'^user/register/complete/$',
         TemplateView.as_view(template_name='user_register_complete.html'),
         name='user_register_complete'),
     # User validation
-    url(r'^user/validate/?$', UserValidateView.as_view(), name='user_validate'),
+    #url(r'^user/validate/?$', UserValidateView.as_view(), name='user_validate'),
     url(r'^dashboard/?$', DashboardView.as_view(), name='dashboard'),
     #url(r'^my_account/?$', MyAccountView.as_view(), name='my_account'),
     url(r'^account/?$', views.my_account),
index df281fc..cf5f59d 100644 (file)
@@ -98,145 +98,145 @@ class DashboardView(TemplateView):
 
         return context
 
-class UserRegisterView(RegistrationView):
-    """
-    A registration backend which follows a simple workflow:
-
-    1. User signs up, inactive account is created.
-
-    2. Email is sent to user with activation link.
-
-    3. User clicks activation link, account is now active.
-
-    Using this backend requires that
-
-    * ``registration`` be listed in the ``INSTALLED_APPS`` setting
-      (since this backend makes use of models defined in this
-      application).
-
-    * The setting ``ACCOUNT_ACTIVATION_DAYS`` be supplied, specifying
-      (as an integer) the number of days from registration during
-      which a user may activate their account (after that period
-      expires, activation will be disallowed).
-
-    * The creation of the templates
-      ``registration/activation_email_subject.txt`` and
-      ``registration/activation_email.txt``, which will be used for
-      the activation email. See the notes for this backends
-      ``register`` method for details regarding these templates.
-
-    Additionally, registration can be temporarily closed by adding the
-    setting ``REGISTRATION_OPEN`` and setting it to
-    ``False``. Omitting this setting, or setting it to ``True``, will
-    be interpreted as meaning that registration is currently open and
-    permitt ed.
-
-    Internally, this is accomplished via storing an activation key in
-    an instance of ``registration.models.RegistrationProfile``. See
-    that model and its custom manager for full documentation of its
-    fields and supported operations.
-    
-    """
-    form_class = UserRegisterForm
-    
-    def register(self, request, **cleaned_data):
-        """
-        Given a username, email address and password, register a new
-        user account, which will initially be inactive.
-
-        Along with the new ``User`` object, a new
-        ``registration.models.RegistrationProfile`` will be created,
-        tied to that ``User``, containing the activation key which
-        will be used for this account.
-
-        An email will be sent to the supplied email address; this
-        email should contain an activation link. The email will be
-        rendered using two templates. See the documentation for
-        ``RegistrationProfile.send_activation_email()`` for
-        information about these templates and the contexts provided to
-        them.
-
-        After the ``User`` and ``RegistrationProfile`` are created and
-        the activation email is sent, the signal
-        ``registration.signals.user_registered`` will be sent, with
-        the new ``User`` as the keyword argument ``user`` and the
-        class of this backend as the sender.
-
-        """
-        first_name = cleaned_data['first_name']
-        last_name  = cleaned_data['last_name']
-        affiliation= cleaned_data['affiliation']
-        email      = cleaned_data['email']
-        password   = cleaned_data['password1']
-        
-        #password2  = cleaned_data['password2']
-        keypair    = cleaned_data['keypair']
-
-        #if Site._meta.installed:
-        #    site = Site.objects.get_current()
-        #else:
-        #    site = RequestSite(request) 
-        site = None
-
-        new_user = PendingUser.objects.create_inactive_user(first_name, last_name, email, password, site)
-        signals.user_registered.send(sender=self.__class__,
-                                     user=new_user,
-                                     request=request)
-        return new_user
-
-    def get_context_data(self, **kwargs):
-        context = super(UserRegisterView, self).get_context_data(**kwargs)
-        context['topmenu_items'] = topmenu_items('Register', self.request)
-        context['username'] = the_user (self.request)
-        return context
-
-    def registration_allowed(self, request):
-        """
-        Indicate whether account registration is currently permitted,
-        based on the value of the setting ``REGISTRATION_OPEN``. This
-        is determined as follows:
-
-        * If ``REGISTRATION_OPEN`` is not specified in settings, or is
-          set to ``True``, registration is permitted.
-
-        * If ``REGISTRATION_OPEN`` is both specified and set to
-          ``False``, registration is not permitted.
-        
-        """
-        return getattr(settings, 'REGISTRATION_OPEN', True)
-
-    def get_success_url(self, request, user):
-        """
-        Return the name of the URL to redirect to after successful
-        user registration.
-        
-        """
-        return ('user_register_complete', (), {})
-
-
-class UserValidateView(ActivationView):
-    def activate(self, request, activation_key):
-        """
-        Given an an activation key, look up and activate the user
-        account corresponding to that key (if possible).
-
-        After successful activation, the signal
-        ``registration.signals.user_activated`` will be sent, with the
-        newly activated ``User`` as the keyword argument ``user`` and
-        the class of this backend as the sender.
-        
-        """
-        activated_user = RegistrationProfile.objects.activate_user(activation_key)
-        if activated_user:
-            signals.user_activated.send(sender=self.__class__,
-                                        user=activated_user,
-                                        request=request)
-        return activated_user
-
-    def get_success_url(self, request, user):
-        return ('registration_activation_complete', (), {})
-
-
+# DEPRECATED #class UserRegisterView(RegistrationView):
+# DEPRECATED #    """
+# DEPRECATED #    A registration backend which follows a simple workflow:
+# DEPRECATED #
+# DEPRECATED #    1. User signs up, inactive account is created.
+# DEPRECATED #
+# DEPRECATED #    2. Email is sent to user with activation link.
+# DEPRECATED #
+# DEPRECATED #    3. User clicks activation link, account is now active.
+# DEPRECATED #
+# DEPRECATED #    Using this backend requires that
+# DEPRECATED #
+# DEPRECATED #    * ``registration`` be listed in the ``INSTALLED_APPS`` setting
+# DEPRECATED #      (since this backend makes use of models defined in this
+# DEPRECATED #      application).
+# DEPRECATED #
+# DEPRECATED #    * The setting ``ACCOUNT_ACTIVATION_DAYS`` be supplied, specifying
+# DEPRECATED #      (as an integer) the number of days from registration during
+# DEPRECATED #      which a user may activate their account (after that period
+# DEPRECATED #      expires, activation will be disallowed).
+# DEPRECATED #
+# DEPRECATED #    * The creation of the templates
+# DEPRECATED #      ``registration/activation_email_subject.txt`` and
+# DEPRECATED #      ``registration/activation_email.txt``, which will be used for
+# DEPRECATED #      the activation email. See the notes for this backends
+# DEPRECATED #      ``register`` method for details regarding these templates.
+# DEPRECATED #
+# DEPRECATED #    Additionally, registration can be temporarily closed by adding the
+# DEPRECATED #    setting ``REGISTRATION_OPEN`` and setting it to
+# DEPRECATED #    ``False``. Omitting this setting, or setting it to ``True``, will
+# DEPRECATED #    be interpreted as meaning that registration is currently open and
+# DEPRECATED #    permitt ed.
+# DEPRECATED #
+# DEPRECATED #    Internally, this is accomplished via storing an activation key in
+# DEPRECATED #    an instance of ``registration.models.RegistrationProfile``. See
+# DEPRECATED #    that model and its custom manager for full documentation of its
+# DEPRECATED #    fields and supported operations.
+# DEPRECATED #    
+# DEPRECATED #    """
+# DEPRECATED ## DEPRECATED #    form_class = UserRegisterForm
+# DEPRECATED #    
+# DEPRECATED #    def register(self, request, **cleaned_data):
+# DEPRECATED #        """
+# DEPRECATED #        Given a username, email address and password, register a new
+# DEPRECATED #        user account, which will initially be inactive.
+# DEPRECATED #
+# DEPRECATED #        Along with the new ``User`` object, a new
+# DEPRECATED #        ``registration.models.RegistrationProfile`` will be created,
+# DEPRECATED #        tied to that ``User``, containing the activation key which
+# DEPRECATED #        will be used for this account.
+# DEPRECATED #
+# DEPRECATED #        An email will be sent to the supplied email address; this
+# DEPRECATED #        email should contain an activation link. The email will be
+# DEPRECATED #        rendered using two templates. See the documentation for
+# DEPRECATED #        ``RegistrationProfile.send_activation_email()`` for
+# DEPRECATED #        information about these templates and the contexts provided to
+# DEPRECATED #        them.
+# DEPRECATED #
+# DEPRECATED #        After the ``User`` and ``RegistrationProfile`` are created and
+# DEPRECATED #        the activation email is sent, the signal
+# DEPRECATED #        ``registration.signals.user_registered`` will be sent, with
+# DEPRECATED #        the new ``User`` as the keyword argument ``user`` and the
+# DEPRECATED #        class of this backend as the sender.
+# DEPRECATED #
+# DEPRECATED #        """
+# DEPRECATED #        first_name = cleaned_data['first_name']
+# DEPRECATED #        last_name  = cleaned_data['last_name']
+# DEPRECATED #        affiliation= cleaned_data['affiliation']
+# DEPRECATED #        email      = cleaned_data['email']
+# DEPRECATED #        password   = cleaned_data['password1']
+# DEPRECATED #        
+# DEPRECATED #        #password2  = cleaned_data['password2']
+# DEPRECATED #        keypair    = cleaned_data['keypair']
+# DEPRECATED #
+# DEPRECATED #        #if Site._meta.installed:
+# DEPRECATED #        #    site = Site.objects.get_current()
+# DEPRECATED #        #else:
+# DEPRECATED #        #    site = RequestSite(request) 
+# DEPRECATED #        site = None
+# DEPRECATED #
+# DEPRECATED #        new_user = PendingUser.objects.create_inactive_user(first_name, last_name, email, password, site)
+# DEPRECATED #        signals.user_registered.send(sender=self.__class__,
+# DEPRECATED #                                     user=new_user,
+# DEPRECATED #                                     request=request)
+# DEPRECATED #        return new_user
+# DEPRECATED #
+# DEPRECATED #    def get_context_data(self, **kwargs):
+# DEPRECATED #        context = super(UserRegisterView, self).get_context_data(**kwargs)
+# DEPRECATED #        context['topmenu_items'] = topmenu_items('Register', self.request)
+# DEPRECATED #        context['username'] = the_user (self.request)
+# DEPRECATED #        return context
+# DEPRECATED #
+# DEPRECATED #    def registration_allowed(self, request):
+# DEPRECATED #        """
+# DEPRECATED #        Indicate whether account registration is currently permitted,
+# DEPRECATED #        based on the value of the setting ``REGISTRATION_OPEN``. This
+# DEPRECATED #        is determined as follows:
+# DEPRECATED #
+# DEPRECATED #        * If ``REGISTRATION_OPEN`` is not specified in settings, or is
+# DEPRECATED #          set to ``True``, registration is permitted.
+# DEPRECATED #
+# DEPRECATED #        * If ``REGISTRATION_OPEN`` is both specified and set to
+# DEPRECATED #          ``False``, registration is not permitted.
+# DEPRECATED #        
+# DEPRECATED #        """
+# DEPRECATED #        return getattr(settings, 'REGISTRATION_OPEN', True)
+# DEPRECATED #
+# DEPRECATED #    def get_success_url(self, request, user):
+# DEPRECATED #        """
+# DEPRECATED #        Return the name of the URL to redirect to after successful
+# DEPRECATED #        user registration.
+# DEPRECATED #        
+# DEPRECATED #        """
+# DEPRECATED #        return ('user_register_complete', (), {})
+# DEPRECATED #
+# DEPRECATED #
+# DEPRECATED #class UserValidateView(ActivationView):
+# DEPRECATED #    def activate(self, request, activation_key):
+# DEPRECATED #        """
+# DEPRECATED #        Given an an activation key, look up and activate the user
+# DEPRECATED #        account corresponding to that key (if possible).
+# DEPRECATED #
+# DEPRECATED #        After successful activation, the signal
+# DEPRECATED #        ``registration.signals.user_activated`` will be sent, with the
+# DEPRECATED #        newly activated ``User`` as the keyword argument ``user`` and
+# DEPRECATED #        the class of this backend as the sender.
+# DEPRECATED #        
+# DEPRECATED #        """
+# DEPRECATED #        activated_user = RegistrationProfile.objects.activate_user(activation_key)
+# DEPRECATED #        if activated_user:
+# DEPRECATED #            signals.user_activated.send(sender=self.__class__,
+# DEPRECATED #                                        user=activated_user,
+# DEPRECATED #                                        request=request)
+# DEPRECATED #        return activated_user
+# DEPRECATED #
+# DEPRECATED #    def get_success_url(self, request, user):
+# DEPRECATED #        return ('registration_activation_complete', (), {})
+# DEPRECATED #
+# DEPRECATED #
 # DEPRECATED #from portal.portalpage  import PortalPage
 # DEPRECATED #from plugins.wizard     import Wizard
 # DEPRECATED #from plugins.form       import CreateForm
@@ -572,33 +572,31 @@ def acc_process(request):
         return HttpResponse(message)
 
 def register_4m_f4f(request):
-    #return render(request, 'register_4m_f4f.html')
-
-#def reg_4m_f4f_process(request):
-    if 'submit' in request.POST:
+    errors = []
+    if request.method == 'POST':
         #get_email = PendingUser.objects.get(email)
-        reg_fname = request.POST['firstname']
-        reg_lname = request.POST['lastname']
-        reg_aff = request.POST['affiliation']
-        reg_email = request.POST['email'].lower()
+        reg_fname = request.POST.get('firstname', '')
+        reg_lname = request.POST.get('lastname', '')
+        reg_aff = request.POST.get('affiliation','')
+        reg_email = request.POST.get('email','').lower()
         
         #POST value validation  
         if (re.search(r'^[\w+\s.@+-]+$', reg_fname)==None):
-            messages.error(request, 'First Name may contain only letters, numbers, spaces and @/./+/-/_ characters.')
+            errors.append('First Name may contain only letters, numbers, spaces and @/./+/-/_ characters.')
             #return HttpResponse("Only Letters, Numbers, - and _ allowd in First Name")
-            return render(request, 'register_4m_f4f.html')
+            #return render(request, 'register_4m_f4f.html')
         if (re.search(r'^[\w+\s.@+-]+$', reg_lname) == None):
-            messages.error(request, 'Last Name may contain only letters, numbers, spaces and @/./+/-/_ characters.')
+            errors.append('Last Name may contain only letters, numbers, spaces and @/./+/-/_ characters.')
             #return HttpResponse("Only Letters, Numbers, - and _ is allowed in Last name")
-            return render(request, 'register_4m_f4f.html')
+            #return render(request, 'register_4m_f4f.html')
         if (re.search(r'^[\w+\s.@+-]+$', reg_aff) == None):
-            messages.error(request, 'Affiliation may contain only letters, numbers, spaces and @/./+/-/_ characters.')
+            errors.append('Affiliation may contain only letters, numbers, spaces and @/./+/-/_ characters.')
             #return HttpResponse("Only Letters, Numbers and _ is allowed in Affiliation")
-            return render(request, 'register_4m_f4f.html')
+            #return render(request, 'register_4m_f4f.html')
         if PendingUser.objects.filter(email__iexact=reg_email):
-            messages.error(request, 'Email already registered.Please provide a new email address.')
+            errors.append('Email already registered.Please provide a new email address.')
             #return HttpResponse("Email Already exists")
-            return render(request, 'register_4m_f4f.html')
+            #return render(request, 'register_4m_f4f.html')
         if 'generate' in request.POST['question']:
             #import os
             #from M2Crypto import Rand, RSA, BIO
@@ -641,14 +639,26 @@ def register_4m_f4f(request):
                 keypair = re.sub("\n", "\\n",keypair)
                 keypair = ''.join(keypair.split())
             else:
-                return HttpResponse('Please upload a valid RSA public key [.txt or .pub].')
+                errors.append('Please upload a valid RSA public key [.txt or .pub].')
 
-        b = PendingUser(first_name=reg_fname, last_name=reg_lname, affiliation=reg_aff, 
-                        email=reg_email, password=request.POST['password'], keypair=keypair)
-        b.save()
-
-        return render(request, 'user_register_complete.html')
-    return render(request, 'register_4m_f4f.html')        
+        #b = PendingUser(first_name=reg_fname, last_name=reg_lname, affiliation=reg_aff, 
+        #                email=reg_email, password=request.POST['password'], keypair=keypair)
+        #b.save()
+        if not errors:
+            b = PendingUser(first_name=reg_fname, last_name=reg_lname, affiliation=reg_aff,
+                            email=reg_email, password=request.POST['password'], keypair=keypair)
+            b.save()
+            return render(request, 'user_register_complete.html')
+
+    return render(request, 'register_4m_f4f.html',{
+        'topmenu_items': topmenu_items('Register', request),
+        'errors': errors,
+        'firstname': request.POST.get('firstname', ''),
+        'lastname': request.POST.get('lastname', ''),
+        'affiliation': request.POST.get('affiliation', ''),
+        'email': request.POST.get('email', ''),
+        'password': request.POST.get('password', ''),           
+    })        
     
 
 # view for contact form
index a7f0a33..cff2c44 100644 (file)
@@ -23,7 +23,7 @@ Currently hard wired users are:
 <div style='padding: 20px;'>
   <div style=' padding-top: 12px; background-color: orange; border: 1px solid #61210B; text-align: center;'>
     <h2 style="font-weight: bold;">Welcome to the OneLab portal !</h2>
-    <h3>New to OneLab? Please <a href="/portal/user/register">register</a> or learn more about <a href="http://www.onelab.eu/" target="_blank">the project</a>.</h3>
+    <h3>New to OneLab? Please <a href="/portal/register">register</a> or learn more about <a href="http://www.onelab.eu/" target="_blank">the project</a>.</h3>
   </div>
 <p/>
   <p>