diff --git a/templates/zerver/api/incoming-webhooks-walkthrough.md b/templates/zerver/api/incoming-webhooks-walkthrough.md index ea98844bff..ffa81e8142 100644 --- a/templates/zerver/api/incoming-webhooks-walkthrough.md +++ b/templates/zerver/api/incoming-webhooks-walkthrough.md @@ -623,7 +623,7 @@ Many third-party services have dozens of different event types. In some cases, w may choose to explicitly ignore specific events. In other cases, there may be events that are new or events that we don't know about. In such cases, we recommend raising `UnexpectedWebhookEventType` (found in -`zerver/lib/webhooks/common.py`), like so: +`zerver/lib/exceptions.py`), like so: ``` raise UnexpectedWebhookEventType(webhook_name, event_type) diff --git a/tools/linter_lib/pyflakes.py b/tools/linter_lib/pyflakes.py index 5029dfe838..1861b81a10 100644 --- a/tools/linter_lib/pyflakes.py +++ b/tools/linter_lib/pyflakes.py @@ -7,9 +7,6 @@ from zulint.linters import run_pyflakes def check_pyflakes(files: List[str], options: argparse.Namespace) -> bool: suppress_patterns = [ ("scripts/lib/pythonrc.py", "imported but unused"), - # Intentionally imported by zerver/lib/webhooks/common.py - ('', "'zerver.lib.exceptions.UnexpectedWebhookEventType' imported but unused"), - # Our ipython startup pythonrc file intentionally imports * ("scripts/lib/pythonrc.py", diff --git a/zerver/lib/webhooks/common.py b/zerver/lib/webhooks/common.py index 9e67cfa0e7..191b106de2 100644 --- a/zerver/lib/webhooks/common.py +++ b/zerver/lib/webhooks/common.py @@ -10,12 +10,7 @@ from zerver.lib.actions import ( check_send_stream_message, send_rate_limited_pm_notification_to_bot_owner, ) -from zerver.lib.exceptions import ( - ErrorCode, - JsonableError, - StreamDoesNotExistError, - UnexpectedWebhookEventType, -) +from zerver.lib.exceptions import ErrorCode, JsonableError, StreamDoesNotExistError from zerver.lib.request import REQ, has_request_variables from zerver.lib.send_email import FromAddress from zerver.models import UserProfile diff --git a/zerver/tests/test_decorators.py b/zerver/tests/test_decorators.py index a55c22b2d1..d93b886b4b 100644 --- a/zerver/tests/test_decorators.py +++ b/zerver/tests/test_decorators.py @@ -36,7 +36,12 @@ from zerver.lib.actions import ( do_set_realm_property, ) from zerver.lib.cache import dict_to_items_tuple, ignore_unhashable_lru_cache, items_tuple_to_dict -from zerver.lib.exceptions import InvalidAPIKeyError, InvalidAPIKeyFormatError, JsonableError +from zerver.lib.exceptions import ( + InvalidAPIKeyError, + InvalidAPIKeyFormatError, + JsonableError, + UnexpectedWebhookEventType, +) from zerver.lib.initial_password import initial_password from zerver.lib.request import ( REQ, @@ -76,7 +81,6 @@ from zerver.lib.validator import ( to_non_negative_int, to_positive_or_allowed_int, ) -from zerver.lib.webhooks.common import UnexpectedWebhookEventType from zerver.models import Realm, UserProfile, get_realm, get_user if settings.ZILENCER_ENABLED: diff --git a/zerver/webhooks/basecamp/view.py b/zerver/webhooks/basecamp/view.py index 74793d3826..6fd76dca4f 100644 --- a/zerver/webhooks/basecamp/view.py +++ b/zerver/webhooks/basecamp/view.py @@ -5,9 +5,10 @@ from typing import Any, Dict from django.http import HttpRequest, HttpResponse from zerver.decorator import api_key_only_webhook_view +from zerver.lib.exceptions import UnexpectedWebhookEventType from zerver.lib.request import REQ, has_request_variables from zerver.lib.response import json_success -from zerver.lib.webhooks.common import UnexpectedWebhookEventType, check_send_webhook_message +from zerver.lib.webhooks.common import check_send_webhook_message from zerver.models import UserProfile from .support_event import SUPPORT_EVENTS diff --git a/zerver/webhooks/bitbucket2/view.py b/zerver/webhooks/bitbucket2/view.py index f69cb21d88..2f2a2b9652 100644 --- a/zerver/webhooks/bitbucket2/view.py +++ b/zerver/webhooks/bitbucket2/view.py @@ -8,10 +8,10 @@ from typing import Any, Dict, List, Optional from django.http import HttpRequest, HttpResponse from zerver.decorator import api_key_only_webhook_view +from zerver.lib.exceptions import UnexpectedWebhookEventType from zerver.lib.request import REQ, has_request_variables from zerver.lib.response import json_success from zerver.lib.webhooks.common import ( - UnexpectedWebhookEventType, check_send_webhook_message, validate_extract_webhook_http_header, ) diff --git a/zerver/webhooks/bitbucket3/view.py b/zerver/webhooks/bitbucket3/view.py index 37b9b91905..2ec559f9c6 100644 --- a/zerver/webhooks/bitbucket3/view.py +++ b/zerver/webhooks/bitbucket3/view.py @@ -6,9 +6,10 @@ from typing import Any, Callable, Dict, List, Optional from django.http import HttpRequest, HttpResponse from zerver.decorator import api_key_only_webhook_view +from zerver.lib.exceptions import UnexpectedWebhookEventType from zerver.lib.request import REQ, has_request_variables from zerver.lib.response import json_success -from zerver.lib.webhooks.common import UnexpectedWebhookEventType, check_send_webhook_message +from zerver.lib.webhooks.common import check_send_webhook_message from zerver.lib.webhooks.git import ( CONTENT_MESSAGE_TEMPLATE, TOPIC_WITH_BRANCH_TEMPLATE, diff --git a/zerver/webhooks/clubhouse/view.py b/zerver/webhooks/clubhouse/view.py index 27bef92367..3ef7ddb595 100644 --- a/zerver/webhooks/clubhouse/view.py +++ b/zerver/webhooks/clubhouse/view.py @@ -4,9 +4,10 @@ from typing import Any, Dict, Optional from django.http import HttpRequest, HttpResponse from zerver.decorator import api_key_only_webhook_view +from zerver.lib.exceptions import UnexpectedWebhookEventType from zerver.lib.request import REQ, has_request_variables from zerver.lib.response import json_success -from zerver.lib.webhooks.common import UnexpectedWebhookEventType, check_send_webhook_message +from zerver.lib.webhooks.common import check_send_webhook_message from zerver.models import UserProfile EPIC_NAME_TEMPLATE = "**{name}**" diff --git a/zerver/webhooks/github/view.py b/zerver/webhooks/github/view.py index dda2402ea7..a7d7cb25bf 100644 --- a/zerver/webhooks/github/view.py +++ b/zerver/webhooks/github/view.py @@ -5,10 +5,10 @@ from typing import Any, Callable, Dict, Optional from django.http import HttpRequest, HttpResponse from zerver.decorator import api_key_only_webhook_view, log_exception_to_webhook_logger +from zerver.lib.exceptions import UnexpectedWebhookEventType from zerver.lib.request import REQ, has_request_variables from zerver.lib.response import json_success from zerver.lib.webhooks.common import ( - UnexpectedWebhookEventType, check_send_webhook_message, get_http_headers_from_filename, validate_extract_webhook_http_header, diff --git a/zerver/webhooks/gitlab/view.py b/zerver/webhooks/gitlab/view.py index 368c35998e..e64c0910db 100644 --- a/zerver/webhooks/gitlab/view.py +++ b/zerver/webhooks/gitlab/view.py @@ -6,11 +6,11 @@ from typing import Any, Dict, Optional from django.http import HttpRequest, HttpResponse from zerver.decorator import api_key_only_webhook_view +from zerver.lib.exceptions import UnexpectedWebhookEventType from zerver.lib.request import REQ, has_request_variables from zerver.lib.response import json_success from zerver.lib.validator import check_bool from zerver.lib.webhooks.common import ( - UnexpectedWebhookEventType, check_send_webhook_message, validate_extract_webhook_http_header, ) diff --git a/zerver/webhooks/gogs/view.py b/zerver/webhooks/gogs/view.py index 4832f48b59..0d5136a75d 100644 --- a/zerver/webhooks/gogs/view.py +++ b/zerver/webhooks/gogs/view.py @@ -4,10 +4,10 @@ from typing import Any, Callable, Dict, Optional from django.http import HttpRequest, HttpResponse from zerver.decorator import api_key_only_webhook_view +from zerver.lib.exceptions import UnexpectedWebhookEventType from zerver.lib.request import REQ, has_request_variables from zerver.lib.response import json_success from zerver.lib.webhooks.common import ( - UnexpectedWebhookEventType, check_send_webhook_message, get_http_headers_from_filename, validate_extract_webhook_http_header, diff --git a/zerver/webhooks/gosquared/view.py b/zerver/webhooks/gosquared/view.py index 0c9affba7d..32fd3e612e 100644 --- a/zerver/webhooks/gosquared/view.py +++ b/zerver/webhooks/gosquared/view.py @@ -3,9 +3,10 @@ from typing import Any, Dict from django.http import HttpRequest, HttpResponse from zerver.decorator import api_key_only_webhook_view +from zerver.lib.exceptions import UnexpectedWebhookEventType from zerver.lib.request import REQ, has_request_variables from zerver.lib.response import json_success -from zerver.lib.webhooks.common import UnexpectedWebhookEventType, check_send_webhook_message +from zerver.lib.webhooks.common import check_send_webhook_message from zerver.models import UserProfile TRAFFIC_SPIKE_TEMPLATE = '[{website_name}]({website_url}) has {user_num} visitors online.' diff --git a/zerver/webhooks/groove/view.py b/zerver/webhooks/groove/view.py index 038003bdfa..c2e0979e6a 100644 --- a/zerver/webhooks/groove/view.py +++ b/zerver/webhooks/groove/view.py @@ -5,10 +5,10 @@ from typing import Any, Callable, Dict, Optional from django.http import HttpRequest, HttpResponse from zerver.decorator import api_key_only_webhook_view +from zerver.lib.exceptions import UnexpectedWebhookEventType from zerver.lib.request import REQ, has_request_variables from zerver.lib.response import json_success from zerver.lib.webhooks.common import ( - UnexpectedWebhookEventType, check_send_webhook_message, get_http_headers_from_filename, validate_extract_webhook_http_header, diff --git a/zerver/webhooks/harbor/view.py b/zerver/webhooks/harbor/view.py index 39cdd5bf1e..fbccb6992c 100644 --- a/zerver/webhooks/harbor/view.py +++ b/zerver/webhooks/harbor/view.py @@ -5,9 +5,10 @@ from django.db.models import Q from django.http import HttpRequest, HttpResponse from zerver.decorator import api_key_only_webhook_view +from zerver.lib.exceptions import UnexpectedWebhookEventType from zerver.lib.request import REQ, has_request_variables from zerver.lib.response import json_success -from zerver.lib.webhooks.common import UnexpectedWebhookEventType, check_send_webhook_message +from zerver.lib.webhooks.common import check_send_webhook_message from zerver.models import Realm, UserProfile IGNORED_EVENTS = [ diff --git a/zerver/webhooks/intercom/view.py b/zerver/webhooks/intercom/view.py index fcee857de7..016046bb2b 100644 --- a/zerver/webhooks/intercom/view.py +++ b/zerver/webhooks/intercom/view.py @@ -5,9 +5,10 @@ from typing import Any, Callable, Dict, List, Tuple from django.http import HttpRequest, HttpResponse from zerver.decorator import api_key_only_webhook_view +from zerver.lib.exceptions import UnexpectedWebhookEventType from zerver.lib.request import REQ, has_request_variables from zerver.lib.response import json_success -from zerver.lib.webhooks.common import UnexpectedWebhookEventType, check_send_webhook_message +from zerver.lib.webhooks.common import check_send_webhook_message from zerver.models import UserProfile COMPANY_CREATED = """ diff --git a/zerver/webhooks/jira/view.py b/zerver/webhooks/jira/view.py index 08ea10c618..a4467db2c4 100644 --- a/zerver/webhooks/jira/view.py +++ b/zerver/webhooks/jira/view.py @@ -7,9 +7,10 @@ from django.db.models import Q from django.http import HttpRequest, HttpResponse from zerver.decorator import api_key_only_webhook_view +from zerver.lib.exceptions import UnexpectedWebhookEventType from zerver.lib.request import REQ, has_request_variables from zerver.lib.response import json_success -from zerver.lib.webhooks.common import UnexpectedWebhookEventType, check_send_webhook_message +from zerver.lib.webhooks.common import check_send_webhook_message from zerver.models import Realm, UserProfile, get_user_by_delivery_email IGNORED_EVENTS = [ diff --git a/zerver/webhooks/netlify/view.py b/zerver/webhooks/netlify/view.py index 1c256b1dfe..b934b21e1b 100644 --- a/zerver/webhooks/netlify/view.py +++ b/zerver/webhooks/netlify/view.py @@ -3,10 +3,10 @@ from typing import Any, Dict, Iterable from django.http import HttpRequest, HttpResponse from zerver.decorator import api_key_only_webhook_view +from zerver.lib.exceptions import UnexpectedWebhookEventType from zerver.lib.request import REQ, has_request_variables from zerver.lib.response import json_success from zerver.lib.webhooks.common import ( - UnexpectedWebhookEventType, check_send_webhook_message, get_http_headers_from_filename, validate_extract_webhook_http_header, diff --git a/zerver/webhooks/newrelic/view.py b/zerver/webhooks/newrelic/view.py index 8ef9bf0f2e..9a25d915a4 100644 --- a/zerver/webhooks/newrelic/view.py +++ b/zerver/webhooks/newrelic/view.py @@ -4,10 +4,11 @@ from typing import Any, Dict, Optional from django.http import HttpRequest, HttpResponse from zerver.decorator import api_key_only_webhook_view +from zerver.lib.exceptions import UnexpectedWebhookEventType from zerver.lib.request import REQ, has_request_variables from zerver.lib.response import json_success from zerver.lib.validator import check_dict -from zerver.lib.webhooks.common import UnexpectedWebhookEventType, check_send_webhook_message +from zerver.lib.webhooks.common import check_send_webhook_message from zerver.models import UserProfile ALERT_TEMPLATE = "{long_description} ([view alert]({alert_url}))." diff --git a/zerver/webhooks/pagerduty/view.py b/zerver/webhooks/pagerduty/view.py index 9267bb9811..e652c1987b 100644 --- a/zerver/webhooks/pagerduty/view.py +++ b/zerver/webhooks/pagerduty/view.py @@ -4,9 +4,10 @@ from typing import Any, Dict, Iterable from django.http import HttpRequest, HttpResponse from zerver.decorator import api_key_only_webhook_view +from zerver.lib.exceptions import UnexpectedWebhookEventType from zerver.lib.request import REQ, has_request_variables from zerver.lib.response import json_success -from zerver.lib.webhooks.common import UnexpectedWebhookEventType, check_send_webhook_message +from zerver.lib.webhooks.common import check_send_webhook_message from zerver.models import UserProfile PAGER_DUTY_EVENT_NAMES = { diff --git a/zerver/webhooks/pingdom/view.py b/zerver/webhooks/pingdom/view.py index 16ac895043..eee8f5976c 100644 --- a/zerver/webhooks/pingdom/view.py +++ b/zerver/webhooks/pingdom/view.py @@ -4,9 +4,10 @@ from typing import Any, Dict from django.http import HttpRequest, HttpResponse from zerver.decorator import api_key_only_webhook_view +from zerver.lib.exceptions import UnexpectedWebhookEventType from zerver.lib.request import REQ, has_request_variables from zerver.lib.response import json_success -from zerver.lib.webhooks.common import UnexpectedWebhookEventType, check_send_webhook_message +from zerver.lib.webhooks.common import check_send_webhook_message from zerver.models import UserProfile PINGDOM_TOPIC_TEMPLATE = '{name} status.' diff --git a/zerver/webhooks/pivotal/view.py b/zerver/webhooks/pivotal/view.py index 88a82e64c9..ddd811612c 100644 --- a/zerver/webhooks/pivotal/view.py +++ b/zerver/webhooks/pivotal/view.py @@ -8,9 +8,10 @@ from django.http import HttpRequest, HttpResponse from django.utils.translation import ugettext as _ from zerver.decorator import api_key_only_webhook_view +from zerver.lib.exceptions import UnexpectedWebhookEventType from zerver.lib.request import has_request_variables from zerver.lib.response import json_error, json_success -from zerver.lib.webhooks.common import UnexpectedWebhookEventType, check_send_webhook_message +from zerver.lib.webhooks.common import check_send_webhook_message from zerver.models import UserProfile diff --git a/zerver/webhooks/raygun/view.py b/zerver/webhooks/raygun/view.py index 497c9c9e27..45eeb343a4 100644 --- a/zerver/webhooks/raygun/view.py +++ b/zerver/webhooks/raygun/view.py @@ -4,9 +4,10 @@ from typing import Any, Dict from django.http import HttpRequest, HttpResponse from zerver.decorator import api_key_only_webhook_view +from zerver.lib.exceptions import UnexpectedWebhookEventType from zerver.lib.request import REQ, has_request_variables from zerver.lib.response import json_success -from zerver.lib.webhooks.common import UnexpectedWebhookEventType, check_send_webhook_message +from zerver.lib.webhooks.common import check_send_webhook_message from zerver.models import UserProfile diff --git a/zerver/webhooks/reviewboard/view.py b/zerver/webhooks/reviewboard/view.py index e5e024d3ef..7451aa1182 100644 --- a/zerver/webhooks/reviewboard/view.py +++ b/zerver/webhooks/reviewboard/view.py @@ -3,10 +3,10 @@ from typing import Any, Dict, Iterable from django.http import HttpRequest, HttpResponse from zerver.decorator import api_key_only_webhook_view +from zerver.lib.exceptions import UnexpectedWebhookEventType from zerver.lib.request import REQ, has_request_variables from zerver.lib.response import json_success from zerver.lib.webhooks.common import ( - UnexpectedWebhookEventType, check_send_webhook_message, get_http_headers_from_filename, validate_extract_webhook_http_header, diff --git a/zerver/webhooks/sentry/view.py b/zerver/webhooks/sentry/view.py index b2854e24bd..9d96040c63 100644 --- a/zerver/webhooks/sentry/view.py +++ b/zerver/webhooks/sentry/view.py @@ -4,9 +4,10 @@ from typing import Any, Dict, List, Optional, Tuple from django.http import HttpRequest, HttpResponse from zerver.decorator import api_key_only_webhook_view +from zerver.lib.exceptions import UnexpectedWebhookEventType from zerver.lib.request import REQ, has_request_variables from zerver.lib.response import json_success -from zerver.lib.webhooks.common import UnexpectedWebhookEventType, check_send_webhook_message +from zerver.lib.webhooks.common import check_send_webhook_message from zerver.models import UserProfile DEPRECATED_EXCEPTION_MESSAGE_TEMPLATE = """ diff --git a/zerver/webhooks/stripe/view.py b/zerver/webhooks/stripe/view.py index 527bd127bb..fcf206ba21 100644 --- a/zerver/webhooks/stripe/view.py +++ b/zerver/webhooks/stripe/view.py @@ -5,10 +5,11 @@ from typing import Any, Dict, Optional, Sequence, Tuple from django.http import HttpRequest, HttpResponse from zerver.decorator import api_key_only_webhook_view +from zerver.lib.exceptions import UnexpectedWebhookEventType from zerver.lib.request import REQ, has_request_variables from zerver.lib.response import json_success from zerver.lib.timestamp import timestamp_to_datetime -from zerver.lib.webhooks.common import UnexpectedWebhookEventType, check_send_webhook_message +from zerver.lib.webhooks.common import check_send_webhook_message from zerver.models import UserProfile diff --git a/zerver/webhooks/transifex/view.py b/zerver/webhooks/transifex/view.py index 7f22564963..fc637f830e 100644 --- a/zerver/webhooks/transifex/view.py +++ b/zerver/webhooks/transifex/view.py @@ -4,10 +4,11 @@ from typing import Optional from django.http import HttpRequest, HttpResponse from zerver.decorator import api_key_only_webhook_view +from zerver.lib.exceptions import UnexpectedWebhookEventType from zerver.lib.request import REQ, has_request_variables from zerver.lib.response import json_success from zerver.lib.validator import check_int -from zerver.lib.webhooks.common import UnexpectedWebhookEventType, check_send_webhook_message +from zerver.lib.webhooks.common import check_send_webhook_message from zerver.models import UserProfile diff --git a/zerver/webhooks/trello/view/__init__.py b/zerver/webhooks/trello/view/__init__.py index d915379c9e..a5128e8613 100644 --- a/zerver/webhooks/trello/view/__init__.py +++ b/zerver/webhooks/trello/view/__init__.py @@ -5,9 +5,10 @@ import orjson from django.http import HttpRequest, HttpResponse from zerver.decorator import api_key_only_webhook_view, return_success_on_head_request +from zerver.lib.exceptions import UnexpectedWebhookEventType from zerver.lib.request import REQ, has_request_variables from zerver.lib.response import json_success -from zerver.lib.webhooks.common import UnexpectedWebhookEventType, check_send_webhook_message +from zerver.lib.webhooks.common import check_send_webhook_message from zerver.models import UserProfile from .board_actions import SUPPORTED_BOARD_ACTIONS, process_board_action diff --git a/zerver/webhooks/updown/view.py b/zerver/webhooks/updown/view.py index d0c49b2eca..fd21ecfa45 100644 --- a/zerver/webhooks/updown/view.py +++ b/zerver/webhooks/updown/view.py @@ -5,9 +5,10 @@ from typing import Any, Dict, List from django.http import HttpRequest, HttpResponse from zerver.decorator import api_key_only_webhook_view +from zerver.lib.exceptions import UnexpectedWebhookEventType from zerver.lib.request import REQ, has_request_variables from zerver.lib.response import json_success -from zerver.lib.webhooks.common import UnexpectedWebhookEventType, check_send_webhook_message +from zerver.lib.webhooks.common import check_send_webhook_message from zerver.models import UserProfile TOPIC_TEMPLATE = "{service_url}"