forked from GithubBackups/healthchecks
Switch from Member.rw to Member.role as the source of truth
This commit is contained in:
parent
d19cb8c681
commit
936a5213f8
@ -440,6 +440,10 @@ class Member(models.Model):
|
|||||||
def can_accept(self):
|
def can_accept(self):
|
||||||
return self.user.profile.can_accept(self.project)
|
return self.user.profile.can_accept(self.project)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def is_rw(self):
|
||||||
|
return self.role in (Member.Role.REGULAR,)
|
||||||
|
|
||||||
|
|
||||||
class Credential(models.Model):
|
class Credential(models.Model):
|
||||||
code = models.UUIDField(default=uuid.uuid4, unique=True)
|
code = models.UUIDField(default=uuid.uuid4, unique=True)
|
||||||
|
@ -37,7 +37,7 @@ class ProfileTestCase(BaseTestCase):
|
|||||||
self.assertContains(r, "Member")
|
self.assertContains(r, "Member")
|
||||||
|
|
||||||
def test_it_shows_readonly_project_membership(self):
|
def test_it_shows_readonly_project_membership(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -230,7 +230,7 @@ class ProjectTestCase(BaseTestCase):
|
|||||||
self.assertContains(r, "bob@example.org")
|
self.assertContains(r, "bob@example.org")
|
||||||
|
|
||||||
def test_it_checks_rw_access_when_updating_project_name(self):
|
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.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
@ -240,7 +240,7 @@ class ProjectTestCase(BaseTestCase):
|
|||||||
self.assertEqual(r.status_code, 403)
|
self.assertEqual(r.status_code, 403)
|
||||||
|
|
||||||
def test_it_hides_actions_for_readonly_users(self):
|
def test_it_hides_actions_for_readonly_users(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -287,7 +287,7 @@ def project(request, code):
|
|||||||
rw = True
|
rw = True
|
||||||
else:
|
else:
|
||||||
membership = get_object_or_404(Member, project=project, user=request.user)
|
membership = get_object_or_404(Member, project=project, user=request.user)
|
||||||
rw = membership.rw
|
rw = membership.is_rw
|
||||||
|
|
||||||
ctx = {
|
ctx = {
|
||||||
"page": "project",
|
"page": "project",
|
||||||
|
@ -33,7 +33,7 @@ class AddAppriseTestCase(BaseTestCase):
|
|||||||
self.assertEqual(r.status_code, 404)
|
self.assertEqual(r.status_code, 404)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -59,7 +59,7 @@ class AddCallTestCase(BaseTestCase):
|
|||||||
self.assertEqual(r.status_code, 404)
|
self.assertEqual(r.status_code, 404)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -33,7 +33,7 @@ class AddCheckTestCase(BaseTestCase):
|
|||||||
self.assertEqual(r.status_code, 405)
|
self.assertEqual(r.status_code, 405)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -24,7 +24,7 @@ class AddDiscordTestCase(BaseTestCase):
|
|||||||
self.assertEqual(r.status_code, 404)
|
self.assertEqual(r.status_code, 404)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -76,9 +76,13 @@ class AddDiscordCompleteTestCase(BaseTestCase):
|
|||||||
self.assertEqual(r.status_code, 404)
|
self.assertEqual(r.status_code, 404)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
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.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
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)
|
self.assertEqual(r.status_code, 403)
|
||||||
|
@ -114,7 +114,7 @@ class AddEmailTestCase(BaseTestCase):
|
|||||||
self.assertContains(r, "Please select at least one.")
|
self.assertContains(r, "Please select at least one.")
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -24,7 +24,7 @@ class AddLineNotifyTestCase(BaseTestCase):
|
|||||||
self.assertEqual(r.status_code, 404)
|
self.assertEqual(r.status_code, 404)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -72,10 +72,14 @@ class AddLineNotifyCompleteTestCase(BaseTestCase):
|
|||||||
self.assertEqual(r.status_code, 404)
|
self.assertEqual(r.status_code, 404)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
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()
|
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")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
r = self.client.get(url)
|
r = self.client.get(url)
|
||||||
self.assertEqual(r.status_code, 403)
|
self.assertEqual(r.status_code, 403)
|
||||||
|
@ -50,7 +50,7 @@ class AddMatrixTestCase(BaseTestCase):
|
|||||||
self.assertFalse(Channel.objects.exists())
|
self.assertFalse(Channel.objects.exists())
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -26,7 +26,7 @@ class AddMattermostTestCase(BaseTestCase):
|
|||||||
self.assertEqual(c.project, self.project)
|
self.assertEqual(c.project, self.project)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -26,7 +26,7 @@ class AddMsTeamsTestCase(BaseTestCase):
|
|||||||
self.assertEqual(c.project, self.project)
|
self.assertEqual(c.project, self.project)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -51,7 +51,7 @@ class AddOpsgenieTestCase(BaseTestCase):
|
|||||||
self.assertEqual(payload["region"], "eu")
|
self.assertEqual(payload["region"], "eu")
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -55,7 +55,7 @@ class AddPagerDutyCompleteTestCase(BaseTestCase):
|
|||||||
self.assertEqual(r.status_code, 404)
|
self.assertEqual(r.status_code, 404)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -33,7 +33,7 @@ class AddPagerTreeTestCase(BaseTestCase):
|
|||||||
self.assertContains(r, "Enter a valid URL")
|
self.assertContains(r, "Enter a valid URL")
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -36,7 +36,7 @@ class AddPdTestCase(BaseTestCase):
|
|||||||
self.assertEqual(c.value, "123456")
|
self.assertEqual(c.value, "123456")
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -24,7 +24,7 @@ class AddPushbulletTestCase(BaseTestCase):
|
|||||||
self.assertEqual(r.status_code, 404)
|
self.assertEqual(r.status_code, 404)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -71,7 +71,11 @@ class AddPushbulletTestCase(BaseTestCase):
|
|||||||
self.assertEqual(r.status_code, 404)
|
self.assertEqual(r.status_code, 404)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
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()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
url = self.url + "?code=12345678&state=foo"
|
url = self.url + "?code=12345678&state=foo"
|
||||||
|
@ -81,7 +81,7 @@ class AddPushoverTestCase(BaseTestCase):
|
|||||||
self.assertEqual(r.status_code, 403)
|
self.assertEqual(r.status_code, 403)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -55,7 +55,7 @@ class AddShellTestCase(BaseTestCase):
|
|||||||
self.assertEqual(c.cmd_up, "logger up")
|
self.assertEqual(c.cmd_up, "logger up")
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -52,7 +52,7 @@ class AddSignalTestCase(BaseTestCase):
|
|||||||
self.assertEqual(r.status_code, 404)
|
self.assertEqual(r.status_code, 404)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -33,7 +33,7 @@ class AddSlackTestCase(BaseTestCase):
|
|||||||
self.assertContains(r, "Enter a valid URL")
|
self.assertContains(r, "Enter a valid URL")
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -28,7 +28,7 @@ class AddSlackBtnTestCase(BaseTestCase):
|
|||||||
self.assertEqual(r.status_code, 404)
|
self.assertEqual(r.status_code, 404)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -75,7 +75,11 @@ class AddSlackCompleteTestCase(BaseTestCase):
|
|||||||
self.assertEqual(r.status_code, 404)
|
self.assertEqual(r.status_code, 404)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
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.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -61,7 +61,7 @@ class AddSmsTestCase(BaseTestCase):
|
|||||||
self.assertEqual(r.status_code, 404)
|
self.assertEqual(r.status_code, 404)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -33,7 +33,7 @@ class AddSpikeTestCase(BaseTestCase):
|
|||||||
self.assertContains(r, "Enter a valid URL")
|
self.assertContains(r, "Enter a valid URL")
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -92,7 +92,7 @@ class AddTelegramTestCase(BaseTestCase):
|
|||||||
self.assertEqual(r.status_code, 200)
|
self.assertEqual(r.status_code, 200)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
payload = signing.dumps((123, "group", "My Group"))
|
payload = signing.dumps((123, "group", "My Group"))
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
import json
|
|
||||||
|
|
||||||
from django.test.utils import override_settings
|
from django.test.utils import override_settings
|
||||||
from hc.api.models import Channel
|
from hc.api.models import Channel
|
||||||
from hc.test import BaseTestCase
|
from hc.test import BaseTestCase
|
||||||
@ -40,7 +38,7 @@ class AddTrelloTestCase(BaseTestCase):
|
|||||||
self.assertEqual(r.status_code, 404)
|
self.assertEqual(r.status_code, 404)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -33,7 +33,7 @@ class AddVictorOpsTestCase(BaseTestCase):
|
|||||||
self.assertContains(r, "Enter a valid URL")
|
self.assertContains(r, "Enter a valid URL")
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -180,7 +180,7 @@ class AddWebhookTestCase(BaseTestCase):
|
|||||||
self.assertEqual(Channel.objects.count(), 0)
|
self.assertEqual(Channel.objects.count(), 0)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -72,7 +72,7 @@ class AddWhatsAppTestCase(BaseTestCase):
|
|||||||
self.assertEqual(r.status_code, 404)
|
self.assertEqual(r.status_code, 404)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -75,7 +75,7 @@ class AddZulipTestCase(BaseTestCase):
|
|||||||
self.assertContains(r, "This field is required.")
|
self.assertContains(r, "This field is required.")
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -110,7 +110,7 @@ class ChannelsTestCase(BaseTestCase):
|
|||||||
self.assertContains(r, "broken-channels", status_code=200)
|
self.assertContains(r, "broken-channels", status_code=200)
|
||||||
|
|
||||||
def test_it_hides_actions_from_readonly_users(self):
|
def test_it_hides_actions_from_readonly_users(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
Channel.objects.create(project=self.project, kind="webhook", value="{}")
|
Channel.objects.create(project=self.project, kind="webhook", value="{}")
|
||||||
|
@ -35,7 +35,7 @@ class CopyCheckTestCase(BaseTestCase):
|
|||||||
self.assertEqual(r.status_code, 400)
|
self.assertEqual(r.status_code, 400)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -51,7 +51,7 @@ class DetailsTestCase(BaseTestCase):
|
|||||||
self.assertContains(r, "Your new check is ready!", status_code=200)
|
self.assertContains(r, "Your new check is ready!", status_code=200)
|
||||||
|
|
||||||
def test_it_hides_actions_from_readonly_users(self):
|
def test_it_hides_actions_from_readonly_users(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
@ -67,7 +67,7 @@ class DetailsTestCase(BaseTestCase):
|
|||||||
self.assertNotContains(r, "details-remove-check")
|
self.assertNotContains(r, "details-remove-check")
|
||||||
|
|
||||||
def test_it_hides_resume_action_from_readonly_users(self):
|
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.bobs_membership.save()
|
||||||
|
|
||||||
self.check.status = "paused"
|
self.check.status = "paused"
|
||||||
|
@ -84,7 +84,7 @@ class EditWebhookTestCase(BaseTestCase):
|
|||||||
self.assertEqual(r.status_code, 400)
|
self.assertEqual(r.status_code, 400)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -74,7 +74,7 @@ class FilteringRulesTestCase(BaseTestCase):
|
|||||||
self.assertFalse(self.check.manual_resume)
|
self.assertFalse(self.check.manual_resume)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
payload = {
|
payload = {
|
||||||
|
@ -129,7 +129,7 @@ class MyChecksTestCase(BaseTestCase):
|
|||||||
self.assertContains(r, """<div class="btn btn-xs grace ">foo</div>""")
|
self.assertContains(r, """<div class="btn btn-xs grace ">foo</div>""")
|
||||||
|
|
||||||
def test_it_hides_actions_from_readonly_users(self):
|
def test_it_hides_actions_from_readonly_users(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -48,7 +48,7 @@ class PauseTestCase(BaseTestCase):
|
|||||||
self.assertEqual(r.status_code, 200)
|
self.assertEqual(r.status_code, 200)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -49,7 +49,7 @@ class RemoveChannelTestCase(BaseTestCase):
|
|||||||
self.assertEqual(r.status_code, 405)
|
self.assertEqual(r.status_code, 405)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -53,7 +53,7 @@ class RemoveCheckTestCase(BaseTestCase):
|
|||||||
self.assertRedirects(r, self.redirect_url)
|
self.assertRedirects(r, self.redirect_url)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -28,7 +28,7 @@ class ResumeTestCase(BaseTestCase):
|
|||||||
self.assertRedirects(r, self.redirect_url)
|
self.assertRedirects(r, self.redirect_url)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -67,7 +67,7 @@ class StatusSingleTestCase(BaseTestCase):
|
|||||||
self.assertIn("resume-btn", doc["status_text"])
|
self.assertIn("resume-btn", doc["status_text"])
|
||||||
|
|
||||||
def test_resume_requires_rw_access(self):
|
def test_resume_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.check.status = "paused"
|
self.check.status = "paused"
|
||||||
|
@ -53,7 +53,7 @@ class SwitchChannelTestCase(BaseTestCase):
|
|||||||
self.assertEqual(r.status_code, 200)
|
self.assertEqual(r.status_code, 200)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
self.client.login(username="bob@example.org", password="password")
|
self.client.login(username="bob@example.org", password="password")
|
||||||
|
@ -65,7 +65,7 @@ class TransferTestCase(BaseTestCase):
|
|||||||
self.assertEqual(r.status_code, 404)
|
self.assertEqual(r.status_code, 404)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
payload = {"project": self.project.code}
|
payload = {"project": self.project.code}
|
||||||
|
@ -72,7 +72,7 @@ class UpdateChannelTestCase(BaseTestCase):
|
|||||||
self.assertEqual(r.status_code, 400)
|
self.assertEqual(r.status_code, 400)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
payload = {"channel": self.channel.code}
|
payload = {"channel": self.channel.code}
|
||||||
|
@ -53,7 +53,7 @@ class UpdateChannelNameTestCase(BaseTestCase):
|
|||||||
self.assertEqual(r.status_code, 405)
|
self.assertEqual(r.status_code, 405)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
payload = {"name": "My work email"}
|
payload = {"name": "My work email"}
|
||||||
|
@ -42,7 +42,7 @@ class UpdateNameTestCase(BaseTestCase):
|
|||||||
self.assertEqual(r.status_code, 404)
|
self.assertEqual(r.status_code, 404)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
payload = {"name": "Charlie Sent This"}
|
payload = {"name": "Charlie Sent This"}
|
||||||
|
@ -182,7 +182,7 @@ class UpdateTimeoutTestCase(BaseTestCase):
|
|||||||
self.assertRedirects(r, self.redirect_url)
|
self.assertRedirects(r, self.redirect_url)
|
||||||
|
|
||||||
def test_it_requires_rw_access(self):
|
def test_it_requires_rw_access(self):
|
||||||
self.bobs_membership.rw = False
|
self.bobs_membership.role = "r"
|
||||||
self.bobs_membership.save()
|
self.bobs_membership.save()
|
||||||
|
|
||||||
payload = {"kind": "simple", "timeout": 3600, "grace": 60}
|
payload = {"kind": "simple", "timeout": 3600, "grace": 60}
|
||||||
|
@ -96,7 +96,7 @@ def _get_check_for_user(request, code):
|
|||||||
return check, True
|
return check, True
|
||||||
|
|
||||||
membership = get_object_or_404(Member, project=check.project, user=request.user)
|
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):
|
def _get_rw_check_for_user(request, code):
|
||||||
@ -120,7 +120,7 @@ def _get_channel_for_user(request, code):
|
|||||||
return channel, True
|
return channel, True
|
||||||
|
|
||||||
membership = get_object_or_404(Member, project=channel.project, user=request.user)
|
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):
|
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)
|
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):
|
def _get_rw_project_for_user(request, project_code):
|
||||||
|
@ -172,13 +172,7 @@
|
|||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>{{ m.get_role_display }}</td>
|
||||||
{% if m.rw %}
|
|
||||||
Member
|
|
||||||
{% else %}
|
|
||||||
Read-only
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
|
||||||
<td>
|
<td>
|
||||||
<a
|
<a
|
||||||
href="#"
|
href="#"
|
||||||
|
@ -167,13 +167,7 @@
|
|||||||
{% for m in project.member_set.all %}
|
{% for m in project.member_set.all %}
|
||||||
<tr>
|
<tr>
|
||||||
<td class="email">{{ m.user.email }}</td>
|
<td class="email">{{ m.user.email }}</td>
|
||||||
<td>
|
<td>{{ m.get_role_display}}</td>
|
||||||
{% if m.rw %}
|
|
||||||
Member
|
|
||||||
{% else %}
|
|
||||||
Read-only
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
|
||||||
<td>
|
<td>
|
||||||
{% if is_owner %}
|
{% if is_owner %}
|
||||||
<a
|
<a
|
||||||
|
Loading…
x
Reference in New Issue
Block a user