mirror of
				https://github.com/zulip/zulip.git
				synced 2025-10-30 19:43:47 +00:00 
			
		
		
		
	mime_types: Move INLINE_MIME_TYPES to prevent future import loops.
This commit is contained in:
		
				
					committed by
					
						 Tim Abbott
						Tim Abbott
					
				
			
			
				
	
			
			
			
						parent
						
							57079169d5
						
					
				
				
					commit
					9fa5ab951c
				
			| @@ -8,9 +8,9 @@ from django.utils.translation import gettext as _ | |||||||
|  |  | ||||||
| from zerver.lib.emoji import get_emoji_file_name | from zerver.lib.emoji import get_emoji_file_name | ||||||
| from zerver.lib.exceptions import JsonableError | from zerver.lib.exceptions import JsonableError | ||||||
|  | from zerver.lib.mime_types import INLINE_MIME_TYPES | ||||||
| from zerver.lib.thumbnail import THUMBNAIL_ACCEPT_IMAGE_TYPES, BadImageError | from zerver.lib.thumbnail import THUMBNAIL_ACCEPT_IMAGE_TYPES, BadImageError | ||||||
| from zerver.lib.upload import upload_emoji_image | from zerver.lib.upload import upload_emoji_image | ||||||
| from zerver.lib.upload.base import INLINE_MIME_TYPES |  | ||||||
| from zerver.models import Realm, RealmAuditLog, RealmEmoji, UserProfile | from zerver.models import Realm, RealmAuditLog, RealmEmoji, UserProfile | ||||||
| from zerver.models.realm_audit_logs import AuditLogEventType | from zerver.models.realm_audit_logs import AuditLogEventType | ||||||
| from zerver.models.realm_emoji import EmojiInfo, get_all_custom_emoji_for_realm | from zerver.models.realm_emoji import EmojiInfo, get_all_custom_emoji_for_realm | ||||||
|   | |||||||
| @@ -18,11 +18,10 @@ from django.utils.timezone import now as timezone_now | |||||||
| from zerver.data_import.sequencer import NEXT_ID | from zerver.data_import.sequencer import NEXT_ID | ||||||
| from zerver.lib.avatar_hash import user_avatar_base_path_from_ids | from zerver.lib.avatar_hash import user_avatar_base_path_from_ids | ||||||
| from zerver.lib.message import normalize_body_for_import | from zerver.lib.message import normalize_body_for_import | ||||||
| from zerver.lib.mime_types import guess_extension | from zerver.lib.mime_types import INLINE_MIME_TYPES, guess_extension | ||||||
| from zerver.lib.partial import partial | from zerver.lib.partial import partial | ||||||
| from zerver.lib.stream_color import STREAM_ASSIGNMENT_COLORS as STREAM_COLORS | from zerver.lib.stream_color import STREAM_ASSIGNMENT_COLORS as STREAM_COLORS | ||||||
| from zerver.lib.thumbnail import THUMBNAIL_ACCEPT_IMAGE_TYPES, BadImageError | from zerver.lib.thumbnail import THUMBNAIL_ACCEPT_IMAGE_TYPES, BadImageError | ||||||
| from zerver.lib.upload.base import INLINE_MIME_TYPES |  | ||||||
| from zerver.models import ( | from zerver.models import ( | ||||||
|     Attachment, |     Attachment, | ||||||
|     DirectMessageGroup, |     DirectMessageGroup, | ||||||
|   | |||||||
| @@ -20,3 +20,26 @@ if sys.version_info < (3, 11):  # nocoverage | |||||||
|  |  | ||||||
| for mime_type, extension in EXTRA_MIME_TYPES: | for mime_type, extension in EXTRA_MIME_TYPES: | ||||||
|     add_type(mime_type, extension) |     add_type(mime_type, extension) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | INLINE_MIME_TYPES = [ | ||||||
|  |     "application/pdf", | ||||||
|  |     "audio/aac", | ||||||
|  |     "audio/flac", | ||||||
|  |     "audio/mp4", | ||||||
|  |     "audio/mpeg", | ||||||
|  |     "audio/wav", | ||||||
|  |     "audio/webm", | ||||||
|  |     "image/apng", | ||||||
|  |     "image/avif", | ||||||
|  |     "image/gif", | ||||||
|  |     "image/jpeg", | ||||||
|  |     "image/png", | ||||||
|  |     "image/webp", | ||||||
|  |     "text/plain", | ||||||
|  |     "video/mp4", | ||||||
|  |     "video/webm", | ||||||
|  |     # To avoid cross-site scripting attacks, DO NOT add types such | ||||||
|  |     # as application/xhtml+xml, application/x-shockwave-flash, | ||||||
|  |     # image/svg+xml, text/html, or text/xml. | ||||||
|  | ] | ||||||
|   | |||||||
| @@ -13,6 +13,7 @@ from django.utils.translation import gettext as _ | |||||||
| from typing_extensions import override | from typing_extensions import override | ||||||
|  |  | ||||||
| from zerver.lib.exceptions import ErrorCode, JsonableError | from zerver.lib.exceptions import ErrorCode, JsonableError | ||||||
|  | from zerver.lib.mime_types import INLINE_MIME_TYPES | ||||||
| from zerver.lib.queue import queue_event_on_commit | from zerver.lib.queue import queue_event_on_commit | ||||||
| from zerver.models import ImageAttachment | from zerver.models import ImageAttachment | ||||||
|  |  | ||||||
|   | |||||||
| @@ -16,7 +16,7 @@ from django.utils.translation import gettext as _ | |||||||
|  |  | ||||||
| from zerver.lib.avatar_hash import user_avatar_base_path_from_ids, user_avatar_path | from zerver.lib.avatar_hash import user_avatar_base_path_from_ids, user_avatar_path | ||||||
| from zerver.lib.exceptions import ErrorCode, JsonableError | from zerver.lib.exceptions import ErrorCode, JsonableError | ||||||
| from zerver.lib.mime_types import guess_type | from zerver.lib.mime_types import INLINE_MIME_TYPES, guess_type | ||||||
| from zerver.lib.outgoing_http import OutgoingSession | from zerver.lib.outgoing_http import OutgoingSession | ||||||
| from zerver.lib.thumbnail import ( | from zerver.lib.thumbnail import ( | ||||||
|     MAX_EMOJI_GIF_FILE_SIZE_BYTES, |     MAX_EMOJI_GIF_FILE_SIZE_BYTES, | ||||||
| @@ -27,7 +27,7 @@ from zerver.lib.thumbnail import ( | |||||||
|     resize_avatar, |     resize_avatar, | ||||||
|     resize_emoji, |     resize_emoji, | ||||||
| ) | ) | ||||||
| from zerver.lib.upload.base import INLINE_MIME_TYPES, StreamingSourceWithSize, ZulipUploadBackend | from zerver.lib.upload.base import StreamingSourceWithSize, ZulipUploadBackend | ||||||
| from zerver.models import Attachment, Message, Realm, RealmEmoji, ScheduledMessage, UserProfile | from zerver.models import Attachment, Message, Realm, RealmEmoji, ScheduledMessage, UserProfile | ||||||
| from zerver.models.users import is_cross_realm_bot_email | from zerver.models.users import is_cross_realm_bot_email | ||||||
|  |  | ||||||
|   | |||||||
| @@ -8,28 +8,6 @@ import pyvips | |||||||
|  |  | ||||||
| from zerver.models import Realm, UserProfile | from zerver.models import Realm, UserProfile | ||||||
|  |  | ||||||
| INLINE_MIME_TYPES = [ |  | ||||||
|     "application/pdf", |  | ||||||
|     "audio/aac", |  | ||||||
|     "audio/flac", |  | ||||||
|     "audio/mp4", |  | ||||||
|     "audio/mpeg", |  | ||||||
|     "audio/wav", |  | ||||||
|     "audio/webm", |  | ||||||
|     "image/apng", |  | ||||||
|     "image/avif", |  | ||||||
|     "image/gif", |  | ||||||
|     "image/jpeg", |  | ||||||
|     "image/png", |  | ||||||
|     "image/webp", |  | ||||||
|     "text/plain", |  | ||||||
|     "video/mp4", |  | ||||||
|     "video/webm", |  | ||||||
|     # To avoid cross-site scripting attacks, DO NOT add types such |  | ||||||
|     # as application/xhtml+xml, application/x-shockwave-flash, |  | ||||||
|     # image/svg+xml, text/html, or text/xml. |  | ||||||
| ] |  | ||||||
|  |  | ||||||
|  |  | ||||||
| @dataclass | @dataclass | ||||||
| class StreamingSourceWithSize: | class StreamingSourceWithSize: | ||||||
|   | |||||||
| @@ -14,9 +14,10 @@ from django.conf import settings | |||||||
| from django.utils.http import content_disposition_header | from django.utils.http import content_disposition_header | ||||||
| from typing_extensions import override | from typing_extensions import override | ||||||
|  |  | ||||||
|  | from zerver.lib.mime_types import INLINE_MIME_TYPES | ||||||
| from zerver.lib.partial import partial | from zerver.lib.partial import partial | ||||||
| from zerver.lib.thumbnail import resize_logo, resize_realm_icon | from zerver.lib.thumbnail import resize_logo, resize_realm_icon | ||||||
| from zerver.lib.upload.base import INLINE_MIME_TYPES, StreamingSourceWithSize, ZulipUploadBackend | from zerver.lib.upload.base import StreamingSourceWithSize, ZulipUploadBackend | ||||||
| from zerver.models import Realm, RealmEmoji, UserProfile | from zerver.models import Realm, RealmEmoji, UserProfile | ||||||
|  |  | ||||||
| if TYPE_CHECKING: | if TYPE_CHECKING: | ||||||
|   | |||||||
| @@ -14,7 +14,7 @@ from pydantic.alias_generators import to_pascal | |||||||
| from confirmation.models import Confirmation, ConfirmationKeyError, get_object_from_key | from confirmation.models import Confirmation, ConfirmationKeyError, get_object_from_key | ||||||
| from zerver.decorator import get_basic_credentials, validate_api_key | from zerver.decorator import get_basic_credentials, validate_api_key | ||||||
| from zerver.lib.exceptions import AccessDeniedError, JsonableError | from zerver.lib.exceptions import AccessDeniedError, JsonableError | ||||||
| from zerver.lib.mime_types import guess_type | from zerver.lib.mime_types import INLINE_MIME_TYPES, guess_type | ||||||
| from zerver.lib.rate_limiter import is_local_addr | from zerver.lib.rate_limiter import is_local_addr | ||||||
| from zerver.lib.typed_endpoint import JsonBodyPayload, typed_endpoint | from zerver.lib.typed_endpoint import JsonBodyPayload, typed_endpoint | ||||||
| from zerver.lib.upload import ( | from zerver.lib.upload import ( | ||||||
| @@ -26,7 +26,6 @@ from zerver.lib.upload import ( | |||||||
|     sanitize_name, |     sanitize_name, | ||||||
|     upload_backend, |     upload_backend, | ||||||
| ) | ) | ||||||
| from zerver.lib.upload.base import INLINE_MIME_TYPES |  | ||||||
| from zerver.models import PreregistrationRealm, Realm, UserProfile | from zerver.models import PreregistrationRealm, Realm, UserProfile | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -28,7 +28,7 @@ from zerver.context_processors import get_valid_realm_from_request | |||||||
| from zerver.decorator import zulip_redirect_to_login | from zerver.decorator import zulip_redirect_to_login | ||||||
| from zerver.lib.attachments import validate_attachment_request | from zerver.lib.attachments import validate_attachment_request | ||||||
| from zerver.lib.exceptions import JsonableError | from zerver.lib.exceptions import JsonableError | ||||||
| from zerver.lib.mime_types import guess_type | from zerver.lib.mime_types import INLINE_MIME_TYPES, guess_type | ||||||
| from zerver.lib.response import json_success | from zerver.lib.response import json_success | ||||||
| from zerver.lib.storage import static_path | from zerver.lib.storage import static_path | ||||||
| from zerver.lib.thumbnail import ( | from zerver.lib.thumbnail import ( | ||||||
| @@ -42,7 +42,6 @@ from zerver.lib.upload import ( | |||||||
|     get_public_upload_root_url, |     get_public_upload_root_url, | ||||||
|     upload_message_attachment_from_request, |     upload_message_attachment_from_request, | ||||||
| ) | ) | ||||||
| from zerver.lib.upload.base import INLINE_MIME_TYPES |  | ||||||
| from zerver.lib.upload.local import assert_is_local_storage_path | from zerver.lib.upload.local import assert_is_local_storage_path | ||||||
| from zerver.lib.upload.s3 import get_signed_upload_url | from zerver.lib.upload.s3 import get_signed_upload_url | ||||||
| from zerver.models import Attachment, ImageAttachment, Realm, UserProfile | from zerver.models import Attachment, ImageAttachment, Realm, UserProfile | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user