From 372422f9a3ee06d484c9369e06830200903af335 Mon Sep 17 00:00:00 2001 From: Jason McBrayer Date: Tue, 23 Apr 2019 22:29:47 -0400 Subject: [PATCH] Make account switching work --- .../templates/accounts/account_partial.html | 12 +++--- brutaldon/views.py | 43 ++++++++++++++++++- 2 files changed, 48 insertions(+), 7 deletions(-) diff --git a/brutaldon/templates/accounts/account_partial.html b/brutaldon/templates/accounts/account_partial.html index 02a79b1..56d9a6c 100644 --- a/brutaldon/templates/accounts/account_partial.html +++ b/brutaldon/templates/accounts/account_partial.html @@ -1,18 +1,18 @@

- {{ account.acct }} + {{ account.user.acct }}

- {{ account.display_name }} ({{ account.username }}) + {{ account.user.display_name }} ({{ account.user.username }})
-
+ {% csrf_token %} - - + +
diff --git a/brutaldon/views.py b/brutaldon/views.py index 279fd69..3babe6f 100644 --- a/brutaldon/views.py +++ b/brutaldon/views.py @@ -195,8 +195,31 @@ def switch_accounts(request, new_account): return False request.session['active_user'] = accounts_dict[new_account]['user'] request.session['active_username'] = account.username + request.session['active_instance'] = account.client.api_base_id return True +def forget_account(request, account_name): + """Forget that you were logged into an account. If it's the last one, + log out entirely. Sets up session variables. Returns boolean success + code""" + accounts_dict = request.session.get("accounts_dict") + if not accounts_dict or not account_name in accounts_dict.keys(): + return False + del accounts_dict[account_name] + if len(accounts) == 0: + request.session.flush() + return True + else: + key = accounts_dict.keys()[0] + request.session['active_user'] = accounts_dict[key]['user'] + try: + account = Account.objects.get(id=accounts_dict[key]['account_id']) + request.session['active_username'] = account.username + except: + request.session.flush() + return True + + ### ### View functions ### @@ -1136,9 +1159,27 @@ def follow_requests(request, id=None): def accounts(request, id=None): active_account, mastodon = get_usercontext(request) if request.method == 'GET': - accounts = [x['user'] for x in request.session.get('accounts_dict').values()] + accounts = [x for x in request.session.get('accounts_dict').values()] return render(request, 'accounts/list.html', {'active_account': active_account, "own_acct": request.session["active_user"], 'accounts': accounts, 'preferences': active_account.preferences}) + if request.method == 'POST': + if request.POST.get('activate'): + to_account = Account.objects.get(id=id).username + if switch_accounts(request, to_account): + return redirect(home) + else: + return redirect(accounts) + elif request.POST.get('forget'): + account = Account.objects.get(id=id).username + forget_account(request, account) + return redirect(accounts) + else: + accounts = [x for x in request.session.get('accounts_dict').values()] + return render(request, 'accounts/list.html', + {'active_account': active_account, + "own_acct": request.session["active_user"], + 'accounts': accounts, + 'preferences': active_account.preferences})