mirror of
https://github.com/zulip/zulip.git
synced 2025-10-22 20:42:14 +00:00
Compare commits
4 Commits
b7cf928615
...
b8f8056f56
Author | SHA1 | Date | |
---|---|---|---|
|
b8f8056f56 | ||
|
66466760a0 | ||
|
d9b7d8d2a6 | ||
|
b05b5e72f5 |
@@ -52,6 +52,19 @@ rules:
|
||||
languages: [python]
|
||||
severity: ERROR
|
||||
|
||||
- id: use-wrapped-mimetypes
|
||||
pattern-either:
|
||||
- pattern: mimetypes.guess_type
|
||||
- pattern: mimetypes.guess_file_type
|
||||
- pattern: mimetypes.guess_all_extensions
|
||||
- pattern: mimetypes.guess_extension
|
||||
message: Use zerver.lib.mime_types (to ensure our EXTRA_MIME_TYPES are added)
|
||||
languages: [python]
|
||||
severity: ERROR
|
||||
paths:
|
||||
exclude:
|
||||
- zerver/lib/mime_types.py
|
||||
|
||||
- id: dont-import-models-in-migrations
|
||||
patterns:
|
||||
- pattern-not: from zerver.lib.migrate import $X
|
||||
|
@@ -1118,6 +1118,12 @@ input.settings_text_input {
|
||||
}
|
||||
}
|
||||
|
||||
div.overlay .flex.overlay-content > .overlay-container,
|
||||
#settings_page,
|
||||
.informational-overlays .overlay-content {
|
||||
box-shadow: var(--box-shadow-overlay);
|
||||
}
|
||||
|
||||
.delete-selected-drafts-button-container {
|
||||
display: flex;
|
||||
}
|
||||
|
@@ -404,6 +404,9 @@
|
||||
*/
|
||||
--message-area-max-width: 57.4125em;
|
||||
|
||||
/* Box shadow for overlays across the web app */
|
||||
--box-shadow-overlay: none;
|
||||
|
||||
/* Shared sidebar typography and effects values. */
|
||||
--font-weight-sidebar-heading: 600;
|
||||
--font-weight-sidebar-action-heading: 370;
|
||||
@@ -3010,6 +3013,9 @@
|
||||
the unread marker to the left. */
|
||||
--unread-marker-left: 0;
|
||||
|
||||
/* Box shadow for overlays across the web app */
|
||||
--box-shadow-overlay: 0 0 30px hsl(212deg 32% 7%);
|
||||
|
||||
/* Colors used across the app */
|
||||
--color-recipient-bar-controls-spinner: hsl(0deg 0% 100%);
|
||||
--box-shadow-unread-counter-normal: none;
|
||||
|
@@ -107,20 +107,6 @@
|
||||
border-color: hsl(0deg 0% 0% / 90%);
|
||||
}
|
||||
|
||||
& div.overlay .flex.overlay-content > .overlay-container,
|
||||
#settings_page,
|
||||
.informational-overlays .overlay-content {
|
||||
box-shadow: 0 0 30px hsl(212deg 32% 7%);
|
||||
}
|
||||
|
||||
#draft_overlay,
|
||||
#scheduled_messages_overlay_container,
|
||||
#message-edit-history-overlay-container {
|
||||
.flex.overlay-content > .overlay-container {
|
||||
box-shadow: 0 0 30px hsl(213deg 31% 0%);
|
||||
}
|
||||
}
|
||||
|
||||
.popover hr,
|
||||
hr {
|
||||
opacity: 0.2;
|
||||
|
@@ -1,7 +1,6 @@
|
||||
# Zulip's main Markdown implementation. See docs/subsystems/markdown.md for
|
||||
# detailed documentation on our Markdown syntax.
|
||||
import logging
|
||||
import mimetypes
|
||||
import re
|
||||
import time
|
||||
from collections import deque
|
||||
@@ -1032,7 +1031,7 @@ class InlineInterestingLinkProcessor(markdown.treeprocessors.Treeprocessor):
|
||||
if not self.zmd.image_preview_enabled:
|
||||
return False
|
||||
|
||||
url_type = mimetypes.guess_type(url)[0]
|
||||
url_type = guess_type(url)[0]
|
||||
# Support only video formats (containers) that are supported cross-browser and cross-device. As per
|
||||
# https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Containers#index_of_media_container_formats_file_types
|
||||
# MP4 and WebM are the only formats that are widely supported.
|
||||
|
@@ -10,6 +10,7 @@ from dataclasses import dataclass
|
||||
from typing import IO, TYPE_CHECKING, Any, TypeVar, Union, cast
|
||||
from unittest import mock
|
||||
from unittest.mock import patch
|
||||
from urllib.parse import urlsplit
|
||||
|
||||
import boto3.session
|
||||
import fakeldap
|
||||
@@ -19,11 +20,11 @@ from django.conf import settings
|
||||
from django.contrib.auth.models import AnonymousUser
|
||||
from django.contrib.sessions.backends.base import SessionBase
|
||||
from django.db.migrations.state import StateApps
|
||||
from django.http import HttpRequest, HttpResponse, HttpResponseRedirect
|
||||
from django.http import HttpRequest, HttpResponse
|
||||
from django.http.request import QueryDict
|
||||
from django.http.response import HttpResponseBase
|
||||
from django.test import override_settings
|
||||
from django.urls import URLResolver
|
||||
from django.urls import URLResolver, resolve
|
||||
from moto.core.decorator import mock_aws
|
||||
from mypy_boto3_s3.service_resource import Bucket
|
||||
from typing_extensions import ParamSpec, override
|
||||
@@ -45,6 +46,7 @@ from zerver.models.clients import clear_client_cache, get_client
|
||||
from zerver.models.realms import get_realm
|
||||
from zerver.models.streams import get_stream
|
||||
from zerver.tornado.handlers import AsyncDjangoHandler, allocate_handler_id
|
||||
from zerver.views.auth import log_into_subdomain
|
||||
from zilencer.models import RemoteZulipServer
|
||||
from zproject.backends import ExternalAuthDataDict, ExternalAuthResult
|
||||
|
||||
@@ -584,8 +586,10 @@ def write_instrumentation_reports(full_suite: bool, include_webhooks: bool) -> N
|
||||
|
||||
|
||||
def load_subdomain_token(response: Union["TestHttpResponse", HttpResponse]) -> ExternalAuthDataDict:
|
||||
assert isinstance(response, HttpResponseRedirect)
|
||||
token = response.url.rsplit("/", 1)[1]
|
||||
assert response.status_code == 302
|
||||
match = resolve(urlsplit(response["Location"]).path)
|
||||
assert match.func == log_into_subdomain
|
||||
token = match.kwargs["token"]
|
||||
data = ExternalAuthResult(
|
||||
request=mock.MagicMock(), login_token=token, delete_stored_data=False
|
||||
).data_dict
|
||||
|
Reference in New Issue
Block a user