You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by br...@apache.org on 2024/04/03 21:23:18 UTC
(allura) 02/03: [#8556] remove unnecessary extra () on has_access calls
This is an automated email from the ASF dual-hosted git repository.
brondsem pushed a commit to branch db/8556
in repository https://gitbox.apache.org/repos/asf/allura.git
commit a8497a84e799521c8fb004522b186ce61a694d98
Author: Dave Brondsema <db...@slashdotmedia.com>
AuthorDate: Wed Apr 3 11:08:11 2024 -0400
[#8556] remove unnecessary extra () on has_access calls
---
Allura/allura/app.py | 8 +--
Allura/allura/controllers/project.py | 2 +-
Allura/allura/controllers/rest.py | 4 +-
Allura/allura/ext/admin/admin_main.py | 4 +-
.../ext/admin/templates/project_screenshots.html | 4 +-
Allura/allura/lib/macro.py | 14 +++---
Allura/allura/lib/plugin.py | 4 +-
Allura/allura/lib/security.py | 4 +-
Allura/allura/model/neighborhood.py | 2 +-
Allura/allura/model/notification.py | 4 +-
Allura/allura/templates/jinja_master/master.html | 2 +-
.../templates/jinja_master/sidebar_menu.html | 2 +-
Allura/allura/templates/jinja_master/top_nav.html | 4 +-
.../templates/neighborhood_project_list.html | 2 +-
Allura/allura/templates/project_list.html | 4 +-
Allura/allura/templates/repo/merge_request.html | 6 +--
Allura/allura/templates/repo/repo_master.html | 2 +-
Allura/allura/templates/widgets/post_widget.html | 8 +--
.../templates/widgets/project_list_widget.html | 2 +-
Allura/allura/templates/widgets/thread_header.html | 2 +-
Allura/allura/templates/widgets/thread_widget.html | 4 +-
Allura/allura/templates/widgets/vote.html | 2 +-
.../templates_responsive/jinja_master/master.html | 2 +-
.../jinja_master/sidebar_menu.html | 2 +-
.../templates_responsive/jinja_master/top_nav.html | 4 +-
Allura/allura/tests/model/test_notification.py | 13 ++---
Allura/allura/tests/test_helpers.py | 24 ++++-----
Allura/allura/tests/test_plugin.py | 6 +--
Allura/allura/tests/test_security.py | 38 +++++++-------
ForgeBlog/forgeblog/main.py | 10 ++--
ForgeBlog/forgeblog/templates/blog/post.html | 4 +-
.../forgeblog/templates/blog/post_history.html | 2 +-
.../templates/blog_widgets/preview_post.html | 2 +-
.../templates/blog_widgets/view_post.html | 2 +-
ForgeChat/forgechat/command.py | 2 +-
.../forgediscussion/controllers/forum.py | 8 +--
.../forgediscussion/controllers/root.py | 6 +--
ForgeDiscussion/forgediscussion/forum_main.py | 12 ++---
.../discussion_widgets/thread_header.html | 4 +-
.../templates/discussionforums/index.html | 4 +-
.../templates/discussionforums/thread.html | 2 +-
ForgeFiles/forgefiles/templates/files.html | 10 ++--
ForgeGit/forgegit/templates/git/index.html | 4 +-
ForgeSVN/forgesvn/templates/svn/index.html | 4 +-
.../forgetracker/templates/tracker/search.html | 6 +--
.../forgetracker/templates/tracker/ticket.html | 2 +-
.../forgetracker/tests/unit/test_ticket_model.py | 58 +++++++++++-----------
ForgeTracker/forgetracker/tracker_main.py | 24 ++++-----
ForgeWiki/forgewiki/templates/wiki/page_edit.html | 6 +--
.../forgewiki/templates/wiki/page_history.html | 2 +-
ForgeWiki/forgewiki/templates/wiki/page_view.html | 4 +-
ForgeWiki/forgewiki/wiki_main.py | 10 ++--
52 files changed, 180 insertions(+), 187 deletions(-)
diff --git a/Allura/allura/app.py b/Allura/allura/app.py
index 23f18d1b3..518269622 100644
--- a/Allura/allura/app.py
+++ b/Allura/allura/app.py
@@ -662,7 +662,7 @@ class Application(ActivityObject):
admin_url = c.project.url() + 'admin/' + \
self.config.options.mount_point + '/'
links = []
- if self.permissions and has_access(c.project, 'admin')():
+ if self.permissions and has_access(c.project, 'admin'):
links.append(
SitemapEntry('Permissions', admin_url + 'permissions'))
if force_options or len(self.config_options) > 3:
@@ -943,7 +943,7 @@ class DefaultAdminController(BaseController, AdminControllerMixin):
block_list[ace.permission].append((role.user, ace.reason))
return dict(
app=self.app,
- allow_config=has_access(c.project, 'admin')(),
+ allow_config=has_access(c.project, 'admin'),
permissions=permissions,
block_list=block_list)
@@ -954,7 +954,7 @@ class DefaultAdminController(BaseController, AdminControllerMixin):
"""
return dict(
app=self.app,
- allow_config=has_access(self.app, 'configure')())
+ allow_config=has_access(self.app, 'configure'))
@expose()
@require_post()
@@ -979,7 +979,7 @@ class DefaultAdminController(BaseController, AdminControllerMixin):
"""
return dict(
app=self.app,
- allow_config=has_access(self.app, 'configure')())
+ allow_config=has_access(self.app, 'configure'))
@expose('jinja:allura:templates/app_admin_delete.html')
def delete(self):
diff --git a/Allura/allura/controllers/project.py b/Allura/allura/controllers/project.py
index f04fa5b62..9f5868dc7 100644
--- a/Allura/allura/controllers/project.py
+++ b/Allura/allura/controllers/project.py
@@ -132,7 +132,7 @@ class NeighborhoodController:
categories = M.ProjectCategory.query.find(
{'parent_id': None}).sort('name').all()
c.custom_sidebar_menu = []
- if h.has_access(self.neighborhood, 'register')() and (nb_max_projects is None or count < nb_max_projects):
+ if h.has_access(self.neighborhood, 'register') and (nb_max_projects is None or count < nb_max_projects):
c.custom_sidebar_menu += [
SitemapEntry('Add a Project', self.neighborhood.url()
+ 'add_project', ui_icon=g.icons['add']),
diff --git a/Allura/allura/controllers/rest.py b/Allura/allura/controllers/rest.py
index d67a81f53..0f29c1676 100644
--- a/Allura/allura/controllers/rest.py
+++ b/Allura/allura/controllers/rest.py
@@ -481,7 +481,7 @@ def rest_has_access(obj, user, perm):
resp = {'result': False}
user = M.User.by_username(user)
if user:
- resp['result'] = security.has_access(obj, perm, user=user)()
+ resp['result'] = bool(security.has_access(obj, perm, user=user))
return resp
@@ -554,7 +554,7 @@ def nbhd_lookup_first_path(nbhd, name, current_user, remainder, api=False):
project.configure_project(is_user_project=True)
else:
raise exc.HTTPNotFound(pname)
- if project is None or (project.deleted and not has_access(project, 'update')()):
+ if project is None or (project.deleted and not has_access(project, 'update')):
raise exc.HTTPNotFound(pname)
return project, remainder
diff --git a/Allura/allura/ext/admin/admin_main.py b/Allura/allura/ext/admin/admin_main.py
index 78563f2cb..0904c0ce8 100644
--- a/Allura/allura/ext/admin/admin_main.py
+++ b/Allura/allura/ext/admin/admin_main.py
@@ -155,10 +155,10 @@ class AdminApp(Application):
links.append(SitemapEntry('Tools', admin_url + 'tools_moved'))
if asbool(config.get('bulk_export_enabled', True)):
links.append(SitemapEntry('Export', admin_url + 'export'))
- if c.project.is_root and has_access(c.project, 'admin')():
+ if c.project.is_root and has_access(c.project, 'admin'):
links.append(
SitemapEntry('User Permissions', admin_url + 'groups/', className="admin-nav-user-perms"))
- if not c.project.is_root and has_access(c.project, 'admin')():
+ if not c.project.is_root and has_access(c.project, 'admin'):
links.append(
SitemapEntry('Permissions', admin_url + 'permissions/'))
if len(c.project.neighborhood_invitations):
diff --git a/Allura/allura/ext/admin/templates/project_screenshots.html b/Allura/allura/ext/admin/templates/project_screenshots.html
index 3f92475ca..3c7fb9ea5 100644
--- a/Allura/allura/ext/admin/templates/project_screenshots.html
+++ b/Allura/allura/ext/admin/templates/project_screenshots.html
@@ -26,8 +26,8 @@
{% if c.project.deleted %}
<div class="notice">This project has been deleted and is not visible to non-admin users</div>
{% endif %}
- {{c.screenshot_list.display(edit=h.has_access(c.project, 'update')(),project=c.project)}}
- {% if h.has_access(c.project, 'update')() %}
+ {{c.screenshot_list.display(edit=h.has_access(c.project, 'update'),project=c.project)}}
+ {% if h.has_access(c.project, 'update') %}
{% if c.project.get_screenshots().__len__() < 6 %}
{{c.screenshot_admin.display(action="add_screenshot")}}
{% else %}
diff --git a/Allura/allura/lib/macro.py b/Allura/allura/lib/macro.py
index 7d0aba893..3d2970747 100644
--- a/Allura/allura/lib/macro.py
+++ b/Allura/allura/lib/macro.py
@@ -155,8 +155,8 @@ def neighborhood_blog_posts(max_number=5, sort='timestamp', summary=False):
ago=h.ago(post.timestamp),
description=summary and ' ' or g.markdown.cached_convert(post, 'text')))
for post in posts if post.app and
- security.has_access(post, 'read', project=post.app.project)() and
- security.has_access(post.app.project, 'read', project=post.app.project)())
+ security.has_access(post, 'read', project=post.app.project) and
+ security.has_access(post.app.project, 'read', project=post.app.project))
posts = BlogPosts(posts=output)
g.resource_manager.register(posts)
@@ -183,8 +183,8 @@ def project_blog_posts(max_number=5, sort='timestamp', summary=False, mount_poin
author=post.author().display_name,
ago=h.ago(post.timestamp),
description=summary and ' ' or g.markdown.cached_convert(post, 'text'))
- for post in posts if security.has_access(post, 'read', project=post.app.project)() and
- security.has_access(post.app.project, 'read', project=post.app.project)()
+ for post in posts if security.has_access(post, 'read', project=post.app.project) and
+ security.has_access(post.app.project, 'read', project=post.app.project)
]
posts = BlogPosts(posts=output)
g.resource_manager.register(posts)
@@ -287,7 +287,7 @@ def get_projects_for_macro(
if total is None:
total = 0
for p in M.Project.query.find(q):
- if h.has_access(p, 'read')():
+ if h.has_access(p, 'read'):
total = total + 1
response = '<p class="macro_projects_total">%s Projects</p>%s' % \
(total, response)
@@ -369,7 +369,7 @@ def include_file(repo, path=None, rev=None, **kw):
app = parse_repo(repo)
if not app:
return '[[include repo %s (not found)]]' % repo
- if not h.has_access(app.repo, 'read')():
+ if not h.has_access(app.repo, 'read'):
return "[[include: you don't have a read permission for repo %s]]" % repo
rev = app.repo.head if rev is None else rev
@@ -406,7 +406,7 @@ def include(ref=None, repo=None, **kw):
artifact = link.ref.artifact
if artifact is None:
return '[[include (artifact not found)]]' % ref
- if not h.has_access(artifact, 'read')():
+ if not h.has_access(artifact, 'read'):
return "[[include: you don't have a read permission for %s]]" % ref
included = request.environ.setdefault('allura.macro.included', set())
if artifact in included:
diff --git a/Allura/allura/lib/plugin.py b/Allura/allura/lib/plugin.py
index d32227d13..879c82fd3 100644
--- a/Allura/allura/lib/plugin.py
+++ b/Allura/allura/lib/plugin.py
@@ -886,7 +886,7 @@ class ProjectRegistrationProvider:
limits, and if any are exceeded, raise ProjectRatelimitError.
"""
- if security.has_access(neighborhood, 'admin', user=user)():
+ if security.has_access(neighborhood, 'admin', user=user):
return
opt = 'project.rate_limits'
project_count = len(list(user.my_projects()))
@@ -910,7 +910,7 @@ class ProjectRegistrationProvider:
"""
if not asbool(config.get('project.verify_phone')):
return True
- if security.has_access(neighborhood, 'admin', user=user)():
+ if security.has_access(neighborhood, 'admin', user=user):
return True
admin_in = [p for p in user.my_projects_by_role_name('Admin')
if p.neighborhood_id == neighborhood._id]
diff --git a/Allura/allura/lib/security.py b/Allura/allura/lib/security.py
index 8f59a4ba8..53a675f55 100644
--- a/Allura/allura/lib/security.py
+++ b/Allura/allura/lib/security.py
@@ -399,9 +399,9 @@ def has_access(obj, permission: str, user: M.User | None = None, project: M.Proj
result = has_access(parent, permission, user=user, project=project)(
roles=tuple(chainable_roles))
elif not isinstance(obj, M.Neighborhood):
- result = has_access(project.neighborhood, 'admin', user=user)()
+ result = has_access(project.neighborhood, 'admin', user=user)
if not (result or isinstance(obj, M.Project)):
- result = has_access(project, 'admin', user=user)()
+ result = has_access(project, 'admin', user=user)
else:
result = False
result = bool(result)
diff --git a/Allura/allura/model/neighborhood.py b/Allura/allura/model/neighborhood.py
index cad59de72..9487518a3 100644
--- a/Allura/allura/model/neighborhood.py
+++ b/Allura/allura/model/neighborhood.py
@@ -145,7 +145,7 @@ class Neighborhood(MappedClass):
total = 0
for p in M.Project.query.find(q):
- if h.has_access(p, 'read')():
+ if h.has_access(p, 'read'):
total = total + 1
if total == 100:
return total
diff --git a/Allura/allura/model/notification.py b/Allura/allura/model/notification.py
index 164cee374..2bd205d35 100644
--- a/Allura/allura/model/notification.py
+++ b/Allura/allura/model/notification.py
@@ -299,7 +299,7 @@ class Notification(MappedClass):
return
# Don't send if user doesn't have read perms to the artifact
if user and artifact and \
- not security.has_access(artifact, 'read', user)():
+ not security.has_access(artifact, 'read', user):
log.debug("Skipping notification - User %s doesn't have read "
"access to artifact %s" % (user_id, str(self.ref_id)))
log.debug("User roles [%s]; artifact ACL [%s]; PSC ACL [%s]",
@@ -336,7 +336,7 @@ class Notification(MappedClass):
def perm_check(notification):
return not (user and artifact) or \
- security.has_access(artifact, 'read', user)()
+ security.has_access(artifact, 'read', user)
notifications = list(filter(perm_check, notifications))
log.debug('Sending digest of notifications [%s] to user %s', ', '.join(
diff --git a/Allura/allura/templates/jinja_master/master.html b/Allura/allura/templates/jinja_master/master.html
index 95ee01e16..157fd54a4 100644
--- a/Allura/allura/templates/jinja_master/master.html
+++ b/Allura/allura/templates/jinja_master/master.html
@@ -34,7 +34,7 @@
{% do g.theme.require() %}
{% do g.register_forge_js('js/admin_modal.js') %}
{% do g.register_js('js/jquery.lightbox_me.js') %}
-{% if h.has_access(c.project, 'admin')() %}
+{% if h.has_access(c.project, 'admin') %}
{# this would be better placed in top_nav.html but that file is included later so its too late for it to register
any css. (Unlike other html files which are the top-level file and extend this master.html) #}
{% do g.register_forge_css('css/navbar.css') %}
diff --git a/Allura/allura/templates/jinja_master/sidebar_menu.html b/Allura/allura/templates/jinja_master/sidebar_menu.html
index d9db22f24..d0808f97a 100644
--- a/Allura/allura/templates/jinja_master/sidebar_menu.html
+++ b/Allura/allura/templates/jinja_master/sidebar_menu.html
@@ -61,7 +61,7 @@
{% endfor %}
{% endif %}
{% if c.app %}
- {% if h.has_access(c.app, 'admin')() %}
+ {% if h.has_access(c.app, 'admin') %}
{% if c.app.tool_label.lower() == 'wiki' %}
{% set admin_menu = c.app.admin_menu(skip_common_menu=True) %}
{% else %}
diff --git a/Allura/allura/templates/jinja_master/top_nav.html b/Allura/allura/templates/jinja_master/top_nav.html
index e4cf131f1..af06a20c6 100644
--- a/Allura/allura/templates/jinja_master/top_nav.html
+++ b/Allura/allura/templates/jinja_master/top_nav.html
@@ -35,7 +35,7 @@
{% endif %}
</li>
{% endfor %}
- {% if h.has_access(c.project, 'admin')() %}
+ {% if h.has_access(c.project, 'admin') %}
<li id="add-tool-container"><a href='#' class="add-tool-toggle">Add New...</a></li>
<button id="toggle-admin-btn" title="Click to unlock the toolbar and configure your project's tools.">
<i class="fa fa-lock"></i>
@@ -43,7 +43,7 @@
{% endif %}
</ul>
</div>
-{% if h.has_access(c.project, 'admin')() %}
+{% if h.has_access(c.project, 'admin') %}
{% do g.register_forge_js('js/underscore-1.13.6.min.js') %}
{% do g.register_forge_js('js/browser-polyfill.min.js') %}
{% do lib.register_react_js_files() %}
diff --git a/Allura/allura/templates/neighborhood_project_list.html b/Allura/allura/templates/neighborhood_project_list.html
index 53e33b3e1..f0f2404eb 100644
--- a/Allura/allura/templates/neighborhood_project_list.html
+++ b/Allura/allura/templates/neighborhood_project_list.html
@@ -56,7 +56,7 @@
<div style="clear:both"></div>
{% for project in projects %}
{% do g.set_project(project) %}
- {% if h.has_access(project, 'read')() %}
+ {% if h.has_access(project, 'read') %}
{{c.project_summary.display(value=project)}}
{% endif %}
{% endfor %}
diff --git a/Allura/allura/templates/project_list.html b/Allura/allura/templates/project_list.html
index 9d68850ae..a1b2c0062 100644
--- a/Allura/allura/templates/project_list.html
+++ b/Allura/allura/templates/project_list.html
@@ -41,7 +41,7 @@
<div class="list" style="clear:both">
{% for p in subprojects %}
{% do g.set_project(p) %}
- {% if h.has_access(p, 'read')() %}
+ {% if h.has_access(p, 'read') %}
{{c.project_summary.display(value=p)}}
{% endif %}
{% endfor %}
@@ -63,7 +63,7 @@
<div class="list">
{% for project in projects %}
{% do g.set_project(project) %}
- {% if h.has_access(project, 'read')() %}
+ {% if h.has_access(project, 'read') %}
{{c.project_summary.display(value=project)}}
{% endif %}
{% endfor %}
diff --git a/Allura/allura/templates/repo/merge_request.html b/Allura/allura/templates/repo/merge_request.html
index 6f562b8b4..7a1b5ee41 100644
--- a/Allura/allura/templates/repo/merge_request.html
+++ b/Allura/allura/templates/repo/merge_request.html
@@ -30,7 +30,7 @@ Merge Request #{{req.request_number}}: {{req.summary}} ({{req.status}})
{% if c.user and c.user != c.user.anonymous() %}
{{ c.subscribe_form.display(value=subscribed, action='subscribe', style='icon') }}
{% endif %}
- {% if h.has_access(req, 'write')() %}
+ {% if h.has_access(req, 'write') %}
{{ g.icons['edit'].render(href='edit', show_title=True) }}
{% endif %}
{% endblock %}
@@ -130,7 +130,7 @@ Merge Request #{{req.request_number}}: {{req.summary}} ({{req.status}})
{{ c.log_widget.display(value=commits, app=downstream_app) }}
{% endif %}
- {% if h.has_access(c.app, 'write')() %}
+ {% if h.has_access(c.app, 'write') %}
<div class="grid-19">
To merge the commits, please execute the following commands in your working copy:
</div>
@@ -149,7 +149,7 @@ Merge Request #{{req.request_number}}: {{req.summary}} ({{req.status}})
is deleted
</p>
<div>{{g.markdown.convert(req.description)}}</div>
- {% if h.has_access(c.app, 'write')() %}
+ {% if h.has_access(c.app, 'write') %}
{{ c.mr_dispose_form.display(action="save", value=dict(status=req.status)) }}
<br style="clear:both">
{% endif %}
diff --git a/Allura/allura/templates/repo/repo_master.html b/Allura/allura/templates/repo/repo_master.html
index 791020d62..54d60aabe 100644
--- a/Allura/allura/templates/repo/repo_master.html
+++ b/Allura/allura/templates/repo/repo_master.html
@@ -33,7 +33,7 @@
{% set hide_left_bar = True %}
{% endif %}
-{% set clone_categories = repo.clone_command_categories(anon=not h.has_access(c.app, 'write')()) %}
+{% set clone_categories = repo.clone_command_categories(anon=not h.has_access(c.app, 'write')) %}
{% block extra_css %}
<link rel="alternate" type="application/rss+xml" title="RSS" href="{{c.app.url}}feed.rss"/>
diff --git a/Allura/allura/templates/widgets/post_widget.html b/Allura/allura/templates/widgets/post_widget.html
index a234a8bc2..6b0c3ee88 100644
--- a/Allura/allura/templates/widgets/post_widget.html
+++ b/Allura/allura/templates/widgets/post_widget.html
@@ -32,8 +32,8 @@
<div>
<div id="{{value.slug}}" class="discussion-post{%if value.is_meta %} meta_post{% endif %}">
- {% set can_moderate_post = h.has_access(value, 'moderate')() %} {# you might have 'moderate' perm in your on post #}
- {% set can_moderate_thread = h.has_access(value.thread, 'moderate')() %} {# but not on the whole thread #}
+ {% set can_moderate_post = h.has_access(value, 'moderate') %} {# you might have 'moderate' perm in your on post #}
+ {% set can_moderate_thread = h.has_access(value.thread, 'moderate') %} {# but not on the whole thread #}
{% if can_moderate_post %}
<div class="info grid-15 spam-present">
<span class="spam-text">Comment has been marked as spam. </span>
@@ -71,7 +71,7 @@
<a href="#" id="react_{{value.slug.replace('/','_')}}" data-commentlink="{{value.url()}}" data-currentreact="{{ current_reaction }}" class="reaction-button icon btn ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"{%if value.status == 'pending'%} style="display:none"{%endif%}>
<span><i class="fa fa-smile-o" aria-hidden="true"></i></span></a>
{% endif %}
- {% if (h.has_access(value.thread, 'post')() and value.status == 'ok') or can_moderate_post %}
+ {% if (h.has_access(value.thread, 'post') and value.status == 'ok') or can_moderate_post %}
<a class="icon reply_post btn" href="#" style="" title="Reply" role="button"><span class="ui-button-text"><i class="fa fa-reply"></i></span></a>
{% endif %}
<a href="{{shortlink_url}}" title="Link" class="little_link shortlink icon btn ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"{%if value.status == 'pending'%} style="display:none"{%endif%}>
@@ -159,7 +159,7 @@
</div>
<ul>
<li>
- {% if h.has_access(value.thread, 'post')() %}
+ {% if h.has_access(value.thread, 'post') %}
<div class="comment-row reply_post_form" style="display:none">
<div class="reply">
<div class="grid-2 tcenter">
diff --git a/Allura/allura/templates/widgets/project_list_widget.html b/Allura/allura/templates/widgets/project_list_widget.html
index 3f3ae4edc..073e04159 100644
--- a/Allura/allura/templates/widgets/project_list_widget.html
+++ b/Allura/allura/templates/widgets/project_list_widget.html
@@ -24,7 +24,7 @@
{% set old_project = c.project %}
{% for project in projects %}
{% do g.set_project(project) %}
- {% if h.has_access(project, 'read')() %}
+ {% if h.has_access(project, 'read') %}
{{project_summary.display(
value=project,
icon_url=icon_urls[project._id],
diff --git a/Allura/allura/templates/widgets/thread_header.html b/Allura/allura/templates/widgets/thread_header.html
index 13c69fed8..b568c6d68 100644
--- a/Allura/allura/templates/widgets/thread_header.html
+++ b/Allura/allura/templates/widgets/thread_header.html
@@ -32,7 +32,7 @@
</div>
</div>
{% endif %}
- {% if show_moderate and h.has_access(value, 'moderate')() %}
+ {% if show_moderate and h.has_access(value, 'moderate') %}
<div class="title-pane closed">
<span class="title">Moderate thread</span>
<div class="content">
diff --git a/Allura/allura/templates/widgets/thread_widget.html b/Allura/allura/templates/widgets/thread_widget.html
index 7099a6fb5..19afeef45 100644
--- a/Allura/allura/templates/widgets/thread_widget.html
+++ b/Allura/allura/templates/widgets/thread_widget.html
@@ -33,7 +33,7 @@
</ul>
{% endfor %}
{% endif %}
- {% if h.has_access(value, 'moderate')() %}
+ {% if h.has_access(value, 'moderate') %}
<div id="allow_moderate"></div>
{% endif %}
</div>
@@ -46,7 +46,7 @@
<div style="clear:both"></div>
</div>
</div>
-{% if h.has_access(value, 'post')() %}
+{% if h.has_access(value, 'post') %}
<div id="new_post_holder">
<span id="add_comment"></span>
<div class="comment-row" style="padding-top:10px;">
diff --git a/Allura/allura/templates/widgets/vote.html b/Allura/allura/templates/widgets/vote.html
index ce5124b25..1a82b8711 100644
--- a/Allura/allura/templates/widgets/vote.html
+++ b/Allura/allura/templates/widgets/vote.html
@@ -18,7 +18,7 @@
-#}
{% import 'allura:templates/jinja_master/lib.html' as lib with context %}
{% set can_vote = c.user and c.user != c.user.anonymous()
- and h.has_access(artifact, 'post')() %}
+ and h.has_access(artifact, 'post') %}
{% set voted = artifact.user_voted(c.user) %}
{% if can_vote %}
diff --git a/Allura/allura/templates_responsive/jinja_master/master.html b/Allura/allura/templates_responsive/jinja_master/master.html
index 76c470f92..d86a21b9a 100644
--- a/Allura/allura/templates_responsive/jinja_master/master.html
+++ b/Allura/allura/templates_responsive/jinja_master/master.html
@@ -35,7 +35,7 @@
{% do g.theme.require() %}
{% do g.register_forge_js('js/admin_modal.js') %}
{% do g.register_js('js/jquery.lightbox_me.js') %}
-{% if h.has_access(c.project, 'admin')() %}
+{% if h.has_access(c.project, 'admin') %}
{# this would be better placed in top_nav.html but that file is included later so its too late for it to register
any css. (Unlike other html files which are the top-level file and extend this master.html) #}
{% do g.register_forge_css('css/navbar.css') %}
diff --git a/Allura/allura/templates_responsive/jinja_master/sidebar_menu.html b/Allura/allura/templates_responsive/jinja_master/sidebar_menu.html
index d7ec8664f..f3bca5148 100644
--- a/Allura/allura/templates_responsive/jinja_master/sidebar_menu.html
+++ b/Allura/allura/templates_responsive/jinja_master/sidebar_menu.html
@@ -61,7 +61,7 @@
{% endfor %}
{% endif %}
{% if c.app %}
- {% if h.has_access(c.app, 'admin')() %}
+ {% if h.has_access(c.app, 'admin') %}
{% if c.app.tool_label.lower() == 'wiki' %}
{% set admin_menu = c.app.admin_menu(skip_common_menu=True) %}
{% else %}
diff --git a/Allura/allura/templates_responsive/jinja_master/top_nav.html b/Allura/allura/templates_responsive/jinja_master/top_nav.html
index 9a1a66042..dad441b54 100644
--- a/Allura/allura/templates_responsive/jinja_master/top_nav.html
+++ b/Allura/allura/templates_responsive/jinja_master/top_nav.html
@@ -35,7 +35,7 @@
{% endif %}
</li>
{% endfor %}
- {% if h.has_access(c.project, 'admin')() %}
+ {% if h.has_access(c.project, 'admin') %}
<li id="add-tool-container"><a href='#' class="add-tool-toggle">Add New...</a></li>
<button id="toggle-admin-btn" title="Click to unlock the toolbar and configure your project's tools.">
<i class="fa fa-lock"></i>
@@ -43,7 +43,7 @@
{% endif %}
</ul>
</div>
-{% if h.has_access(c.project, 'admin')() %}
+{% if h.has_access(c.project, 'admin') %}
{% do g.register_forge_js('js/underscore-1.13.6.min.js') %}
{% do g.register_forge_js('js/browser-polyfill.min.js') %}
{% do lib.register_react_js_files() %}
diff --git a/Allura/allura/tests/model/test_notification.py b/Allura/allura/tests/model/test_notification.py
index ff81db2ac..563f90a80 100644
--- a/Allura/allura/tests/model/test_notification.py
+++ b/Allura/allura/tests/model/test_notification.py
@@ -260,14 +260,9 @@ class TestPostNotifications(unittest.TestCase):
self._subscribe(user=u)
# Simulate a permission check failure.
- def patched_has_access(*args, **kw):
- def predicate(*args, **kw):
- return False
- return predicate
- from allura.model.notification import security
- orig = security.has_access
- security.has_access = patched_has_access
- try:
+ with mock.patch('allura.model.notification.security.has_access') as patched_has_access:
+ patched_has_access.return_value = False
+
# this will create a notification task
self._post_notification()
ThreadLocalODMSession.flush_all()
@@ -278,8 +273,6 @@ class TestPostNotifications(unittest.TestCase):
# ...but in this case it doesn't create a mail task since we
# forced the perm check to fail
assert M.MonQTask.get() is None
- finally:
- security.has_access = orig
def test_footer(self):
footer = MailFooter.monitored(
diff --git a/Allura/allura/tests/test_helpers.py b/Allura/allura/tests/test_helpers.py
index 71318eef0..18c96aa1c 100644
--- a/Allura/allura/tests/test_helpers.py
+++ b/Allura/allura/tests/test_helpers.py
@@ -142,24 +142,24 @@ def test_make_app_admin_only():
c.project.add_user(dev, ['Developer'])
ThreadLocalODMSession.flush_all()
Credentials.get().clear()
- assert has_access(c.app, 'read', user=anon)()
- assert has_access(c.app, 'read', user=dev)()
- assert has_access(c.app, 'read', user=admin)()
- assert not has_access(c.app, 'create', user=anon)()
- assert has_access(c.app, 'create', user=dev)()
- assert has_access(c.app, 'create', user=admin)()
+ assert has_access(c.app, 'read', user=anon)
+ assert has_access(c.app, 'read', user=dev)
+ assert has_access(c.app, 'read', user=admin)
+ assert not has_access(c.app, 'create', user=anon)
+ assert has_access(c.app, 'create', user=dev)
+ assert has_access(c.app, 'create', user=admin)
assert c.app.is_visible_to(anon)
assert c.app.is_visible_to(dev)
assert c.app.is_visible_to(admin)
h.make_app_admin_only(c.app)
ThreadLocalODMSession.flush_all()
Credentials.get().clear()
- assert not has_access(c.app, 'read', user=anon)()
- assert not has_access(c.app, 'read', user=dev)()
- assert has_access(c.app, 'read', user=admin)()
- assert not has_access(c.app, 'create', user=anon)()
- assert not has_access(c.app, 'create', user=dev)()
- assert has_access(c.app, 'create', user=admin)()
+ assert not has_access(c.app, 'read', user=anon)
+ assert not has_access(c.app, 'read', user=dev)
+ assert has_access(c.app, 'read', user=admin)
+ assert not has_access(c.app, 'create', user=anon)
+ assert not has_access(c.app, 'create', user=dev)
+ assert has_access(c.app, 'create', user=admin)
assert not c.app.is_visible_to(anon)
assert not c.app.is_visible_to(dev)
assert c.app.is_visible_to(admin)
diff --git a/Allura/allura/tests/test_plugin.py b/Allura/allura/tests/test_plugin.py
index 8248362b6..964502cf2 100644
--- a/Allura/allura/tests/test_plugin.py
+++ b/Allura/allura/tests/test_plugin.py
@@ -167,13 +167,13 @@ class TestProjectRegistrationProviderPhoneVerification:
@patch.object(plugin.security, 'has_access', autospec=True)
def test_phone_verified_admin(self, has_access):
- has_access.return_value.return_value = True
+ has_access.return_value = True
with h.push_config(tg.config, **{'project.verify_phone': 'true'}):
assert self.p.phone_verified(self.user, self.nbhd)
@patch.object(plugin.security, 'has_access', autospec=True)
def test_phone_verified_project_admin(self, has_access):
- has_access.return_value.return_value = False
+ has_access.return_value = False
with h.push_config(tg.config, **{'project.verify_phone': 'true'}):
self.user.set_projects([Mock()])
assert not self.p.phone_verified(self.user, self.nbhd)
@@ -182,7 +182,7 @@ class TestProjectRegistrationProviderPhoneVerification:
@patch.object(plugin.security, 'has_access', autospec=True)
def test_phone_verified(self, has_access):
- has_access.return_value.return_value = False
+ has_access.return_value = False
with h.push_config(tg.config, **{'project.verify_phone': 'true'}):
assert not self.p.phone_verified(self.user, self.nbhd)
self.user.set_tool_data('phone_verification', number_hash='123')
diff --git a/Allura/allura/tests/test_security.py b/Allura/allura/tests/test_security.py
index b99cfe3ba..12c9df089 100644
--- a/Allura/allura/tests/test_security.py
+++ b/Allura/allura/tests/test_security.py
@@ -131,30 +131,30 @@ class TestSecurity(TestController):
test_user = M.User.by_username('test-user')
# confirm that *anon has expected access
- assert has_access(page, 'read', anon_role)()
- assert has_access(page, 'post', anon_role)()
- assert has_access(page, 'unmoderated_post', anon_role)()
+ assert has_access(page, 'read', anon_role)
+ assert has_access(page, 'post', anon_role)
+ assert has_access(page, 'unmoderated_post', anon_role)
assert all_allowed(page, anon_role) == {'read'}
# as well as an authenticated user
- assert has_access(page, 'read', test_user)()
- assert has_access(page, 'post', test_user)()
- assert has_access(page, 'unmoderated_post', test_user)()
+ assert has_access(page, 'read', test_user)
+ assert has_access(page, 'post', test_user)
+ assert has_access(page, 'unmoderated_post', test_user)
assert (all_allowed(page, test_user) ==
{'read', 'post', 'unmoderated_post'})
_deny(page, auth_role, 'read')
# read granted to *anon should *not* bubble up past the *auth DENY
- assert not has_access(page, 'read', test_user)()
+ assert not has_access(page, 'read', test_user)
# but other perms should not be affected
- assert has_access(page, 'post', test_user)()
- assert has_access(page, 'unmoderated_post', test_user)()
+ assert has_access(page, 'post', test_user)
+ assert has_access(page, 'unmoderated_post', test_user)
# FIXME: all_allowed doesn't respect blocked user feature
#assert_equal(all_allowed(page, test_user), set(['post', 'unmoderated_post']))
- assert has_access(wiki, 'read', test_user)()
- assert has_access(wiki, 'post', test_user)()
- assert has_access(wiki, 'unmoderated_post', test_user)()
+ assert has_access(wiki, 'read', test_user)
+ assert has_access(wiki, 'post', test_user)
+ assert has_access(wiki, 'unmoderated_post', test_user)
assert (all_allowed(wiki, test_user) ==
{'read', 'post', 'unmoderated_post'})
@@ -163,9 +163,9 @@ class TestSecurity(TestController):
# there isn't a true heiarchy of roles, so any applicable DENY
# will block a user, even if there's an explicit ALLOW "higher up"
- assert not has_access(wiki, 'read', test_user)()
- assert has_access(wiki, 'post', test_user)()
- assert has_access(wiki, 'unmoderated_post', test_user)()
+ assert not has_access(wiki, 'read', test_user)
+ assert has_access(wiki, 'post', test_user)
+ assert has_access(wiki, 'unmoderated_post', test_user)
# FIXME: all_allowed doesn't respect blocked user feature
#assert_equal(all_allowed(wiki, test_user), set(['post', 'unmoderated_post']))
@@ -186,16 +186,16 @@ class TestSecurity(TestController):
test_user = M.User.by_username('test-user')
assert project1.shortname == 'test'
- assert has_access(page, 'read', test_user)()
+ assert has_access(page, 'read', test_user)
c.project = project2
- assert has_access(page, 'read', test_user)()
+ assert has_access(page, 'read', test_user)
@td.with_wiki
def test_deny_access_for_single_user(self):
wiki = c.project.app_instance('wiki')
user = M.User.by_username('test-user')
- assert has_access(wiki, 'read', user)()
+ assert has_access(wiki, 'read', user)
wiki.acl.append(
M.ACE.deny(M.ProjectRole.by_user(user, upsert=True)._id, 'read', 'Spammer'))
Credentials.get().clear()
- assert not has_access(wiki, 'read', user)()
+ assert not has_access(wiki, 'read', user)
diff --git a/ForgeBlog/forgeblog/main.py b/ForgeBlog/forgeblog/main.py
index 91c597a57..15614b7ec 100644
--- a/ForgeBlog/forgeblog/main.py
+++ b/ForgeBlog/forgeblog/main.py
@@ -196,7 +196,7 @@ class ForgeBlogApp(Application):
links = [
SitemapEntry('Home', base),
]
- if has_access(self, 'write')():
+ if has_access(self, 'write'):
links += [SitemapEntry('New Post', base + 'new')]
return links
@@ -278,7 +278,7 @@ class RootController(BaseController, FeedController):
limit=validators.Int(if_empty=None, if_invalid=None)))
def index(self, page=0, limit=None, **kw):
query_filter = dict(app_config_id=c.app.config._id)
- if not has_access(c.app, 'write')():
+ if not has_access(c.app, 'write'):
query_filter['state'] = 'published'
q = BM.BlogPost.query.find(query_filter)
post_count = q.count()
@@ -529,7 +529,7 @@ class BlogAdminController(DefaultAdminController):
@expose('jinja:forgeblog:templates/blog/admin_options.html')
def options(self):
return dict(app=self.app,
- allow_config=has_access(self.app, 'configure')())
+ allow_config=has_access(self.app, 'configure'))
@without_trailing_slash
@expose()
@@ -560,7 +560,7 @@ class BlogAdminController(DefaultAdminController):
feeds_list.append(feed)
return dict(app=self.app,
feeds_list=feeds_list,
- allow_config=has_access(self.app, 'configure')())
+ allow_config=has_access(self.app, 'configure'))
@without_trailing_slash
@expose()
@@ -637,7 +637,7 @@ class RootRestController(BaseController, AppRestControllerMixin):
posts = result['posts']
post_titles = []
for post in posts:
- if has_access(post, 'read')():
+ if has_access(post, 'read'):
post_titles.append(
{'title': post.title, 'url': h.absurl('/rest' + post.url())})
return dict(posts=post_titles, count=result['count'], limit=result['limit'], page=result['page'])
diff --git a/ForgeBlog/forgeblog/templates/blog/post.html b/ForgeBlog/forgeblog/templates/blog/post.html
index dacb8c1dd..c2fca4e44 100644
--- a/ForgeBlog/forgeblog/templates/blog/post.html
+++ b/ForgeBlog/forgeblog/templates/blog/post.html
@@ -28,7 +28,7 @@
{% block header %}{{post.title}}{% endblock %}
{% block actions %}
- {% if h.has_access(post, 'write')() %}
+ {% if h.has_access(post, 'write') %}
{{ g.icons['edit'].render(href='edit') }}
{% endif %}
{{ g.icons['history'].render(href='history') }}
@@ -41,7 +41,7 @@
{% block content %}
{{c.form.display(value=post, base_post=base_post)}}
<div class="grid-19">
- {{c.attachment_list.display(attachments=post.attachments, edit_mode=h.has_access(post, 'edit')())}}
+ {{c.attachment_list.display(attachments=post.attachments, edit_mode=h.has_access(post, 'edit'))}}
</div>
{% if post.discussion_thread and c.app.show_discussion %}
<div style="margin-top: 10px">
diff --git a/ForgeBlog/forgeblog/templates/blog/post_history.html b/ForgeBlog/forgeblog/templates/blog/post_history.html
index 1f8cb32a3..ea7cd8723 100644
--- a/ForgeBlog/forgeblog/templates/blog/post_history.html
+++ b/ForgeBlog/forgeblog/templates/blog/post_history.html
@@ -43,7 +43,7 @@
<td><input name="v2" type="radio" value="{{p.version}}"/></td>
<td>
<a href="./?version={{p.version}}" class="btn">View Revision</a>
- {% if loop.index0 != 0 and h.has_access(p, 'edit')() %}
+ {% if loop.index0 != 0 and h.has_access(p, 'edit') %}
<a href="#" class="btn post-link" data-dialog-id="{{p.version}}">Revert to version {{p.version}}</a>
{{ dialog_macros.revert_confirmation_dialog(p.version) }}
{% endif %}
diff --git a/ForgeBlog/forgeblog/templates/blog_widgets/preview_post.html b/ForgeBlog/forgeblog/templates/blog_widgets/preview_post.html
index 6e0ed4f1a..0a6f2d1c2 100644
--- a/ForgeBlog/forgeblog/templates/blog_widgets/preview_post.html
+++ b/ForgeBlog/forgeblog/templates/blog_widgets/preview_post.html
@@ -27,7 +27,7 @@
{% if value.state != 'published' %}
<span>| {{value.state.capitalize()}}</span>
{% endif %}
- {% if h.has_access(value, 'write')() %}
+ {% if h.has_access(value, 'write') %}
<span>| <a href="{{value.url()}}edit">Edit</a></span>
{% endif %}
</em>
diff --git a/ForgeBlog/forgeblog/templates/blog_widgets/view_post.html b/ForgeBlog/forgeblog/templates/blog_widgets/view_post.html
index 7dbdfeae2..4e392cbea 100644
--- a/ForgeBlog/forgeblog/templates/blog_widgets/view_post.html
+++ b/ForgeBlog/forgeblog/templates/blog_widgets/view_post.html
@@ -25,7 +25,7 @@
{% if value.state != 'published' %}
<span>| {{value.state.capitalize()}}</span>
{% endif %}
- {% if h.has_access(value, 'write')() %}
+ {% if h.has_access(value, 'write') %}
<span>| <a href="{{value.url()}}edit">Edit</a></span>
{% endif %}
</em>
diff --git a/ForgeChat/forgechat/command.py b/ForgeChat/forgechat/command.py
index 39999c75e..75ca4e8ff 100644
--- a/ForgeChat/forgechat/command.py
+++ b/ForgeChat/forgechat/command.py
@@ -176,7 +176,7 @@ class IRCBot(asynchat.async_chat):
def handle_shortlink(self, lnk, sender, rcpt):
art = lnk.ref.artifact
- if security.has_access(art, 'read', user=M.User.anonymous())():
+ if security.has_access(art, 'read', user=M.User.anonymous()):
index = art.index()
text = index['snippet_s'] or h.get_first(index, 'title')
url = urljoin(
diff --git a/ForgeDiscussion/forgediscussion/controllers/forum.py b/ForgeDiscussion/forgediscussion/controllers/forum.py
index 064135ce0..8a2a15918 100644
--- a/ForgeDiscussion/forgediscussion/controllers/forum.py
+++ b/ForgeDiscussion/forgediscussion/controllers/forum.py
@@ -165,7 +165,7 @@ class ForumThreadController(ThreadController):
@validate(dict(page=validators.Int(if_empty=0, if_invalid=0),
limit=validators.Int(if_empty=25, if_invalid=25)))
def index(self, limit=25, page=0, count=0, **kw):
- if self.thread.discussion.deleted and not has_access(c.app, 'configure')():
+ if self.thread.discussion.deleted and not has_access(c.app, 'configure'):
raise exc.HTTPNotFound()
c.thread_subscription_form = self.W.subscribe_form
return super().index(limit=limit, page=page, count=count, show_moderate=True, **kw)
@@ -176,7 +176,7 @@ class ForumThreadController(ThreadController):
@validate(pass_validator, index)
def moderate(self, **kw):
require_access(self.thread, 'moderate')
- if self.thread.discussion.deleted and not has_access(c.app, 'configure')():
+ if self.thread.discussion.deleted and not has_access(c.app, 'configure'):
raise exc.HTTPNotFound()
args = self.W.moderate_thread.validate(kw, None)
tasks.calc_forum_stats.post(self.thread.discussion.shortname)
@@ -218,7 +218,7 @@ class ForumPostController(PostController):
@validate(pass_validator)
@utils.AntiSpam.validate('Spambot protection engaged')
def index(self, **kw):
- if self.thread.discussion.deleted and not has_access(c.app, 'configure')():
+ if self.thread.discussion.deleted and not has_access(c.app, 'configure'):
raise exc.HTTPNotFound()
return super().index(**kw)
@@ -227,7 +227,7 @@ class ForumPostController(PostController):
@validate(pass_validator, error_handler=index)
def moderate(self, **kw):
require_access(self.post.thread, 'moderate')
- if self.thread.discussion.deleted and not has_access(c.app, 'configure')():
+ if self.thread.discussion.deleted and not has_access(c.app, 'configure'):
raise exc.HTTPNotFound()
tasks.calc_thread_stats.post(self.post.thread._id)
tasks.calc_forum_stats(self.post.discussion.shortname)
diff --git a/ForgeDiscussion/forgediscussion/controllers/root.py b/ForgeDiscussion/forgediscussion/controllers/root.py
index 251d57923..da5b157ef 100644
--- a/ForgeDiscussion/forgediscussion/controllers/root.py
+++ b/ForgeDiscussion/forgediscussion/controllers/root.py
@@ -86,7 +86,7 @@ class RootController(BaseController, DispatchIndex, FeedController):
forums = model.Forum.query.find(dict(
app_config_id=c.app.config._id,
parent_id=None, deleted=False)).all()
- forums = [f for f in forums if h.has_access(f, 'read')()]
+ forums = [f for f in forums if h.has_access(f, 'read')]
noindex = all([f.num_topics == 0 for f in forums])
return dict(forums=forums,
announcements=announcements,
@@ -124,7 +124,7 @@ class RootController(BaseController, DispatchIndex, FeedController):
for f in forums:
if forum_name == f.shortname:
current_forum = f
- if has_access(f, 'post')():
+ if has_access(f, 'post'):
my_forums.append(f)
return dict(forums=my_forums,
current_forum=current_forum,
@@ -143,7 +143,7 @@ class RootController(BaseController, DispatchIndex, FeedController):
discussion = model.Forum.query.get(
app_config_id=c.app.config._id,
shortname=forum)
- if discussion.deleted and not has_access(c.app, 'configure')():
+ if discussion.deleted and not has_access(c.app, 'configure'):
flash('This forum has been removed.')
redirect(six.ensure_text(request.referer or '/'))
require_access(discussion, 'post')
diff --git a/ForgeDiscussion/forgediscussion/forum_main.py b/ForgeDiscussion/forgediscussion/forum_main.py
index db84bf62a..a3bf469d1 100644
--- a/ForgeDiscussion/forgediscussion/forum_main.py
+++ b/ForgeDiscussion/forgediscussion/forum_main.py
@@ -96,7 +96,7 @@ class ForgeDiscussionApp(Application):
def has_access(self, user, topic):
f = DM.Forum.query.get(shortname=topic.replace('.', '/'),
app_config_id=self.config._id)
- return has_access(f, 'post', user=user)()
+ return has_access(f, 'post', user=user)
def handle_message(self, topic, message):
log.info('Message from %s (%s)',
@@ -167,7 +167,7 @@ class ForgeDiscussionApp(Application):
admin_url = c.project.url() + 'admin/' + \
self.config.options.mount_point + '/'
links = []
- if has_access(self, 'configure')():
+ if has_access(self, 'configure'):
links.append(SitemapEntry('Forums', admin_url + 'forums'))
links += super().admin_menu()
return links
@@ -181,8 +181,8 @@ class ForgeDiscussionApp(Application):
app_config_id=c.app.config._id,
parent_id=None, deleted=False))
for f in forums:
- if has_access(f, 'read')():
- if f.url() in request.url and h.has_access(f, 'moderate')():
+ if has_access(f, 'read'):
+ if f.url() in request.url and h.has_access(f, 'moderate'):
num_moderate = DM.ForumPost.query.find({
'discussion_id': f._id,
'status': {'$ne': 'ok'},
@@ -198,7 +198,7 @@ class ForgeDiscussionApp(Application):
url + c.forum.shortname if getattr(c, 'forum', None) and c.forum else url)
l.append(
SitemapEntry('Create Topic', url, ui_icon=g.icons['add']))
- if has_access(c.app, 'configure')():
+ if has_access(c.app, 'configure'):
l.append(SitemapEntry('Add Forum', c.app.url +
'new_forum', ui_icon=g.icons['conversation']))
l.append(SitemapEntry('Admin Forums', c.project.url() + 'admin/' +
@@ -307,7 +307,7 @@ class ForumAdminController(DefaultAdminController):
def forums(self, add_forum=None, **kw):
c.add_forum = W.add_forum
return dict(app=self.app,
- allow_config=has_access(self.app, 'configure')())
+ allow_config=has_access(self.app, 'configure'))
@h.vardec
@expose()
diff --git a/ForgeDiscussion/forgediscussion/templates/discussion_widgets/thread_header.html b/ForgeDiscussion/forgediscussion/templates/discussion_widgets/thread_header.html
index 0779ef7e6..843346015 100644
--- a/ForgeDiscussion/forgediscussion/templates/discussion_widgets/thread_header.html
+++ b/ForgeDiscussion/forgediscussion/templates/discussion_widgets/thread_header.html
@@ -25,7 +25,7 @@
{% endif %}
<div class="grid-5"><label>Updated:</label> {{lib.abbr_date(value.mod_date)}}</div>
-{% if show_moderate and h.has_access(value, 'moderate')() %}
+{% if show_moderate and h.has_access(value, 'moderate') %}
<div id="mod_thread_form" style="display: none; clear: both">
<h2>Moderate Thread</h2>
<div class="grid-19 fright">
@@ -35,7 +35,7 @@
</div>
{% endif %}
-{% if h.has_access(value, 'post')() %}
+{% if h.has_access(value, 'post') %}
<div id="tag_thread_holder" style="display:none" class="grid-18">
{{widgets.tag_post.display(value=value,submit_text='Save', action=value.url() + 'tag')}}
</div>
diff --git a/ForgeDiscussion/forgediscussion/templates/discussionforums/index.html b/ForgeDiscussion/forgediscussion/templates/discussionforums/index.html
index 74b052111..300e26bf7 100644
--- a/ForgeDiscussion/forgediscussion/templates/discussionforums/index.html
+++ b/ForgeDiscussion/forgediscussion/templates/discussionforums/index.html
@@ -35,7 +35,7 @@
{{ g.icons['feed'].render(href='feed.rss', extra_css='follow', title='Follow', rel='nofollow') }}
{% endblock %}
-{% if h.has_access(c.app, 'configure')() and (not hide_forum) %}
+{% if h.has_access(c.app, 'configure') and (not hide_forum) %}
{% block edit_box %}
<div id="add_forum_form"{% if hide_forum %} style="display:none"{% endif %} class="editbox">
{{c.add_forum.display(method='POST', action=c.project.url() + c.app.config.options.mount_point + '/add_forum_short', app=c.app)}}
@@ -90,7 +90,7 @@
{% endblock %}
{% block extra_js %}
- {% if h.has_access(c.app, 'configure')() %}
+ {% if h.has_access(c.app, 'configure') %}
<script type="text/javascript">
$(function() {
$("#add_forum").click(function(){
diff --git a/ForgeDiscussion/forgediscussion/templates/discussionforums/thread.html b/ForgeDiscussion/forgediscussion/templates/discussionforums/thread.html
index ab8d3f4c9..1e9270c45 100644
--- a/ForgeDiscussion/forgediscussion/templates/discussionforums/thread.html
+++ b/ForgeDiscussion/forgediscussion/templates/discussionforums/thread.html
@@ -28,7 +28,7 @@
{% endblock %}
{% block header %}{{'subject' in thread and thread.subject or '(no subject)'}}{% endblock %}
{% block actions %}
- {% if show_moderate and h.has_access(thread, 'moderate')() %}
+ {% if show_moderate and h.has_access(thread, 'moderate') %}
{{ g.icons['edit'].render(id='mod_thread_link') }}
{% endif %}
{# {{ g.icons['tag'].render(title='Label This', extra_css='thread_tag') }} these labels aren't used anywhere ... #}
diff --git a/ForgeFiles/forgefiles/templates/files.html b/ForgeFiles/forgefiles/templates/files.html
index 064be02eb..d1bc5b8db 100755
--- a/ForgeFiles/forgefiles/templates/files.html
+++ b/ForgeFiles/forgefiles/templates/files.html
@@ -58,7 +58,7 @@ Files {% if folder_object %} - {{path_links(folder_path.split('/'), urls)}} {% e
<div class="main_div">
- {% if h.has_access(c.project, 'admin')() %}
+ {% if h.has_access(c.project, 'admin') %}
<div class="upload_buttons" >
<a {% if folder_object %} href="{{c.app.url}}get_parent_for_create_folder?folder_id={{folder_object._id}}" {% else %} href="{{c.app.url}}get_parent_for_create_folder" {% endif %} class="admin_modal">
<button id="create_folder" type= "button" class="btn btn-info btn-lg" {% if folder_object.disabled %} disabled {% endif %} >Create Folder</button>
@@ -77,7 +77,7 @@ Files {% if folder_object %} - {{path_links(folder_path.split('/'), urls)}} {% e
<col class="date_col">
<col class="size_col">
<col class="author_col">
- {% if h.has_access(c.project, 'admin')() %}
+ {% if h.has_access(c.project, 'admin') %}
<col class="actions_col">
{% endif %}
</colgroup>
@@ -87,7 +87,7 @@ Files {% if folder_object %} - {{path_links(folder_path.split('/'), urls)}} {% e
<th>Date</th>
<th>Size</th>
<th>Author</th>
- {% if h.has_access(c.project, 'admin')() %}
+ {% if h.has_access(c.project, 'admin') %}
<th>Actions</th>
{% endif %}
@@ -108,7 +108,7 @@ Files {% if folder_object %} - {{path_links(folder_path.split('/'), urls)}} {% e
<td>{{lib.abbr_date(folder.created_date)}}</td>
<td></td>
<td title="{{folder.author.display_name}}">{{folder.author.display_name|truncate(30)}}</td>
- {% if h.has_access(c.project, 'admin')() %}
+ {% if h.has_access(c.project, 'admin') %}
<td>
<div class="folder_actions">
<a data-toggle="tooltip" {% if not folder.disabled %} title="Publish" class="admin_modal" href= "{{c.app.url}}get_publishable_folder?folder_id={{folder._id}}" {% else %} class="disable_object" {% endif %} ><i class= "fa fa-share" {% if folder.disabled %} onClick="return false"{% endif %} ></i></a>
@@ -141,7 +141,7 @@ Files {% if folder_object %} - {{path_links(folder_path.split('/'), urls)}} {% e
<td>{{lib.abbr_date(file.created_date)}}</td>
<td>{{h.do_filesizeformat(file.length)}}</td>
<td title="{{file.author.display_name}}">{{file.author.display_name|truncate(30)}}</td>
- {% if h.has_access(c.project, 'admin')() %}
+ {% if h.has_access(c.project, 'admin') %}
<td>
<div class="file_actions">
<a data-toggle="tooltip" {% if not file.disabled %} href= "#" {% if not file.linked_to_download%} title="Link" {% else %} title="Unlink" {% endif %} class="link_icon confirm-link-file" data-file-id="{{ file._id }}" data-linked-download="{{ file.linked_to_download }}" data-linked-url="{{c.app.url}}link_file" {% else %} class="disable_object" {% endif %} ><i class= "fa fa-link" {% if file.linked_to_download %} id="disable_link" {% endif %}></i></a>
diff --git a/ForgeGit/forgegit/templates/git/index.html b/ForgeGit/forgegit/templates/git/index.html
index 6d2c691cf..e83a1f152 100644
--- a/ForgeGit/forgegit/templates/git/index.html
+++ b/ForgeGit/forgegit/templates/git/index.html
@@ -36,7 +36,7 @@
<a href="log?page=1">More</a>
{% endif %}
{% elif is_empty %}
- {% if h.has_access(c.app, 'write')() %}
+ {% if h.has_access(c.app, 'write') %}
<div class="message warning scm-learn-basics">
<div class="content">
<img src="{{g.app_static('images/git.png')}}" style="float:left">
@@ -82,7 +82,7 @@ git push -u origin master</pre>
<p><b>No (more) commits</b></p>
{% endif %}
{% elif c.app.repo.status == 'ready' %}
- {% if h.has_access(c.app, 'write')() %}
+ {% if h.has_access(c.app, 'write') %}
<p>Browsing this repo on the web is unavailable currently. To fix, please try a <a href="{{c.app.url}}refresh">Repository Refresh</a>. Committing and pulling code should still work.</p>
{% else %}
<p><b>No (more) commits</b></p>
diff --git a/ForgeSVN/forgesvn/templates/svn/index.html b/ForgeSVN/forgesvn/templates/svn/index.html
index 9e0d44890..a321b2033 100644
--- a/ForgeSVN/forgesvn/templates/svn/index.html
+++ b/ForgeSVN/forgesvn/templates/svn/index.html
@@ -34,7 +34,7 @@
<a href="{{c.app.url}}log?page=1">More</a>
{% endif %}
{% elif is_empty %}
- {% if h.has_access(c.app, 'write')() %}
+ {% if h.has_access(c.app, 'write') %}
<div class="message warning scm-learn-basics">
<div class="content">
<img src="{{g.app_static('images/svn.png')}}" style="float:left">
@@ -93,7 +93,7 @@ svn import {{c.app.repo.clone_url_first(anon=False, username=c.user.username)}}
<p><b>No (more) commits</b></p>
{% endif %}
{% elif c.app.repo.status == 'ready' %}
- {% if h.has_access(c.app, 'write')() %}
+ {% if h.has_access(c.app, 'write') %}
<p>Browsing this repo on the web is unavailable currently. To fix, please try a <a href="{{c.app.url}}refresh">Repository Refresh</a>. Committing and pulling code should still work.</p>
{% else %}
<p><b>No (more) commits</b></p>
diff --git a/ForgeTracker/forgetracker/templates/tracker/search.html b/ForgeTracker/forgetracker/templates/tracker/search.html
index 8d43892e9..d56676661 100644
--- a/ForgeTracker/forgetracker/templates/tracker/search.html
+++ b/ForgeTracker/forgetracker/templates/tracker/search.html
@@ -49,7 +49,7 @@
{% endif %}
{% endblock %}
-{% if q and h.has_access(c.app, 'save_searches')() %}
+{% if q and h.has_access(c.app, 'save_searches') %}
{% block edit_box %}
<div class="editbox" style="display:none">
{{c.bin_form.display(
@@ -79,7 +79,7 @@
{% endif %}
<form method="GET">
<input type="text" name="q" value="{{q}}" style="width: 280px; float: left; margin-right: .5em" id="bin_terms">
- {% if bin and h.has_access(c.app, 'save_searches')() %}
+ {% if bin and h.has_access(c.app, 'save_searches') %}
<input type="button" value="Update Search" id="save_search"/>
{% endif %}
<input type="submit" value="Search"/>
@@ -108,7 +108,7 @@
{% block extra_js %}
-{% if q and h.has_access(c.app, 'save_searches')() %}
+{% if q and h.has_access(c.app, 'save_searches') %}
<script type="text/javascript">
$('#save_search').click(function(){
$('div.editbox input[name=summary]').val($('#bin_summary').val());
diff --git a/ForgeTracker/forgetracker/templates/tracker/ticket.html b/ForgeTracker/forgetracker/templates/tracker/ticket.html
index 8af471d70..f776e70f1 100644
--- a/ForgeTracker/forgetracker/templates/tracker/ticket.html
+++ b/ForgeTracker/forgetracker/templates/tracker/ticket.html
@@ -181,7 +181,7 @@
{% endblock %}
{% block extra_js %}
- {% if h.has_access(ticket, 'update')() %}
+ {% if h.has_access(ticket, 'update') %}
<script type="text/javascript">
// Sometimes IE11 is not firing jQuery's "$(document).ready" callbacks
$(window).on('load', function () {
diff --git a/ForgeTracker/forgetracker/tests/unit/test_ticket_model.py b/ForgeTracker/forgetracker/tests/unit/test_ticket_model.py
index 9ea0c37a0..d62b6bf19 100644
--- a/ForgeTracker/forgetracker/tests/unit/test_ticket_model.py
+++ b/ForgeTracker/forgetracker/tests/unit/test_ticket_model.py
@@ -182,38 +182,38 @@ class TestTicketModel(TrackerTestWithModel):
ACE.allow(role_creator, 'read'),
ACE.allow(role_creator, 'unmoderated_post'),
DENY_ALL]
- assert has_access(t, 'read', user=admin)()
- assert has_access(t, 'create', user=admin)()
- assert has_access(t, 'update', user=admin)()
- assert has_access(t, 'read', user=creator)()
- assert has_access(t, 'post', user=creator)()
- assert has_access(t, 'unmoderated_post', user=creator)()
- assert has_access(t, 'create', user=creator)()
- assert not has_access(t, 'update', user=creator)()
- assert has_access(t, 'read', user=developer)()
- assert has_access(t, 'create', user=developer)()
- assert has_access(t, 'update', user=developer)()
- assert not has_access(t, 'read', user=observer)()
- assert not has_access(t, 'create', user=observer)()
- assert not has_access(t, 'update', user=observer)()
- assert not has_access(t, 'read', user=anon)()
- assert not has_access(t, 'create', user=anon)()
- assert not has_access(t, 'update', user=anon)()
+ assert has_access(t, 'read', user=admin)
+ assert has_access(t, 'create', user=admin)
+ assert has_access(t, 'update', user=admin)
+ assert has_access(t, 'read', user=creator)
+ assert has_access(t, 'post', user=creator)
+ assert has_access(t, 'unmoderated_post', user=creator)
+ assert has_access(t, 'create', user=creator)
+ assert not has_access(t, 'update', user=creator)
+ assert has_access(t, 'read', user=developer)
+ assert has_access(t, 'create', user=developer)
+ assert has_access(t, 'update', user=developer)
+ assert not has_access(t, 'read', user=observer)
+ assert not has_access(t, 'create', user=observer)
+ assert not has_access(t, 'update', user=observer)
+ assert not has_access(t, 'read', user=anon)
+ assert not has_access(t, 'create', user=anon)
+ assert not has_access(t, 'update', user=anon)
t.private = False
assert t.acl == []
- assert has_access(t, 'read', user=admin)()
- assert has_access(t, 'create', user=admin)()
- assert has_access(t, 'update', user=admin)()
- assert has_access(t, 'read', user=developer)()
- assert has_access(t, 'create', user=developer)()
- assert has_access(t, 'update', user=developer)()
- assert has_access(t, 'read', user=creator)()
- assert has_access(t, 'unmoderated_post', user=creator)()
- assert has_access(t, 'create', user=creator)()
- assert not has_access(t, 'update', user=creator)()
- assert has_access(t, 'read', user=observer)()
- assert has_access(t, 'read', user=anon)()
+ assert has_access(t, 'read', user=admin)
+ assert has_access(t, 'create', user=admin)
+ assert has_access(t, 'update', user=admin)
+ assert has_access(t, 'read', user=developer)
+ assert has_access(t, 'create', user=developer)
+ assert has_access(t, 'update', user=developer)
+ assert has_access(t, 'read', user=creator)
+ assert has_access(t, 'unmoderated_post', user=creator)
+ assert has_access(t, 'create', user=creator)
+ assert not has_access(t, 'update', user=creator)
+ assert has_access(t, 'read', user=observer)
+ assert has_access(t, 'read', user=anon)
def test_feed(self):
t = Ticket(
diff --git a/ForgeTracker/forgetracker/tracker_main.py b/ForgeTracker/forgetracker/tracker_main.py
index ad6ab614c..6bef6c747 100644
--- a/ForgeTracker/forgetracker/tracker_main.py
+++ b/ForgeTracker/forgetracker/tracker_main.py
@@ -358,7 +358,7 @@ class ForgeTrackerApp(Application):
className='milestones'))
links = []
- if has_access(self, 'create')():
+ if has_access(self, 'create'):
links.append(SitemapEntry('Create Ticket',
self.config.url() + 'new/', ui_icon=g.icons['add']))
else:
@@ -368,7 +368,7 @@ class ForgeTrackerApp(Application):
extra_html_attrs=extra_attrs,
className='sidebar-disabled',
ui_icon=g.icons['add']))
- if has_access(self, 'configure')():
+ if has_access(self, 'configure'):
links.append(SitemapEntry('Edit Milestones', self.config.url()
+ 'milestones', ui_icon=g.icons['table']))
links.append(SitemapEntry('Edit Searches', c.project.url() + 'admin/' +
@@ -381,7 +381,7 @@ class ForgeTrackerApp(Application):
'status': 'pending',
'deleted': False,
}).count()
- if pending_mod_count and has_access(discussion, 'moderate')():
+ if pending_mod_count and has_access(discussion, 'moderate'):
links.append(
SitemapEntry(
'Moderate', discussion.url() + 'moderate', ui_icon=g.icons['moderate'],
@@ -747,8 +747,8 @@ class RootController(BaseController, FeedController):
result[
'sortable_custom_fields'] = c.app.globals.sortable_custom_fields_shown_in_search()
result['subscribed'] = M.Mailbox.subscribed()
- result['allow_edit'] = has_access(c.app, 'update')()
- result['allow_move'] = has_access(c.app, 'admin')()
+ result['allow_edit'] = has_access(c.app, 'update')
+ result['allow_move'] = has_access(c.app, 'admin')
result['help_msg'] = c.app.config.options.get(
'TicketHelpSearch', '').strip()
result['url_q'] = c.app.globals.not_closed_query
@@ -852,8 +852,8 @@ class RootController(BaseController, FeedController):
result['columns'] = columns or solr_columns()
result[
'sortable_custom_fields'] = c.app.globals.sortable_custom_fields_shown_in_search()
- result['allow_edit'] = has_access(c.app, 'update')()
- result['allow_move'] = has_access(c.app, 'admin')()
+ result['allow_edit'] = has_access(c.app, 'update')
+ result['allow_move'] = has_access(c.app, 'admin')
result['bin'] = bin
result['help_msg'] = c.app.config.options.get(
'TicketHelpSearch', '').strip()
@@ -1030,7 +1030,7 @@ class RootController(BaseController, FeedController):
if tracker == c.app.config:
flash('Ticket already in a selected tracker', 'info')
redirect('move/' + search)
- if not has_access(tracker, 'admin')():
+ if not has_access(tracker, 'admin'):
flash('You should have admin access to destination tracker',
'error')
redirect('move/' + search)
@@ -1391,7 +1391,7 @@ class TicketController(BaseController, FeedController):
h1_text = (self.ticket.summary or default_title)
h1_text = truncate(None, h1_text, 80, end="...", leeway=3)
return dict(ticket=self.ticket, globals=c.app.globals,
- allow_edit=has_access(self.ticket, 'update')(),
+ allow_edit=has_access(self.ticket, 'update'),
subscribed=subscribed, voting_enabled=voting_enabled,
page=page, limit=limit, count=post_count, h1_text=h1_text)
else:
@@ -1624,7 +1624,7 @@ class TicketController(BaseController, FeedController):
flash('Ticket already in a selected tracker', 'info')
redirect(six.ensure_text(request.referer or '/'))
- if not has_access(tracker, 'admin')():
+ if not has_access(tracker, 'admin'):
flash('You should have admin access to destination tracker',
'error')
redirect(six.ensure_text(request.referer or '/'))
@@ -1978,8 +1978,8 @@ class MilestoneController(BaseController):
result['columns'] = columns or mongo_columns()
result[
'sortable_custom_fields'] = c.app.globals.sortable_custom_fields_shown_in_search()
- result['allow_edit'] = has_access(c.app, 'update')()
- result['allow_move'] = has_access(c.app, 'admin')()
+ result['allow_edit'] = has_access(c.app, 'update')
+ result['allow_move'] = has_access(c.app, 'admin')
result['help_msg'] = c.app.config.options.get(
'TicketHelpSearch', '').strip()
result['deleted'] = deleted
diff --git a/ForgeWiki/forgewiki/templates/wiki/page_edit.html b/ForgeWiki/forgewiki/templates/wiki/page_edit.html
index b14caba76..efef31149 100644
--- a/ForgeWiki/forgewiki/templates/wiki/page_edit.html
+++ b/ForgeWiki/forgewiki/templates/wiki/page_edit.html
@@ -33,7 +33,7 @@
{% block actions %}
{{ g.icons['eye'].render(href='.', title='View Page') }}
- {% if page_exists and h.has_access(page, 'delete')() %}
+ {% if page_exists and h.has_access(page, 'delete') %}
{{ g.icons['delete'].render(extra_css='post-link') }}
<div class="confirmation_dialog" style="display:none">
{{ g.icons['close'].render(tag='a', extra_css='close') }}
@@ -79,8 +79,8 @@
{{lib.csrf_token()}}
</form>
<div class="grid-19">
- {{c.attachment_list.display(attachments=page.attachments, edit_mode=page_exists and h.has_access(page, 'edit')())}}
- {% if page_exists and h.has_access(page, 'edit')() %}
+ {{c.attachment_list.display(attachments=page.attachments, edit_mode=page_exists and h.has_access(page, 'edit'))}}
+ {% if page_exists and h.has_access(page, 'edit') %}
{{c.attachment_add.display(name='file_info')}}
{% endif %}
</div>
diff --git a/ForgeWiki/forgewiki/templates/wiki/page_history.html b/ForgeWiki/forgewiki/templates/wiki/page_history.html
index da255c5dd..8eff095f8 100644
--- a/ForgeWiki/forgewiki/templates/wiki/page_history.html
+++ b/ForgeWiki/forgewiki/templates/wiki/page_history.html
@@ -62,7 +62,7 @@
<td><input name="v1" type="radio" value="{{p.version}}"/></td>
<td><input name="v2" type="radio" value="{{p.version}}"/></td>
<td class="tright">
- {% if not loop.first and h.has_access(p, 'edit')() %}
+ {% if not loop.first and h.has_access(p, 'edit') %}
{{ g.icons['revert'].render(
extra_css='post-link',
title='Revert to version {}'.format(p.version),
diff --git a/ForgeWiki/forgewiki/templates/wiki/page_view.html b/ForgeWiki/forgewiki/templates/wiki/page_view.html
index 681ee4f11..22f7d5542 100644
--- a/ForgeWiki/forgewiki/templates/wiki/page_view.html
+++ b/ForgeWiki/forgewiki/templates/wiki/page_view.html
@@ -55,7 +55,7 @@
<a href="{{ tg.config.get('auth.login_url', '/auth/') }}">Log in to Edit</a>
{% endif %}
{{ g.icons['history'].render(href='history',rel='nofollow') }}
- {% elif h.has_access(page, 'delete')() %}
+ {% elif h.has_access(page, 'delete') %}
{{ g.icons['undelete'].render(extra_css='post-link') }}
<div class="confirmation_dialog" style="display:none">
{{ g.icons['close'].render(tag='a', extra_css='close') }}
@@ -119,7 +119,7 @@
<hr style="margin-top: 1em; margin-bottom: 2em; clear:both;">
{{lib.related_artifacts(page, c.user)}}
{% if page.discussion_thread and c.app.show_discussion %}
- {% if h.has_access(page, 'post')() or page.discussion_thread.num_replies > 0 %}
+ {% if h.has_access(page, 'post') or page.discussion_thread.num_replies > 0 %}
<div id="discussion_holder"><h2>Discussion</h2>
{% set thread = page.discussion_thread %}
<div>{{ c.thread.display(value=thread,page=pagenum,limit=limit,count=count) }}</div>
diff --git a/ForgeWiki/forgewiki/wiki_main.py b/ForgeWiki/forgewiki/wiki_main.py
index 8876cd8eb..f4571e137 100644
--- a/ForgeWiki/forgewiki/wiki_main.py
+++ b/ForgeWiki/forgewiki/wiki_main.py
@@ -271,7 +271,7 @@ The wiki uses [Markdown](%s) syntax.
'status': 'pending',
'deleted': False
}).count() if discussion else 0
- if pending_mod_count and h.has_access(discussion, 'moderate')():
+ if pending_mod_count and h.has_access(discussion, 'moderate'):
links.append(
SitemapEntry(
'Moderate', discussion.url() + 'moderate', ui_icon=g.icons['moderate'],
@@ -470,7 +470,7 @@ class RootController(BaseController, DispatchIndex, FeedController):
pages = []
uv_pages = []
criteria = dict(app_config_id=c.app.config._id)
- can_delete = has_access(c.app, 'delete')()
+ can_delete = has_access(c.app, 'delete')
show_deleted = show_deleted and can_delete
if not can_delete:
criteria['deleted'] = False
@@ -874,7 +874,7 @@ class RootRestController(BaseController, AppRestControllerMixin):
pages = WM.Page.query.find(
dict(app_config_id=c.app.config._id, deleted=False))
for page in pages:
- if has_access(page, 'read')():
+ if has_access(page, 'read'):
page_titles.append(page.title)
return dict(pages=page_titles)
@@ -939,13 +939,13 @@ class WikiAdminController(DefaultAdminController):
def home(self):
return dict(app=self.app,
home=self.app.root_page_name,
- allow_config=has_access(self.app, 'configure')())
+ allow_config=has_access(self.app, 'configure'))
@without_trailing_slash
@expose('jinja:forgewiki:templates/wiki/admin_options.html')
def options(self):
return dict(app=self.app,
- allow_config=has_access(self.app, 'configure')())
+ allow_config=has_access(self.app, 'configure'))
@without_trailing_slash
@expose()