From 29f80b3f64e5db415791ce8f69223abab8e52eff Mon Sep 17 00:00:00 2001 From: Alexander Burdeinyi Date: Sun, 11 Dec 2016 21:21:07 +0200 Subject: [PATCH] dailymail special images done --- emencia/django/newsletter/mailer.py | 6 +-- .../newsletter/AutomaticEmail_web.html | 6 +-- proj/sorlengine.py | 49 ++++++++++++++++++ .../images/dailymail_foreign_background.png | Bin 0 -> 15126 bytes .../images/dailymail_russia_background.png | Bin 0 -> 15090 bytes static/newsletter/images/hitmark.png | Bin 0 -> 3192 bytes support/d_dev/settings.py | 2 + support/dev/settings.py | 2 + support/prod/settings.py | 2 + 9 files changed, 61 insertions(+), 6 deletions(-) create mode 100644 proj/sorlengine.py create mode 100644 static/newsletter/images/dailymail_foreign_background.png create mode 100644 static/newsletter/images/dailymail_russia_background.png create mode 100644 static/newsletter/images/hitmark.png diff --git a/emencia/django/newsletter/mailer.py b/emencia/django/newsletter/mailer.py index 20a78a56..c02b9d00 100644 --- a/emencia/django/newsletter/mailer.py +++ b/emencia/django/newsletter/mailer.py @@ -264,7 +264,7 @@ class NewsLetterSender(object): resize = context_attachments_size.get(section) for event in objects: prefix = '{}_{}_'.format(section, event.object.event_type) - msg_attachment = self.gen_attachment_logo(event.object, prefix=prefix, resize=resize) + msg_attachment = self.gen_attachment_logo(event.object, prefix=prefix, resize=resize, dailymail=section) if msg_attachment: attachments.append(msg_attachment) return attachments @@ -328,7 +328,7 @@ class NewsLetterSender(object): message_attachment.add_header('Content-ID', '<{}>'.format(cid)) return message_attachment - def gen_attachment_logo(self, obj=None, prefix='logo_', resize=None, logo=None): + def gen_attachment_logo(self, obj=None, prefix='logo_', resize=None, logo=None, **kwargs): if obj is not None: logo = getattr(obj, 'logo') if not logo: @@ -343,7 +343,7 @@ class NewsLetterSender(object): maintype, subtype = ctype.split('/', 1) try: if resize is not None: - fd = get_thumbnail(logo.path, resize) + fd = get_thumbnail(logo.path, resize, **kwargs) # import pdb; pdb.set_trace() # fd = open(thumb.path, 'rb') else: diff --git a/emencia/django/newsletter/templates/newsletter/AutomaticEmail_web.html b/emencia/django/newsletter/templates/newsletter/AutomaticEmail_web.html index 20a03dae..346da734 100644 --- a/emencia/django/newsletter/templates/newsletter/AutomaticEmail_web.html +++ b/emencia/django/newsletter/templates/newsletter/AutomaticEmail_web.html @@ -202,7 +202,7 @@ - {% thumbnail obj.get_logo '90x90' as im %} + {% thumbnail obj.get_logo '109x114' dailymail='russia' hit=obj.expohit as im %} {% endthumbnail %} @@ -281,7 +281,7 @@ - {% thumbnail obj.get_logo '100x100' as im %} + {% thumbnail obj.get_logo '109x114' dailymail='russia' hit=obj.expohit as im %} {% endthumbnail %} @@ -379,7 +379,7 @@ - {% thumbnail obj.get_logo '120x120' as im %} + {% thumbnail obj.get_logo '130x130' dailymail='foreign' hit=obj.expohit as im %} {% endthumbnail %} diff --git a/proj/sorlengine.py b/proj/sorlengine.py new file mode 100644 index 00000000..fa8ec7c6 --- /dev/null +++ b/proj/sorlengine.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +""" +Sorl Thumbnail Engine that create special mailing thumbnails +""" +from PIL import Image # , ImageColor +from sorl.thumbnail.engines.pil_engine import Engine + +from django.contrib.staticfiles import finders + +russia_size = (89, 94) +foreign_size = (110, 110) +russia_background = finders.find('newsletter/images/dailymail_russia_background.png') +foreign_background = finders.find('newsletter/images/dailymail_foreign_background.png') +hit_mark = finders.find('newsletter/images/hitmark.png') + + +class SorlEngine(Engine): + def create_dailymail_thumb(self, image, size, background, hit=False): + # берем фон + thumb = Image.open(background) + # берем ресайз картинки + image.thumbnail(size, resample=4) + # считаем положение + box = ( + (thumb.width - image.width) / 2, # left + (thumb.height - image.height) / 2, # top + (thumb.width - image.width) / 2 + image.width, # right + (thumb.height - image.height) / 2 + image.height # bottom + ) + # вставляем + if image.mode == "RGBA": + # с прозрачностью + thumb.paste(image, box, image) + else: + # без + thumb.paste(image, box) + + # вставляем отметку "ХИТ" + if hit: + hit_mark_image = Image.open(hit_mark) + thumb.paste(hit_mark_image, (0, 0), hit_mark_image) + return thumb + + def create(self, image, geometry, options): + if options.get('dailymail') in ['russia', 'moscow']: + return self.create_dailymail_thumb(image, russia_size, russia_background, options.get('hit', False)) + if options.get('dailymail') == 'foreign': + return self.create_dailymail_thumb(image, foreign_size, foreign_background, options.get('hit', False)) + return super(SorlEngine, self).create(image, geometry, options) diff --git a/static/newsletter/images/dailymail_foreign_background.png b/static/newsletter/images/dailymail_foreign_background.png new file mode 100644 index 0000000000000000000000000000000000000000..88e087c7ada849c554b8db540794138bdbe46bf3 GIT binary patch literal 15126 zcmeI3O^n+_6vw?3P`hj;5JFwJ)TDf>IR1$3#8#3jn{3&YNV{xPvE|f>J=s`I>|lF0 z*;Nmvt%SI7Lr@TR4v1a>i3)M#QgHwwA*i@;Kth5Or!scp_-#Hqd+2c@W%G9C|Nd|M zn-BZq_czYHethw{MULZ+udmfM$?x^(d-M_V_c8R|=j7*DZ|zdRaZfxQeHXZoKUwBD z<4dQp6>invFfFf}MYh+(*+I8Q)ErklGw31f3J&=u-gewl=I^h+&G3$0%Dko3rFyT5 z+s@j)k1y<>YgqeNEW^&6DK8cWCNb#Z5b=X<#|_LuDHHpeB#xTJ3?ECvE2T^&D#&lu zH~6aOV_wT@f+fi+pEt6yCaVScHC~bAoG9f)IVZ@9DH*1$@uN?syhx&=Z@0|N+SyS# z@?R;_4#S=)iv4~++s|b^e_NCd!w@A!R1|?IgkaAN(Liv6Q$v%)r-lQ|cY2}YxqRe{ zn%+)W%4DKKZch%*>#%*Tdo_4!j-T z!bE;*w$bV?8Qth=4`H;ri`{Uh6`8XK8_lY3TjQMGj^Bwv+m?tsxJ&8;gn>L0K(FnE zUeNaDlpJ@*5N8z*oz@(HQP12oJaFcuMLol`cuftbx=5hZ>*jgiA!hw=MQ$^zDrBpG=L7qn(l3z(&~5;y?B^s-rVg3$B#Ku0vh=uo+U-#OTtbab3U zavakn``<)XbX=7KMCKwIHfT$SJj{p+4Fxl%;Bd=gDt&&9ejB@Ga(?UNC$A=!2Xp3oTW#cS zW4kOSiAlp`N>PmFt>YY=wqfhR*-Vzk^z295+^qT-kyX*~ybkqRCiUr{QY&0TA)aI` zo2r&D9-9o66CQQXc3OM0Jm5S<9zZ$iLGI}`3elllpceSpmf7_Tz?8N%KB9V_MM}J4D zuzND~(t}fB_hf3CdC_&kGC7Fjflf4otmxKd#xO3B$2DBmH7%zV#mVN$j16aiJ6kn} z+|h#Q_>gnt!s4XKo|&1K=4OJPQRZ-;fJdu%8x32@gBy8f6vq#Z2Y1-`)OyH4dPxu2 z7}~KSkOnnoxTuJrfZ>8Ps4>GuMFa&57oj3(}y*3>Os<6fj(n1~q25sED9|;es@%F~dbg z1O*Hiq(O}tE-E4@V7MR+YRqs^5kUdN1!+)YhKq^_3K%X(gBmkjR76m~a6uZ>nBk%# zf&zvM(xAo+7Zni{FkFxZHDIYL5&$MDk3OgxF8K`{6Jib z>1&wSCGTGL$xD{EPXF-|c|nu6);8-LxBnu?UAw_?|J^6Qe{$UBQEuUxEsirkw zPj8?6fM|bTuT>g@U;etgaQu$6^yuy18cX-ii#OH#U#wid{y&@gRHOg^ literal 0 HcmV?d00001 diff --git a/static/newsletter/images/dailymail_russia_background.png b/static/newsletter/images/dailymail_russia_background.png new file mode 100644 index 0000000000000000000000000000000000000000..c3679836c008931641bb51d7884a39d355c6b6d4 GIT binary patch literal 15090 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