class FeedbackSerializer(PotatoCaptchaSerializer): feedback = fields.CharField() platform = fields.CharField(required=False) chromeless = fields.CharField(required=False) from_url = fields.CharField(required=False) user = fields.Field() def validate(self, attrs): attrs = super(FeedbackSerializer, self).validate(attrs) if not attrs.get('platform'): attrs['platform'] = self.request.GET.get('dev', '') if self.request.user.is_authenticated(): attrs['user'] = self.request.user else: attrs['user'] = None return attrs def validate_feedback(self, attrs, source): # ensure feedback is not submitted with only white spaces if not attrs[source].strip(): raise serializers.ValidationError('Feedback can\'t be blank') return attrs
class BulkUserProfileSerializer(BulkSerializerMixin, serializers.MongoEngineModelSerializer): name = fields.CharField(source='name', required=True) phone = fields.CharField(source='phone', required=True) email = fields.CharField(source='email', required=False) location = fields.Field(source='location') class Meta(object): model = UserProfile exclude = ('created_at',)
class FeedbackSerializer(PotatoCaptchaSerializer): feedback = fields.CharField() platform = fields.CharField(required=False) chromeless = fields.CharField(required=False) from_url = fields.CharField(required=False) user = fields.Field() def validate(self, attrs): attrs = super(FeedbackSerializer, self).validate(attrs) if not attrs.get('platform'): attrs['platform'] = self.request.GET.get('dev', '') attrs['user'] = self.request.amo_user return attrs
class DocumentSerializer(serializers.ModelSerializer): # The extension field isn't part of a SourceFile, but we get it from the filetype sourcefiles = serializers.SlugRelatedField(many=True, slug_field='extension', read_only=True) derivedfiles = fields.Field(source='derivedmap') collection = serializers.CharField(max_length=100, source='collection.slug', read_only=True) class Meta: model = models.Document fields = [ 'collection', 'derivedfiles', 'sourcefiles', 'external_identifier', 'title' ]
def index(self, request, *args, **kwargs): self.object_list = self.filter_queryset(self.get_queryset()) main_serializer = self.get_serializer_class() if hasattr(main_serializer.Meta, 'index'): index = getattr(main_serializer.Meta, 'index') try: format = getattr(main_serializer.Meta, 'index_format') except AttributeError: format = None if not isinstance(index, (list, tuple)) and len(index) < 1: raise ValueError( 'index must be list of fields names, with at least one entry' ) serializer_class = type( 'IndexSerializer', (serializers.Serializer, ), { 'id': fields.Field(source='pk'), 'name': ConcatField(fields=index, format=format) }) else: serializer_class = self.DefaultIndexSerializer page = self.get_page_index(self.object_list) if page: class SerializerClass(self.pagination_serializer_class): class Meta: object_serializer_class = serializer_class pagination_serializer_class = SerializerClass context = self.get_serializer_context() serializer = pagination_serializer_class(instance=page, context=context) else: context = self.get_serializer_context() serializer = serializer_class(self.object_list, context=context, many=True) return Response(serializer.data)
class Admin2APISerializer(serializers.HyperlinkedModelSerializer): _default_view_name = 'admin2:%(app_label)s_%(model_name)s_api_detail' pk = fields.Field(source='pk') __str__ = fields.Field(source='__unicode__')
class _IDSerializer(serializers.Serializer): id = fields.Field(source='pk') class Meta: fields = ('id', )
class _IDSerializer(serializers.Serializer): id = fields.Field(source="pk") class Meta: fields = ("id", )
class DefaultIndexSerializer(serializers.Serializer): id = fields.Field(source='pk') name = EscapedCharField(source='*', read_only=True)