Commit fa8fd6ed0e1ccf4cfb45c6b33e3f5548b94ca9c8
1 parent
1b800ac2
Exists in
master
and in
39 other branches
Reading username to use in url
Showing
7 changed files
with
54 additions
and
88 deletions
Show diff stats
... | ... | @@ -0,0 +1,48 @@ |
1 | +# -*- coding: utf-8 -*- | |
2 | + | |
3 | +from django import forms | |
4 | +from django.core.exceptions import ValidationError | |
5 | +from django.contrib.auth.models import User | |
6 | +from django.contrib.auth.forms import UserCreationForm as UserCreationForm_ | |
7 | +from django.utils.translation import ugettext_lazy as _ | |
8 | + | |
9 | +from super_archives.models import MailingList | |
10 | +from super_archives.validators import UniqueValidator | |
11 | + | |
12 | + | |
13 | +LISTS_NAMES = [] | |
14 | +for list_ in MailingList.objects.iterator(): | |
15 | + choice = (list_.name, list_.name) | |
16 | + LISTS_NAMES.append(choice) | |
17 | + | |
18 | + | |
19 | +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) | |
29 | + lists = forms.MultipleChoiceField(label=u'Listas', | |
30 | + required=False, | |
31 | + widget=forms.CheckboxSelectMultiple, | |
32 | + choices=LISTS_NAMES) | |
33 | + | |
34 | + | |
35 | + def __init__(self, *args, **kwargs): | |
36 | + super(UserCreationForm, self).__init__(*args, **kwargs) | |
37 | + self.fields.pop('password1') | |
38 | + self.fields.pop('password2') | |
39 | + | |
40 | + | |
41 | +class UserUpdateForm(UserCreationForm): | |
42 | + def __init__(self, *args, **kwargs): | |
43 | + super(UserUpdateForm, self).__init__(*args, **kwargs) | |
44 | + self.fields.pop('username') | |
45 | + self.fields.pop('first_name') | |
46 | + self.fields.pop('last_name') | |
47 | + self.fields.pop('email') | |
48 | + self.fields.pop('lists') | ... | ... |
src/accounts/templates/accounts/signup-form.html
src/accounts/views.py
... | ... | @@ -9,7 +9,7 @@ from django.contrib.auth.models import User |
9 | 9 | from django.utils.translation import ugettext as _ |
10 | 10 | from django.shortcuts import render, get_object_or_404 |
11 | 11 | |
12 | -from super_archives.forms import UserCreationForm | |
12 | +from .forms import UserCreationForm | |
13 | 13 | from super_archives.models import UserProfile, EmailAddress |
14 | 14 | |
15 | 15 | ... | ... |
src/colab/deprecated/signup.py
... | ... | @@ -19,34 +19,14 @@ def send_verification_email(request, user): |
19 | 19 | 'server_name': request.get_host(), |
20 | 20 | } |
21 | 21 | |
22 | - html_content = render_to_string('email_signup-email-confirmation.html', | |
23 | - email_data) | |
22 | + html_content = render_to_string('accounts/email_signup-email-confirmation.html', | |
23 | + email_data) | |
24 | 24 | text_content = strip_tags(html_content) |
25 | 25 | email_msg = EmailMultiAlternatives(subject, text_content, from_, [to]) |
26 | 26 | email_msg.attach_alternative(html_content, 'text/html') |
27 | 27 | email_msg.send() |
28 | 28 | |
29 | 29 | |
30 | -def send_reset_password_email(request, user): | |
31 | - | |
32 | - subject = _(u'Password change of Colab Interlegis') | |
33 | - from_ = settings.SERVER_EMAIL | |
34 | - to = user.email | |
35 | - | |
36 | - email_data = { | |
37 | - 'hash': user.profile.verification_hash, | |
38 | - 'server_name': request.get_host(), | |
39 | - 'username': user.username, | |
40 | - } | |
41 | - | |
42 | - html_content = render_to_string('email_account-reset-password.html', | |
43 | - email_data) | |
44 | - text_content = strip_tags(html_content) | |
45 | - | |
46 | - email_msg = EmailMultiAlternatives(subject, text_content, from_, [to]) | |
47 | - email_msg.attach_alternative(html_content, 'text/html') | |
48 | - email_msg.send() | |
49 | - | |
50 | 30 | def send_email_lists(user, mailing_lists): |
51 | 31 | subject = _(u'Registration on the mailing list') |
52 | 32 | from_ = user.email | ... | ... |
src/colab/deprecated/views/userprofile.py
... | ... | @@ -13,7 +13,7 @@ from django.contrib.auth.decorators import login_required |
13 | 13 | from django.shortcuts import render, get_object_or_404, redirect |
14 | 14 | |
15 | 15 | from colab.deprecated import solrutils |
16 | -from super_archives.forms import UserCreationForm, UserUpdateForm | |
16 | +from accounts.forms import UserCreationForm, UserUpdateForm | |
17 | 17 | from super_archives.models import Message, UserProfile, EmailAddress |
18 | 18 | |
19 | 19 | ... | ... |
src/super_archives/forms.py
... | ... | @@ -1,63 +0,0 @@ |
1 | -# -*- coding: utf-8 -*- | |
2 | - | |
3 | -from django import forms | |
4 | -from django.core.exceptions import ValidationError | |
5 | -from django.contrib.auth.models import User | |
6 | -from django.contrib.auth.forms import UserCreationForm as UserCreationForm_ | |
7 | -from django.utils.translation import ugettext_lazy as _ | |
8 | - | |
9 | -from .models import MailingList | |
10 | -from .validators import UniqueValidator | |
11 | - | |
12 | -# XXX: I know that this code does not look nice AT ALL. | |
13 | -# probably it should be implemented using formsets instead of | |
14 | -# the hack below. Feel free to improve it! :) | |
15 | - | |
16 | -# User fields | |
17 | -first_name_field = forms.CharField(max_length=30, label=_(u'Name')) | |
18 | -last_name_field = forms.CharField(max_length=30, label=_(u'Last name')) | |
19 | -email_field = forms.EmailField(validators=[UniqueValidator(User, 'email')]) | |
20 | - | |
21 | -# UserProfile fields | |
22 | -institution_field = forms.CharField(max_length=120, label=_(u'Institution'), | |
23 | - required=False) | |
24 | -role_field = forms.CharField(max_length=60, label=_(u'Role'), required=False) | |
25 | -twitter_field = forms.URLField(label=_(u'Twitter'), required=False) | |
26 | -facebook_field = forms.URLField(label=_(u'Facebook'), required=False) | |
27 | -google_talk_field = forms.EmailField(label=_(u'Google Talk'), required=False) | |
28 | -webpage_field = forms.URLField(label=_(u'Personal Website/Blog'), required=False) | |
29 | - | |
30 | -all_lists = MailingList.objects.all() | |
31 | -lists_names = [] | |
32 | -for list_ in all_lists: | |
33 | - choice = (list_.name, list_.name) | |
34 | - lists_names.append(choice) | |
35 | - | |
36 | -lists_field = forms.MultipleChoiceField( | |
37 | - label=u'Listas', | |
38 | - required=False, | |
39 | - widget=forms.CheckboxSelectMultiple, | |
40 | - choices=lists_names | |
41 | -) | |
42 | - | |
43 | - | |
44 | -class UserCreationForm(UserCreationForm_): | |
45 | - first_name = first_name_field | |
46 | - last_name = last_name_field | |
47 | - email = email_field | |
48 | - institution = institution_field | |
49 | - role = role_field | |
50 | - twitter = twitter_field | |
51 | - facebook = facebook_field | |
52 | - google_talk = google_talk_field | |
53 | - webpage = webpage_field | |
54 | - lists = lists_field | |
55 | - | |
56 | - | |
57 | -class UserUpdateForm(forms.Form): | |
58 | - institution = institution_field | |
59 | - role = role_field | |
60 | - twitter = twitter_field | |
61 | - facebook = facebook_field | |
62 | - google_talk = google_talk_field | |
63 | - webpage = webpage_field |
src/super_archives/models.py
... | ... | @@ -66,7 +66,7 @@ class UserProfile(models.Model): |
66 | 66 | verbose_name_plural = _(u"Users Profiles") |
67 | 67 | |
68 | 68 | def __unicode__(self): |
69 | - return '"%s" <%s>' % (self.get_full_name(), self.email) | |
69 | + return '"%s" <%s>' % (self.user.get_full_name(), self.user.email) | |
70 | 70 | |
71 | 71 | # This does the same the same than related_name argument but it also creates |
72 | 72 | # a profile in the case it doesn't exist yet. | ... | ... |