Browse Source

feat(sentry apps): Add AlertRuleAction creator (#28510)

* feat(sentry apps): Add AlertRuleAction creator
Colleen O'Rourke 3 years ago
parent
commit
464b879f4e
1 changed files with 28 additions and 0 deletions
  1. 28 0
      src/sentry/mediators/alert_rule_actions/creator.py

+ 28 - 0
src/sentry/mediators/alert_rule_actions/creator.py

@@ -0,0 +1,28 @@
+from sentry.mediators import Mediator, Param, external_requests
+from sentry.utils.cache import memoize
+
+
+class AlertRuleActionCreator(Mediator):
+    install = Param("sentry.models.SentryAppInstallation")
+    fields = Param(object)
+    uri = Param((str,))
+    rule = Param("sentry.models.Rule")
+
+    def call(self):
+        self._make_external_request()
+        self._save_alert_rule_action()
+        return self.response
+
+    def _save_alert_rule_action(self):
+        self.rule.save()
+
+    def _make_external_request(self):
+        self.response = external_requests.AlerRuleActionRequester.run(
+            install=self.install,
+            uri=self.uri,
+            fields=self.fields,
+        )
+
+    @memoize
+    def sentry_app(self):
+        return self.install.sentry_app