From 936a5213f83d6d4c339946d00c7f9be96eb74e15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C4=93teris=20Caune?= Date: Thu, 22 Jul 2021 17:16:52 +0300 Subject: [PATCH] Switch from Member.rw to Member.role as the source of truth --- hc/accounts/models.py | 4 ++++ hc/accounts/tests/test_profile.py | 2 +- hc/accounts/tests/test_project.py | 4 ++-- hc/accounts/views.py | 2 +- hc/front/tests/test_add_apprise.py | 2 +- hc/front/tests/test_add_call.py | 2 +- hc/front/tests/test_add_check.py | 2 +- hc/front/tests/test_add_discord.py | 2 +- hc/front/tests/test_add_discord_complete.py | 8 ++++++-- hc/front/tests/test_add_email.py | 2 +- hc/front/tests/test_add_linenotify.py | 2 +- hc/front/tests/test_add_linenotify_complete.py | 8 ++++++-- hc/front/tests/test_add_matrix.py | 2 +- hc/front/tests/test_add_mattermost.py | 2 +- hc/front/tests/test_add_msteams.py | 2 +- hc/front/tests/test_add_opsgenie.py | 2 +- hc/front/tests/test_add_pagerduty_complete.py | 2 +- hc/front/tests/test_add_pagertree.py | 2 +- hc/front/tests/test_add_pd.py | 2 +- hc/front/tests/test_add_pushbullet.py | 2 +- hc/front/tests/test_add_pushbullet_complete.py | 6 +++++- hc/front/tests/test_add_pushover.py | 2 +- hc/front/tests/test_add_shell.py | 2 +- hc/front/tests/test_add_signal.py | 2 +- hc/front/tests/test_add_slack.py | 2 +- hc/front/tests/test_add_slack_btn.py | 2 +- hc/front/tests/test_add_slack_complete.py | 6 +++++- hc/front/tests/test_add_sms.py | 2 +- hc/front/tests/test_add_spike.py | 2 +- hc/front/tests/test_add_telegram.py | 2 +- hc/front/tests/test_add_trello.py | 4 +--- hc/front/tests/test_add_victorops.py | 2 +- hc/front/tests/test_add_webhook.py | 2 +- hc/front/tests/test_add_whatsapp.py | 2 +- hc/front/tests/test_add_zulip.py | 2 +- hc/front/tests/test_channels.py | 2 +- hc/front/tests/test_copy.py | 2 +- hc/front/tests/test_details.py | 4 ++-- hc/front/tests/test_edit_webhook.py | 2 +- hc/front/tests/test_filtering_rules.py | 2 +- hc/front/tests/test_my_checks.py | 2 +- hc/front/tests/test_pause.py | 2 +- hc/front/tests/test_remove_channel.py | 2 +- hc/front/tests/test_remove_check.py | 2 +- hc/front/tests/test_resume.py | 2 +- hc/front/tests/test_status_single.py | 2 +- hc/front/tests/test_switch_channel.py | 2 +- hc/front/tests/test_transfer.py | 2 +- hc/front/tests/test_update_channel.py | 2 +- hc/front/tests/test_update_channel_name.py | 2 +- hc/front/tests/test_update_name.py | 2 +- hc/front/tests/test_update_timeout.py | 2 +- hc/front/views.py | 6 +++--- templates/accounts/profile.html | 8 +------- templates/accounts/project.html | 8 +------- 55 files changed, 80 insertions(+), 74 deletions(-) diff --git a/hc/accounts/models.py b/hc/accounts/models.py index ff2b8877..f68e3937 100644 --- a/hc/accounts/models.py +++ b/hc/accounts/models.py @@ -440,6 +440,10 @@ class Member(models.Model): def can_accept(self): return self.user.profile.can_accept(self.project) + @property + def is_rw(self): + return self.role in (Member.Role.REGULAR,) + class Credential(models.Model): code = models.UUIDField(default=uuid.uuid4, unique=True) diff --git a/hc/accounts/tests/test_profile.py b/hc/accounts/tests/test_profile.py index fb612899..e5c6ee75 100644 --- a/hc/accounts/tests/test_profile.py +++ b/hc/accounts/tests/test_profile.py @@ -37,7 +37,7 @@ class ProfileTestCase(BaseTestCase): self.assertContains(r, "Member") def test_it_shows_readonly_project_membership(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/accounts/tests/test_project.py b/hc/accounts/tests/test_project.py index 89f739e8..46e5b3ff 100644 --- a/hc/accounts/tests/test_project.py +++ b/hc/accounts/tests/test_project.py @@ -230,7 +230,7 @@ class ProjectTestCase(BaseTestCase): self.assertContains(r, "bob@example.org") def test_it_checks_rw_access_when_updating_project_name(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") @@ -240,7 +240,7 @@ class ProjectTestCase(BaseTestCase): self.assertEqual(r.status_code, 403) def test_it_hides_actions_for_readonly_users(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/accounts/views.py b/hc/accounts/views.py index 92625088..7cccb0ff 100644 --- a/hc/accounts/views.py +++ b/hc/accounts/views.py @@ -287,7 +287,7 @@ def project(request, code): rw = True else: membership = get_object_or_404(Member, project=project, user=request.user) - rw = membership.rw + rw = membership.is_rw ctx = { "page": "project", diff --git a/hc/front/tests/test_add_apprise.py b/hc/front/tests/test_add_apprise.py index 5eabb164..49bc9db5 100644 --- a/hc/front/tests/test_add_apprise.py +++ b/hc/front/tests/test_add_apprise.py @@ -33,7 +33,7 @@ class AddAppriseTestCase(BaseTestCase): self.assertEqual(r.status_code, 404) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_add_call.py b/hc/front/tests/test_add_call.py index 4c428ba5..a1685667 100644 --- a/hc/front/tests/test_add_call.py +++ b/hc/front/tests/test_add_call.py @@ -59,7 +59,7 @@ class AddCallTestCase(BaseTestCase): self.assertEqual(r.status_code, 404) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_add_check.py b/hc/front/tests/test_add_check.py index 7bf1ff43..0228902d 100644 --- a/hc/front/tests/test_add_check.py +++ b/hc/front/tests/test_add_check.py @@ -33,7 +33,7 @@ class AddCheckTestCase(BaseTestCase): self.assertEqual(r.status_code, 405) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_add_discord.py b/hc/front/tests/test_add_discord.py index e128f3d3..fd34bdb4 100644 --- a/hc/front/tests/test_add_discord.py +++ b/hc/front/tests/test_add_discord.py @@ -24,7 +24,7 @@ class AddDiscordTestCase(BaseTestCase): self.assertEqual(r.status_code, 404) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_add_discord_complete.py b/hc/front/tests/test_add_discord_complete.py index b4a0bbab..ffdabde8 100644 --- a/hc/front/tests/test_add_discord_complete.py +++ b/hc/front/tests/test_add_discord_complete.py @@ -76,9 +76,13 @@ class AddDiscordCompleteTestCase(BaseTestCase): self.assertEqual(r.status_code, 404) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + session = self.client.session + session["add_discord"] = ("foo", str(self.project.code)) + session.save() + + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") - r = self.client.get(self.url + "?code=12345678&state=bar") + r = self.client.get(self.url + "?code=12345678&state=foo") self.assertEqual(r.status_code, 403) diff --git a/hc/front/tests/test_add_email.py b/hc/front/tests/test_add_email.py index 5d5fc66f..016994fe 100644 --- a/hc/front/tests/test_add_email.py +++ b/hc/front/tests/test_add_email.py @@ -114,7 +114,7 @@ class AddEmailTestCase(BaseTestCase): self.assertContains(r, "Please select at least one.") def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_add_linenotify.py b/hc/front/tests/test_add_linenotify.py index b528b4b9..283865ac 100644 --- a/hc/front/tests/test_add_linenotify.py +++ b/hc/front/tests/test_add_linenotify.py @@ -24,7 +24,7 @@ class AddLineNotifyTestCase(BaseTestCase): self.assertEqual(r.status_code, 404) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_add_linenotify_complete.py b/hc/front/tests/test_add_linenotify_complete.py index cfa94a97..4fce57a5 100644 --- a/hc/front/tests/test_add_linenotify_complete.py +++ b/hc/front/tests/test_add_linenotify_complete.py @@ -72,10 +72,14 @@ class AddLineNotifyCompleteTestCase(BaseTestCase): self.assertEqual(r.status_code, 404) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + session = self.client.session + session["add_linenotify"] = ("foo", str(self.project.code)) + session.save() + + self.bobs_membership.role = "r" self.bobs_membership.save() - url = self.url + "?code=12345678&state=bar" + url = self.url + "?code=12345678&state=foo" self.client.login(username="bob@example.org", password="password") r = self.client.get(url) self.assertEqual(r.status_code, 403) diff --git a/hc/front/tests/test_add_matrix.py b/hc/front/tests/test_add_matrix.py index 01c3aa01..69bafcaa 100644 --- a/hc/front/tests/test_add_matrix.py +++ b/hc/front/tests/test_add_matrix.py @@ -50,7 +50,7 @@ class AddMatrixTestCase(BaseTestCase): self.assertFalse(Channel.objects.exists()) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_add_mattermost.py b/hc/front/tests/test_add_mattermost.py index 842e3c7f..9e8c82fd 100644 --- a/hc/front/tests/test_add_mattermost.py +++ b/hc/front/tests/test_add_mattermost.py @@ -26,7 +26,7 @@ class AddMattermostTestCase(BaseTestCase): self.assertEqual(c.project, self.project) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_add_msteams.py b/hc/front/tests/test_add_msteams.py index 5bbbbf77..9c30a1b3 100644 --- a/hc/front/tests/test_add_msteams.py +++ b/hc/front/tests/test_add_msteams.py @@ -26,7 +26,7 @@ class AddMsTeamsTestCase(BaseTestCase): self.assertEqual(c.project, self.project) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_add_opsgenie.py b/hc/front/tests/test_add_opsgenie.py index aeba5f2d..7a495b67 100644 --- a/hc/front/tests/test_add_opsgenie.py +++ b/hc/front/tests/test_add_opsgenie.py @@ -51,7 +51,7 @@ class AddOpsgenieTestCase(BaseTestCase): self.assertEqual(payload["region"], "eu") def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_add_pagerduty_complete.py b/hc/front/tests/test_add_pagerduty_complete.py index d66ace16..7ef4f03e 100644 --- a/hc/front/tests/test_add_pagerduty_complete.py +++ b/hc/front/tests/test_add_pagerduty_complete.py @@ -55,7 +55,7 @@ class AddPagerDutyCompleteTestCase(BaseTestCase): self.assertEqual(r.status_code, 404) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_add_pagertree.py b/hc/front/tests/test_add_pagertree.py index 769b8d91..3c8d1366 100644 --- a/hc/front/tests/test_add_pagertree.py +++ b/hc/front/tests/test_add_pagertree.py @@ -33,7 +33,7 @@ class AddPagerTreeTestCase(BaseTestCase): self.assertContains(r, "Enter a valid URL") def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_add_pd.py b/hc/front/tests/test_add_pd.py index c3f8ccea..f5c1308f 100644 --- a/hc/front/tests/test_add_pd.py +++ b/hc/front/tests/test_add_pd.py @@ -36,7 +36,7 @@ class AddPdTestCase(BaseTestCase): self.assertEqual(c.value, "123456") def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_add_pushbullet.py b/hc/front/tests/test_add_pushbullet.py index f6376861..d1c3dc15 100644 --- a/hc/front/tests/test_add_pushbullet.py +++ b/hc/front/tests/test_add_pushbullet.py @@ -24,7 +24,7 @@ class AddPushbulletTestCase(BaseTestCase): self.assertEqual(r.status_code, 404) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_add_pushbullet_complete.py b/hc/front/tests/test_add_pushbullet_complete.py index ac24df53..4ff7f3b5 100644 --- a/hc/front/tests/test_add_pushbullet_complete.py +++ b/hc/front/tests/test_add_pushbullet_complete.py @@ -71,7 +71,11 @@ class AddPushbulletTestCase(BaseTestCase): self.assertEqual(r.status_code, 404) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + session = self.client.session + session["add_pushbullet"] = ("foo", str(self.project.code)) + session.save() + + self.bobs_membership.role = "r" self.bobs_membership.save() url = self.url + "?code=12345678&state=foo" diff --git a/hc/front/tests/test_add_pushover.py b/hc/front/tests/test_add_pushover.py index 266faa08..a43f4ced 100644 --- a/hc/front/tests/test_add_pushover.py +++ b/hc/front/tests/test_add_pushover.py @@ -81,7 +81,7 @@ class AddPushoverTestCase(BaseTestCase): self.assertEqual(r.status_code, 403) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_add_shell.py b/hc/front/tests/test_add_shell.py index 67a604ef..4ee9c543 100644 --- a/hc/front/tests/test_add_shell.py +++ b/hc/front/tests/test_add_shell.py @@ -55,7 +55,7 @@ class AddShellTestCase(BaseTestCase): self.assertEqual(c.cmd_up, "logger up") def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_add_signal.py b/hc/front/tests/test_add_signal.py index c74f76f4..2cc8dbae 100644 --- a/hc/front/tests/test_add_signal.py +++ b/hc/front/tests/test_add_signal.py @@ -52,7 +52,7 @@ class AddSignalTestCase(BaseTestCase): self.assertEqual(r.status_code, 404) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_add_slack.py b/hc/front/tests/test_add_slack.py index ccf588e7..73fa1269 100644 --- a/hc/front/tests/test_add_slack.py +++ b/hc/front/tests/test_add_slack.py @@ -33,7 +33,7 @@ class AddSlackTestCase(BaseTestCase): self.assertContains(r, "Enter a valid URL") def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_add_slack_btn.py b/hc/front/tests/test_add_slack_btn.py index 2fe0c335..a9455d9a 100644 --- a/hc/front/tests/test_add_slack_btn.py +++ b/hc/front/tests/test_add_slack_btn.py @@ -28,7 +28,7 @@ class AddSlackBtnTestCase(BaseTestCase): self.assertEqual(r.status_code, 404) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_add_slack_complete.py b/hc/front/tests/test_add_slack_complete.py index 0bdba714..4d0bd3ad 100644 --- a/hc/front/tests/test_add_slack_complete.py +++ b/hc/front/tests/test_add_slack_complete.py @@ -75,7 +75,11 @@ class AddSlackCompleteTestCase(BaseTestCase): self.assertEqual(r.status_code, 404) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + session = self.client.session + session["add_slack"] = ("foo", str(self.project.code)) + session.save() + + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_add_sms.py b/hc/front/tests/test_add_sms.py index 6dbe7e65..3340d7fc 100644 --- a/hc/front/tests/test_add_sms.py +++ b/hc/front/tests/test_add_sms.py @@ -61,7 +61,7 @@ class AddSmsTestCase(BaseTestCase): self.assertEqual(r.status_code, 404) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_add_spike.py b/hc/front/tests/test_add_spike.py index c6ad277f..aa932d3a 100644 --- a/hc/front/tests/test_add_spike.py +++ b/hc/front/tests/test_add_spike.py @@ -33,7 +33,7 @@ class AddSpikeTestCase(BaseTestCase): self.assertContains(r, "Enter a valid URL") def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_add_telegram.py b/hc/front/tests/test_add_telegram.py index 958ee79d..2c1afa20 100644 --- a/hc/front/tests/test_add_telegram.py +++ b/hc/front/tests/test_add_telegram.py @@ -92,7 +92,7 @@ class AddTelegramTestCase(BaseTestCase): self.assertEqual(r.status_code, 200) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() payload = signing.dumps((123, "group", "My Group")) diff --git a/hc/front/tests/test_add_trello.py b/hc/front/tests/test_add_trello.py index db6b13c8..e1b4e9f8 100644 --- a/hc/front/tests/test_add_trello.py +++ b/hc/front/tests/test_add_trello.py @@ -1,5 +1,3 @@ -import json - from django.test.utils import override_settings from hc.api.models import Channel from hc.test import BaseTestCase @@ -40,7 +38,7 @@ class AddTrelloTestCase(BaseTestCase): self.assertEqual(r.status_code, 404) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_add_victorops.py b/hc/front/tests/test_add_victorops.py index d69282b1..d3ec28ad 100644 --- a/hc/front/tests/test_add_victorops.py +++ b/hc/front/tests/test_add_victorops.py @@ -33,7 +33,7 @@ class AddVictorOpsTestCase(BaseTestCase): self.assertContains(r, "Enter a valid URL") def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_add_webhook.py b/hc/front/tests/test_add_webhook.py index 9118793d..6e0fdf05 100644 --- a/hc/front/tests/test_add_webhook.py +++ b/hc/front/tests/test_add_webhook.py @@ -180,7 +180,7 @@ class AddWebhookTestCase(BaseTestCase): self.assertEqual(Channel.objects.count(), 0) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_add_whatsapp.py b/hc/front/tests/test_add_whatsapp.py index 8fd06c0b..cd27c4e4 100644 --- a/hc/front/tests/test_add_whatsapp.py +++ b/hc/front/tests/test_add_whatsapp.py @@ -72,7 +72,7 @@ class AddWhatsAppTestCase(BaseTestCase): self.assertEqual(r.status_code, 404) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_add_zulip.py b/hc/front/tests/test_add_zulip.py index e9ef99bd..3f6ecc1c 100644 --- a/hc/front/tests/test_add_zulip.py +++ b/hc/front/tests/test_add_zulip.py @@ -75,7 +75,7 @@ class AddZulipTestCase(BaseTestCase): self.assertContains(r, "This field is required.") def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_channels.py b/hc/front/tests/test_channels.py index 0359dbbd..6729d080 100644 --- a/hc/front/tests/test_channels.py +++ b/hc/front/tests/test_channels.py @@ -110,7 +110,7 @@ class ChannelsTestCase(BaseTestCase): self.assertContains(r, "broken-channels", status_code=200) def test_it_hides_actions_from_readonly_users(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() Channel.objects.create(project=self.project, kind="webhook", value="{}") diff --git a/hc/front/tests/test_copy.py b/hc/front/tests/test_copy.py index b8333800..ff98b7b7 100644 --- a/hc/front/tests/test_copy.py +++ b/hc/front/tests/test_copy.py @@ -35,7 +35,7 @@ class CopyCheckTestCase(BaseTestCase): self.assertEqual(r.status_code, 400) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_details.py b/hc/front/tests/test_details.py index 0ebc8b88..c8d68e6b 100644 --- a/hc/front/tests/test_details.py +++ b/hc/front/tests/test_details.py @@ -51,7 +51,7 @@ class DetailsTestCase(BaseTestCase): self.assertContains(r, "Your new check is ready!", status_code=200) def test_it_hides_actions_from_readonly_users(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") @@ -67,7 +67,7 @@ class DetailsTestCase(BaseTestCase): self.assertNotContains(r, "details-remove-check") def test_it_hides_resume_action_from_readonly_users(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.check.status = "paused" diff --git a/hc/front/tests/test_edit_webhook.py b/hc/front/tests/test_edit_webhook.py index 5bb3b0f4..515d625c 100644 --- a/hc/front/tests/test_edit_webhook.py +++ b/hc/front/tests/test_edit_webhook.py @@ -84,7 +84,7 @@ class EditWebhookTestCase(BaseTestCase): self.assertEqual(r.status_code, 400) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_filtering_rules.py b/hc/front/tests/test_filtering_rules.py index 74fc690d..77bd555f 100644 --- a/hc/front/tests/test_filtering_rules.py +++ b/hc/front/tests/test_filtering_rules.py @@ -74,7 +74,7 @@ class FilteringRulesTestCase(BaseTestCase): self.assertFalse(self.check.manual_resume) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() payload = { diff --git a/hc/front/tests/test_my_checks.py b/hc/front/tests/test_my_checks.py index 3b17312f..5f449cd6 100644 --- a/hc/front/tests/test_my_checks.py +++ b/hc/front/tests/test_my_checks.py @@ -129,7 +129,7 @@ class MyChecksTestCase(BaseTestCase): self.assertContains(r, """
foo
""") def test_it_hides_actions_from_readonly_users(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_pause.py b/hc/front/tests/test_pause.py index 394f3cb1..5aee0491 100644 --- a/hc/front/tests/test_pause.py +++ b/hc/front/tests/test_pause.py @@ -48,7 +48,7 @@ class PauseTestCase(BaseTestCase): self.assertEqual(r.status_code, 200) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_remove_channel.py b/hc/front/tests/test_remove_channel.py index 5f3cc6e6..a65addf1 100644 --- a/hc/front/tests/test_remove_channel.py +++ b/hc/front/tests/test_remove_channel.py @@ -49,7 +49,7 @@ class RemoveChannelTestCase(BaseTestCase): self.assertEqual(r.status_code, 405) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_remove_check.py b/hc/front/tests/test_remove_check.py index 7c207221..8d447164 100644 --- a/hc/front/tests/test_remove_check.py +++ b/hc/front/tests/test_remove_check.py @@ -53,7 +53,7 @@ class RemoveCheckTestCase(BaseTestCase): self.assertRedirects(r, self.redirect_url) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_resume.py b/hc/front/tests/test_resume.py index 9debd936..0ff07ad1 100644 --- a/hc/front/tests/test_resume.py +++ b/hc/front/tests/test_resume.py @@ -28,7 +28,7 @@ class ResumeTestCase(BaseTestCase): self.assertRedirects(r, self.redirect_url) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_status_single.py b/hc/front/tests/test_status_single.py index 26729029..3aa5aa34 100644 --- a/hc/front/tests/test_status_single.py +++ b/hc/front/tests/test_status_single.py @@ -67,7 +67,7 @@ class StatusSingleTestCase(BaseTestCase): self.assertIn("resume-btn", doc["status_text"]) def test_resume_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.check.status = "paused" diff --git a/hc/front/tests/test_switch_channel.py b/hc/front/tests/test_switch_channel.py index e4a64afb..7ce18b0d 100644 --- a/hc/front/tests/test_switch_channel.py +++ b/hc/front/tests/test_switch_channel.py @@ -53,7 +53,7 @@ class SwitchChannelTestCase(BaseTestCase): self.assertEqual(r.status_code, 200) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/front/tests/test_transfer.py b/hc/front/tests/test_transfer.py index bae2635f..29a2f901 100644 --- a/hc/front/tests/test_transfer.py +++ b/hc/front/tests/test_transfer.py @@ -65,7 +65,7 @@ class TransferTestCase(BaseTestCase): self.assertEqual(r.status_code, 404) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() payload = {"project": self.project.code} diff --git a/hc/front/tests/test_update_channel.py b/hc/front/tests/test_update_channel.py index d6212bab..a1505711 100644 --- a/hc/front/tests/test_update_channel.py +++ b/hc/front/tests/test_update_channel.py @@ -72,7 +72,7 @@ class UpdateChannelTestCase(BaseTestCase): self.assertEqual(r.status_code, 400) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() payload = {"channel": self.channel.code} diff --git a/hc/front/tests/test_update_channel_name.py b/hc/front/tests/test_update_channel_name.py index d0a6f89f..f4c8e400 100644 --- a/hc/front/tests/test_update_channel_name.py +++ b/hc/front/tests/test_update_channel_name.py @@ -53,7 +53,7 @@ class UpdateChannelNameTestCase(BaseTestCase): self.assertEqual(r.status_code, 405) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() payload = {"name": "My work email"} diff --git a/hc/front/tests/test_update_name.py b/hc/front/tests/test_update_name.py index a98b210c..a27283ca 100644 --- a/hc/front/tests/test_update_name.py +++ b/hc/front/tests/test_update_name.py @@ -42,7 +42,7 @@ class UpdateNameTestCase(BaseTestCase): self.assertEqual(r.status_code, 404) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() payload = {"name": "Charlie Sent This"} diff --git a/hc/front/tests/test_update_timeout.py b/hc/front/tests/test_update_timeout.py index 31fde642..ddbb2f4d 100644 --- a/hc/front/tests/test_update_timeout.py +++ b/hc/front/tests/test_update_timeout.py @@ -182,7 +182,7 @@ class UpdateTimeoutTestCase(BaseTestCase): self.assertRedirects(r, self.redirect_url) def test_it_requires_rw_access(self): - self.bobs_membership.rw = False + self.bobs_membership.role = "r" self.bobs_membership.save() payload = {"kind": "simple", "timeout": 3600, "grace": 60} diff --git a/hc/front/views.py b/hc/front/views.py index 6d55d786..5d376a58 100644 --- a/hc/front/views.py +++ b/hc/front/views.py @@ -96,7 +96,7 @@ def _get_check_for_user(request, code): return check, True membership = get_object_or_404(Member, project=check.project, user=request.user) - return check, membership.rw + return check, membership.is_rw def _get_rw_check_for_user(request, code): @@ -120,7 +120,7 @@ def _get_channel_for_user(request, code): return channel, True membership = get_object_or_404(Member, project=channel.project, user=request.user) - return channel, membership.rw + return channel, membership.is_rw def _get_rw_channel_for_user(request, code): @@ -143,7 +143,7 @@ def _get_project_for_user(request, project_code): membership = get_object_or_404(Member, project=project, user=request.user) - return project, membership.rw + return project, membership.is_rw def _get_rw_project_for_user(request, project_code): diff --git a/templates/accounts/profile.html b/templates/accounts/profile.html index 1c6e95cf..5c7cb3fd 100644 --- a/templates/accounts/profile.html +++ b/templates/accounts/profile.html @@ -172,13 +172,7 @@ - - {% if m.rw %} - Member - {% else %} - Read-only - {% endif %} - + {{ m.get_role_display }} {{ m.user.email }} - - {% if m.rw %} - Member - {% else %} - Read-only - {% endif %} - + {{ m.get_role_display}} {% if is_owner %}