fix(devops): Move software field filter for feature flag to the serializer
ref: #673 #663
This commit is contained in:
20
app/devops/migrations/0007_alter_featureflag_software.py
Normal file
20
app/devops/migrations/0007_alter_featureflag_software.py
Normal file
@ -0,0 +1,20 @@
|
||||
# Generated by Django 5.1.5 on 2025-03-08 09:59
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('devops', '0006_alter_featureflag_software_and_more'),
|
||||
('itam', '0010_alter_software_organization'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='featureflag',
|
||||
name='software',
|
||||
field=models.ForeignKey(help_text='Software this feature flag is for', on_delete=django.db.models.deletion.PROTECT, related_name='feature_flags', to='itam.software', verbose_name='Software'),
|
||||
),
|
||||
]
|
@ -35,9 +35,9 @@ class FeatureFlag(
|
||||
Software,
|
||||
blank = False,
|
||||
help_text = 'Software this feature flag is for',
|
||||
limit_choices_to = {
|
||||
'feature_flagging__enabled': True
|
||||
},
|
||||
# limit_choices_to = { # bug: returns duplicates
|
||||
# 'feature_flagging__enabled': True
|
||||
# },
|
||||
on_delete = models.PROTECT,
|
||||
related_name = 'feature_flags',
|
||||
verbose_name = 'Software',
|
||||
|
@ -10,6 +10,7 @@ from devops.models.feature_flag import FeatureFlag
|
||||
|
||||
from itam.serializers.software import Software, SoftwareBaseSerializer
|
||||
|
||||
|
||||
class OrganizationField(common.OrganizationField):
|
||||
|
||||
def get_queryset(self):
|
||||
@ -23,6 +24,19 @@ class OrganizationField(common.OrganizationField):
|
||||
return qs
|
||||
|
||||
|
||||
|
||||
class SoftwareField(serializers.PrimaryKeyRelatedField):
|
||||
|
||||
def get_queryset(self):
|
||||
|
||||
qs = Software.objects.filter(
|
||||
feature_flagging__enabled = True
|
||||
).distinct()
|
||||
|
||||
return qs
|
||||
|
||||
|
||||
|
||||
class BaseSerializer(serializers.ModelSerializer):
|
||||
|
||||
display_name = serializers.SerializerMethodField('get_display_name')
|
||||
@ -60,6 +74,8 @@ class ModelSerializer(
|
||||
|
||||
organization = OrganizationField(required = True)
|
||||
|
||||
software = SoftwareField(required = True, write_only = True)
|
||||
|
||||
_urls = serializers.SerializerMethodField('get_url')
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user