Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2016
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.72 KB | None | 0 0
  1. class BaseUserPrefsUpdateView(LoginRequiredMixin, UpdateView):
  2. model = None
  3. form_class = None
  4. partial_template_name = None
  5. template_name = 'userprofile/update_profile.html'
  6.  
  7. def get_template_names(self):
  8. if self.request.is_ajax():
  9. return self.partial_template_name
  10. return self.template_name
  11.  
  12. def get_context_data(self, **kwargs):
  13. ctx = super(BaseUserPrefsUpdateView, self).get_context_data(**kwargs)
  14. ctx.update({'form_template': self.get_template_names()})
  15. return ctx
  16.  
  17. def get_object(self, queryset=None):
  18. raise NotImplementedError(
  19. 'Must implement get_object in {}'.format(self.__class__.__name__))
  20.  
  21. def form_valid(self, form):
  22. form.save()
  23. message = 'Profile updated successfully'
  24. return JsonResponse({'message': message})
  25.  
  26. def form_invalid(self, form):
  27. return self.render_to_response(
  28. self.get_context_data(form=form), status=400
  29. )
  30.  
  31.  
  32. class UserInfoUpdateView(BaseUserPrefsUpdateView):
  33. model = User
  34. form_class = UserInfoForm
  35. partial_template_name = 'userprofile/_info_form.html'
  36.  
  37. def get_object(self, queryset=None):
  38. queryset = self.get_queryset()
  39. return queryset.filter(pk=self.request.user.pk).get()
  40.  
  41. def form_valid(self, form):
  42. user = form.save()
  43. update_user_bydesign.delay(user.id)
  44. message = 'Personal Information updated successfully'
  45. return JsonResponse({'message': message})
  46.  
  47.  
  48. class UserShippingAddressUpdateView(BaseUserPrefsUpdateView):
  49. model = Address
  50. form_class = ShippingAddressForm
  51. partial_template_name = 'userprofile/_shipping_address_form.html'
  52.  
  53. def get_object(self, queryset=None):
  54. return self.request.user.shipping_address
  55.  
  56. def form_valid(self, form):
  57. address = form.save()
  58. # FIXME: Address doesn't have a backwards relationship to User so this
  59. # can't go in the form.save() where it probably should be without
  60. # passing User in.
  61. if not self.request.user.shipping_address:
  62. self.request.user.shipping_address = address
  63. self.request.user.save()
  64. message = 'Address updated successfully'
  65. return JsonResponse({'message': message})
  66.  
  67.  
  68. class UserSettingsUpdateView(BaseUserPrefsUpdateView):
  69. model = UserSettings
  70. form_class = UserSettingsForm
  71. partial_template_name = 'userprofile/_contact_preferences_form.html'
  72.  
  73. def get_object(self, queryset=None):
  74. return self.request.user.settings
  75.  
  76.  
  77. class UserPasswordUpdateView(BaseUserPrefsUpdateView):
  78. model = User
  79. form_class = PasswordChangeForm
  80. partial_template_name = 'userprofile/_password_change_form.html'
  81.  
  82. def get_object(self, queryset=None):
  83. queryset = self.get_queryset()
  84. return queryset.filter(pk=self.request.user.pk).get()
  85.  
  86. def get_form_kwargs(self):
  87. kwargs = super(UserPasswordUpdateView, self).get_form_kwargs()
  88. kwargs.update({'user': kwargs.pop('instance')})
  89. return kwargs
  90.  
  91.  
  92. class StoreFrontOptionsUpdateView(BaseUserPrefsUpdateView):
  93. model = StoreFront
  94. form_class = StoreFrontOptionsForm
  95. partial_template_name = 'userprofile/_storefront_options_form.html'
  96.  
  97. def get_object(self, queryset=None):
  98. return StoreFront.objects.get_or_instantiate_for_user(
  99. self.request.user
  100. )
  101.  
  102.  
  103. class UserProfileUpdateView(BaseUserPrefsUpdateView):
  104. model = User
  105. form_class = UserInfoForm
  106. partial_template_name = 'userprofile/_info_form.html'
  107.  
  108. def get_object(self, queryset=None):
  109. queryset = self.get_queryset()
  110. return queryset.filter(pk=self.request.user.pk).get()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement