hackforla / hackforla/knowledgebase

MISC: Include primary tool for asset group in asset group tools

Đang mở
#82 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
complexity: missing draft feature: missing milestone: missing role: missing size: missing
Ngôn ngữ chính
Python
Star
2
Fork
5
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

## Dependencies
- #81

## Overview
As a user when I look at the tools associated with an asset group, I want to see the primary tool included

### Action Items
See Resources below
- [ ] Add logic so when an asset group is created the primary tool will be added to asset group tools
- [ ] Modify logic to do the same when updating an asset group

### How to Manually Verify
1. From the asset group screen, create an asset group with a primary tool
2. Review the list of tools on the asset group screen. It should include the primary tool
3. Update the asset group to refer to a different tool.
4. Review the list of tools on the asset group screen. Two tools should be listed.
5. Try to remove the tool from the asset group that was added in step 3. System should prevent you.
6. Remove the tool from the asset group that was added in step 1. This should be sucssessful.

### Automated Tests

### Resources/Instructions
elow is a summary of changes suggested by ChatGPT. See https://chat.openai.com/share/d20ee9b8-f664-4aee-bc3b-96c2c1abdf9f for the full conversion.

You can achieve this functionality in Django using signals, specifically the post_save signal. (Put this in a file called signals.py in models directory)

```
@receiver(post_save, sender=AssetGroup)
def add_primary_tool_to_asset_group_tool(sender, instance, created, **kwargs):
if created or 'primary_tool' in kwargs['update_fields']:
primary_tool = instance.primary_tool
if primary_tool:
AssetGroupTool.objects.get_or_create(asset_group=instance, tool=primary_tool)
```
In this code:
- @receiver(post_save, sender=AssetGroup) is a decorator that connects the signal handler function (add_primary_tool_to_asset_group_tool) to the post_save signal for the AssetGroup model.
- The add_primary_tool_to_asset_group_tool function checks if a new AssetGroup instance is created or if the primary_tool field is updated. If either condition is met and a primary tool is selected (primary_tool is not None), it adds that tool to the AssetGroupTool table associated with the AssetGroup.

Make sure to register the signal handler in your Django app's apps.py or any other appropriate place to ensure that Django recognizes it during startup. For Knowledge base app you would add following code to `class KnowledgebaseConfig`:
```
def ready(self):
import knowledgeable.models.signals
```
With these changes, whenever you create or update an AssetGroup instance with a primary tool selected, the corresponding entry will automatically be added to the AssetGroupTool table.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Start by locating the AssetGroup and AssetGroupTool models and the existing asset-group create and update paths. The issue suggests a models/signals.py handler and registering it from KnowledgebaseConfig.ready in apps.py. Use the listed manual steps to verify that primary tools are added, changed primary tools cannot be removed, and manually added tools can be removed.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
django, python
Lĩnh vực
backend, database
Loại issue
Tính năng
Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
52/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.