Advertisement
Guest User

Untitled

a guest
Jun 28th, 2016
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.07 KB | None | 0 0
  1. class RegistrationView(GuestMixin, FormView):
  2. template_name = 'registration.jinja'
  3. form_class = RegisterForm
  4.  
  5. def get_context_data(self, **kwargs):
  6. return super(RegistrationView, self).get_context_data(**kwargs)
  7.  
  8. def form_valid(self, form):
  9. return JsonResponse(form.save(self.request), safe=False)
  10.  
  11. def form_invalid(self, form):
  12. return JsonResponse({'errors': form.errors.as_json()}, safe=False)
  13.  
  14. class RegisterForm(forms.Form):
  15.  
  16. # some fields...
  17.  
  18. class Meta:
  19. model = User
  20.  
  21. def save(self, request):
  22.  
  23. activated = not settings.REQUIRE_SMS
  24. user = User.objects.create_user(...)
  25.  
  26. user = authenticate(username=self.cleaned_data.get('tel'), password=self.cleaned_data.get('password'))
  27.  
  28. login(request, user)
  29.  
  30. if settings.REQUIRE_SMS:
  31. # XXX kaboom
  32. user.send_activation()
  33. Redis.save_user(user)
  34.  
  35. class User(AbstractBaseUser, PermissionsMixin):
  36.  
  37. # fields...
  38.  
  39. def send_activation(self):
  40.  
  41. gateway = sms.SMSGateway()
  42. sms_code = random.randrange(1000, 9999)
  43.  
  44. if gateway.send(self.tel, sms_code):
  45. self.sms_code = sms_code
  46. self.code_expiries = now()
  47. self.is_active = False
  48. self.save()
  49.  
  50. return True
  51. else:
  52. return False
  53.  
  54. class LoginSeleniumTest(StaticLiveServerTestCase):
  55.  
  56. # other methods and stuff...
  57.  
  58. @patch(u'accounts.forms.User.send_activation')
  59. def test_registration_no_name(self, mock_send_activation):
  60.  
  61. mocked_gateway.return_value = True
  62.  
  63. url = reverse('user:registration')
  64. self.browser.get('%s%s' % (self.live_server_url, url))
  65.  
  66. form = self.get_registration_form(username=self.username, email=self.email, phone=self.phone, password=self.password)
  67. form.click()
  68. time.sleep(3)
  69.  
  70. name_error = self.browser.find_element_by_css_selector('div#register-name > .error.animate')
  71. self.assertEqual(name_error.text, u'Обязательное поле.')
  72. self.assertEqual(User.objects.count(), 0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement