views.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. from django.contrib.auth.decorators import login_required
  2. from django.core.urlresolvers import reverse
  3. from django.forms import model_to_dict
  4. from django.http import HttpResponseRedirect
  5. from django.shortcuts import render_to_response
  6. from django.template import RequestContext
  7. from .utils import send_change_of_address_email
  8. from . import forms
  9. from . import profile
  10. def profile_create(request, template="accounts/full_profile_form.html"):
  11. """ Allows user to create an account """
  12. userform = forms.ProfileCreateForm(
  13. request.POST or None, initial={"country": "US"}, prefix="form2"
  14. )
  15. second_address_form = forms.ProfileSecondaryAddressForm(
  16. request.POST or None, initial={"country": "US"}, prefix="form5"
  17. )
  18. if request.method == "POST":
  19. if userform.is_valid() and second_address_form.is_valid():
  20. user = userform.save(request=request)
  21. second_address_form.save(user=user)
  22. return HttpResponseRedirect(reverse("profile_create_complete"))
  23. return render_to_response(
  24. template,
  25. {"userform": userform, "second_address": second_address_form},
  26. context_instance=RequestContext(request),
  27. )
  28. def profile_create_complete(request, template="accounts/profile_create_complete.html"):
  29. return render_to_response(template, context_instance=RequestContext(request))
  30. @login_required
  31. def profile_edit(request, template="accounts/full_profile_form.html"):
  32. """ Allows a user to edit their profile """
  33. user = request.user
  34. user_profile = profile.get_profile(user)
  35. secondary_address = profile.get_profile_secondary_address(user)
  36. primary_initial = model_to_dict(user)
  37. primary_initial.update(model_to_dict(user_profile))
  38. secondary_initial = model_to_dict(secondary_address)
  39. userform = forms.ProfileUpdateForm(
  40. user, request.POST or None, initial=primary_initial, prefix="form2"
  41. )
  42. second_address_form = forms.ProfileSecondaryAddressForm(
  43. request.POST or None, initial=secondary_initial, prefix="form5"
  44. )
  45. if request.method == "POST":
  46. if userform.is_valid() and second_address_form.is_valid():
  47. user = userform.save()
  48. second_address_form.save(user=user)
  49. send_change_of_address_email(
  50. None, None, None, None, None, primary_initial, userform.cleaned_data
  51. )
  52. return render_to_response(
  53. template,
  54. {"userform": userform, "second_address": second_address_form},
  55. context_instance=RequestContext(request),
  56. )
  57. @login_required
  58. def view_orders_subs(request, template="accounts/orders_subs_overview.html"):
  59. return render_to_response(template, {}, context_instance=RequestContext(request))