Skip to content

Commit a316336

Browse files
zaryapre-commit-ci[bot]tykling
authored
Added tasker permission (#1823)
* Added tasker to permission set and secured the create/edit task views for the tasker permission * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Removed unused import * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Fix permission checking * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Remove unused mixin --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Thomas Steen Rasmussen <tykling@bornhack.org>
1 parent fa7f9e0 commit a316336

6 files changed

Lines changed: 19 additions & 5 deletions

File tree

src/backoffice/templates/includes/permissions_explainer.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
<dd>The team infopager permission grants access to manage infopage sections for the team. Codename <b>camps.{{ team.slug | default:"TEAM" }}_team_infopager</b>.</dd>
1414
<dt>pos</dt>
1515
<dd>The team pos permission grants access to submit point-of-sale reports on behalf of the team. Codename <b>camps.{{ team.slug | default:"TEAM" }}_team_pos</b>.</dd>
16+
<dt>tasker</dt>
17+
<dd>The team tasker permission grants access to manage tasks on behalf of the team. Codename <b>camps.{{ team.slug | default:"TEAM" }}_team_tasker</b>.</dd>
1618
</p>
1719
<p>
1820
<a href="{% url 'backoffice:index' camp_slug=camp.slug %}" class="btn btn-secondary"><i class="fas fa-undo"></i> Backoffice</a>

src/bornhack/settings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,4 +266,5 @@
266266
"facilitator": "Team facilitator - facilities management",
267267
"infopager": "Team infopager - infopage management",
268268
"pos": "Team Pos - Point-of-sale report submission",
269+
"tasker": "Team Tasker - task management",
269270
}

src/teams/models.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,10 @@ def pos_permission_set(self):
328328
def infopager_permission_set(self):
329329
return f"camps.{self.slug}_team_infopager"
330330

331+
@property
332+
def tasker_permission_set(self):
333+
return f"camps.{self.slug}_team_tasker"
334+
331335

332336
class TeamMember(ExportModelOperationsMixin("team_member"), CampRelatedModel):
333337
user = models.ForeignKey(

src/teams/templates/team_tasks.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ <h4>Tasks</h4>
1616
<div class="card-body">
1717
<p>
1818
The {{ team.name }} Team is responsible for the following tasks.
19-
{% if request.user in team.leads.all %}
19+
{% if team.tasker_permission_set in perms %}
2020
<a href="{% url 'teams:task_create' camp_slug=camp.slug team_slug=team.slug %}" class="btn btn-primary"><i class="fas fa-plus"></i> Create Task</a>
2121
{% endif %}
2222
</p>
@@ -44,7 +44,7 @@ <h4>Tasks</h4>
4444
<td>{{ task.completed }}</td>
4545
<td>
4646
<a href="{% url 'teams:task_detail' camp_slug=camp.slug team_slug=team.slug slug=task.slug %}" class="btn {% if task.completed %}btn-secondary{% else %}btn-primary{% endif %}" btn-sm"><i class="fas fa-search"></i> Details</a>
47-
{% if request.user in team.leads.all %}
47+
{% if team.tasker_permission_set in perms %}
4848
<a href="{% url 'teams:task_update' camp_slug=camp.slug team_slug=team.slug slug=task.slug %}" class="btn {% if task.completed %}btn-secondary{% else %}btn-primary{% endif %}" btn-sm"><i class="fas fa-edit"></i> Edit Task</a>
4949
{% endif %}
5050
</td>

src/teams/views/mixins.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,10 @@ class TeamInfopagerPermissionMixin(RaisePermissionRequiredMixin):
6060

6161
def get_permission_required(self):
6262
return [self.team.infopager_permission_set]
63+
64+
65+
class TeamTaskerPermissionMixin(RaisePermissionRequiredMixin):
66+
"""Permission mixin for views restricted to users with tasker permission for self.team"""
67+
68+
def get_permission_required(self):
69+
return [self.team.tasker_permission_set]

src/teams/views/tasks.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
from ..models import Team
1212
from ..models import TeamMember
1313
from ..models import TeamTask
14-
from .mixins import EnsureTeamLeadMixin
1514
from .mixins import TeamViewMixin
15+
from .mixins import TeamTaskerPermissionMixin
1616
from camps.mixins import CampViewMixin
1717

1818

@@ -74,7 +74,7 @@ def __init__(self, **kwargs):
7474
class TaskCreateView(
7575
LoginRequiredMixin,
7676
TeamViewMixin,
77-
EnsureTeamLeadMixin,
77+
TeamTaskerPermissionMixin,
7878
CreateView,
7979
):
8080
model = TeamTask
@@ -103,7 +103,7 @@ def get_success_url(self):
103103
class TaskUpdateView(
104104
LoginRequiredMixin,
105105
TeamViewMixin,
106-
EnsureTeamLeadMixin,
106+
TeamTaskerPermissionMixin,
107107
UpdateView,
108108
):
109109
model = TeamTask

0 commit comments

Comments
 (0)