Dynamic PlansConnecting backend and mobile
Stockholm Python MeetupJun 16, 2016
About me
Ilian Iliev
Platform Engineer
www.ilian.io
Plans - the next step towards healthy life
Feature requirements
● Multilingual support● Different images based on the screen density● Color fields● Serialization● Caching● Administration
Multilingual supportDjango Parler
class Plan(TranslatableModel):
detail_image = ScreenDensityImageField(upload_to='plans/detail_images')
translations = TranslatedFields(
title=models.CharField(max_length=255),
short_description=models.TextField(),
description=models.TextField(),
)
Different images based on screen density● Our screen sizes : 1x, 1.5x, 2x, 3x● Pixel perfect design● Django Multiupload
Color fieldsDjango Colorful
class Plan(TranslatableModel):
start_color = RGBColorField()
end_color = RGBColorField()
content_color = RGBColorField()
Serialization● DRF Serializers● Different fields for list and detail
class PlanSerializer(ShortListSerializerMixin, serializers.ModelSerializer):
class Meta:
model = Plan
list_fields = ['id', 'title', 'short_description']
fields = list_fields + ['description']
Caching● Per object caching● Key attributes
○ Language○ Screen Density
● Redis HSET
● Easy to invalidate
{
"plan_list_20" : {...},
"plan_list_14": {...},
"plan_detail_8": {
"en-3": "{\"key\": \"value\"}",
"de-2": "...",
"en-2": "...",
"sv-2": "...",
"sv-1": "...",
}
Administration
Questions?