Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class RegistrationView(GuestMixin, FormView):
- template_name = 'registration.jinja'
- form_class = RegisterForm
- def get_context_data(self, **kwargs):
- return super(RegistrationView, self).get_context_data(**kwargs)
- def form_valid(self, form):
- return JsonResponse(form.save(self.request), safe=False)
- def form_invalid(self, form):
- return JsonResponse({'errors': form.errors.as_json()}, safe=False)
- class RegisterForm(forms.Form):
- # some fields...
- class Meta:
- model = User
- def save(self, request):
- activated = not settings.REQUIRE_SMS
- user = User.objects.create_user(...)
- user = authenticate(username=self.cleaned_data.get('tel'), password=self.cleaned_data.get('password'))
- login(request, user)
- if settings.REQUIRE_SMS:
- # XXX kaboom
- user.send_activation()
- Redis.save_user(user)
- class User(AbstractBaseUser, PermissionsMixin):
- # fields...
- def send_activation(self):
- gateway = sms.SMSGateway()
- sms_code = random.randrange(1000, 9999)
- if gateway.send(self.tel, sms_code):
- self.sms_code = sms_code
- self.code_expiries = now()
- self.is_active = False
- self.save()
- return True
- else:
- return False
- class LoginSeleniumTest(StaticLiveServerTestCase):
- # other methods and stuff...
- @patch(u'accounts.forms.User.send_activation')
- def test_registration_no_name(self, mock_send_activation):
- mocked_gateway.return_value = True
- url = reverse('user:registration')
- self.browser.get('%s%s' % (self.live_server_url, url))
- form = self.get_registration_form(username=self.username, email=self.email, phone=self.phone, password=self.password)
- form.click()
- time.sleep(3)
- name_error = self.browser.find_element_by_css_selector('div#register-name > .error.animate')
- self.assertEqual(name_error.text, u'Обязательное поле.')
- self.assertEqual(User.objects.count(), 0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement