Commit 85cc285de1fa9b7bbddafedef2e212e674aa9244

Authored by Lucas Kanashiro
2 parents 709bf66a 566ca024

Merge branch 'fix_verification_url' into 'master'

Obtendo domínio a partir da requisição

De acordo com o relatado na issue #107, havia um problema com a necessidade da configuração da variável SITE_URL. Agora o domínio é obtido através da própria requisição.

See merge request !91
colab/accounts/views.py
@@ -103,7 +103,12 @@ def signup(request): @@ -103,7 +103,12 @@ def signup(request):
103 103
104 user.is_active = False 104 user.is_active = False
105 user.save() 105 user.save()
106 - EmailAddressValidation.create(user.email, user) 106 + email = EmailAddressValidation.create(user.email, user)
  107 +
  108 + location = reverse('archive_email_view',
  109 + kwargs={'key': email.validation_key})
  110 + verification_url = request.build_absolute_uri(location)
  111 + EmailAddressValidation.verify_email(email, verification_url)
107 112
108 # Check if the user's email have been used previously 113 # Check if the user's email have been used previously
109 # in the mainling lists to link the user to old messages 114 # in the mainling lists to link the user to old messages
colab/super_archives/models.py
@@ -41,11 +41,17 @@ class EmailAddressValidation(models.Model): @@ -41,11 +41,17 @@ class EmailAddressValidation(models.Model):
41 def create(cls, address, user): 41 def create(cls, address, user):
42 email_address_validation = cls.objects.create(address=address, 42 email_address_validation = cls.objects.create(address=address,
43 user=user) 43 user=user)
44 - email.send_verification_email(email_address_validation.address,  
45 - email_address_validation.user,  
46 - email_address_validation.validation_key)  
47 return email_address_validation 44 return email_address_validation
48 45
  46 + @classmethod
  47 + def verify_email(cls, email_address_validation, verification_url):
  48 + return email.send_verification_email(
  49 + email_address_validation.address,
  50 + email_address_validation.user,
  51 + email_address_validation.validation_key,
  52 + verification_url
  53 + )
  54 +
49 55
50 class EmailAddress(models.Model): 56 class EmailAddress(models.Model):
51 user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, 57 user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True,
colab/super_archives/templates/superarchives/emails/email_verification.txt
1 {% load i18n %} 1 {% load i18n %}
2 {% blocktrans with fullname=user.get_full_name|title username=user.username|lower %}Hey, we want to verify that you are indeed "{{ fullname }} ({{ username }})". If that's the case, please follow the link below:{% endblocktrans %} 2 {% blocktrans with fullname=user.get_full_name|title username=user.username|lower %}Hey, we want to verify that you are indeed "{{ fullname }} ({{ username }})". If that's the case, please follow the link below:{% endblocktrans %}
3 3
4 -{{ SITE_URL }}{% url 'archive_email_view' key %} 4 +{{ verification_url }}
5 5
6 {% blocktrans with username=user.username %}If you're not {{ username }} or didn't request verification you can ignore this email.{% endblocktrans %} 6 {% blocktrans with username=user.username %}If you're not {{ username }} or didn't request verification you can ignore this email.{% endblocktrans %}
colab/super_archives/utils/email.py
@@ -10,11 +10,11 @@ def colab_send_email(subject, message, to): @@ -10,11 +10,11 @@ def colab_send_email(subject, message, to):
10 return mail.send_mail(subject, message, from_email, [to]) 10 return mail.send_mail(subject, message, from_email, [to])
11 11
12 12
13 -def send_verification_email(to, user, validation_key): 13 +def send_verification_email(to, user, validation_key, verification_url):
14 subject = _('Please verify your email ') + u'{}'.format(to) 14 subject = _('Please verify your email ') + u'{}'.format(to)
15 msg_tmpl = \ 15 msg_tmpl = \
16 loader.get_template('superarchives/emails/email_verification.txt') 16 loader.get_template('superarchives/emails/email_verification.txt')
17 message = msg_tmpl.render(Context({'to': to, 'user': user, 17 message = msg_tmpl.render(Context({'to': to, 'user': user,
18 - 'key': validation_key,  
19 - 'SITE_URL': settings.SITE_URL})) 18 + 'verification_url': verification_url
  19 + }))
20 return colab_send_email(subject, message, to) 20 return colab_send_email(subject, message, to)
colab/super_archives/views.py
@@ -9,6 +9,7 @@ import requests @@ -9,6 +9,7 @@ import requests
9 from django import http 9 from django import http
10 from django.conf import settings 10 from django.conf import settings
11 from django.contrib import messages 11 from django.contrib import messages
  12 +from django.core.urlresolvers import reverse
12 from django.db import IntegrityError 13 from django.db import IntegrityError
13 from django.views.generic import View 14 from django.views.generic import View
14 from django.utils.translation import ugettext as _ 15 from django.utils.translation import ugettext as _
@@ -177,7 +178,7 @@ class EmailView(View): @@ -177,7 +178,7 @@ class EmailView(View):
177 except EmailAddressValidation.DoesNotExist: 178 except EmailAddressValidation.DoesNotExist:
178 messages.error(request, _('The email address you are trying to ' 179 messages.error(request, _('The email address you are trying to '
179 'verify either has already been verified' 180 'verify either has already been verified'
180 - 'or does not exist.')) 181 + ' or does not exist.'))
181 return redirect('/') 182 return redirect('/')
182 183
183 try: 184 try:
@@ -289,8 +290,11 @@ class EmailValidationView(View): @@ -289,8 +290,11 @@ class EmailValidationView(View):
289 raise http.Http404 290 raise http.Http404
290 291
291 try: 292 try:
292 - send_verification_email(email_addr, email.user,  
293 - email.validation_key) 293 + location = reverse('archive_email_view',
  294 + kwargs={'key': email.validation_key})
  295 + verification_url = request.build_absolute_uri(location)
  296 + send_verification_email(request, email_addr, email.user,
  297 + email.validation_key, verification_url)
294 except smtplib.SMTPException: 298 except smtplib.SMTPException:
295 logging.exception('Error sending validation email') 299 logging.exception('Error sending validation email')
296 return http.HttpResponseServerError() 300 return http.HttpResponseServerError()