Skip to content

Задача 1010#1041

Open
MikasaAl4naya wants to merge 3 commits intodevelopfrom
i-1010
Open

Задача 1010#1041
MikasaAl4naya wants to merge 3 commits intodevelopfrom
i-1010

Conversation

@MikasaAl4naya
Copy link

@MikasaAl4naya MikasaAl4naya commented Jun 5, 2025

Исправлено объединение узлов с несколькими родителями. Проблема была решена благодаря внедрению глобальной карты (node_map) в методе _build_tree_data. Теперь, при повторном появлении узла, его поддерево извлекается из node_map, что позволяет корректно выводить потомков для всех родителей.

 Проблема была решена благодаря внедрению глобальной карты (node_map) в методе _build_tree_data. Теперь, при повторном появлении узла, его поддерево извлекается из node_map, что позволяет корректно выводить потомков для всех родителей.
@MikasaAl4naya MikasaAl4naya changed the title Исправлено объединение узлов с несколькими родителями. Проблема была решена благодаря внедрению глобальной карты (node_map) в методе _build_tree_data. Теперь, при повторном появлении узла, его поддерево извлекается из node_map, что позволяет корректно выводить потомков для всех родителей. Задача 1010 Jun 6, 2025
Copy link
Collaborator

@sergeybv26 sergeybv26 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Небольшое пожелание

self.show_complex = show_complex
complex_tz_names = ('Таблица', 'Тест')
self.complex_tz = Tz.objects.filter(name__in=complex_tz_names).values_list('pk', flat=True)
self.relations_info = {} # {(<parent_id>, <child_id>): {name: <str>, status: <str>, author: <int>}, }
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Думаю комментарии лучше оставить. Так как на проекте бывают участники с разным уровнем подготовки, то с комментариями им будет легче понять как что работает и что хранится в ловарях

Comment on lines +149 to +159
# Получаем детей по ярлыкам (через KnowledgeLabel)
qs_label = Znanie.published.filter(
knowledgelabel__parent_knowledge=knowledge
)

# Объединяем оба QuerySet. При этом применяем distinct(), чтобы избежать дублей.
combined_qs = (qs_relation | qs_label).distinct()

# Если нужно задать порядок – можно, например, отсортировать по pk или другому полю.
# В связи с тем, что ярлыковые связи могут не иметь поля order, часто разумно выбрать универсальное упорядочивание.
return combined_qs.order_by('pk')
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Объясни - для чего этот код? Выглядит как генерация нейросети. Вроде поля такого нет в модели. В рамках задачи этот код вообще используется?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Извиняюсь, случайно в коммит этот код вставил. Пытался сначала через ярлыки сделать

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тогда drevo/relations_tree.py надо убрать из pr. Может быть проще создать новый pr только с нужными изменениями?

Comment on lines -25 to -52
"""
Тег для построения дерева знаний \n
tree_num: номер дерева (на случай если необходимо на одной странице создать несколько деревьев); \n

show_searchbar: отображать поле поиска по дереву; \n

empty_tree_message: если дерево по какой либо причине нельзя построить, то будет выводиться сообщение указанное
в данном параметре; \n

show_only: принимает объект вида связи, если передан данный параметр, то будут отображаться только связи
данного вида для переданных знаний (используется если у одного знания из queryset есть несколько связей разных
видов и необходимо отобразить связи только определённого вида); \n

hidden_author: принимает объект автора, около знаний данного автора он не указывается; \n

show_complex: если данный параметр имеет значение True, то на дереве будут отображаться сложные знания.
В настоящее время для отображения на дереве существует 2 вида сложных знаний: "Таблица", "Тест"

edit_widgets: список виджетов для редактирования дерева. Допустимые значения: \n
create - создать новую ветвь (связь)
delete - удалить ветвь (связь)
update - удалить ветвь (связь)

empty_categories: если данный параметр имеет значение True, то на дереве будут отображаться категории, которые
не имеют знаний.

is_constructor_type: является ли данное дерево конструктором
"""
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Предлагаю вернуть все комментарии и описания

return Znanie.published.filter(related__bz=knowledge,
related__is_published=True
).order_by('related__order')
else:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тогда изменения drevo/relations_tree.py надо убрать из pr. Может быть проще создать новый pr только с нужными изменениями?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants