16
Dynamic Plans Connecting backend and mobile Stockholm Python Meetup Jun 16, 2016

Dynamic plans

Embed Size (px)

Citation preview

Page 1: Dynamic plans

Dynamic PlansConnecting backend and mobile

Stockholm Python MeetupJun 16, 2016

Page 2: Dynamic plans

About me

Ilian Iliev

Platform Engineer

[email protected]

www.ilian.io

Page 3: Dynamic plans

Plans - the next step towards healthy life

Page 4: Dynamic plans

Feature requirements

● Multilingual support● Different images based on the screen density● Color fields● Serialization● Caching● Administration

Page 5: Dynamic plans

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(),

)

Page 6: Dynamic plans
Page 7: Dynamic plans

Different images based on screen density● Our screen sizes : 1x, 1.5x, 2x, 3x● Pixel perfect design● Django Multiupload

Page 8: Dynamic plans

Color fieldsDjango Colorful

class Plan(TranslatableModel):

start_color = RGBColorField()

end_color = RGBColorField()

content_color = RGBColorField()

Page 9: Dynamic plans
Page 10: Dynamic plans

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']

Page 11: Dynamic plans

Caching● Per object caching● Key attributes

○ Language○ Screen Density

● Redis HSET

● Easy to invalidate

Page 12: Dynamic plans

{

"plan_list_20" : {...},

"plan_list_14": {...},

"plan_detail_8": {

"en-3": "{\"key\": \"value\"}",

"de-2": "...",

"en-2": "...",

"sv-2": "...",

"sv-1": "...",

}

Page 13: Dynamic plans

Administration

Page 14: Dynamic plans
Page 15: Dynamic plans
Page 16: Dynamic plans

Questions?