| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- from rest_framework import serializers
- from extras.models import CF_TYPE_SELECT, CustomFieldChoice, CustomFieldValue, Graph
- # class CustomFieldSerializer(serializers.ModelSerializer):
- # """
- # Extends ModelSerializer to render any CustomFields and their values associated with an object.
- # """
- # custom_fields = serializers.SerializerMethodField()
- #
- # def get_custom_fields(self, obj):
- #
- # # Gather all CustomFields applicable to this object
- # fields = {cf.name: None for cf in self.context['custom_fields']}
- # custom_field_choices = self.context['custom_field_choices']
- #
- # # Attach any defined CustomFieldValues to their respective CustomFields
- # for cfv in obj.custom_field_values.all():
- #
- # # Attempt to suppress database lookups for CustomFieldChoices by using the cached choice set from the view
- # # context.
- # if cfv.field.type == CF_TYPE_SELECT:
- # cfc = {
- # 'id': int(cfv.serialized_value),
- # 'value': custom_field_choices[int(cfv.serialized_value)]
- # }
- # fields[cfv.field.name] = CustomFieldChoiceSerializer(instance=cfc).data
- # else:
- # fields[cfv.field.name] = cfv.value
- #
- # return fields
- class CustomFieldValueSerializer(serializers.ModelSerializer):
- class Meta:
- model = CustomFieldValue
- fields = ['field', 'serialized_value']
- class CustomFieldChoiceSerializer(serializers.ModelSerializer):
- class Meta:
- model = CustomFieldChoice
- fields = ['id', 'value']
- class GraphSerializer(serializers.ModelSerializer):
- embed_url = serializers.SerializerMethodField()
- embed_link = serializers.SerializerMethodField()
- class Meta:
- model = Graph
- fields = ['name', 'embed_url', 'embed_link']
- def get_embed_url(self, obj):
- return obj.embed_url(self.context['graphed_object'])
- def get_embed_link(self, obj):
- return obj.embed_link(self.context['graphed_object'])
|