Commit 13b92bc1a4406208a6fce29f1d4ad817a80c1912
1 parent
ab5d09e6
Exists in
master
and in
39 other branches
Updating signup form
Showing
4 changed files
with
97 additions
and
82 deletions
Show diff stats
src/accounts/forms.py
1 | # -*- coding: utf-8 -*- | 1 | # -*- coding: utf-8 -*- |
2 | 2 | ||
3 | from django import forms | 3 | from django import forms |
4 | -from django.core.exceptions import ValidationError | ||
5 | from django.contrib.auth.models import User | 4 | from django.contrib.auth.models import User |
6 | from django.contrib.auth.forms import UserCreationForm as UserCreationForm_ | 5 | from django.contrib.auth.forms import UserCreationForm as UserCreationForm_ |
7 | from django.utils.translation import ugettext_lazy as _ | 6 | from django.utils.translation import ugettext_lazy as _ |
@@ -17,15 +16,12 @@ for list_ in MailingList.objects.iterator(): | @@ -17,15 +16,12 @@ for list_ in MailingList.objects.iterator(): | ||
17 | 16 | ||
18 | 17 | ||
19 | class UserCreationForm(UserCreationForm_): | 18 | class UserCreationForm(UserCreationForm_): |
20 | - first_name = forms.CharField(max_length=30, label=_(u'Name')) | ||
21 | - last_name = forms.CharField(max_length=30, label=_(u'Last name')) | ||
22 | - email = forms.EmailField(validators=[UniqueValidator(User, 'email')]) | ||
23 | - institution= forms.CharField(max_length=120, label=_(u'Institution'), required=False) | ||
24 | - role = forms.CharField(max_length=60, label=_(u'Role'), required=False) | ||
25 | - twitter = forms.URLField(label=_(u'Twitter'), required=False) | ||
26 | - facebook = forms.URLField(label=_(u'Facebook'), required=False) | ||
27 | - google_talk = forms.EmailField(label=_(u'Google Talk'), required=False) | ||
28 | - webpage = forms.URLField(label=_(u'Personal Website/Blog'), required=False) | 19 | + first_name = forms.CharField(max_length=30, label=_(u'Name'), |
20 | + widget=forms.TextInput(attrs={'class':'form-control'})) | ||
21 | + last_name = forms.CharField(max_length=30, label=_(u'Last name'), | ||
22 | + widget=forms.TextInput(attrs={'class':'form-control'})) | ||
23 | + email = forms.EmailField(validators=[UniqueValidator(User, 'email')], | ||
24 | + widget=forms.TextInput(attrs={'class':'form-control'})) | ||
29 | lists = forms.MultipleChoiceField(label=u'Listas', | 25 | lists = forms.MultipleChoiceField(label=u'Listas', |
30 | required=False, | 26 | required=False, |
31 | widget=forms.CheckboxSelectMultiple, | 27 | widget=forms.CheckboxSelectMultiple, |
@@ -39,6 +35,19 @@ class UserCreationForm(UserCreationForm_): | @@ -39,6 +35,19 @@ class UserCreationForm(UserCreationForm_): | ||
39 | 35 | ||
40 | 36 | ||
41 | class UserUpdateForm(UserCreationForm): | 37 | class UserUpdateForm(UserCreationForm): |
38 | + institution= forms.CharField(max_length=120, label=_(u'Institution'), required=False, | ||
39 | + widget=forms.TextInput(attrs={'class':'form-control'})) | ||
40 | + role = forms.CharField(max_length=60, label=_(u'Role'), required=False, | ||
41 | + widget=forms.TextInput(attrs={'class':'form-control'})) | ||
42 | + twitter = forms.URLField(label=_(u'Twitter'), required=False, | ||
43 | + widget=forms.TextInput(attrs={'class':'form-control'})) | ||
44 | + facebook = forms.URLField(label=_(u'Facebook'), required=False, | ||
45 | + widget=forms.TextInput(attrs={'class':'form-control'})) | ||
46 | + google_talk = forms.EmailField(label=_(u'Google Talk'), required=False, | ||
47 | + widget=forms.TextInput(attrs={'class':'form-control'})) | ||
48 | + webpage = forms.URLField(label=_(u'Personal Website/Blog'), required=False, | ||
49 | + widget=forms.TextInput(attrs={'class':'form-control'})) | ||
50 | + | ||
42 | def __init__(self, *args, **kwargs): | 51 | def __init__(self, *args, **kwargs): |
43 | super(UserUpdateForm, self).__init__(*args, **kwargs) | 52 | super(UserUpdateForm, self).__init__(*args, **kwargs) |
44 | self.fields.pop('username') | 53 | self.fields.pop('username') |
src/accounts/templates/accounts/signup-form.html
@@ -5,22 +5,20 @@ | @@ -5,22 +5,20 @@ | ||
5 | 5 | ||
6 | <h2>{% trans "Sign up" %}</h2> | 6 | <h2>{% trans "Sign up" %}</h2> |
7 | 7 | ||
8 | -{% if form.errors %} | ||
9 | -<div> | ||
10 | - <b>{% trans "Please correct the errors below and try again." %}</b> | ||
11 | -</div> | ||
12 | -{% endif %} | ||
13 | - | ||
14 | <div class="row"> | 8 | <div class="row"> |
15 | - <div class="col-lg-11 well"> | ||
16 | - <label>{% trans "Avatar" %}</label > | ||
17 | - <div id="avatar"> | ||
18 | - <img src="{{ STATIC_URL }}img/user.png" alt="user"/> | ||
19 | - </div> | ||
20 | - <p> | ||
21 | - {% trans "Add an avatar to your account using" %} <a href="http://gravatar.com/" target="_blank">Gravatar</a> | ||
22 | - </p> | 9 | + {% if form.errors %} |
10 | + <div class="alert alert-danger"> | ||
11 | + <b>{% trans "Please correct the errors below and try again" %}</b> | ||
23 | </div> | 12 | </div> |
13 | + {% endif %} | ||
14 | + | ||
15 | + <div> | ||
16 | + {% for field in form %} | ||
17 | + {% if field.errors %} | ||
18 | + {{ field.label }} | ||
19 | + {% endif %} | ||
20 | + {% endfor %} | ||
21 | + </div> | ||
24 | </div> | 22 | </div> |
25 | 23 | ||
26 | 24 | ||
@@ -28,46 +26,51 @@ | @@ -28,46 +26,51 @@ | ||
28 | <label>{% trans "Required fields" %}</label> | 26 | <label>{% trans "Required fields" %}</label> |
29 | </p> | 27 | </p> |
30 | 28 | ||
31 | -<form action="." method="post"> | 29 | +<form action="." method="post" role="form" class="form-horizontal signup"> |
32 | {% csrf_token %} | 30 | {% csrf_token %} |
33 | 31 | ||
34 | <div class="row"> | 32 | <div class="row"> |
35 | - <div class="col-lg-5"> | ||
36 | - <fieldset class="well"> | ||
37 | - <legend>{% trans "Personal Information" %}</legend> | ||
38 | - {% render_form_field form.first_name %} | ||
39 | - {% render_form_field form.last_name %} | ||
40 | - {% render_form_field form.email %} | ||
41 | - {% render_form_field form.username %} | ||
42 | - </fieldset> | ||
43 | - | ||
44 | - <fieldset class="well"> | ||
45 | - <legend>{% trans "Others" %}</legend> | ||
46 | - {% render_form_field form.twitter %} | ||
47 | - {% render_form_field form.facebook %} | ||
48 | - {% render_form_field form.google_talk %} | ||
49 | - {% render_form_field form.webpage %} | ||
50 | - </fieldset> | ||
51 | - </div> | ||
52 | 33 | ||
53 | - <div class="col-lg-5 col-lg-offset-1"> | ||
54 | - <fieldset class="well"> | ||
55 | - <legend>{% trans "Professionals Information" %}</legend> | ||
56 | - {% render_form_field form.institution %} | ||
57 | - {% render_form_field form.role %} | ||
58 | - </fieldset> | 34 | + <div> |
35 | + {% for legend, fields in fieldsets %} | ||
36 | + <div class="col-md-6 col-lg-6 col-sm-6 col-xs-12" style="display: inline-block; vertical-align:top;"> | ||
37 | + <div class="well"> | ||
38 | + <fieldset> | ||
39 | + <legend>{{ legend }}</legend> | ||
40 | + {% for field in fields %} | ||
41 | + <div class="form-group{% if field.field.required %} required{% endif %}{% if field.errors %} alert alert-danger has-error{% endif %}"> | ||
42 | + <label for="first_name" class="control-label"> | ||
43 | + {{ field.label }} | ||
44 | + </label> | ||
45 | + {% if field.name == 'username' %} | ||
46 | + <input id="id_username" name="username" type="text" class="form-control"> | ||
47 | + {% elif field.name == 'lists' %} | ||
48 | + {% for choice in field %} | ||
49 | + <div class="checkbox"> | ||
50 | + {{ choice }} | ||
51 | + </div> | ||
52 | + {% endfor %} | ||
53 | + {% else %} | ||
54 | + {{ field }} | ||
55 | + {% endif %} | ||
56 | + {{ field.errors }} | ||
57 | + </div> | ||
59 | 58 | ||
60 | - <fieldset class="well"> | ||
61 | - <legend>{% trans "Subscribe to mail lists" %}</legend> | ||
62 | - <div class="unstyled-list"> | ||
63 | - {% render_form_field form.lists %} | 59 | + {% endfor %} |
60 | + </fieldset> | ||
64 | </div> | 61 | </div> |
65 | - </fieldset> | 62 | + </div> |
63 | + {% endfor %} | ||
64 | + | ||
66 | </div> | 65 | </div> |
66 | + </div> | ||
67 | 67 | ||
68 | - <div class="col-lg-2 pull-right"> | ||
69 | - <input type="submit" value="{% trans 'Register' %}"/> | 68 | + <div class="row"> |
69 | + <div class="submit"> | ||
70 | + <input type="submit" value="{% trans 'Register' %}" class="btn btn-primary btn-lg btn-block"> | ||
70 | </div> | 71 | </div> |
71 | </div> | 72 | </div> |
73 | + | ||
72 | </form> | 74 | </form> |
75 | + | ||
73 | {% endblock %} | 76 | {% endblock %} |
src/accounts/views.py
@@ -12,20 +12,39 @@ from django.shortcuts import render, get_object_or_404 | @@ -12,20 +12,39 @@ from django.shortcuts import render, get_object_or_404 | ||
12 | from .forms import UserCreationForm | 12 | from .forms import UserCreationForm |
13 | from super_archives.models import UserProfile, EmailAddress | 13 | from super_archives.models import UserProfile, EmailAddress |
14 | 14 | ||
15 | +# helper | ||
16 | +def get_field_set(form): | ||
17 | + fieldsets = ( | ||
18 | + (_('Personal Information'), ( | ||
19 | + form['first_name'], | ||
20 | + form['last_name'], | ||
21 | + form['email'], | ||
22 | + form['username'], | ||
23 | + ) | ||
24 | + ), | ||
25 | + (_('Subscribe to mail lists'), ( | ||
26 | + form['lists'], | ||
27 | + ) | ||
28 | + ), | ||
29 | + ) | ||
30 | + return fieldsets | ||
31 | + | ||
15 | 32 | ||
16 | def signup(request): | 33 | def signup(request): |
17 | 34 | ||
18 | # If the request method is GET just return the form | 35 | # If the request method is GET just return the form |
19 | if request.method == 'GET': | 36 | if request.method == 'GET': |
20 | form = UserCreationForm() | 37 | form = UserCreationForm() |
21 | - return render(request, 'accounts/signup-form.html', {'form': form}) | 38 | + return render(request, 'accounts/signup-form.html', |
39 | + {'form': form, 'fieldsets': get_field_set(form)}) | ||
22 | 40 | ||
23 | # If the request method is POST try to store data | 41 | # If the request method is POST try to store data |
24 | form = UserCreationForm(request.POST) | 42 | form = UserCreationForm(request.POST) |
25 | 43 | ||
26 | # If there is validation errors give the form back to the user | 44 | # If there is validation errors give the form back to the user |
27 | if not form.is_valid(): | 45 | if not form.is_valid(): |
28 | - return render(request, 'accounts/signup-form.html', {'form': form}) | 46 | + return render(request, 'accounts/signup-form.html', |
47 | + {'form': form, 'fieldsets': get_field_set(form)}) | ||
29 | 48 | ||
30 | user = User( | 49 | user = User( |
31 | username=form.cleaned_data.get('username'), | 50 | username=form.cleaned_data.get('username'), |
src/colab/static/css/screen.css
@@ -86,41 +86,25 @@ | @@ -86,41 +86,25 @@ | ||
86 | max-width: 95% !important; | 86 | max-width: 95% !important; |
87 | } | 87 | } |
88 | 88 | ||
89 | -/* Forms */ | 89 | +/* Forms */ |
90 | .required label:before { | 90 | .required label:before { |
91 | color: #f00; | 91 | color: #f00; |
92 | content: "* "; | 92 | content: "* "; |
93 | } | 93 | } |
94 | 94 | ||
95 | -input[type="text"], | ||
96 | -input[type="password"] { | ||
97 | - width: 300px; | ||
98 | - padding: 3px; | ||
99 | -} | ||
100 | -/* End Forms */ | ||
101 | - | ||
102 | -/* Changing Bootstrap*/ | ||
103 | -fieldset>legend { | ||
104 | - display:block; | ||
105 | - font-weight:bold; | ||
106 | - font-size:1.2em; | ||
107 | - margin-top:-0.2em; | ||
108 | - margin-bottom:0em; | ||
109 | - border: none; | 95 | +form.signup .form-group { |
96 | + width: 90%; | ||
97 | + margin-left: 0.5em; | ||
110 | } | 98 | } |
111 | 99 | ||
112 | -.well { | ||
113 | - background:#e5eCf9 !important; | 100 | +form.signup div.submit { |
101 | + margin: auto; | ||
102 | + margin-bottom: 5em; | ||
103 | + width: 200px; | ||
114 | } | 104 | } |
115 | 105 | ||
116 | -.col-lg-6 .well{ | ||
117 | - max-width:570px; | ||
118 | -} | 106 | +/* End Forms */ |
119 | 107 | ||
120 | -.col-lg-3 .well { | ||
121 | - max-width:285px; | ||
122 | -} | ||
123 | -/* End changes */ | ||
124 | 108 | ||
125 | .rss-icon { | 109 | .rss-icon { |
126 | background-image: url(../img/rss.png); | 110 | background-image: url(../img/rss.png); |