Include profile context var for loggued users.
This commit is contained in:
parent
c464c7bb28
commit
5abdcd56db
|
@ -4,6 +4,9 @@ import urllib.parse
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.urls.exceptions import NoReverseMatch
|
from django.urls.exceptions import NoReverseMatch
|
||||||
|
|
||||||
|
from .models import UserAccount
|
||||||
|
|
||||||
|
|
||||||
DOMAINS_PATH = 'domains/'
|
DOMAINS_PATH = 'domains/'
|
||||||
TOKEN_PATH = '/api-token-auth/'
|
TOKEN_PATH = '/api-token-auth/'
|
||||||
|
|
||||||
|
@ -75,9 +78,12 @@ class Orchestra(object):
|
||||||
_, output = self.request("GET", pattern_name)
|
_, output = self.request("GET", pattern_name)
|
||||||
return output
|
return output
|
||||||
|
|
||||||
def retreve_profile(self):
|
def retrieve_profile(self):
|
||||||
_, output = self.request("GET", 'my-account')
|
status, output = self.request("GET", 'my-account')
|
||||||
return output
|
if status >= 400:
|
||||||
|
raise PermissionError("Cannot retrieve profile of an anonymous user.")
|
||||||
|
return UserAccount.new_from_json(output[0])
|
||||||
|
|
||||||
|
|
||||||
def verify_credentials(self):
|
def verify_credentials(self):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -46,6 +46,11 @@ class ExtendedPaginationMixin:
|
||||||
|
|
||||||
|
|
||||||
class UserTokenRequiredMixin(UserPassesTestMixin):
|
class UserTokenRequiredMixin(UserPassesTestMixin):
|
||||||
|
"""
|
||||||
|
Checks that the request has a token that authenticates him/her.
|
||||||
|
If the user is logged adds context variable 'profile' with its information.
|
||||||
|
"""
|
||||||
|
|
||||||
def test_func(self):
|
def test_func(self):
|
||||||
"""Check that the user has an authorized token."""
|
"""Check that the user has an authorized token."""
|
||||||
token = self.request.session.get(SESSION_KEY_TOKEN, None)
|
token = self.request.session.get(SESSION_KEY_TOKEN, None)
|
||||||
|
@ -60,3 +65,10 @@ class UserTokenRequiredMixin(UserPassesTestMixin):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def get_context_data(self, **kwargs):
|
||||||
|
context = super().get_context_data(**kwargs)
|
||||||
|
context.update({
|
||||||
|
'profile': self.orchestra.retrieve_profile(),
|
||||||
|
})
|
||||||
|
return context
|
||||||
|
|
|
@ -59,7 +59,7 @@
|
||||||
<div class="dropdown dropright">
|
<div class="dropdown dropright">
|
||||||
<button type="button" class="btn btn-primary nav-link text-light w-100" data-toggle="dropdown">
|
<button type="button" class="btn btn-primary nav-link text-light w-100" data-toggle="dropdown">
|
||||||
<img id="user-avatar" class="float-right" width="64" height="64" src="{% static "musician/images/default-profile-picture.png" %}" alt="user-profile-picture"/>
|
<img id="user-avatar" class="float-right" width="64" height="64" src="{% static "musician/images/default-profile-picture.png" %}" alt="user-profile-picture"/>
|
||||||
<strong>{{ user.username|default:"Username" }}</strong><br/>
|
<strong>{{ profile.username }}</strong><br/>
|
||||||
<i class="fas fa-cog"></i> Settings
|
<i class="fas fa-cog"></i> Settings
|
||||||
</button>
|
</button>
|
||||||
<div class="dropdown-menu">
|
<div class="dropdown-menu">
|
||||||
|
|
|
@ -60,14 +60,12 @@ class ProfileView(CustomContextMixin, UserTokenRequiredMixin, TemplateView):
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
context = super().get_context_data(**kwargs)
|
context = super().get_context_data(**kwargs)
|
||||||
json_data = self.orchestra.retreve_profile()
|
|
||||||
try:
|
try:
|
||||||
pay_source = self.orchestra.retrieve_service_list(
|
pay_source = self.orchestra.retrieve_service_list(
|
||||||
PaymentSource.api_name)[0]
|
PaymentSource.api_name)[0]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
pay_source = {}
|
pay_source = {}
|
||||||
context.update({
|
context.update({
|
||||||
'profile': UserAccount.new_from_json(json_data[0]),
|
|
||||||
'payment': PaymentSource.new_from_json(pay_source)
|
'payment': PaymentSource.new_from_json(pay_source)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue