You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

views.py 1.8KB

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