class EnsembleSerializer(ModelSerializer): logo = fields.SerializerMethodField() vk_link = fields.URLField(allow_null=True) instagram_link = fields.URLField(allow_null=True) def get_logo(self, obj): return obj.logo.url class Meta: model = models.Ensemble fields = '__all__'
class ActivitySerializer(serializers.ModelSerializer): title = fields.CharField(source="name") start = fields.DateTimeField(read_only=True) end = fields.DateTimeField(read_only=True) url = fields.URLField(source="get_absolute_url", read_only=True) textColor = fields.SerializerMethodField("get_text_color") class Meta: model = Activity fields = ( "title", "type", "start", "end", "location", "description", "url", "fb_event_id", "textColor", ) def get_text_color(self, obj): if obj.start_date == date.today(): return "#FFFFFF" return ""
def test_basic_mapping(self, assert_dict_equals): """ Confirm that the serializer can still handle models w/ standard Django fields """ class TestSerializer(DjongoModelSerializer): class Meta: model = GenericModel fields = '__all__' expected_dict = { 'id': drf_fields.IntegerField(label='ID', read_only=True), 'big_int': drf_fields.IntegerField(max_value=9223372036854775807, min_value=-9223372036854775808), 'bool': drf_fields.BooleanField(), 'char': drf_fields.CharField(max_length=20), 'comma_int': ("CharField(validators=[<django.core.validators.RegexValidator " "object>, <django.core.validators.MaxLengthValidator object>])"), 'date': drf_fields.DateField(), 'date_time': drf_fields.DateTimeField(), 'decimal': drf_fields.DecimalField(decimal_places=5, max_digits=10), 'email': drf_fields.EmailField(max_length=254), 'float': drf_fields.FloatField(), 'integer': drf_fields.IntegerField(max_value=2147483647, min_value=-2147483648), 'null_bool': drf_fields.NullBooleanField(required=False), 'pos_int': drf_fields.IntegerField(max_value=2147483647, min_value=0), 'pos_small_int': drf_fields.IntegerField(max_value=32767, min_value=0), 'slug': drf_fields.SlugField(allow_unicode=False, max_length=50), 'small_int': drf_fields.IntegerField(max_value=32767, min_value=-32768), 'text': "CharField(style={'base_template': 'textarea.html'})", 'time': drf_fields.TimeField(), 'url': drf_fields.URLField(max_length=200), 'ip': drf_fields.IPAddressField(), 'uuid': "ModelField(model_field=<django.db.models.fields.UUIDField: uuid>)", } assert_dict_equals(TestSerializer().get_fields(), expected_dict)
class ImageSerializer(Serializer): pk = fields.IntegerField() name = fields.CharField() url = fields.URLField() web_url = fields.ImageField() # image_thumbnail = fields.ImageField() variant = fields.CharField() main_image = fields.BooleanField()
class UserProfileSerializer(Serializer): avatar = fields.URLField() zip_code = fields.IntegerField() def update(self, instance, validated_data): for key, value in validated_data.items(): setattr(instance, key, value) instance.save()
class RecipeSerializer(serializers.ModelSerializer): steps = StepSerializer(many=True, read_only=True) ingredients = RecipeIngredientSerializer(many=True, read_only=True) url = fields.URLField(source='get_absolute_url', read_only=True) class Meta: model = Recipe fields = ('id', 'name', 'prepare_time', 'cook_time', 'portion', 'comment', 'steps', 'ingredients','url') depth = 1
class TopicSerializer(serializers.ModelSerializer): counselling_topic = fields.URLField(source='counselling_topic.file.url') class Meta: model = models.Topic fields = ( 'id', 'title', 'introduction', 'counselling_topic', 'custom_url', )
class DynamicSearchAd(Ad): """ Dynamically generated search ads based on the content of a web site. """ # All fields are filled dynamically. # Simple variation of base class 'Ad'. ad_type = StringField(default='DynamicSearchAd') # reference - DRF field url = fields.URLField(source='get_absolute_url', read_only=False) def get_absolute_url(self): return "/mediacontent/ads/dynamicsearchads/%i/" % self.id
class VodSerializer(serializers.Serializer): """A serializer to extract from a TwitchVod model instance""" channel_name = fields.CharField(source="twitch_channel_name") url = fields.URLField() game_date = TimestampField(precision=1) game_type = fields.CharField() rank = fields.IntegerField() legend_rank = fields.IntegerField(allow_null=True) friendly_player_archetype_id = fields.IntegerField(allow_null=True) opposing_player_class = fields.CharField() opposing_player_archetype_id = fields.IntegerField(allow_null=True) won = fields.BooleanField() went_first = fields.BooleanField() game_length_seconds = fields.IntegerField() replay_shortid = fields.CharField()
class ProductAd(Ad): """ A product ad based on product data of a Shopping campaign's associated Merchant Center account. """ # Promotional line for this ad. # This text will be displayed in addition to the products. promotionLine = StringField() ad_type = StringField(default='ProductAd') # reference - DRF field url = fields.URLField(source='get_absolute_url', read_only=False) def get_absolute_url(self): return "/mediacontent/ads/productads/%i/" % self.id
class ActivitySerializer(serializers.ModelSerializer): title = fields.CharField(source='name') start = fields.DateTimeField(read_only=True) end = fields.DateTimeField(read_only=True) url = fields.URLField(source='get_absolute_url', read_only=True) textColor = fields.SerializerMethodField('get_text_color') class Meta: model = Activity fields = ('title', 'type', 'start', 'end', 'location', 'description', 'url', 'fb_event_id', 'textColor') def get_text_color(self, obj): if obj.start_date == date.today(): return '#FFFFFF' return ''
class Ad(Document): """ Advertisement impression on Users mobile device. Represents the base class for possible advertisement impression types. """ url = StringField(required=False) display_url = StringField(required=False) # TBD (Sonu): Collection of product urls final_urls = StringField(required=False) mobile_urls = StringField(required=False) app_urls = StringField(required=False) # Customer trusted tracking thirdparty_tracking_url = StringField(required=False) # AdWise tracking adwise_tracking_url = StringField(required=False) # Location tag # TBD: Make tags very generic by nature. # For example, tags should be search'able- location, # genre, keywords etc. ad_location_tag = GeoPointField(required=False) # Meta ad_type = StringField(required=False) custom_parameters = DictField(required=False) device_preference = IntegerField(required=False) # Campaign this Ad refers to. campaign = ReferenceField('Campaign', required=False) # List of extension offerex = ListField(ReferenceField('OfferExtension'), required=False) socialex = ListField(ReferenceField('SocialExtension'), required=False) # reference - DRF field url = fields.URLField(source='get_absolute_url', read_only=False) # meta meta = {'allow_inheritance': True} class Meta: abstract = True def get_absolute_url(self): return "/mediacontent/ads/%i/" % self.id
class TextAd(Ad): """ The standard type of Ad. Includes a link to your website and a description or promotion of your product or service. """ headline = StringField(max_length=2048) description1 = StringField() description2 = StringField() ad_type = StringField(default='TextAd') # reference - DRF field url = fields.URLField(source='get_absolute_url', read_only=False) def get_absolute_url(self): return "/mediacontent/ads/textads/%i/" % self.id
class IDFieldSerializer(serializers.Serializer): title = fields.SerializerMethodField('obj_title') url = fields.URLField(source='get_absolute_url', read_only=True) def obj_title(self, obj): return html_parser.unescape(unicode(obj))
class CigarSerializer(serializers.ModelSerializer): url = fields.URLField(source='get_absolute_url', read_only=True) class Meta: model = models.Cigar
class CigarSerializer(serializers.ModelSerializer): manufacturer_id = fields.WritableField() url = fields.URLField(source='get_absolute_url', read_only=True) class Meta: model = models.Cigar