Advertisement
Guest User

Untitled

a guest
Mar 17th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.23 KB | None | 0 0
  1. class UserLogin(AjaxResponseMixin, FormView):
  2. form_class = LoginForm
  3. template_name = 'index.html'
  4. success_url = reverse_lazy('accounts:account_list')
  5.  
  6. def form_valid(self, form):
  7. response = super(UserLogin, self).form_valid(form)
  8. if self.request.is_ajax():
  9. user = authenticate(username=form.cleaned_data.get('username'), password=form.cleaned_data.get('password'))
  10. if user:
  11. login(self.request, user)
  12.  
  13. # set user's default currency.
  14. # check if user's default currency is active otherwise set user's currency to default active (USD)
  15. if Currency.active.filter(code=user.profile.currency_choice).exists():
  16. self.request.session['session:currency_code'] = user.profile.currency_choice
  17.  
  18. # if user has not checked 'Remember Me', his session will expire after browser close.
  19. if not form.cleaned_data.get('remember_me'):
  20. # This won't work for Chrome
  21. self.request.session.set_expiry(0)
  22.  
  23. data = {'success': True, 'redirect_to': self.request.GET.get(REDIRECT_FIELD_NAME)}
  24. else:
  25. data = {'success': False, 'message': 'Invalid username/password'}
  26. return JsonResponse(data)
  27. else:
  28. return response
  29.  
  30. def get_context_data(self, **kwargs):
  31. context = super(UserLogin, self).get_context_data(**kwargs)
  32.  
  33. # if user is redirected from another page then move back to that page on login success
  34. if REDIRECT_FIELD_NAME in self.request.GET:
  35. redirect_to = self.request.GET.get(REDIRECT_FIELD_NAME)
  36. else:
  37. redirect_to = self.success_url
  38. context['redirect_to'] = redirect_to
  39. return context
  40.  
  41.  
  42. class SendVerificationEmail(generic.RedirectView):
  43. url = reverse_lazy('accounts:account_list')
  44.  
  45. def get(self, request, *args, **kwargs):
  46. base_url = get_baseurl(request)
  47. send_verification_email.delay(base_url, request.user.pk)
  48. messages.info(request, 'An email has been sent to your inbox. Please verify.')
  49. return super(SendVerificationEmail, self).get(request, *args, **kwargs)
  50.  
  51.  
  52. class ForgotPassword(AjaxResponseMixin, FormView):
  53. template_name = 'accounts/login.html'
  54. form_class = ForgotPasswordForm
  55. success_url = '/'
  56.  
  57. def form_valid(self, form):
  58. response = super(ForgotPassword, self).form_valid(form)
  59. if self.request.is_ajax():
  60. email = form.cleaned_data.get('email')
  61. try:
  62. user = get_user_model().objects.get(email=email)
  63. base_url = get_baseurl(self.request)
  64. send_verification_email.delay(base_url, user.pk, 'forgot_password')
  65. data = {'message': 'Password reset link has been sent. Please check your inbox to reset password'}
  66.  
  67. except get_user_model().DoesNotExist:
  68. data = {'message': 'This email has not been registered.'}
  69.  
  70. return JsonResponse(data)
  71. else:
  72. return response
  73.  
  74.  
  75. class AccountList(LoginRequiredMixin, generic.ListView):
  76.  
  77. model = Account
  78. context_object_name = 'account_list'
  79. template_name = 'accounts/account_list.html'
  80.  
  81. def get_queryset(self):
  82. return self.model.objects.filter(user=self.request.user).prefetch_related('wallets', 'account_type')
  83.  
  84. def get_context_data(self, **kwargs):
  85. context = super(AccountList, self).get_context_data(**kwargs)
  86. queryset = self.get_queryset()
  87. total_amount = 0
  88. for account in queryset:
  89. total_amount += account.amount_in_usd
  90. context['total_amount'] = total_amount
  91.  
  92. transactions = Transaction.objects.filter(account__in=queryset).select_related('account', 'account__account_type').order_by('-tx_date')[:4]
  93. context['transactions'] = transactions
  94. return context
  95.  
  96.  
  97. class TransactionsList(LoginRequiredMixin, generic.ListView):
  98. model = Transaction
  99. context_object_name = 'transaction_list'
  100. template_name = 'accounts/transaction_list.html'
  101. paginate_by = 10
  102.  
  103. def get_queryset(self):
  104. return self.model.objects.filter(account__user=self.request.user).select_related('account', 'account__account_type').order_by('-tx_date')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement