From d03004ae7424dfabaad3dec0ae8aed0f472f091e Mon Sep 17 00:00:00 2001 From: Chris Meyers Date: Tue, 12 May 2015 08:58:35 -0400 Subject: [PATCH] add list of modules to fact_version OPTIONS endpoint --- awx/api/serializers.py | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/awx/api/serializers.py b/awx/api/serializers.py index f44361a79e..5589f8c790 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -8,7 +8,7 @@ import logging from dateutil import rrule from ast import literal_eval -from rest_framework_mongoengine.serializers import MongoEngineModelSerializer +from rest_framework_mongoengine.serializers import MongoEngineModelSerializer, MongoEngineModelSerializerOptions # PyYAML import yaml @@ -372,6 +372,23 @@ class BaseSerializer(serializers.ModelSerializer): return ret +class BaseFactSerializerOptions(MongoEngineModelSerializerOptions): + def __init__(self, meta): + super(BaseFactSerializerOptions, self).__init__(meta) + + +class BaseFactSerializer(MongoEngineModelSerializer): + _options_class = BaseFactSerializerOptions + __metaclass__ = BaseSerializerMetaclass + + def get_fields(self): + ret = super(BaseFactSerializer, self).get_fields() + if 'module' in ret: + choices = [(o, o) for o in FactVersion.objects.all().only('module').distinct('module')] + ret['module'] = ChoiceField(source='module', choices=choices, read_only=True, required=False) + return ret + + class UnifiedJobTemplateSerializer(BaseSerializer): class Meta: @@ -2018,7 +2035,7 @@ class AuthTokenSerializer(serializers.Serializer): raise serializers.ValidationError('Must include "username" and "password"') -class FactVersionSerializer(MongoEngineModelSerializer): +class FactVersionSerializer(BaseFactSerializer): related = serializers.SerializerMethodField('get_related') class Meta: @@ -2037,7 +2054,8 @@ class FactVersionSerializer(MongoEngineModelSerializer): )) return res -class FactSerializer(MongoEngineModelSerializer): + +class FactSerializer(BaseFactSerializer): class Meta: model = Fact