hackforla / knowledgebase

MIT License
1 stars 4 forks source link

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

Open ethanstrominger opened 8 months ago

ethanstrominger commented 8 months ago

Dependencies

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

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:

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.