Docs is an open-source text editor: web-native, made for real-time collaboration, cleanly structured documents and sub-documents with full ownership of your data. Built to scale with Django and React.
This report summarizes scanner evidence for suitenumerique/docs, a Python project with 16,910 GitHub stars. SynthScan examined 171,147 lines of code across 1001 source files, recording 1644 pattern matches distributed across 21 syntactic categories. The legacy adjusted pattern signal is 12.4 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 1484 finding(s).
Are imports declared and package/API names verified? 63 finding(s).
Are wrappers, guards, and repeated structures necessary? 1443 finding(s).
Which changes need focused human review? 1644 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 1644 distinct pattern matches across 21 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | documentation/resource_server.md | 76 | def create_document_from_markdown(self, request): | CODE |
| LOW | …press/src/features/auth/api/useUserReconciliations.tsx | 34 | export function useUserReconciliationsQuery( | CODE |
| LOW | …end/apps/impress/src/features/docs/doc-export/utils.ts | 23 | export function collectInterlinkingDocIds(blocks: unknown[]): string[] { | CODE |
| LOW | …end/apps/impress/src/features/docs/doc-export/utils.ts | 320 | export function odtRegisterParagraphStyleForBlock( | CODE |
| LOW | …ps/impress/src/features/docs/doc-export/utils_print.ts | 160 | function createPrintOnlyStyleElement() { | CODE |
| LOW | …features/docs/doc-export/blocks-mapping/headingPDF.tsx | 10 | function extractTextFromBlockContent(content: unknown[]): string { | CODE |
| LOW | …/src/features/docs/doc-share/api/useDocInvitations.tsx | 69 | export function useDocInvitationsInfinite(params: DocInvitationsParams) { | CODE |
| LOW | …rc/features/docs/doc-share/api/useDocAccessRequest.tsx | 54 | export function useCreateDocAccessRequest( | CODE |
| LOW | src/backend/demo/tests/test_commands_create_demo.py | 19 | def collaboration_server_fixture(): | CODE |
| LOW | src/backend/demo/tests/test_commands_create_demo.py | 39 | def test_commands_create_demo(collaboration_server): | CODE |
| LOW | src/backend/demo/tests/test_commands_create_demo.py | 82 | def test_commands_create_demo_without_collaboration_server(collaboration_server): | CODE |
| LOW | src/backend/demo/management/commands/create_demo.py | 30 | def random_true_with_probability(probability): | CODE |
| LOW | src/backend/core/signals.py | 42 | def document_access_post_save(sender, instance, created, **kwargs): # pylint: disable=unused-argument | CODE |
| LOW | src/backend/core/signals.py | 65 | def document_access_post_delete(sender, instance, **kwargs): # pylint: disable=unused-argument | CODE |
| LOW | src/backend/core/models.py | 238 | def _delete_user_shared_documents_accesses(self): | CODE |
| LOW | src/backend/core/models.py | 260 | def _delete_documents_single_owner(self): | CODE |
| LOW | src/backend/core/models.py | 297 | def _clear_user_created_documents(self): | CODE |
| LOW | src/backend/core/models.py | 305 | def _handle_onboarding_documents_access(self): | CODE |
| LOW | src/backend/core/models.py | 340 | def _duplicate_onboarding_sandbox_document(self): | CODE |
| LOW | src/backend/core/models.py | 391 | def _convert_valid_invitations(self): | CODE |
| LOW | src/backend/core/models.py | 548 | def process_reconciliation_request(self): | CODE |
| LOW | src/backend/core/models.py | 636 | def prepare_documentaccess_reconciliation(self): | CODE |
| LOW | src/backend/core/models.py | 670 | def prepare_document_favorite_reconciliation(self): | CODE |
| LOW | src/backend/core/models.py | 694 | def prepare_linktrace_reconciliation(self): | CODE |
| LOW | src/backend/core/models.py | 714 | def prepare_thread_reconciliation(self): | CODE |
| LOW | src/backend/core/models.py | 729 | def prepare_comment_reconciliation(self): | CODE |
| LOW | src/backend/core/models.py | 744 | def prepare_reaction_reconciliation(self): | CODE |
| LOW | src/backend/core/models.py | 756 | def send_reconciliation_confirm_email( | CODE |
| LOW | src/backend/core/models.py | 781 | def send_reconciliation_done_email(self, language=None): | CODE |
| LOW | src/backend/core/models.py | 859 | def send_reconciliation_error_email( | CODE |
| LOW | src/backend/core/models.py | 965 | def annotate_user_has_link_trace(self, user): | CODE |
| LOW | src/backend/core/models.py | 1099 | def get_self_and_ancestors_paths(self): | CODE |
| LOW | src/backend/core/models.py | 1113 | def get_nb_accesses_cache_key(self): | CODE |
| LOW | src/backend/core/models.py | 1200 | def invalidate_nb_accesses_cache(self): | CODE |
| LOW | src/backend/core/models.py | 1238 | def compute_ancestors_links_paths_mapping(self): | CODE |
| LOW | src/backend/core/models.py | 1264 | def ancestors_link_definition(self): | CODE |
| LOW | src/backend/core/models.py | 1279 | def ancestors_link_definition(self, definition): | CODE |
| LOW | src/backend/core/models.py | 1865 | def send_ask_for_access_email(self, email, language=None): | CODE |
| LOW | src/backend/core/models.py | 2119 | def is_notification_in_cooldown(self): | CODE |
| LOW | src/backend/core/malware_detection.py | 17 | def malware_detection_callback(file_path, status, error_info, **kwargs): | CODE |
| LOW | src/backend/core/choices.py | 90 | def get_equivalent_link_definition(ancestors_links): | CODE |
| LOW | src/backend/core/tasks/mail.py | 29 | def send_mention_notification_mail(mention_id): | CODE |
| LOW | src/backend/core/tasks/user_reconciliation.py | 84 | def user_reconciliation_csv_import_job(job_id): | CODE |
| LOW | src/backend/core/tasks/documents.py | 17 | def sync_service_restorations_in_cascade(document_id): | CODE |
| LOW | src/backend/core/tasks/access.py | 20 | def reset_service_connections_in_cascade(document_id, user_id=None, after_path=None): | CODE |
| LOW | src/backend/core/tasks/access.py | 121 | def reset_service_connections_on_commit(document_id, user_id=None): | CODE |
| LOW | src/backend/core/tasks/search.py | 31 | def batch_indexer_throttle_acquire(timeout: int = 0, atomic: bool = True): | CODE |
| LOW | src/backend/core/tasks/search.py | 51 | def batch_document_indexer_task(timestamp): | CODE |
| LOW | src/backend/core/tasks/search.py | 66 | def trigger_batch_document_indexer(document_id, updated_at): | CODE |
| LOW | src/backend/core/external_api/viewsets.py | 30 | def _get_resource_server_actions(self, resource_name): | CODE |
| LOW | …nd/core/tests/test_api_utils_ai_user_rate_throttles.py | 33 | def test_api_utils_ai_user_rate_throttle_minute_limit(mock_time): | CODE |
| LOW | …nd/core/tests/test_api_utils_ai_user_rate_throttles.py | 69 | def test_ai_user_rate_throttle_hour_limit(mock_time): | CODE |
| LOW | …nd/core/tests/test_api_utils_ai_user_rate_throttles.py | 106 | def test_api_utils_ai_user_rate_throttle_day_limit(mock_time): | CODE |
| LOW⚡ | src/backend/core/tests/test_models_document_accesses.py | 56 | def test_models_document_accesses_several_null_users(): | CODE |
| LOW⚡ | src/backend/core/tests/test_models_document_accesses.py | 62 | def test_models_document_accesses_user_and_team_set(): | CODE |
| LOW⚡ | src/backend/core/tests/test_models_document_accesses.py | 71 | def test_models_document_accesses_user_and_team_empty(): | CODE |
| LOW | src/backend/core/tests/test_models_document_accesses.py | 15 | def test_models_document_accesses_str(): | CODE |
| LOW | src/backend/core/tests/test_models_document_accesses.py | 28 | def test_models_document_accesses_unique_user(): | CODE |
| LOW | src/backend/core/tests/test_models_document_accesses.py | 39 | def test_models_document_accesses_several_empty_teams(): | CODE |
| LOW | src/backend/core/tests/test_models_document_accesses.py | 45 | def test_models_document_accesses_unique_team(): | CODE |
| 1285 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/backend/core/tests/test_models_users.py | 0 | it should be possible to create several documents at the same time without causing any race conditions or data integrity | STRING |
| HIGH | …tests/documents/test_api_documents_create_for_owner.py | 0 | it should be possible to create several documents at the same time without causing any race conditions or data integrity | STRING |
| HIGH | …/tests/documents/test_api_documents_children_create.py | 0 | it should be possible to create several documents at the same time without causing any race conditions or data integrity | STRING |
| HIGH | …kend/core/tests/documents/test_api_documents_create.py | 0 | it should be possible to create several documents at the same time without causing any race conditions or data integrity | STRING |
| HIGH | …l_api/test_external_api_documents_attachment_upload.py | 0 | tests for the resource server api for documents accesses. not testing external api endpoints that are already tested in | STRING |
| HIGH | …end/core/tests/external_api/test_external_api_users.py | 0 | tests for the resource server api for documents accesses. not testing external api endpoints that are already tested in | STRING |
| HIGH | …_api/test_external_api_documents_link_configuration.py | 0 | tests for the resource server api for documents accesses. not testing external api endpoints that are already tested in | STRING |
| HIGH | …core/tests/external_api/test_external_api_documents.py | 0 | tests for the resource server api for documents accesses. not testing external api endpoints that are already tested in | STRING |
| HIGH | …s/external_api/test_external_api_documents_accesses.py | 0 | tests for the resource server api for documents accesses. not testing external api endpoints that are already tested in | STRING |
| HIGH | …external_api/test_external_api_documents_invitation.py | 0 | tests for the resource server api for documents accesses. not testing external api endpoints that are already tested in | STRING |
| HIGH | …s/external_api/test_external_api_documents_favorite.py | 0 | tests for the resource server api for documents accesses. not testing external api endpoints that are already tested in | STRING |
| HIGH | …e/tests/external_api/test_external_api_documents_ai.py | 0 | tests for the resource server api for documents accesses. not testing external api endpoints that are already tested in | STRING |
| HIGH | …external_api/test_external_api_documents_media_auth.py | 0 | tests for the resource server api for documents accesses. not testing external api endpoints that are already tested in | STRING |
| HIGH | …tests/documents/test_api_documents_create_for_owner.py | 0 | tests for documents api endpoint in impress's core app: children create | STRING |
| HIGH | …kend/core/tests/documents/test_api_documents_create.py | 0 | tests for documents api endpoint in impress's core app: children create | STRING |
| HIGH | …/tests/documents/test_api_documents_children_create.py | 0 | tests for documents api endpoint in impress's core app: children create | STRING |
| HIGH | …ore/tests/documents/test_api_documents_ai_translate.py | 0 | anonymous users should not be able to request ai transform if the link reach and role don't allow it. | STRING |
| HIGH | …nd/core/tests/documents/test_api_documents_ai_proxy.py | 0 | anonymous users should not be able to request ai transform if the link reach and role don't allow it. | STRING |
| HIGH | …ore/tests/documents/test_api_documents_ai_transform.py | 0 | anonymous users should not be able to request ai transform if the link reach and role don't allow it. | STRING |
| HIGH | …ore/tests/documents/test_api_documents_ai_translate.py | 0 | authenticated users should be able to request ai proxy to a document if the link reach and role permit it. | STRING |
| HIGH | …nd/core/tests/documents/test_api_documents_ai_proxy.py | 0 | authenticated users should be able to request ai proxy to a document if the link reach and role permit it. | STRING |
| HIGH | …ore/tests/documents/test_api_documents_ai_transform.py | 0 | authenticated users should be able to request ai proxy to a document if the link reach and role permit it. | STRING |
| HIGH | …ore/tests/documents/test_api_documents_ai_translate.py | 0 | users who are not related to a document can't request ai transform if the link reach and role don't allow it. | STRING |
| HIGH | …nd/core/tests/documents/test_api_documents_ai_proxy.py | 0 | users who are not related to a document can't request ai transform if the link reach and role don't allow it. | STRING |
| HIGH | …ore/tests/documents/test_api_documents_ai_transform.py | 0 | users who are not related to a document can't request ai transform if the link reach and role don't allow it. | STRING |
| HIGH | …ore/tests/documents/test_api_documents_ai_translate.py | 0 | throttling per document should be triggered on the ai transform endpoint. for full throttle class test see: `test_api_ut | STRING |
| HIGH | …nd/core/tests/documents/test_api_documents_ai_proxy.py | 0 | throttling per document should be triggered on the ai transform endpoint. for full throttle class test see: `test_api_ut | STRING |
| HIGH | …ore/tests/documents/test_api_documents_ai_transform.py | 0 | throttling per document should be triggered on the ai transform endpoint. for full throttle class test see: `test_api_ut | STRING |
| HIGH | …ore/tests/documents/test_api_documents_ai_translate.py | 0 | throttling per user should be triggered on the ai transform endpoint. for full throttle class test see: `test_api_utils_ | STRING |
| HIGH | …nd/core/tests/documents/test_api_documents_ai_proxy.py | 0 | throttling per user should be triggered on the ai transform endpoint. for full throttle class test see: `test_api_utils_ | STRING |
| HIGH | …ore/tests/documents/test_api_documents_ai_transform.py | 0 | throttling per user should be triggered on the ai transform endpoint. for full throttle class test see: `test_api_utils_ | STRING |
| HIGH | …re/tests/documents/test_api_documents_children_list.py | 0 | tests for documents api endpoint in impress's core app: list | STRING |
| HIGH | …ackend/core/tests/documents/test_api_documents_list.py | 0 | tests for documents api endpoint in impress's core app: list | STRING |
| HIGH | …nd/core/tests/documents/test_api_documents_trashbin.py | 0 | tests for documents api endpoint in impress's core app: list | STRING |
| HIGH | …ore/tests/documents/test_api_documents_list_filters.py | 0 | tests for documents api endpoint in impress's core app: list | STRING |
| HIGH | …re/tests/documents/test_api_documents_children_list.py | 0 | anonymous users should be allowed to retrieve the descendants of a public document. | STRING |
| HIGH | …ackend/core/tests/documents/test_api_documents_tree.py | 0 | anonymous users should be allowed to retrieve the descendants of a public document. | STRING |
| HIGH | …sts/documents/test_api_documents_search_descendants.py | 0 | anonymous users should be allowed to retrieve the descendants of a public document. | STRING |
| HIGH | …re/tests/documents/test_api_documents_children_list.py | 0 | anonymous users should not be able to retrieve a document that is not public. | STRING |
| HIGH | …sts/documents/test_api_documents_search_descendants.py | 0 | anonymous users should not be able to retrieve a document that is not public. | STRING |
| HIGH | …nd/core/tests/documents/test_api_documents_retrieve.py | 0 | anonymous users should not be able to retrieve a document that is not public. | STRING |
| HIGH | …re/tests/documents/test_api_documents_children_list.py | 0 | authenticated users should be able to retrieve the descendants of a public/authenticated document to which they are not | STRING |
| HIGH | …ackend/core/tests/documents/test_api_documents_tree.py | 0 | authenticated users should be able to retrieve the descendants of a public/authenticated document to which they are not | STRING |
| HIGH | …sts/documents/test_api_documents_search_descendants.py | 0 | authenticated users should be able to retrieve the descendants of a public/authenticated document to which they are not | STRING |
| HIGH | …re/tests/documents/test_api_documents_children_list.py | 0 | authenticated users should be allowed to retrieve the descendants of a document who has a public or authenticated ancest | STRING |
| HIGH | …ackend/core/tests/documents/test_api_documents_tree.py | 0 | authenticated users should be allowed to retrieve the descendants of a document who has a public or authenticated ancest | STRING |
| HIGH | …sts/documents/test_api_documents_search_descendants.py | 0 | authenticated users should be allowed to retrieve the descendants of a document who has a public or authenticated ancest | STRING |
| HIGH | …re/tests/documents/test_api_documents_children_list.py | 0 | authenticated users should not be allowed to retrieve a document that is restricted and to which they are not related. | STRING |
| HIGH | …ackend/core/tests/documents/test_api_documents_tree.py | 0 | authenticated users should not be allowed to retrieve a document that is restricted and to which they are not related. | STRING |
| HIGH | …sts/documents/test_api_documents_search_descendants.py | 0 | authenticated users should not be allowed to retrieve a document that is restricted and to which they are not related. | STRING |
| HIGH | …nd/core/tests/documents/test_api_documents_retrieve.py | 0 | authenticated users should not be allowed to retrieve a document that is restricted and to which they are not related. | STRING |
| HIGH | …re/tests/documents/test_api_documents_children_list.py | 0 | authenticated users should be allowed to retrieve a restricted document to which they are related via a team whatever th | STRING |
| HIGH | …ackend/core/tests/documents/test_api_documents_tree.py | 0 | authenticated users should be allowed to retrieve a restricted document to which they are related via a team whatever th | STRING |
| HIGH | …sts/documents/test_api_documents_search_descendants.py | 0 | authenticated users should be allowed to retrieve a restricted document to which they are related via a team whatever th | STRING |
| HIGH | …nd/core/tests/documents/test_api_documents_retrieve.py | 0 | authenticated users should be allowed to retrieve a restricted document to which they are related via a team whatever th | STRING |
| HIGH | …re/tests/documents/test_api_documents_children_list.py | 0 | authenticated users should be allowed to retrieve a document if they are related to one of its ancestors whatever the ro | STRING |
| HIGH | …ackend/core/tests/documents/test_api_documents_tree.py | 0 | authenticated users should be allowed to retrieve a document if they are related to one of its ancestors whatever the ro | STRING |
| HIGH | …sts/documents/test_api_documents_search_descendants.py | 0 | authenticated users should be allowed to retrieve a document if they are related to one of its ancestors whatever the ro | STRING |
| HIGH | …nd/core/tests/documents/test_api_documents_retrieve.py | 0 | authenticated users should be allowed to retrieve a document if they are related to one of its ancestors whatever the ro | STRING |
| HIGH | …re/tests/documents/test_api_documents_children_list.py | 0 | authenticated users should not be allowed to retrieve a document as a result of being related to one of its children. | STRING |
| 9 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …files/docker-entrypoint-initdb.d/01_create_app_user.sh | 4 | # Create a non-superuser for the application to test migrations. | COMMENT |
| MEDIUM | .github/workflows/crowdin_download.yml | 68 | # Create a new PR | COMMENT |
| MEDIUM | …/backend/core/tests/test_models_user_reconciliation.py | 357 | # Create a reconciliation entry where only one email has been checked | COMMENT |
| MEDIUM | …core/tests/external_api/test_external_api_documents.py | 163 | # Create a parent document first | COMMENT |
| MEDIUM | …core/tests/external_api/test_external_api_documents.py | 204 | # Create a parent document first | COMMENT |
| MEDIUM | …core/tests/external_api/test_external_api_documents.py | 243 | # Create a parent document first | COMMENT |
| MEDIUM | …core/tests/external_api/test_external_api_documents.py | 282 | # Create a fake Markdown file | COMMENT |
| MEDIUM | …core/tests/external_api/test_external_api_documents.py | 368 | # Create a document the user should NOT have access to | COMMENT |
| MEDIUM | src/backend/core/tests/commands/test_clean_document.py | 46 | # Create a root document with subdocuments | COMMENT |
| MEDIUM | src/backend/core/tests/commands/test_clean_document.py | 313 | # Create a root document with subdocuments | COMMENT |
| MEDIUM | …/core/tests/documents/test_api_document_invitations.py | 547 | # Create a new invitation to the same document with the exact same email address | COMMENT |
| MEDIUM | …nd/core/tests/documents/test_api_documents_trashbin.py | 378 | # Create a new user with no owner access to any document | COMMENT |
| MEDIUM | …tests/documents/test_api_documents_create_with_file.py | 28 | # Create a fake DOCX file | COMMENT |
| MEDIUM | …tests/documents/test_api_documents_create_with_file.py | 62 | # Create a fake DOCX file | COMMENT |
| MEDIUM | …tests/documents/test_api_documents_create_with_file.py | 119 | # Create a fake DOCX file | COMMENT |
| MEDIUM | …tests/documents/test_api_documents_create_with_file.py | 161 | # Create a fake Markdown file | COMMENT |
| MEDIUM | …tests/documents/test_api_documents_create_with_file.py | 221 | # Create a fake DOCX file | COMMENT |
| MEDIUM | …tests/documents/test_api_documents_create_with_file.py | 270 | # Create an empty file | COMMENT |
| MEDIUM | …tests/documents/test_api_documents_create_with_file.py | 304 | # Create a fake DOCX file | COMMENT |
| MEDIUM | …tests/documents/test_api_documents_create_with_file.py | 342 | # Create a fake DOCX file | COMMENT |
| MEDIUM | …tests/documents/test_api_documents_create_with_file.py | 446 | # Create a fake DOCX file | COMMENT |
| MEDIUM | …tests/documents/test_api_documents_create_with_file.py | 497 | # Create a file with Unicode characters in the name | COMMENT |
| MEDIUM | …ests/documents/test_api_documents_formatted_content.py | 104 | # Create an access as a reader. This should unlock the access. | COMMENT |
| MEDIUM | …backend/core/tests/documents/test_api_documents_all.py | 47 | # Create a document tree: parent -> child -> grandchild | COMMENT |
| MEDIUM | …backend/core/tests/documents/test_api_documents_all.py | 406 | # Create a document tree | COMMENT |
| MEDIUM | …d/core/tests/documents/test_api_documents_duplicate.py | 926 | # Create a complex tree: | COMMENT |
| MEDIUM | …/tests/documents/test_api_documents_children_create.py | 336 | # Create a fake DOCX file | COMMENT |
| MEDIUM | …/tests/documents/test_api_documents_children_create.py | 386 | # Create a fake DOCX file | COMMENT |
| MEDIUM | …ests/documents/test_api_documents_attachment_upload.py | 293 | # Create a temporary file larger than the allowed size | COMMENT |
| MEDIUM | …ackend/core/tests/documents/test_api_documents_move.py | 495 | # Create a hierarchy: parent -> child -> grandchild | COMMENT |
| MEDIUM | src/backend/core/api/viewsets.py | 1115 | # Create a child document | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | src/backend/core/validators.py | 3 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | src/backend/core/tasks/user_reconciliation.py | 8 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | src/backend/core/tests/test_models_document_accesses.py | 6 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | src/backend/core/tests/test_models_documents.py | 14 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | …d/core/tests/test_utils_create_tree_node_with_retry.py | 5 | from django.core.exceptions import ValidationError as DjangoValidationError | CODE |
| CRITICAL | src/backend/core/tests/test_models_users.py | 10 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | src/backend/core/utils/treebeard.py | 7 | from django.core.exceptions import ValidationError as DjangoValidationError | CODE |
| CRITICAL | src/backend/core/api/viewsets.py | 18 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | src/backend/core/api/__init__.py | 4 | from django.core.exceptions import ValidationError | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/backend/demo/management/commands/create_demo.py | 222 | queue.push( | CODE |
| HIGH | src/backend/demo/management/commands/create_demo.py | 258 | queue.push(document) | CODE |
| HIGH | src/backend/demo/management/commands/create_demo.py | 275 | queue.push( | CODE |
| HIGH | src/backend/demo/management/commands/create_demo.py | 284 | queue.push( | CODE |
| HIGH | src/backend/demo/management/commands/create_demo.py | 307 | queue.push( | CODE |
| HIGH | src/backend/core/models.py | 2121 | (same document and thread, the document body when the thread is null) within | STRING |
| HIGH | src/backend/core/tests/test_services_search_indexers.py | 519 | indexer.push(sample_data) | CODE |
| HIGH | …backend/core/management/commands/generate_volumetry.py | 291 | self.docs_queue.push( | CODE |
| HIGH | …backend/core/management/commands/generate_volumetry.py | 309 | self.docs_queue.push(worst_user) | CODE |
| HIGH | …backend/core/management/commands/generate_volumetry.py | 329 | self.docs_queue.push( | CODE |
| HIGH | …backend/core/management/commands/generate_volumetry.py | 373 | self.rel_queue.push( | CODE |
| HIGH | …backend/core/management/commands/generate_volumetry.py | 382 | self.rel_queue.push( | CODE |
| HIGH | …backend/core/management/commands/generate_volumetry.py | 411 | self.rel_queue.push( | CODE |
| HIGH | …backend/core/management/commands/generate_volumetry.py | 438 | self.rel_queue.push(model(user_id=uid, document_id=doc_id)) | CODE |
| HIGH | src/backend/core/services/search_indexers.py | 184 | self.push(serialized_batch) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | documentation/installation/scalingo.md | 34 | ## Step 1: Create Your App | COMMENT |
| LOW⚡ | documentation/installation/scalingo.md | 38 | ## Step 2: Provision Addons | COMMENT |
| LOW⚡ | documentation/installation/scalingo.md | 46 | ## Step 3: Configure Environment Variables | COMMENT |
| LOW | documentation/installation/scalingo.md | 153 | ## Step 4: Deploy | COMMENT |
| LOW | documentation/installation/scalingo.md | 169 | ## Step 5: Create superuser | COMMENT |
| LOW | documentation/installation/compose.md | 50 | ## Step 1: Prepare your working environment: | COMMENT |
| LOW | documentation/installation/compose.md | 68 | ## Step 2: Configuration | COMMENT |
| LOW | documentation/installation/compose.md | 228 | ## Step 3: Reverse proxy and SSL/TLS | COMMENT |
| LOW | documentation/installation/compose.md | 257 | ## Step 4: Create the schema of the collaboration server | COMMENT |
| LOW | documentation/installation/compose.md | 272 | ## Step 5: Start Docs | COMMENT |
| LOW | documentation/installation/compose.md | 282 | ## Step 6: Run the database migration and create Django admin user | COMMENT |
| LOW⚡ | documentation/installation/compose.md | 301 | ### Step 1: Edit the images tag with the desired version | COMMENT |
| LOW⚡ | documentation/installation/compose.md | 303 | ### Step 2: Pull the images | COMMENT |
| LOW⚡ | documentation/installation/compose.md | 309 | ### Step 3: Restart your containers | COMMENT |
| LOW⚡ | documentation/installation/compose.md | 315 | ### Step 4: Run the database migrations | COMMENT |
| LOW | documentation/examples/compose/minio/README.md | 8 | ### Step 1: Prepare your working environment: | COMMENT |
| LOW | documentation/examples/compose/minio/README.md | 27 | ### Step 3: Expose MinIO instance | COMMENT |
| LOW | documentation/examples/compose/minio/README.md | 71 | ### Step 4: Start the service | COMMENT |
| LOW | documentation/examples/compose/minio/README.md | 85 | ### Step 1: Configure `mc` to connect to your MinIO Server with your root user | COMMENT |
| LOW | documentation/examples/compose/minio/README.md | 93 | ### Step 2: Create a new bucket with versioning enabled | COMMENT |
| LOW⚡ | documentation/examples/compose/nginx-proxy/README.md | 12 | ### Step 1: Prepare your working environment: | COMMENT |
| LOW⚡ | documentation/examples/compose/nginx-proxy/README.md | 19 | ### Step 2: Edit `DEFAULT_EMAIL` in the compose file. | COMMENT |
| LOW⚡ | documentation/examples/compose/nginx-proxy/README.md | 23 | ### Step 3: Create docker network | COMMENT |
| LOW⚡ | documentation/examples/compose/nginx-proxy/README.md | 31 | ### Step 4: Start service | COMMENT |
| LOW | documentation/examples/compose/keycloak/README.md | 8 | ### Step 1: Prepare your working environment: | COMMENT |
| LOW | documentation/examples/compose/keycloak/README.md | 27 | ### Step 3: Expose keycloak instance on https | COMMENT |
| LOW⚡ | documentation/examples/compose/keycloak/README.md | 58 | ### Step 4: Start the service | COMMENT |
| LOW⚡ | documentation/examples/compose/keycloak/README.md | 68 | ### Step 1: Create a New Realm | COMMENT |
| LOW⚡ | documentation/examples/compose/keycloak/README.md | 75 | #### Step 2: Create a New Client | COMMENT |
| LOW⚡ | documentation/examples/compose/keycloak/README.md | 85 | #### Step 3: Get Client Credentials | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | documentation/installation/compose.md | 241 | ... | COMMENT |
| LOW | documentation/examples/compose/compose.yaml | 121 | COMMENT | |
| LOW | documentation/examples/compose/minio/compose.yaml | 21 | # networks: | COMMENT |
| LOW | documentation/examples/compose/keycloak/README.md | 41 | # Uncomment and set your values if using our nginx proxy example | COMMENT |
| LOW | documentation/examples/compose/keycloak/compose.yaml | 21 | # environment: | COMMENT |
| LOW | documentation/assets/diagrams/render.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | bin/generate-jwt-private-key.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | …tures/docs/doc-presenter/components/PresenterSlide.tsx | 21 | slide: PresenterSlideData; | COMMENT |
| LOW | src/yhub-server/src/migration.ts | 1 | // Migration off the legacy Django document store (see README.md). | COMMENT |
| LOW | src/yhub-server/src/migration.ts | 41 | // may sit on another provider with credentials of its own, and the backend's | COMMENT |
| LOW | src/yhub-server/src/migration.ts | 161 | // Both keys are derived from the prefix yhub itself resolved, so they cannot | COMMENT |
| LOW | src/yhub-server/src/migration.ts | 581 | // 'ok' — history stored | COMMENT |
| LOW | src/yhub-server/src/api.ts | 41 | // about the storage. | COMMENT |
| LOW | src/yhub-server/src/api.ts | 421 | const authInfo = req.authInfo as AppAuthInfo | null; | COMMENT |
| LOW | src/yhub-server/src/config.ts | 41 | export const REDIS_PREFIX = process.env.REDIS_PREFIX || 'yhub'; | COMMENT |
| LOW | src/yhub-server/src/config.ts | 81 | throw new Error( | COMMENT |
| LOW | src/yhub-server/src/config.ts | 101 | // itself is loaded whenever the bucket below is configured, on or off, because | COMMENT |
| LOW | src/yhub-server/src/config.ts | 121 | export const API_PREFIX = 'collaboration'; | COMMENT |
| LOW | src/yhub-server/src/config.ts | 141 | // and S3 keys are case-sensitive strings — accepting case variants would let a | COMMENT |
| LOW | src/yhub-server/src/config.ts | 161 | // `documents/{id}`, `accesses/me`) get the same bound by default: a backend | COMMENT |
| LOW | src/yhub-server/src/server.ts | 81 | ? (err as { code: string }).code | COMMENT |
| LOW | src/yhub-server/src/server.ts | 181 | // a valid token that is not an admin one is a credential we refuse, not | COMMENT |
| LOW | src/yhub-server/src/server.ts | 361 | }, | COMMENT |
| LOW | src/yhub-server/src/server.ts | 421 | port: Number(url.port), | COMMENT |
| LOW | src/yhub-server/src/server.ts | 461 | }, | COMMENT |
| LOW | src/backend/core/models.py | 1321 | COMMENT | |
| LOW | src/backend/core/api/viewsets.py | 2101 | COMMENT | |
| LOW | src/backend/impress/settings.py | 1221 | ), | COMMENT |
| LOW | src/backend/impress/settings.py | 1281 | # from the environment — no variable can enable it on another configuration — | COMMENT |
| LOW | src/backend/impress/settings.py | 1661 | SECURE_BROWSER_XSS_FILTER = True | COMMENT |
| LOW | src/helm/impress/values.yaml | 1 | # Default values for impress. | COMMENT |
| LOW | src/helm/impress/values.yaml | 61 | path: /collaboration/ws/ | COMMENT |
| LOW | src/helm/impress/values.yaml | 81 | ## | COMMENT |
| LOW | src/helm/impress/values.yaml | 121 | ## The routes yhub serves to browsers, guarded by the same document | COMMENT |
| LOW | src/helm/impress/values.yaml | 161 | COMMENT | |
| LOW | src/helm/impress/values.yaml | 201 | ## @param ingressMetrics.tls.secretName Secret name for TLS config | COMMENT |
| LOW | src/helm/impress/values.yaml | 221 | ## of the component, read from the Secret its PROMETHEUS_API_KEY comes from | COMMENT |
| LOW | src/helm/impress/values.yaml | 361 | ## @skip backend.envFrom List of environment variables taken from Secrets or configMaps, common to backend and celery | COMMENT |
| LOW | src/helm/impress/values.yaml | 461 | COMMENT | |
| LOW | src/helm/impress/values.yaml | 521 | ## @param backend.serviceAccountName Optional service account name to use for backend pods | COMMENT |
| LOW | src/helm/impress/values.yaml | 621 | type: RuntimeDefault | COMMENT |
| LOW | src/helm/impress/values.yaml | 661 | ## @extra frontend.probes.liveness.initialDelaySeconds Configure timeout for frontend liveness probe | COMMENT |
| LOW | src/helm/impress/values.yaml | 821 | type: RuntimeDefault | COMMENT |
| LOW | src/helm/impress/values.yaml | 861 | ## @extra yProvider.probes.startup.path Configure path for yProvider HTTP startup probe | COMMENT |
| LOW | src/helm/impress/values.yaml | 901 | COMMENT | |
| LOW | src/helm/impress/values.yaml | 941 | COMMENT | |
| LOW | src/helm/impress/values.yaml | 961 | ## @param jwtKeys.kubectlImage.tag Tag of the image handing the keys to the secret | COMMENT |
| LOW | src/helm/impress/values.yaml | 981 | ## @param jwtKeys.job.backoffLimit Numbers of generating job retries | COMMENT |
| LOW | src/helm/impress/values.yaml | 1021 | ## @section yhub | COMMENT |
| LOW | src/helm/impress/values.yaml | 1061 | ## @param yhub.args Override the yhub container args | COMMENT |
| LOW | src/helm/impress/values.yaml | 1081 | apiKeySecret: | COMMENT |
| LOW | src/helm/impress/values.yaml | 1101 | ## difference between them — so the server scales with the connected editors | COMMENT |
| LOW | src/helm/impress/values.yaml | 1161 | ## Append `?sslmode=require` (or `verify-full`) when the server only accepts TLS, which is the default of the Zaland | COMMENT |
| LOW | src/helm/impress/values.yaml | 1181 | ## @extra yhub.envVars.YHUB_S3_BUCKET_NAME Required by YHUB_S3_PERSISTENCE, name of that bucket, created on startup wh | COMMENT |
| LOW | src/helm/impress/values.yaml | 1241 | targetPort: 3002 | COMMENT |
| LOW | src/helm/impress/templates/jwt_keys_job.yaml | 1 | {{- if and .Values.jwtKeys.enabled (not .Values.jwtKeys.existingSecret) -}} | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …press/src/features/service-worker/plugins/ApiPlugin.ts | 239 | creator: 'dummy-id', | CODE |
| LOW | …tend/apps/e2e/__tests__/app-impress/doc-header.spec.ts | 57 | const editor = await writeInEditor({ page, text: 'Lorem ipsum' }); | CODE |
| LOW | …tend/apps/e2e/__tests__/app-impress/doc-header.spec.ts | 61 | await writeInEditor({ page, text: 'Lorem ipsum 2' }); | CODE |
| LOW | …ontend/apps/e2e/__tests__/app-impress/doc-grid.spec.ts | 40 | full_name: 'John Doe', | CODE |
| LOW | …tend/apps/e2e/__tests__/app-impress/doc-import.spec.ts | 59 | name: 'Lorem Ipsum import Document', | CODE |
| LOW⚡ | …d/apps/e2e/__tests__/app-impress/assets/test_import.md | 3 | # Lorem Ipsum import Document | COMMENT |
| LOW⚡ | …d/apps/e2e/__tests__/app-impress/assets/test_import.md | 7 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam auctor, nisl eget ultricies tincidunt, nisl nisl aliquam | CODE |
| LOW⚡ | …d/apps/e2e/__tests__/app-impress/assets/test_import.md | 7 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam auctor, nisl eget ultricies tincidunt, nisl nisl aliquam | CODE |
| LOW⚡ | …d/apps/e2e/__tests__/app-impress/assets/test_import.md | 11 | * **Bold text**: Lorem ipsum dolor sit amet. | COMMENT |
| LOW⚡ | …d/apps/e2e/__tests__/app-impress/assets/test_import.md | 11 | * **Bold text**: Lorem ipsum dolor sit amet. | COMMENT |
| LOW | …d/apps/e2e/__tests__/app-impress/assets/test_import.md | 39 | > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam auctor, nisl eget ultricies tincidunt. | CODE |
| LOW | …d/apps/e2e/__tests__/app-impress/assets/test_import.md | 39 | > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam auctor, nisl eget ultricies tincidunt. | CODE |
| LOW | …d/apps/e2e/__tests__/app-impress/assets/test_import.md | 60 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam auctor, nisl eget ultricies tincidunt, nisl nisl aliquam | CODE |
| LOW | …d/apps/e2e/__tests__/app-impress/assets/test_import.md | 60 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam auctor, nisl eget ultricies tincidunt, nisl nisl aliquam | CODE |
| LOW⚡ | …/frontend/servers/y-provider/__tests__/convert.test.ts | 29 | const expectedMarkdown = '# Example document\n\nLorem ipsum dolor sit amet.'; | CODE |
| LOW⚡ | …/frontend/servers/y-provider/__tests__/convert.test.ts | 29 | const expectedMarkdown = '# Example document\n\nLorem ipsum dolor sit amet.'; | CODE |
| LOW⚡ | …/frontend/servers/y-provider/__tests__/convert.test.ts | 31 | '<h1>Example document</h1><p>Lorem ipsum dolor sit amet.</p>'; | CODE |
| LOW⚡ | …/frontend/servers/y-provider/__tests__/convert.test.ts | 31 | '<h1>Example document</h1><p>Lorem ipsum dolor sit amet.</p>'; | CODE |
| LOW | …/frontend/servers/y-provider/__tests__/convert.test.ts | 57 | text: 'Lorem ipsum dolor sit amet.', | CODE |
| LOW | …/frontend/servers/y-provider/__tests__/convert.test.ts | 57 | text: 'Lorem ipsum dolor sit amet.', | CODE |
| LOW | …kend/core/tests/test_services_find_document_indexer.py | 480 | token = "fake-token" | CODE |
| LOW⚡ | src/backend/core/tests/test_api_users.py | 390 | factories.UserFactory(email="john.doe@example.com", full_name="John Doe") | CODE |
| LOW | src/backend/core/tests/test_api_users.py | 51 | user = factories.UserFactory(email="user@example.com", full_name="Example User") | CODE |
| LOW | src/backend/core/tests/test_api_users.py | 86 | user = factories.UserFactory(email="user@example.com", full_name="Example User") | CODE |
| LOW | src/backend/core/tests/test_api_users.py | 126 | user = factories.UserFactory(email="user@example.com", full_name="Example User") | CODE |
| LOW | src/backend/core/tests/test_api_users.py | 171 | user = factories.UserFactory(email="user@example.com", full_name="Example User") | CODE |
| LOW | src/backend/core/tests/test_api_users.py | 281 | user = factories.UserFactory(email="user@example.com") | CODE |
| LOW | src/backend/core/tests/test_api_users.py | 419 | user = factories.UserFactory(email="user@example.com", full_name="Example User") | CODE |
| LOW⚡ | …d/core/tests/serializers/test_user_light_serializer.py | 14 | email="test@test.com", | CODE |
| LOW⚡ | …d/core/tests/serializers/test_user_light_serializer.py | 15 | full_name="John Doe", | CODE |
| LOW⚡ | …d/core/tests/serializers/test_user_light_serializer.py | 20 | assert serializer.data["full_name"] == "John Doe" | CODE |
| LOW | src/backend/core/tests/authentication/test_backends.py | 225 | user = UserFactory(full_name="John Doe", short_name="John") | CODE |
| LOW | src/backend/core/tests/authentication/test_backends.py | 264 | full_name="John Doe", short_name="John", email="john.doe@example.com" | CODE |
| LOW | src/backend/core/tests/authentication/test_backends.py | 306 | full_name="John Doe", short_name="John", email="john.doe@example.com" | CODE |
| LOW | src/backend/core/tests/authentication/test_backends.py | 377 | assert user.full_name == "John Doe" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/backend/conftest.py | 41 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/backend/core/metrics.py | 32 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/backend/core/malware_detection.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/backend/core/tasks/user_reconciliation.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | src/backend/core/utils/users.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/backend/core/utils/treebeard.py | 10 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/backend/core/api/viewsets.py | 96 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/backend/core/authentication/backends.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/backend/core/services/yhub_services.py | 41 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/backend/core/services/search_indexers.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/backend/core/services/jwt_services.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/backend/core/services/converter_services.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/backend/impress/__init__.py | 5 | __all__ = ["celery_app"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/backend/core/models.py | 2250 | # Check if an identity already exists for the provided email | COMMENT |
| LOW | src/backend/core/external_api/permissions.py | 29 | # Check if the user is authenticated | COMMENT |
| LOW | …ackend/core/tests/documents/test_api_documents_list.py | 424 | # Check if the "is_favorite" annotation is correctly set for the favorited documents | COMMENT |
| LOW | src/backend/core/api/viewsets.py | 2144 | # Check if the attachment is ready. Use the process-global S3 client | COMMENT |
| LOW | src/backend/core/api/viewsets.py | 2189 | # Check if the attachment is ready | COMMENT |
| LOW | src/backend/core/api/throttling.py | 46 | # Check if this is a valid y-provider request and exempt from throttling | COMMENT |
| LOW | src/backend/core/api/permissions.py | 83 | # Check if resource_id is passed in the context | COMMENT |
| LOW | src/backend/core/api/permissions.py | 91 | # Check if the user has access to manage invitations (Owner/Admin roles) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/backend/conftest.py | 113 | except Exception: # pylint: disable=broad-except | CODE |
| LOW | src/backend/conftest.py | 158 | except Exception: # pylint: disable=broad-except | CODE |
| LOW | src/backend/core/metrics.py | 121 | except Exception: # pylint: disable=broad-exception-caught | CODE |
| LOW | src/backend/core/metrics.py | 222 | except Exception: # pylint: disable=broad-exception-caught | CODE |
| LOW | src/backend/core/management/commands/index.py | 44 | except Exception as err: | CODE |
| LOW | …agement/commands/update_files_content_type_metadata.py | 83 | except Exception as exc: # noqa | CODE |
| LOW | src/backend/core/api/viewsets.py | 1608 | except Exception: | CODE |
| LOW | src/backend/core/api/serializers.py | 306 | except Exception: | CODE |
| LOW | src/backend/core/services/ai_services/blocknote.py | 74 | except Exception as exc: # pylint: disable=broad-except #noqa: BLE001 | CODE |
| MEDIUM | src/backend/core/services/ai_services/blocknote.py | 70 | def run_async_gen(): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/backend/core/api/permissions.py | 135 | except KeyError: | CODE |
| HIGH | src/backend/core/services/jwt_services.py | 162 | except KeyError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …nd/core/tests/test_services_converter_orchestration.py | 31 | # Verify the orchestration | COMMENT |
| MEDIUM | src/backend/impress/settings.py | 1021 | # Y provider microservice | COMMENT |
| MEDIUM | src/backend/impress/settings.py | 1031 | # DocSpec API microservice | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …core/tests/external_api/test_external_api_documents.py | 326 | CODE | |
| LOW | …/core/tests/documents/test_api_document_accesses_me.py | 351 | CODE | |
| LOW | …agement/commands/update_files_content_type_metadata.py | 19 | CODE | |
| LOW | src/backend/core/api/viewsets.py | 1391 | CODE | |
| LOW | src/backend/core/api/viewsets.py | 2374 | CODE | |
| LOW | src/backend/core/api/__init__.py | 12 | CODE | |
| LOW | src/backend/core/services/ai_services/blocknote.py | 134 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …kend/core/tests/documents/test_api_documents_update.py | 343 | # ============================================================================= | COMMENT |
| MEDIUM | …kend/core/tests/documents/test_api_documents_update.py | 345 | # ============================================================================= | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | CONTRIBUTING.md | 170 | Remember that for your contributions to go through the CI, your commits have to be signed off with `git commit --signof | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/backend/core/api/viewsets.py | 447 | DocumentViewSet API. This view set provides CRUD operations and additional actions for managing documents. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | gitlint/gitlint_emoji.py | 5 | CODE | |
| LOW | src/backend/core/apps.py | 20 | CODE | |
| LOW | …e/tests/external_api/test_external_api_documents_ai.py | 18 | CODE | |
| LOW | src/backend/impress/__init__.py | 3 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/backend/core/tests/test_services_ai_services.py | 274 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …apps/impress/src/features/help/components/HelpMenu.tsx | 44 | * The onboarding can be disable, so we need to check if it's enabled before displaying the help menu. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/loadtest/dashboards/generate.py | 12 | CODE |