Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class UserLogin(AjaxResponseMixin, FormView):
- form_class = LoginForm
- template_name = 'index.html'
- success_url = reverse_lazy('accounts:account_list')
- def form_valid(self, form):
- response = super(UserLogin, self).form_valid(form)
- if self.request.is_ajax():
- user = authenticate(username=form.cleaned_data.get('username'), password=form.cleaned_data.get('password'))
- if user:
- login(self.request, user)
- # set user's default currency.
- # check if user's default currency is active otherwise set user's currency to default active (USD)
- if Currency.active.filter(code=user.profile.currency_choice).exists():
- self.request.session['session:currency_code'] = user.profile.currency_choice
- # if user has not checked 'Remember Me', his session will expire after browser close.
- if not form.cleaned_data.get('remember_me'):
- # This won't work for Chrome
- self.request.session.set_expiry(0)
- data = {'success': True, 'redirect_to': self.request.GET.get(REDIRECT_FIELD_NAME)}
- else:
- data = {'success': False, 'message': 'Invalid username/password'}
- return JsonResponse(data)
- else:
- return response
- def get_context_data(self, **kwargs):
- context = super(UserLogin, self).get_context_data(**kwargs)
- # if user is redirected from another page then move back to that page on login success
- if REDIRECT_FIELD_NAME in self.request.GET:
- redirect_to = self.request.GET.get(REDIRECT_FIELD_NAME)
- else:
- redirect_to = self.success_url
- context['redirect_to'] = redirect_to
- return context
- class SendVerificationEmail(generic.RedirectView):
- url = reverse_lazy('accounts:account_list')
- def get(self, request, *args, **kwargs):
- base_url = get_baseurl(request)
- send_verification_email.delay(base_url, request.user.pk)
- messages.info(request, 'An email has been sent to your inbox. Please verify.')
- return super(SendVerificationEmail, self).get(request, *args, **kwargs)
- class ForgotPassword(AjaxResponseMixin, FormView):
- template_name = 'accounts/login.html'
- form_class = ForgotPasswordForm
- success_url = '/'
- def form_valid(self, form):
- response = super(ForgotPassword, self).form_valid(form)
- if self.request.is_ajax():
- email = form.cleaned_data.get('email')
- try:
- user = get_user_model().objects.get(email=email)
- base_url = get_baseurl(self.request)
- send_verification_email.delay(base_url, user.pk, 'forgot_password')
- data = {'message': 'Password reset link has been sent. Please check your inbox to reset password'}
- except get_user_model().DoesNotExist:
- data = {'message': 'This email has not been registered.'}
- return JsonResponse(data)
- else:
- return response
- class AccountList(LoginRequiredMixin, generic.ListView):
- model = Account
- context_object_name = 'account_list'
- template_name = 'accounts/account_list.html'
- def get_queryset(self):
- return self.model.objects.filter(user=self.request.user).prefetch_related('wallets', 'account_type')
- def get_context_data(self, **kwargs):
- context = super(AccountList, self).get_context_data(**kwargs)
- queryset = self.get_queryset()
- total_amount = 0
- for account in queryset:
- total_amount += account.amount_in_usd
- context['total_amount'] = total_amount
- transactions = Transaction.objects.filter(account__in=queryset).select_related('account', 'account__account_type').order_by('-tx_date')[:4]
- context['transactions'] = transactions
- return context
- class TransactionsList(LoginRequiredMixin, generic.ListView):
- model = Transaction
- context_object_name = 'transaction_list'
- template_name = 'accounts/transaction_list.html'
- paginate_by = 10
- def get_queryset(self):
- 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