From 09940066034a88d05f7c1c45f1d17246b7ae885f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C4=93teris=20Caune?= Date: Fri, 18 Jan 2019 17:24:02 +0200 Subject: [PATCH] Drop Check.user_id and Channel.user_id (obsolete, using project_id now) --- hc/accounts/tests/test_badges.py | 6 ++-- hc/accounts/tests/test_close_account.py | 3 +- hc/accounts/tests/test_login.py | 2 +- hc/accounts/tests/test_profile.py | 10 +++--- hc/accounts/tests/test_project_model.py | 4 +-- hc/accounts/tests/test_pruneusers.py | 5 ++- hc/accounts/tests/test_switch_team.py | 3 +- hc/accounts/views.py | 4 +-- hc/api/migrations/0057_auto_20190118_1319.py | 21 ++++++++++++ hc/api/models.py | 3 -- hc/api/tests/test_admin.py | 11 +++--- hc/api/tests/test_badge.py | 3 +- hc/api/tests/test_bounce.py | 5 ++- hc/api/tests/test_channel_model.py | 4 +-- hc/api/tests/test_check_model.py | 2 +- hc/api/tests/test_create_check.py | 9 ++--- hc/api/tests/test_delete_check.py | 3 +- hc/api/tests/test_list_channels.py | 6 ++-- hc/api/tests/test_list_checks.py | 10 +++--- hc/api/tests/test_notify.py | 3 +- hc/api/tests/test_pause.py | 11 +++--- hc/api/tests/test_ping.py | 3 +- hc/api/tests/test_sendalerts.py | 16 ++++----- hc/api/tests/test_sendreports.py | 3 +- hc/api/tests/test_update_check.py | 22 ++++++------ hc/api/views.py | 2 +- hc/front/tests/test_add_check.py | 2 +- hc/front/tests/test_add_email.py | 2 +- hc/front/tests/test_add_trello.py | 1 - hc/front/tests/test_add_webhook.py | 2 +- hc/front/tests/test_channel_checks.py | 3 +- hc/front/tests/test_channels.py | 14 ++++---- hc/front/tests/test_details.py | 6 ++-- hc/front/tests/test_log.py | 13 +++---- hc/front/tests/test_my_checks.py | 3 +- hc/front/tests/test_pause.py | 4 +-- hc/front/tests/test_ping_details.py | 19 +++-------- hc/front/tests/test_remove_channel.py | 3 +- hc/front/tests/test_remove_check.py | 4 +-- hc/front/tests/test_status.py | 3 +- hc/front/tests/test_status_single.py | 3 +- hc/front/tests/test_switch_channel.py | 9 ++--- hc/front/tests/test_unsubscribe_email.py | 3 +- hc/front/tests/test_update_channel.py | 9 ++--- hc/front/tests/test_update_channel_name.py | 3 +- hc/front/tests/test_update_name.py | 3 +- hc/front/tests/test_update_timeout.py | 2 +- hc/front/tests/test_verify_email.py | 3 +- hc/front/views.py | 36 +++++++------------- 49 files changed, 136 insertions(+), 188 deletions(-) create mode 100644 hc/api/migrations/0057_auto_20190118_1319.py diff --git a/hc/accounts/tests/test_badges.py b/hc/accounts/tests/test_badges.py index 25f0d72a..01389cd7 100644 --- a/hc/accounts/tests/test_badges.py +++ b/hc/accounts/tests/test_badges.py @@ -6,10 +6,8 @@ class BadgesTestCase(BaseTestCase): def test_it_shows_badges(self): self.client.login(username="alice@example.org", password="password") - Check.objects.create(user=self.alice, tags="foo a-B_1 baz@", - project=self.project) - Check.objects.create(user=self.bob, tags="bobs-tag", - project=self.bobs_project) + Check.objects.create(project=self.project, tags="foo a-B_1 baz@") + Check.objects.create(project=self.bobs_project, tags="bobs-tag") r = self.client.get("/accounts/profile/badges/") self.assertContains(r, "foo.svg") diff --git a/hc/accounts/tests/test_close_account.py b/hc/accounts/tests/test_close_account.py index 2790c0fe..cc322a8c 100644 --- a/hc/accounts/tests/test_close_account.py +++ b/hc/accounts/tests/test_close_account.py @@ -9,8 +9,7 @@ class CloseAccountTestCase(BaseTestCase): @patch("hc.payments.models.Subscription.cancel") def test_it_works(self, mock_cancel): - Check.objects.create(user=self.alice, tags="foo a-B_1 baz@", - project=self.project) + Check.objects.create(project=self.project, tags="foo a-B_1 baz@") Subscription.objects.create(user=self.alice, subscription_id="123") self.client.login(username="alice@example.org", password="password") diff --git a/hc/accounts/tests/test_login.py b/hc/accounts/tests/test_login.py index 5ba65e29..68e94469 100644 --- a/hc/accounts/tests/test_login.py +++ b/hc/accounts/tests/test_login.py @@ -53,7 +53,7 @@ class LoginTestCase(BaseTestCase): self.assertRedirects(r, "/checks/") def test_it_handles_password_login_with_redirect(self): - check = Check.objects.create(user=self.alice, project=self.project) + check = Check.objects.create(project=self.project) form = { "action": "login", diff --git a/hc/accounts/tests/test_profile.py b/hc/accounts/tests/test_profile.py index cd19eb96..8aa822a1 100644 --- a/hc/accounts/tests/test_profile.py +++ b/hc/accounts/tests/test_profile.py @@ -67,7 +67,7 @@ class ProfileTestCase(BaseTestCase): self.assertEqual(self.project.api_key_readonly, "") def test_it_sends_report(self): - check = Check(name="Test Check", user=self.alice, project=self.project) + check = Check(project=self.project, name="Test Check") check.last_ping = now() check.save() @@ -82,7 +82,7 @@ class ProfileTestCase(BaseTestCase): self.assertIn("Test Check", message.body) def test_it_skips_report_if_no_pings(self): - check = Check(name="Test Check", user=self.alice, project=self.project) + check = Check(project=self.project, name="Test Check") check.save() sent = self.profile.send_report() @@ -91,7 +91,7 @@ class ProfileTestCase(BaseTestCase): self.assertEqual(len(mail.outbox), 0) def test_it_skips_report_if_no_recent_pings(self): - check = Check(name="Test Check", user=self.alice, project=self.project) + check = Check(project=self.project, name="Test Check") check.last_ping = now() - td(days=365) check.save() @@ -101,7 +101,7 @@ class ProfileTestCase(BaseTestCase): self.assertEqual(len(mail.outbox), 0) def test_it_sends_nag(self): - check = Check(name="Test Check", user=self.alice, project=self.project) + check = Check(project=self.project, name="Test Check") check.status = "down" check.last_ping = now() check.save() @@ -120,7 +120,7 @@ class ProfileTestCase(BaseTestCase): self.assertIn("Test Check", message.body) def test_it_skips_nag_if_none_down(self): - check = Check(name="Test Check", user=self.alice, project=self.project) + check = Check(project=self.project, name="Test Check") check.last_ping = now() check.save() diff --git a/hc/accounts/tests/test_project_model.py b/hc/accounts/tests/test_project_model.py index 1e17f2db..4869d064 100644 --- a/hc/accounts/tests/test_project_model.py +++ b/hc/accounts/tests/test_project_model.py @@ -7,10 +7,10 @@ class ProjectModelTestCase(BaseTestCase): def test_num_checks_available_handles_multiple_projects(self): # One check in Alice's primary project: - Check.objects.create(user=self.alice, project=self.project) + Check.objects.create(project=self.project) # One check in Alice's secondary project: p2 = Project.objects.create(owner=self.alice) - Check.objects.create(user=self.alice, project=p2) + Check.objects.create(project=p2) self.assertEqual(self.project.num_checks_available(), 18) diff --git a/hc/accounts/tests/test_pruneusers.py b/hc/accounts/tests/test_pruneusers.py index 9a035e09..e51bc68c 100644 --- a/hc/accounts/tests/test_pruneusers.py +++ b/hc/accounts/tests/test_pruneusers.py @@ -16,15 +16,14 @@ class PruneUsersTestCase(BaseTestCase): self.charlie.save() # Charlie has one demo check - project =Project.objects.create(owner=self.charlie) - Check(user=self.charlie, project=project).save() + charlies_project = Project.objects.create(owner=self.charlie) + Check(project=charlies_project).save() Command().handle() self.assertEqual(User.objects.filter(username="charlie").count(), 0) self.assertEqual(Check.objects.count(), 0) - def test_it_leaves_team_members_alone(self): self.bob.date_joined = self.year_ago self.bob.last_login = self.year_ago diff --git a/hc/accounts/tests/test_switch_team.py b/hc/accounts/tests/test_switch_team.py index 2f355ea3..1d459466 100644 --- a/hc/accounts/tests/test_switch_team.py +++ b/hc/accounts/tests/test_switch_team.py @@ -8,8 +8,7 @@ class SwitchTeamTestCase(BaseTestCase): self.bobs_profile.current_project = None self.bobs_profile.save() - c = Check(user=self.alice, name="This belongs to Alice", - project=self.project) + c = Check(project=self.project, name="This belongs to Alice") c.save() self.client.login(username="bob@example.org", password="password") diff --git a/hc/accounts/views.py b/hc/accounts/views.py index 9ba063f3..f234fae2 100644 --- a/hc/accounts/views.py +++ b/hc/accounts/views.py @@ -58,11 +58,11 @@ def _make_user(email): profile.current_project = project profile.save() - check = Check(user=user, project=project) + check = Check(project=project) check.name = "My First Check" check.save() - channel = Channel(user=user, project=project) + channel = Channel(project=project) channel.kind = "email" channel.value = email channel.email_verified = True diff --git a/hc/api/migrations/0057_auto_20190118_1319.py b/hc/api/migrations/0057_auto_20190118_1319.py new file mode 100644 index 00000000..90a5f910 --- /dev/null +++ b/hc/api/migrations/0057_auto_20190118_1319.py @@ -0,0 +1,21 @@ +# Generated by Django 2.1.5 on 2019-01-18 13:19 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('api', '0056_auto_20190114_0857'), + ] + + operations = [ + migrations.RemoveField( + model_name='channel', + name='user', + ), + migrations.RemoveField( + model_name='check', + name='user', + ), + ] diff --git a/hc/api/models.py b/hc/api/models.py index 3b465447..4e4db9b9 100644 --- a/hc/api/models.py +++ b/hc/api/models.py @@ -8,7 +8,6 @@ from datetime import datetime, timedelta as td from croniter import croniter from django.conf import settings -from django.contrib.auth.models import User from django.db import models from django.urls import reverse from django.utils import timezone @@ -67,7 +66,6 @@ class Check(models.Model): tags = models.CharField(max_length=500, blank=True) code = models.UUIDField(default=uuid.uuid4, editable=False, unique=True) desc = models.TextField(blank=True) - user = models.ForeignKey(User, models.CASCADE) project = models.ForeignKey(Project, models.CASCADE) created = models.DateTimeField(auto_now_add=True) kind = models.CharField(max_length=10, default="simple", @@ -262,7 +260,6 @@ class Ping(models.Model): class Channel(models.Model): name = models.CharField(max_length=100, blank=True) code = models.UUIDField(default=uuid.uuid4, editable=False, unique=True) - user = models.ForeignKey(User, models.CASCADE) project = models.ForeignKey(Project, models.CASCADE) created = models.DateTimeField(auto_now_add=True) kind = models.CharField(max_length=20, choices=CHANNEL_KINDS) diff --git a/hc/api/tests/test_admin.py b/hc/api/tests/test_admin.py index b3f92582..acfb52d6 100644 --- a/hc/api/tests/test_admin.py +++ b/hc/api/tests/test_admin.py @@ -6,8 +6,7 @@ class ApiAdminTestCase(BaseTestCase): def setUp(self): super(ApiAdminTestCase, self).setUp() - self.check = Check.objects.create(user=self.alice, tags="foo bar", - project=self.project) + self.check = Check.objects.create(project=self.project, tags="foo bar") self.alice.is_staff = True self.alice.is_superuser = True @@ -16,8 +15,8 @@ class ApiAdminTestCase(BaseTestCase): def test_it_shows_channel_list_with_pushbullet(self): self.client.login(username="alice@example.org", password="password") - Channel.objects.create(user=self.alice, kind="pushbullet", - value="test-token", project=self.project) + Channel.objects.create(project=self.project, kind="pushbullet", + value="test-token") r = self.client.get("/admin/api/channel/") self.assertContains(r, "Pushbullet") @@ -25,8 +24,8 @@ class ApiAdminTestCase(BaseTestCase): def test_it_shows_channel_list_with_unverified_email(self): self.client.login(username="alice@example.org", password="password") - Channel.objects.create(user=self.alice, kind="email", - value="foo@example.org", project=self.project) + Channel.objects.create(project=self.project, kind="email", + value="foo@example.org") r = self.client.get("/admin/api/channel/") self.assertContains(r, "Email (unconfirmed)") diff --git a/hc/api/tests/test_badge.py b/hc/api/tests/test_badge.py index a98174c5..388d440d 100644 --- a/hc/api/tests/test_badge.py +++ b/hc/api/tests/test_badge.py @@ -12,8 +12,7 @@ class BadgeTestCase(BaseTestCase): def setUp(self): super(BadgeTestCase, self).setUp() - self.check = Check.objects.create(user=self.alice, project=self.project, - tags="foo bar") + self.check = Check.objects.create(project=self.project, tags="foo bar") sig = base64_hmac(str(self.project.badge_key), "foo", settings.SECRET_KEY) sig = sig[:8] diff --git a/hc/api/tests/test_bounce.py b/hc/api/tests/test_bounce.py index a41b0200..45d02e38 100644 --- a/hc/api/tests/test_bounce.py +++ b/hc/api/tests/test_bounce.py @@ -9,11 +9,10 @@ class BounceTestCase(BaseTestCase): def setUp(self): super(BounceTestCase, self).setUp() - self.check = Check(user=self.alice, status="up", project=self.project) + self.check = Check(project=self.project, status="up") self.check.save() - self.channel = Channel(user=self.alice, kind="email", - project=self.project) + self.channel = Channel(project=self.project, kind="email") self.channel.value = "alice@example.org" self.channel.email_verified = True self.channel.save() diff --git a/hc/api/tests/test_channel_model.py b/hc/api/tests/test_channel_model.py index 0a6a2eac..c16580db 100644 --- a/hc/api/tests/test_channel_model.py +++ b/hc/api/tests/test_channel_model.py @@ -16,9 +16,7 @@ class ChannelModelTestCase(BaseTestCase): "oauthSecret": "bar" }) - channel = Channel(kind="hipchat", user=self.alice, - project=self.project, value=value) - + channel = Channel(kind="hipchat", project=self.project, value=value) channel.refresh_hipchat_access_token() # It should request a token using a correct tokenUrl diff --git a/hc/api/tests/test_check_model.py b/hc/api/tests/test_check_model.py index 26e6827d..af4cfd18 100644 --- a/hc/api/tests/test_check_model.py +++ b/hc/api/tests/test_check_model.py @@ -155,7 +155,7 @@ class CheckModelTestCase(BaseTestCase): dt = timezone.make_aware(datetime(2000, 1, 1), timezone=timezone.utc) # Expect ping every round hour - check = Check(user=self.alice, project=self.project) + check = Check(project=self.project) check.kind = "cron" check.schedule = "0 * * * *" check.status = "up" diff --git a/hc/api/tests/test_create_check.py b/hc/api/tests/test_create_check.py index 992795d2..a657b35a 100644 --- a/hc/api/tests/test_create_check.py +++ b/hc/api/tests/test_create_check.py @@ -77,8 +77,7 @@ class CreateCheckTestCase(BaseTestCase): self.assertEqual(r.status_code, 201) def test_it_assigns_channels(self): - channel = Channel(user=self.alice, project=self.project) - channel.save() + channel = Channel.objects.create(project=self.project) r = self.post({"api_key": "X" * 32, "channels": "*"}) @@ -87,8 +86,7 @@ class CreateCheckTestCase(BaseTestCase): self.assertEqual(check.channel_set.get(), channel) def test_it_supports_unique(self): - existing = Check(user=self.alice, name="Foo", project=self.project) - existing.save() + Check.objects.create(project=self.project, name="Foo") r = self.post({ "api_key": "X" * 32, @@ -138,9 +136,6 @@ class CreateCheckTestCase(BaseTestCase): expected_fragment="name is too long") def test_unique_accepts_only_whitelisted_values(self): - existing = Check(user=self.alice, name="Foo", project=self.project) - existing.save() - self.post({ "api_key": "X" * 32, "name": "Foo", diff --git a/hc/api/tests/test_delete_check.py b/hc/api/tests/test_delete_check.py index 0d094d11..be3af6a6 100644 --- a/hc/api/tests/test_delete_check.py +++ b/hc/api/tests/test_delete_check.py @@ -6,8 +6,7 @@ class DeleteCheckTestCase(BaseTestCase): def setUp(self): super(DeleteCheckTestCase, self).setUp() - self.check = Check(user=self.alice, project=self.project) - self.check.save() + self.check = Check.objects.create(project=self.project) def test_it_works(self): r = self.client.delete("/api/v1/checks/%s" % self.check.code, diff --git a/hc/api/tests/test_list_channels.py b/hc/api/tests/test_list_channels.py index 92dd9ff7..48a255f2 100644 --- a/hc/api/tests/test_list_channels.py +++ b/hc/api/tests/test_list_channels.py @@ -9,7 +9,7 @@ class ListChannelsTestCase(BaseTestCase): def setUp(self): super(ListChannelsTestCase, self).setUp() - self.c1 = Channel(user=self.alice, project=self.project) + self.c1 = Channel(project=self.project) self.c1.kind = "email" self.c1.name = "Email to Alice" self.c1.save() @@ -36,8 +36,8 @@ class ListChannelsTestCase(BaseTestCase): self.assertIn("GET", r["Access-Control-Allow-Methods"]) def test_it_shows_only_users_channels(self): - Channel.objects.create(user=self.bob, kind="email", name="Bob", - project=self.bobs_project) + Channel.objects.create(project=self.bobs_project, kind="email", + name="Bob") r = self.get() data = r.json() diff --git a/hc/api/tests/test_list_checks.py b/hc/api/tests/test_list_checks.py index 9886fc76..434bd767 100644 --- a/hc/api/tests/test_list_checks.py +++ b/hc/api/tests/test_list_checks.py @@ -14,7 +14,7 @@ class ListChecksTestCase(BaseTestCase): self.now = now().replace(microsecond=0) - self.a1 = Check(user=self.alice, name="Alice 1", project=self.project) + self.a1 = Check(project=self.project, name="Alice 1") self.a1.timeout = td(seconds=3600) self.a1.grace = td(seconds=900) self.a1.n_pings = 0 @@ -22,7 +22,7 @@ class ListChecksTestCase(BaseTestCase): self.a1.tags = "a1-tag a1-additional-tag" self.a1.save() - self.a2 = Check(user=self.alice, name="Alice 2", project=self.project) + self.a2 = Check(project=self.project, name="Alice 2") self.a2.timeout = td(seconds=86400) self.a2.grace = td(seconds=3600) self.a2.last_ping = self.now @@ -30,7 +30,7 @@ class ListChecksTestCase(BaseTestCase): self.a2.tags = "a2-tag" self.a2.save() - self.c1 = Channel.objects.create(user=self.alice, project=self.project) + self.c1 = Channel.objects.create(project=self.project) self.a1.channel_set.add(self.c1) def get(self): @@ -79,9 +79,7 @@ class ListChecksTestCase(BaseTestCase): self.assertIn("GET", r["Access-Control-Allow-Methods"]) def test_it_shows_only_users_checks(self): - bobs_check = Check(user=self.bob, name="Bob 1", - project=self.bobs_project) - bobs_check.save() + Check.objects.create(project=self.bobs_project, name="Bob 1") r = self.get() data = r.json() diff --git a/hc/api/tests/test_notify.py b/hc/api/tests/test_notify.py index 4d91fac9..13365d5a 100644 --- a/hc/api/tests/test_notify.py +++ b/hc/api/tests/test_notify.py @@ -16,11 +16,10 @@ class NotifyTestCase(BaseTestCase): def _setup_data(self, kind, value, status="down", email_verified=True): self.check = Check(project=self.project) self.check.status = status - self.check.user = self.alice self.check.last_ping = now() - td(minutes=61) self.check.save() - self.channel = Channel(user=self.alice, project=self.project) + self.channel = Channel(project=self.project) self.channel.kind = kind self.channel.value = value self.channel.email_verified = email_verified diff --git a/hc/api/tests/test_pause.py b/hc/api/tests/test_pause.py index 6785d23d..9037d90d 100644 --- a/hc/api/tests/test_pause.py +++ b/hc/api/tests/test_pause.py @@ -8,8 +8,7 @@ from hc.test import BaseTestCase class PauseTestCase(BaseTestCase): def test_it_works(self): - check = Check(user=self.alice, status="up", project=self.project) - check.save() + check = Check.objects.create(project=self.project, status="up") url = "/api/v1/checks/%s/pause" % check.code r = self.client.post(url, "", content_type="application/json", @@ -22,8 +21,7 @@ class PauseTestCase(BaseTestCase): self.assertEqual(check.status, "paused") def test_it_handles_options(self): - check = Check(user=self.alice, status="up", project=self.project) - check.save() + check = Check.objects.create(project=self.project, status="up") r = self.client.options("/api/v1/checks/%s/pause" % check.code) self.assertEqual(r.status_code, 204) @@ -36,8 +34,7 @@ class PauseTestCase(BaseTestCase): self.assertEqual(r.status_code, 405) def test_it_validates_ownership(self): - check = Check(user=self.bob, status="up", project=self.bobs_project) - check.save() + check = Check.objects.create(project=self.bobs_project, status="up") url = "/api/v1/checks/%s/pause" % check.code r = self.client.post(url, "", content_type="application/json", @@ -60,7 +57,7 @@ class PauseTestCase(BaseTestCase): self.assertEqual(r.status_code, 404) def test_it_clears_last_start_alert_after(self): - check = Check(user=self.alice, status="up", project=self.project) + check = Check(project=self.project, status="up") check.last_start = now() check.alert_after = check.last_start + td(hours=1) check.save() diff --git a/hc/api/tests/test_ping.py b/hc/api/tests/test_ping.py index 1ac228ad..96f84ea2 100644 --- a/hc/api/tests/test_ping.py +++ b/hc/api/tests/test_ping.py @@ -10,8 +10,7 @@ class PingTestCase(BaseTestCase): def setUp(self): super().setUp() - self.check = Check.objects.create(user=self.alice, - project=self.project) + self.check = Check.objects.create(project=self.project) def test_it_works(self): r = self.client.get("/ping/%s/" % self.check.code) diff --git a/hc/api/tests/test_sendalerts.py b/hc/api/tests/test_sendalerts.py index 1eed49b1..e709c24b 100644 --- a/hc/api/tests/test_sendalerts.py +++ b/hc/api/tests/test_sendalerts.py @@ -12,7 +12,7 @@ from hc.test import BaseTestCase class SendAlertsTestCase(BaseTestCase): def test_it_handles_grace_period(self): - check = Check(user=self.alice, status="up", project=self.project) + check = Check(project=self.project, status="up") # 1 day 30 minutes after ping the check is in grace period: check.last_ping = now() - td(days=1, minutes=30) check.alert_after = check.last_ping + td(days=1, hours=1) @@ -25,7 +25,7 @@ class SendAlertsTestCase(BaseTestCase): self.assertEqual(Flip.objects.count(), 0) def test_it_creates_a_flip_when_check_goes_down(self): - check = Check(user=self.alice, status="up", project=self.project) + check = Check(project=self.project, status="up") check.last_ping = now() - td(days=2) check.alert_after = check.last_ping + td(days=1, hours=1) check.save() @@ -48,7 +48,7 @@ class SendAlertsTestCase(BaseTestCase): @patch("hc.api.management.commands.sendalerts.notify_on_thread") def test_it_processes_flip(self, mock_notify): - check = Check(user=self.alice, status="up", project=self.project) + check = Check(project=self.project, status="up") check.last_ping = now() check.alert_after = check.last_ping + td(days=1, hours=1) check.save() @@ -72,7 +72,7 @@ class SendAlertsTestCase(BaseTestCase): @patch("hc.api.management.commands.sendalerts.notify_on_thread") def test_it_updates_alert_after(self, mock_notify): - check = Check(user=self.alice, status="up", project=self.project) + check = Check(project=self.project, status="up") check.last_ping = now() - td(hours=1) check.alert_after = check.last_ping check.save() @@ -92,7 +92,7 @@ class SendAlertsTestCase(BaseTestCase): @patch("hc.api.management.commands.sendalerts.notify") def test_it_works_synchronously(self, mock_notify): - check = Check(user=self.alice, status="up", project=self.project) + check = Check(project=self.project, status="up") check.last_ping = now() - td(days=2) check.alert_after = check.last_ping + td(days=1, hours=1) check.save() @@ -107,7 +107,7 @@ class SendAlertsTestCase(BaseTestCase): self.profile.nag_period = td(hours=1) self.profile.save() - check = Check(user=self.alice, status="down", project=self.project) + check = Check(project=self.project, status="down") check.last_ping = now() - td(days=2) check.save() @@ -125,7 +125,7 @@ class SendAlertsTestCase(BaseTestCase): self.bobs_profile.nag_period = td(hours=1) self.bobs_profile.save() - check = Check(user=self.alice, status="down", project=self.project) + check = Check(project=self.project, status="down") check.last_ping = now() - td(days=2) check.save() @@ -145,7 +145,7 @@ class SendAlertsTestCase(BaseTestCase): self.profile.next_nag_date = original_nag_date self.profile.save() - check = Check(user=self.alice, status="down", project=self.project) + check = Check(project=self.project, status="down") check.last_ping = now() - td(days=2) check.save() diff --git a/hc/api/tests/test_sendreports.py b/hc/api/tests/test_sendreports.py index 2670b07e..9da2d940 100644 --- a/hc/api/tests/test_sendreports.py +++ b/hc/api/tests/test_sendreports.py @@ -24,8 +24,7 @@ class SendAlertsTestCase(BaseTestCase): self.profile.save() # And it needs at least one check that has been pinged. - self.check = Check(user=self.alice, last_ping=now()) - self.check.project = self.project + self.check = Check(project=self.project, last_ping=now()) self.check.status = "down" self.check.save() diff --git a/hc/api/tests/test_update_check.py b/hc/api/tests/test_update_check.py index e4a6600e..a8c7addb 100644 --- a/hc/api/tests/test_update_check.py +++ b/hc/api/tests/test_update_check.py @@ -8,8 +8,7 @@ class UpdateCheckTestCase(BaseTestCase): def setUp(self): super(UpdateCheckTestCase, self).setUp() - self.check = Check(user=self.alice, project=self.project) - self.check.save() + self.check = Check.objects.create(project=self.project) def post(self, code, data): url = "/api/v1/checks/%s" % code @@ -51,7 +50,7 @@ class UpdateCheckTestCase(BaseTestCase): self.assertIn("POST", r["Access-Control-Allow-Methods"]) def test_it_unassigns_channels(self): - Channel.objects.create(user=self.alice, project=self.project) + Channel.objects.create(project=self.project) self.check.assign_all_channels() r = self.post(self.check.code, { @@ -78,8 +77,7 @@ class UpdateCheckTestCase(BaseTestCase): self.assertEqual(r.status_code, 404) def test_it_validates_ownership(self): - check = Check(user=self.bob, status="up", project=self.bobs_project) - check.save() + check = Check.objects.create(project=self.bobs_project, status="up") r = self.post(check.code, {"api_key": "X" * 32}) self.assertEqual(r.status_code, 403) @@ -96,10 +94,10 @@ class UpdateCheckTestCase(BaseTestCase): self.assertEqual(self.check.kind, "simple") def test_it_sets_single_channel(self): - channel = Channel.objects.create(user=self.alice, project=self.project) + channel = Channel.objects.create(project=self.project) # Create another channel so we can test that only the first one # gets assigned: - Channel.objects.create(user=self.alice, project=self.project) + Channel.objects.create(project=self.project) r = self.post(self.check.code, { "api_key": "X" * 32, @@ -113,8 +111,8 @@ class UpdateCheckTestCase(BaseTestCase): self.assertEqual(self.check.channel_set.first().code, channel.code) def test_it_handles_comma_separated_channel_codes(self): - c1 = Channel.objects.create(user=self.alice, project=self.project) - c2 = Channel.objects.create(user=self.alice, project=self.project) + c1 = Channel.objects.create(project=self.project) + c2 = Channel.objects.create(project=self.project) r = self.post(self.check.code, { "api_key": "X" * 32, "channels": "%s,%s" % (c1.code, c2.code) @@ -126,8 +124,8 @@ class UpdateCheckTestCase(BaseTestCase): self.assertEqual(self.check.channel_set.count(), 2) def test_it_handles_asterix(self): - Channel.objects.create(user=self.alice, project=self.project) - Channel.objects.create(user=self.alice, project=self.project) + Channel.objects.create(project=self.project) + Channel.objects.create(project=self.project) r = self.post(self.check.code, { "api_key": "X" * 32, "channels": "*" @@ -139,7 +137,7 @@ class UpdateCheckTestCase(BaseTestCase): self.assertEqual(self.check.channel_set.count(), 2) def test_it_ignores_channels_if_channels_key_missing(self): - Channel.objects.create(user=self.alice, project=self.project) + Channel.objects.create(project=self.project) self.check.assign_all_channels() r = self.post(self.check.code, {"api_key": "X" * 32}) diff --git a/hc/api/views.py b/hc/api/views.py index 7e0f3aa9..526e588e 100644 --- a/hc/api/views.py +++ b/hc/api/views.py @@ -131,7 +131,7 @@ def create_check(request): if request.project.num_checks_available() <= 0: return HttpResponseForbidden() - check = Check(user=request.project.owner, project=request.project) + check = Check(project=request.project) created = True _update(check, request.json) diff --git a/hc/front/tests/test_add_check.py b/hc/front/tests/test_add_check.py index 68cd2224..8ac1f136 100644 --- a/hc/front/tests/test_add_check.py +++ b/hc/front/tests/test_add_check.py @@ -30,7 +30,7 @@ class AddCheckTestCase(BaseTestCase): check = Check.objects.get() # Added by bob, but should belong to alice (bob has team access) - self.assertEqual(check.user, self.alice) + self.assertEqual(check.project, self.project) def test_it_rejects_get(self): url = "/checks/add/" diff --git a/hc/front/tests/test_add_email.py b/hc/front/tests/test_add_email.py index c2a6d4ee..7b8e1350 100644 --- a/hc/front/tests/test_add_email.py +++ b/hc/front/tests/test_add_email.py @@ -31,7 +31,7 @@ class AddPdTestCase(BaseTestCase): ch = Channel.objects.get() # Added by bob, but should belong to alice (bob has team access) - self.assertEqual(ch.user, self.alice) + self.assertEqual(ch.project, self.project) def test_it_rejects_bad_email(self): form = {"value": "not an email address"} diff --git a/hc/front/tests/test_add_trello.py b/hc/front/tests/test_add_trello.py index 98326d1b..8c9647bd 100644 --- a/hc/front/tests/test_add_trello.py +++ b/hc/front/tests/test_add_trello.py @@ -30,5 +30,4 @@ class AddPagerTreeTestCase(BaseTestCase): c = Channel.objects.get() self.assertEqual(c.kind, "trello") self.assertEqual(c.trello_token, "fake-token") - self.assertEqual(c.user, self.alice) self.assertEqual(c.project, self.project) diff --git a/hc/front/tests/test_add_webhook.py b/hc/front/tests/test_add_webhook.py index ab5cfd6a..1ddbda50 100644 --- a/hc/front/tests/test_add_webhook.py +++ b/hc/front/tests/test_add_webhook.py @@ -30,7 +30,7 @@ class AddWebhookTestCase(BaseTestCase): self.client.post(self.url, form) c = Channel.objects.get() - self.assertEqual(c.user, self.alice) + self.assertEqual(c.project, self.project) self.assertEqual(c.value, '{"headers": {}, "post_data": "", "url_down": "http://foo.com", "url_up": "https://bar.com"}') def test_it_rejects_bad_urls(self): diff --git a/hc/front/tests/test_channel_checks.py b/hc/front/tests/test_channel_checks.py index 130ee9a2..df04918d 100644 --- a/hc/front/tests/test_channel_checks.py +++ b/hc/front/tests/test_channel_checks.py @@ -6,8 +6,7 @@ class ChannelChecksTestCase(BaseTestCase): def setUp(self): super(ChannelChecksTestCase, self).setUp() - self.channel = Channel(user=self.alice, kind="email") - self.channel.project = self.project + self.channel = Channel(project=self.project, kind="email") self.channel.value = "alice@example.org" self.channel.save() diff --git a/hc/front/tests/test_channels.py b/hc/front/tests/test_channels.py index afbff8ab..521dc69a 100644 --- a/hc/front/tests/test_channels.py +++ b/hc/front/tests/test_channels.py @@ -7,7 +7,7 @@ from hc.test import BaseTestCase class ChannelsTestCase(BaseTestCase): def test_it_formats_complex_slack_value(self): - ch = Channel(kind="slack", user=self.alice, project=self.project) + ch = Channel(kind="slack", project=self.project) ch.value = json.dumps({ "ok": True, "team_name": "foo-team", @@ -24,7 +24,7 @@ class ChannelsTestCase(BaseTestCase): self.assertContains(r, "#bar") def test_it_shows_webhook_post_data(self): - ch = Channel(kind="webhook", user=self.alice, project=self.project) + ch = Channel(kind="webhook", project=self.project) ch.value = "http://down.example.com\nhttp://up.example.com\nfoobar" ch.save() @@ -38,7 +38,7 @@ class ChannelsTestCase(BaseTestCase): self.assertContains(r, "foobar") def test_it_shows_pushover_details(self): - ch = Channel(kind="po", user=self.alice, project=self.project) + ch = Channel(kind="po", project=self.project) ch.value = "fake-key|0" ch.save() @@ -49,10 +49,10 @@ class ChannelsTestCase(BaseTestCase): self.assertContains(r, "(normal priority)") def test_it_shows_disabled_email(self): - check = Check(user=self.alice, status="up", project=self.project) + check = Check(project=self.project, status="up") check.save() - channel = Channel(user=self.alice, kind="email", project=self.project) + channel = Channel(project=self.project, kind="email") channel.value = "alice@example.org" channel.save() @@ -65,7 +65,7 @@ class ChannelsTestCase(BaseTestCase): self.assertContains(r, "Disabled") def test_it_shows_unconfirmed_email(self): - channel = Channel(user=self.alice, kind="email", project=self.project) + channel = Channel(project=self.project, kind="email") channel.value = "alice@example.org" channel.save() @@ -75,7 +75,7 @@ class ChannelsTestCase(BaseTestCase): self.assertContains(r, "Unconfirmed") def test_it_shows_sms_label(self): - ch = Channel(kind="sms", user=self.alice, project=self.project) + ch = Channel(kind="sms", project=self.project) ch.value = json.dumps({"value": "+123", "label": "My Phone"}) ch.save() diff --git a/hc/front/tests/test_details.py b/hc/front/tests/test_details.py index 2d35e5bf..0e2e96a9 100644 --- a/hc/front/tests/test_details.py +++ b/hc/front/tests/test_details.py @@ -6,11 +6,9 @@ class DetailsTestCase(BaseTestCase): def setUp(self): super(DetailsTestCase, self).setUp() - self.check = Check(user=self.alice, project=self.project) - self.check.save() + self.check = Check.objects.create(project=self.project) - ping = Ping(owner=self.check) - ping.save() + ping = Ping.objects.create(owner=self.check) # Older MySQL versions don't store microseconds. This makes sure # the ping is older than any notifications we may create later: diff --git a/hc/front/tests/test_log.py b/hc/front/tests/test_log.py index 89c27cca..85c5844d 100644 --- a/hc/front/tests/test_log.py +++ b/hc/front/tests/test_log.py @@ -6,11 +6,9 @@ class LogTestCase(BaseTestCase): def setUp(self): super(LogTestCase, self).setUp() - self.check = Check(user=self.alice, project=self.project) - self.check.save() + self.check = Check.objects.create(project=self.project) - ping = Ping(owner=self.check) - ping.save() + ping = Ping.objects.create(owner=self.check) # Older MySQL versions don't store microseconds. This makes sure # the ping is older than any notifications we may create later: @@ -55,8 +53,7 @@ class LogTestCase(BaseTestCase): self.assertEqual(r.status_code, 404) def test_it_shows_pushover_notifications(self): - ch = Channel(kind="po", user=self.alice, project=self.project) - ch.save() + ch = Channel.objects.create(kind="po", project=self.project) Notification(owner=self.check, channel=ch, check_status="down").save() @@ -67,8 +64,8 @@ class LogTestCase(BaseTestCase): self.assertContains(r, "Sent a Pushover notification", status_code=200) def test_it_shows_webhook_notifications(self): - ch = Channel(kind="webhook", user=self.alice, value="foo/$NAME") - ch.project = self.project + ch = Channel(kind="webhook", project=self.project) + ch.value = "foo/$NAME" ch.save() Notification(owner=self.check, channel=ch, check_status="down").save() diff --git a/hc/front/tests/test_my_checks.py b/hc/front/tests/test_my_checks.py index 0673e3b2..45daa5d5 100644 --- a/hc/front/tests/test_my_checks.py +++ b/hc/front/tests/test_my_checks.py @@ -8,8 +8,7 @@ class MyChecksTestCase(BaseTestCase): def setUp(self): super(MyChecksTestCase, self).setUp() - self.check = Check(user=self.alice, name="Alice Was Here") - self.check.project = self.project + self.check = Check(project=self.project, name="Alice Was Here") self.check.save() def test_it_works(self): diff --git a/hc/front/tests/test_pause.py b/hc/front/tests/test_pause.py index 370bcbe6..28e25f21 100644 --- a/hc/front/tests/test_pause.py +++ b/hc/front/tests/test_pause.py @@ -9,9 +9,7 @@ class PauseTestCase(BaseTestCase): def setUp(self): super(PauseTestCase, self).setUp() - self.check = Check(user=self.alice, status="up", project=self.project) - self.check.save() - + self.check = Check.objects.create(project=self.project, status="up") self.url = "/checks/%s/pause/" % self.check.code def test_it_pauses(self): diff --git a/hc/front/tests/test_ping_details.py b/hc/front/tests/test_ping_details.py index 9847a371..7b56b1f1 100644 --- a/hc/front/tests/test_ping_details.py +++ b/hc/front/tests/test_ping_details.py @@ -5,9 +5,7 @@ from hc.test import BaseTestCase class LastPingTestCase(BaseTestCase): def test_it_works(self): - check = Check(user=self.alice, project=self.project) - check.save() - + check = Check.objects.create(project=self.project) Ping.objects.create(owner=check, body="this is body") self.client.login(username="alice@example.org", password="password") @@ -15,9 +13,7 @@ class LastPingTestCase(BaseTestCase): self.assertContains(r, "this is body", status_code=200) def test_it_shows_fail(self): - check = Check(user=self.alice, project=self.project) - check.save() - + check = Check.objects.create(project=self.project) Ping.objects.create(owner=check, kind="fail") self.client.login(username="alice@example.org", password="password") @@ -25,9 +21,7 @@ class LastPingTestCase(BaseTestCase): self.assertContains(r, "/fail", status_code=200) def test_it_shows_start(self): - check = Check(user=self.alice, project=self.project) - check.save() - + check = Check.objects.create(project=self.project) Ping.objects.create(owner=check, kind="start") self.client.login(username="alice@example.org", password="password") @@ -35,8 +29,7 @@ class LastPingTestCase(BaseTestCase): self.assertContains(r, "/start", status_code=200) def test_it_accepts_n(self): - check = Check(user=self.alice, project=self.project) - check.save() + check = Check.objects.create(project=self.project) # remote_addr, scheme, method, ua, body: check.ping("1.2.3.4", "http", "post", "tester", "foo-123", "success") @@ -54,9 +47,7 @@ class LastPingTestCase(BaseTestCase): self.bobs_profile.current_team = None self.bobs_profile.save() - check = Check(user=self.alice, project=self.project) - check.save() - + check = Check.objects.create(project=self.project) Ping.objects.create(owner=check, body="this is body") 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 b12add80..a98ebc0a 100644 --- a/hc/front/tests/test_remove_channel.py +++ b/hc/front/tests/test_remove_channel.py @@ -6,8 +6,7 @@ class RemoveChannelTestCase(BaseTestCase): def setUp(self): super(RemoveChannelTestCase, self).setUp() - self.channel = Channel(user=self.alice, kind="email") - self.channel.project = self.project + self.channel = Channel(project=self.project, kind="email") self.channel.value = "alice@example.org" self.channel.save() diff --git a/hc/front/tests/test_remove_check.py b/hc/front/tests/test_remove_check.py index c432e4b1..b5de5189 100644 --- a/hc/front/tests/test_remove_check.py +++ b/hc/front/tests/test_remove_check.py @@ -6,9 +6,7 @@ class RemoveCheckTestCase(BaseTestCase): def setUp(self): super(RemoveCheckTestCase, self).setUp() - self.check = Check(user=self.alice, project=self.project) - self.check.save() - + self.check = Check.objects.create(project=self.project) self.remove_url = "/checks/%s/remove/" % self.check.code def test_it_works(self): diff --git a/hc/front/tests/test_status.py b/hc/front/tests/test_status.py index b1784a5e..63a8f703 100644 --- a/hc/front/tests/test_status.py +++ b/hc/front/tests/test_status.py @@ -6,8 +6,7 @@ class MyChecksTestCase(BaseTestCase): def setUp(self): super(MyChecksTestCase, self).setUp() - self.check = Check(user=self.alice, name="Alice Was Here") - self.check.project = self.project + self.check = Check(project=self.project, name="Alice Was Here") self.check.tags = "foo" self.check.save() diff --git a/hc/front/tests/test_status_single.py b/hc/front/tests/test_status_single.py index c868a1ac..6caef26e 100644 --- a/hc/front/tests/test_status_single.py +++ b/hc/front/tests/test_status_single.py @@ -6,8 +6,7 @@ class StatusSingleTestCase(BaseTestCase): def setUp(self): super(StatusSingleTestCase, self).setUp() - self.check = Check(user=self.alice, name="Alice Was Here") - self.check.project = self.project + self.check = Check(project=self.project, name="Alice Was Here") self.check.save() def test_it_works(self): diff --git a/hc/front/tests/test_switch_channel.py b/hc/front/tests/test_switch_channel.py index 349052cc..53237ffb 100644 --- a/hc/front/tests/test_switch_channel.py +++ b/hc/front/tests/test_switch_channel.py @@ -7,11 +7,9 @@ class SwitchChannelTestCase(BaseTestCase): def setUp(self): super(SwitchChannelTestCase, self).setUp() - self.check = Check(user=self.alice, project=self.project) - self.check.save() + self.check = Check.objects.create(project=self.project) - self.channel = Channel(user=self.alice, kind="email") - self.channel.project = self.project + self.channel = Channel(project=self.project, kind="email") self.channel.value = "alice@example.org" self.channel.save() @@ -38,8 +36,7 @@ class SwitchChannelTestCase(BaseTestCase): def test_it_checks_channels_ownership(self): charlies_project = Project.objects.create(owner=self.charlie) - cc = Check(user=self.charlie, project=charlies_project) - cc.save() + cc = Check.objects.create(project=charlies_project) # Charlie will try to assign Alice's channel to his check: self.url = "/checks/%s/channels/%s/enabled" % (cc.code, self.channel.code) diff --git a/hc/front/tests/test_unsubscribe_email.py b/hc/front/tests/test_unsubscribe_email.py index a9d490cf..a18acfea 100644 --- a/hc/front/tests/test_unsubscribe_email.py +++ b/hc/front/tests/test_unsubscribe_email.py @@ -6,8 +6,7 @@ class UnsubscribeEmailTestCase(BaseTestCase): def setUp(self): super(UnsubscribeEmailTestCase, self).setUp() - self.channel = Channel(user=self.alice, kind="email") - self.channel.project = self.project + self.channel = Channel(project=self.project, kind="email") self.channel.value = "alice@example.org" self.channel.save() diff --git a/hc/front/tests/test_update_channel.py b/hc/front/tests/test_update_channel.py index 8d3d87fa..8d857869 100644 --- a/hc/front/tests/test_update_channel.py +++ b/hc/front/tests/test_update_channel.py @@ -7,11 +7,9 @@ class UpdateChannelTestCase(BaseTestCase): def setUp(self): super(UpdateChannelTestCase, self).setUp() - self.check = Check(user=self.alice, project=self.project) - self.check.save() + self.check = Check.objects.create(project=self.project) - self.channel = Channel(user=self.alice, kind="email") - self.channel.project = self.project + self.channel = Channel(project=self.project, kind="email") self.channel.email = "alice@example.org" self.channel.save() @@ -53,8 +51,7 @@ class UpdateChannelTestCase(BaseTestCase): def test_it_checks_check_user(self): charlies_project = Project.objects.create(owner=self.charlie) - charlies_channel = Channel(user=self.charlie, kind="email") - charlies_channel.project = charlies_project + charlies_channel = Channel(project=charlies_project, kind="email") charlies_channel.email = "charlie@example.org" charlies_channel.save() diff --git a/hc/front/tests/test_update_channel_name.py b/hc/front/tests/test_update_channel_name.py index aa121975..8d27bc64 100644 --- a/hc/front/tests/test_update_channel_name.py +++ b/hc/front/tests/test_update_channel_name.py @@ -6,8 +6,7 @@ class UpdateChannelNameTestCase(BaseTestCase): def setUp(self): super(UpdateChannelNameTestCase, self).setUp() - self.channel = Channel(kind="email", user=self.alice) - self.channel.project = self.project + self.channel = Channel(kind="email", project=self.project) self.channel.save() self.url = "/integrations/%s/name/" % self.channel.code diff --git a/hc/front/tests/test_update_name.py b/hc/front/tests/test_update_name.py index 9e087a13..4efa1df3 100644 --- a/hc/front/tests/test_update_name.py +++ b/hc/front/tests/test_update_name.py @@ -6,8 +6,7 @@ class UpdateNameTestCase(BaseTestCase): def setUp(self): super(UpdateNameTestCase, self).setUp() - self.check = Check(user=self.alice, project=self.project) - self.check.save() + self.check = Check.objects.create(project=self.project) self.url = "/checks/%s/name/" % self.check.code diff --git a/hc/front/tests/test_update_timeout.py b/hc/front/tests/test_update_timeout.py index 055433a5..1b52e8dd 100644 --- a/hc/front/tests/test_update_timeout.py +++ b/hc/front/tests/test_update_timeout.py @@ -9,7 +9,7 @@ class UpdateTimeoutTestCase(BaseTestCase): def setUp(self): super(UpdateTimeoutTestCase, self).setUp() - self.check = Check(user=self.alice, status="up", project=self.project) + self.check = Check(project=self.project, status="up") self.check.last_ping = timezone.now() self.check.save() diff --git a/hc/front/tests/test_verify_email.py b/hc/front/tests/test_verify_email.py index e5c41a18..e53008a5 100644 --- a/hc/front/tests/test_verify_email.py +++ b/hc/front/tests/test_verify_email.py @@ -6,8 +6,7 @@ class VerifyEmailTestCase(BaseTestCase): def setUp(self): super(VerifyEmailTestCase, self).setUp() - self.channel = Channel(user=self.alice, kind="email") - self.channel.project = self.project + self.channel = Channel(project=self.project, kind="email") self.channel.value = "alice@example.org" self.channel.save() diff --git a/hc/front/views.py b/hc/front/views.py index 762c66f3..8057e93b 100644 --- a/hc/front/views.py +++ b/hc/front/views.py @@ -249,7 +249,7 @@ def add_check(request): if request.project.num_checks_available() <= 0: return HttpResponseBadRequest() - check = Check(user=request.project.owner, project=request.project) + check = Check(project=request.project) check.save() check.assign_all_channels() @@ -588,8 +588,7 @@ def add_email(request): if request.method == "POST": form = AddEmailForm(request.POST) if form.is_valid(): - channel = Channel(user=request.project.owner, kind="email") - channel.project = request.project + channel = Channel(project=request.project, kind="email") channel.value = form.cleaned_data["value"] channel.save() @@ -608,8 +607,7 @@ def add_webhook(request): if request.method == "POST": form = AddWebhookForm(request.POST) if form.is_valid(): - channel = Channel(user=request.project.owner, kind="webhook") - channel.project = request.project + channel = Channel(project=request.project, kind="webhook") channel.value = form.get_value() channel.save() @@ -687,8 +685,7 @@ def add_pagertree(request): if request.method == "POST": form = AddUrlForm(request.POST) if form.is_valid(): - channel = Channel(user=request.project.owner, kind="pagertree") - channel.project = request.project + channel = Channel(project=request.project, kind="pagertree") channel.value = form.cleaned_data["value"] channel.save() @@ -708,8 +705,7 @@ def add_slack(request): if request.method == "POST": form = AddUrlForm(request.POST) if form.is_valid(): - channel = Channel(user=request.project.owner, kind="slack") - channel.project = request.project + channel = Channel(project=request.project, kind="slack") channel.value = form.cleaned_data["value"] channel.save() @@ -929,13 +925,12 @@ def add_pushover(request): return HttpResponseBadRequest() if request.GET.get("pushover_unsubscribed") == "1": - # Unsubscription: delete all Pushover channels for this user - Channel.objects.filter(user=request.user, kind="po").delete() + # Unsubscription: delete all Pushover channels for this project + Channel.objects.filter(project=request.project, kind="po").delete() return redirect("hc-channels") # Subscription - channel = Channel(user=request.project.owner, kind="po") - channel.project = request.project + channel = Channel(project=request.project, kind="po") channel.value = "%s|%s|%s" % (key, prio, prio_up) channel.save() channel.assign_all_checks() @@ -957,8 +952,7 @@ def add_opsgenie(request): if request.method == "POST": form = AddOpsGenieForm(request.POST) if form.is_valid(): - channel = Channel(user=request.project.owner, kind="opsgenie") - channel.project = request.project + channel = Channel(project=request.project, kind="opsgenie") channel.value = form.cleaned_data["value"] channel.save() @@ -976,8 +970,7 @@ def add_victorops(request): if request.method == "POST": form = AddUrlForm(request.POST) if form.is_valid(): - channel = Channel(user=request.project.owner, kind="victorops") - channel.project = request.project + channel = Channel(project=request.project, kind="victorops") channel.value = form.cleaned_data["value"] channel.save() @@ -1025,8 +1018,7 @@ def add_telegram(request): chat_id, chat_type, chat_name = signing.loads(qs, max_age=600) if request.method == "POST": - channel = Channel(user=request.project.owner, kind="telegram") - channel.project = request.project + channel = Channel(project=request.project, kind="telegram") channel.value = json.dumps({ "id": chat_id, "type": chat_type, @@ -1056,8 +1048,7 @@ def add_sms(request): if request.method == "POST": form = AddSmsForm(request.POST) if form.is_valid(): - channel = Channel(user=request.project.owner, kind="sms") - channel.project = request.project + channel = Channel(project=request.project, kind="sms") channel.name = form.cleaned_data["label"] channel.value = json.dumps({ "value": form.cleaned_data["value"] @@ -1083,8 +1074,7 @@ def add_trello(request): raise Http404("trello integration is not available") if request.method == "POST": - channel = Channel(user=request.project.owner, kind="trello") - channel.project = request.project + channel = Channel(project=request.project, kind="trello") channel.value = request.POST["settings"] channel.save()