Fixed Attract link not showing up in sidebar

This commit is contained in:
2017-06-16 11:55:30 +02:00
parent c69aeb03dc
commit 59505d3233
2 changed files with 10 additions and 5 deletions

View File

@@ -166,11 +166,12 @@ class AttractExtension(PillarExtension):
return True
def sidebar_links(self, project):
from pillar.api.utils import str2id
if not self.is_attract_project(project):
return ''
if not self.auth.current_user_may(auth.Actions.VIEW):
if not self.auth.current_user_may(auth.Actions.VIEW, str2id(project['_id'])):
return ''
return flask.render_template('attract/sidebar.html',

View File

@@ -61,7 +61,7 @@ class Auth(object):
intersection = require_roles.intersection(user_roles)
return bool(intersection)
def current_user_may(self, action: Actions) -> bool:
def current_user_may(self, action: Actions, project_id: bson.ObjectId=None) -> bool:
"""Returns True iff the user is authorised to use/view Attract on the current project.
Requires that determine_user_rights() was called before.
@@ -70,9 +70,13 @@ class Auth(object):
try:
attract_rights = flask.g.attract_rights
except AttributeError:
self._log.error('current_user_may() called without previous call '
'to current_user_rights()')
return False
if not project_id:
self._log.error('current_user_may() called without previous call '
'to current_user_rights()')
return False
self.determine_user_rights(project_id)
attract_rights = flask.g.attract_rights
return action in attract_rights