From 91dd6213199e0a427d1e4d020d5ff022859a1508 Mon Sep 17 00:00:00 2001 From: Tiina Turban Date: Fri, 3 Nov 2023 13:47:45 +0100 Subject: [PATCH] feat: Add pipeline ui fields to plugin config --- latest_migrations.manifest | 2 +- posthog/api/plugin.py | 4 ++ posthog/api/test/test_plugin.py | 40 ++++++++++++++++++- .../0361_add_plugin_config_ui_fields.py | 27 +++++++++++++ posthog/models/plugin.py | 5 +++ 5 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 posthog/migrations/0361_add_plugin_config_ui_fields.py diff --git a/latest_migrations.manifest b/latest_migrations.manifest index 814bf32751eb3..dcc40eb8e7ed1 100644 --- a/latest_migrations.manifest +++ b/latest_migrations.manifest @@ -5,7 +5,7 @@ contenttypes: 0002_remove_content_type_name ee: 0015_add_verified_properties otp_static: 0002_throttling otp_totp: 0002_auto_20190420_0723 -posthog: 0360_externaldatasource_destination_id +posthog: 0361_add_plugin_config_ui_fields sessions: 0001_initial social_django: 0010_uid_db_index two_factor: 0007_auto_20201201_1019 diff --git a/posthog/api/plugin.py b/posthog/api/plugin.py index b39c18a67346a..dc08147c43016 100644 --- a/posthog/api/plugin.py +++ b/posthog/api/plugin.py @@ -503,6 +503,10 @@ class Meta: "plugin_info", "delivery_rate_24h", "created_at", + "updated_at", + "name", + "description", + "deleted", ] read_only_fields = [ "id", diff --git a/posthog/api/test/test_plugin.py b/posthog/api/test/test_plugin.py index ea8021975daa8..5c6a3344d4d20 100644 --- a/posthog/api/test/test_plugin.py +++ b/posthog/api/test/test_plugin.py @@ -935,6 +935,8 @@ def test_create_plugin_config(self, mock_get, mock_reload): "enabled": True, "order": 0, "config": json.dumps({"bar": "moop"}), + "name": "name in ui", + "description": "description in ui", }, format="multipart", ) @@ -955,6 +957,10 @@ def test_create_plugin_config(self, mock_get, mock_reload): "plugin_info": None, "delivery_rate_24h": None, "created_at": mock.ANY, + "updated_at": mock.ANY, + "name": "name in ui", + "description": "description in ui", + "deleted": False, }, ) plugin_config = PluginConfig.objects.first() @@ -993,6 +999,10 @@ def test_create_plugin_config(self, mock_get, mock_reload): "plugin_info": None, "delivery_rate_24h": None, "created_at": mock.ANY, + "updated_at": mock.ANY, + "name": "name in ui", + "description": "description in ui", + "deleted": False, }, ) self.client.delete(f"/api/plugin_config/{plugin_config_id}") @@ -1309,6 +1319,10 @@ def test_create_plugin_config_with_secrets(self, mock_get, mock_reload): "plugin_info": None, "delivery_rate_24h": None, "created_at": mock.ANY, + "updated_at": mock.ANY, + "name": None, + "description": None, + "deleted": False, }, ) @@ -1334,6 +1348,10 @@ def test_create_plugin_config_with_secrets(self, mock_get, mock_reload): "plugin_info": None, "delivery_rate_24h": None, "created_at": mock.ANY, + "updated_at": mock.ANY, + "name": None, + "description": None, + "deleted": False, }, ) @@ -1361,6 +1379,10 @@ def test_create_plugin_config_with_secrets(self, mock_get, mock_reload): "plugin_info": None, "delivery_rate_24h": None, "created_at": mock.ANY, + "updated_at": mock.ANY, + "name": None, + "description": None, + "deleted": False, }, ) plugin_config = PluginConfig.objects.get(plugin=plugin_id) @@ -1370,7 +1392,15 @@ def test_create_plugin_config_with_secrets(self, mock_get, mock_reload): def test_plugin_config_list(self, mock_get, mock_reload): plugin = Plugin.objects.create(organization=self.organization) plugin_config1 = PluginConfig.objects.create(plugin=plugin, team=self.team, enabled=True, order=1) - plugin_config2 = PluginConfig.objects.create(plugin=plugin, team=self.team, enabled=True, order=2) + plugin_config2 = PluginConfig.objects.create( + plugin=plugin, + team=self.team, + enabled=True, + order=2, + name="ui name", + description="ui description", + deleted=True, + ) create_app_metric( team_id=self.team.pk, @@ -1397,6 +1427,10 @@ def test_plugin_config_list(self, mock_get, mock_reload): "plugin_info": None, "delivery_rate_24h": 0.5, "created_at": mock.ANY, + "updated_at": mock.ANY, + "name": None, + "description": None, + "deleted": False, }, { "id": plugin_config2.pk, @@ -1409,6 +1443,10 @@ def test_plugin_config_list(self, mock_get, mock_reload): "plugin_info": None, "delivery_rate_24h": None, "created_at": mock.ANY, + "updated_at": mock.ANY, + "name": "ui name", + "description": "ui description", + "deleted": True, }, ], ) diff --git a/posthog/migrations/0361_add_plugin_config_ui_fields.py b/posthog/migrations/0361_add_plugin_config_ui_fields.py new file mode 100644 index 0000000000000..3b56fa3e90927 --- /dev/null +++ b/posthog/migrations/0361_add_plugin_config_ui_fields.py @@ -0,0 +1,27 @@ +# Generated by Django 3.2.19 on 2023-11-07 11:02 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("posthog", "0360_externaldatasource_destination_id"), + ] + + operations = [ + migrations.AddField( + model_name="pluginconfig", + name="deleted", + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name="pluginconfig", + name="description", + field=models.CharField(blank=True, max_length=1000, null=True), + ), + migrations.AddField( + model_name="pluginconfig", + name="name", + field=models.CharField(blank=True, max_length=400, null=True), + ), + ] diff --git a/posthog/models/plugin.py b/posthog/models/plugin.py index b8787dd3df344..176d7104253ab 100644 --- a/posthog/models/plugin.py +++ b/posthog/models/plugin.py @@ -237,6 +237,11 @@ class Meta: created_at: models.DateTimeField = models.DateTimeField(auto_now_add=True) updated_at: models.DateTimeField = models.DateTimeField(auto_now=True) + # Used in the frontend + name: models.CharField = models.CharField(max_length=400, null=True, blank=True) + description: models.CharField = models.CharField(max_length=1000, null=True, blank=True) + # Used in the frontend to hide pluginConfgis that user deleted + deleted: models.BooleanField = models.BooleanField(default=False) class PluginAttachment(models.Model):