From 2972e59b8808655b42f9225a72dfbbb906addfa9 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Thu, 19 Mar 2020 14:58:31 +0100
Subject: [PATCH] modif_flyingteam permission implemented

---
 smash/web/templates/sidebar.html          |  2 ++
 smash/web/tests/view/test_flying_teams.py | 14 ++++++++++++++
 smash/web/views/flying_teams.py           |  7 ++++++-
 3 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/smash/web/templates/sidebar.html b/smash/web/templates/sidebar.html
index f623b037..e96f912d 100644
--- a/smash/web/templates/sidebar.html
+++ b/smash/web/templates/sidebar.html
@@ -48,7 +48,9 @@
             {% if "change_appointmenttype" in permissions %}
                 <li data-desc="appointment_types"><a href="{% url 'web.views.appointment_types' %}">Appointment Types</a></li>
             {% endif %}
+            {% if "change_flyingteam" in permissions %}
                 <li data-desc="flying_teams"><a href="{% url 'web.views.equipment_and_rooms.flying_teams' %}">Flying teams</a></li>
+            {% endif %}
                 <li data-desc="kit_requests"><a href="{% url 'web.views.kit_requests' %}">Kit requests</a></li>
                 <li data-desc="rooms"><a href="{% url 'web.views.equipment_and_rooms.rooms' %}">Rooms</a></li>
         </ul>
diff --git a/smash/web/tests/view/test_flying_teams.py b/smash/web/tests/view/test_flying_teams.py
index 32cfe22f..e282c3e9 100644
--- a/smash/web/tests/view/test_flying_teams.py
+++ b/smash/web/tests/view/test_flying_teams.py
@@ -17,6 +17,7 @@ class FlyingTeamTests(LoggedInTestCase):
         return 'Random' + ''.join(random.choice(letters) for x in range(15))
 
     def test_flying_team_requests(self):
+        self.login_as_admin()
         pages = [
             'web.views.equipment_and_rooms.flying_teams',
             'web.views.equipment_and_rooms.flying_teams_add',
@@ -26,7 +27,18 @@ class FlyingTeamTests(LoggedInTestCase):
             response = self.client.get(reverse(page))
             self.assertEqual(response.status_code, 200)
 
+    def test_flying_team_requests_without_permission(self):
+        pages = [
+            'web.views.equipment_and_rooms.flying_teams',
+            'web.views.equipment_and_rooms.flying_teams_add',
+        ]
+
+        for page in pages:
+            response = self.client.get(reverse(page))
+            self.assertEqual(response.status_code, 302)
+
     def test_flying_team_add(self):
+        self.login_as_admin()
         page = reverse('web.views.equipment_and_rooms.flying_teams_add')
         data = {
             'place': self.generate_more_or_less_random_name()
@@ -38,6 +50,7 @@ class FlyingTeamTests(LoggedInTestCase):
         self.assertEqual(len(freshly_created), 1)
 
     def test_flying_team_edit(self):
+        self.login_as_admin()
         flying_team = create_flying_team()
         page = reverse('web.views.equipment_and_rooms.flying_teams_edit',
                        kwargs={'flying_team_id': str(flying_team.id)})
@@ -51,6 +64,7 @@ class FlyingTeamTests(LoggedInTestCase):
         self.assertEqual(freshly_edited.place, data["place"])
 
     def test_flying_team_edit_request(self):
+        self.login_as_admin()
         flying_team = create_flying_team()
         page = reverse('web.views.equipment_and_rooms.flying_teams_edit',
                        kwargs={'flying_team_id': str(flying_team.id)})
diff --git a/smash/web/views/flying_teams.py b/smash/web/views/flying_teams.py
index dc6c4752..f4e3cb78 100644
--- a/smash/web/views/flying_teams.py
+++ b/smash/web/views/flying_teams.py
@@ -1,11 +1,13 @@
 # coding=utf-8
 from django.shortcuts import redirect, get_object_or_404
 
+from web.decorators import PermissionDecorator
 from . import wrap_response
-from ..models import FlyingTeam
 from ..forms.forms import FlyingTeamAddForm, FlyingTeamEditForm
+from ..models import FlyingTeam
 
 
+@PermissionDecorator('change_flyingteam', 'item')
 def flying_teams(request):
     flying_team_list = FlyingTeam.objects.order_by('-place')
     context = {
@@ -16,6 +18,8 @@ def flying_teams(request):
                          "equipment_and_rooms/flying_teams/index.html",
                          context)
 
+
+@PermissionDecorator('change_flyingteam', 'item')
 def flying_teams_add(request):
     if request.method == 'POST':
         form = FlyingTeamAddForm(request.POST)
@@ -28,6 +32,7 @@ def flying_teams_add(request):
     return wrap_response(request, 'equipment_and_rooms/flying_teams/add.html', {'form': form})
 
 
+@PermissionDecorator('change_flyingteam', 'item')
 def flying_teams_edit(request, flying_team_id):
     the_flying_team = get_object_or_404(FlyingTeam, id=flying_team_id)
     if request.method == 'POST':
-- 
GitLab