forked from GithubBackups/healthchecks
Drop Check.user_id and Channel.user_id (obsolete, using project_id now)
This commit is contained in:
parent
512c67a8f9
commit
0994006603
@ -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")
|
||||
|
@ -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")
|
||||
|
@ -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",
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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")
|
||||
|
@ -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
|
||||
|
21
hc/api/migrations/0057_auto_20190118_1319.py
Normal file
21
hc/api/migrations/0057_auto_20190118_1319.py
Normal file
@ -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',
|
||||
),
|
||||
]
|
@ -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)
|
||||
|
@ -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 <i>(unconfirmed)</i>")
|
||||
|
@ -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]
|
||||
|
@ -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()
|
||||
|
@ -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
|
||||
|
@ -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"
|
||||
|
@ -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",
|
||||
|
@ -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,
|
||||
|
@ -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()
|
||||
|
@ -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()
|
||||
|
@ -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
|
||||
|
@ -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()
|
||||
|
@ -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)
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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})
|
||||
|
@ -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)
|
||||
|
@ -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/"
|
||||
|
@ -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"}
|
||||
|
@ -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)
|
||||
|
@ -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):
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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:
|
||||
|
@ -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()
|
||||
|
@ -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):
|
||||
|
@ -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):
|
||||
|
@ -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")
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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):
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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):
|
||||
|
@ -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)
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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()
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user