Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import logging
  2. from django import http
  3. from django.contrib import messages
  4. from django.contrib.auth.models import User
  5. from django.core.mail import send_mail
  6. from django.template.loader import get_template
  7. from django.urls import reverse
  8. from django.views import generic
  9. from apps.gateway import forms
  10. from oscar.apps.customer.forms import generate_username
  11. logger = logging.getLogger('gateway')
  12. class GatewayView(generic.FormView):
  13. template_name = 'gateway/form.html'
  14. form_class = forms.GatewayForm
  15. def form_valid(self, form):
  16. real_email = form.cleaned_data['email']
  17. username = generate_username()
  18. password = generate_username()
  19. email = 'dashboard-user-%s@oscarcommerce.com' % username
  20. user = self.create_dashboard_user(username, email, password)
  21. self.send_confirmation_email(real_email, user, password)
  22. logger.info("Created dashboard user #%d for %s",
  23. user.id, real_email)
  24. messages.success(
  25. self.request,
  26. "The credentials for a dashboard user have been sent to %s" % real_email)
  27. return http.HttpResponseRedirect(reverse('gateway'))
  28. def create_dashboard_user(self, username, email, password):
  29. user = User.objects.create_user(username, email, password)
  30. user.is_staff = True
  31. user.save()
  32. return user
  33. def send_confirmation_email(self, real_email, user, password):
  34. msg = get_template('gateway/email.txt').render({
  35. 'email': user.email,
  36. 'password': password
  37. })
  38. send_mail('Dashboard access to Oscar sandbox',
  39. msg, 'blackhole@latest.oscarcommerce.com',
  40. [real_email])