From cd70355db8502ac2950c8acb126cd9afc2bb46bc Mon Sep 17 00:00:00 2001 From: Chris Hill-Scott Date: Mon, 10 Sep 2018 11:21:43 +0100 Subject: [PATCH] Display postage everywhere we display a letter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To avoid the problem of having confusing defaults, the postage is now set explicitly on every template. Putting the postage ‘inside’ the letter template makes the interaction for changing it consistent with how other parts of the template are added. Plus everyone loves skeumorphism. --- app/assets/images/envelope-1st-class.png | Bin 0 -> 3853 bytes app/assets/images/envelope-1st-class.svg | 27 ++++++++++ app/assets/images/envelope-2nd-class.png | Bin 0 -> 5457 bytes app/assets/images/envelope-2nd-class.svg | 25 ++++++++++ app/assets/stylesheets/components/letter.scss | 46 ++++++++++++++++++ app/main/views/notifications.py | 3 ++ app/utils.py | 3 +- requirements-app.txt | 2 +- requirements.txt | 8 +-- 9 files changed, 108 insertions(+), 6 deletions(-) create mode 100644 app/assets/images/envelope-1st-class.png create mode 100644 app/assets/images/envelope-1st-class.svg create mode 100644 app/assets/images/envelope-2nd-class.png create mode 100644 app/assets/images/envelope-2nd-class.svg diff --git a/app/assets/images/envelope-1st-class.png b/app/assets/images/envelope-1st-class.png new file mode 100644 index 0000000000000000000000000000000000000000..71f09948fb409811daff7a54be655d74170c2308 GIT binary patch literal 3853 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 + + + + + + + + + + + + + + + + + diff --git a/app/assets/images/envelope-2nd-class.png b/app/assets/images/envelope-2nd-class.png new file mode 100644 index 0000000000000000000000000000000000000000..adba7ecc9f632fdd57b1186d3adff0d8ff272aeb GIT binary patch literal 5457 zcmYLNc_7pO|9{iuO6JO^$jyds$C@MNK4(lyIULl{NNQOGeP$70A?xk`>4UD#Hs z7;=qdu1Gl}$L~GgKYsu0{od<%J|55K>-l)T-mlkv4BAwH?+70N00QP_Ms@(e0R!Lv z^6UqHtBhp?!N=hcE;n}gXXCN0HVw0MkxF6 zq4`IGe&;=N6ZH5F$Q}Q5AT~XzhCh~BL>;#~wFKjQTjh1#F*G(gOU>i#`y=TG$byVBWUJ-H@Cd8O=S$H zR@{A6F2KS2dZS-%ZdLsWSm7V{){3Eq!6@flu?zgb3f262bI2F@$`C6S~`#=;N z^7goMaPu1Uf&dUgGe7Gb`R%YV2T)GTz(lV-Mm7hkp^(4~F+)Z*;tW9!&JCQ$2`j*> zE5CWneI`#@aK=a>o1mn9F&0SPPz|vuBNn;}&K@81i*W;%@c$Er8ffa8jNniX{Zul9 zmoB(?+*45yM5Kw?TeHvv9PmXE_Hbw}^&@Rgu&D>2SfU9!OLD3a5EekOKy$Vh0{SIn z2sjR-47-3?iRT1Dak%sY7B@5ZvB~NO!r47{D3X9ZohByA9{-38!5eab%$mMP@PWoymQ+L%Lh4RV7Cr5?Y{CF zuc5VA0#tM9T2!$xG1sR#r1fqXKY*Mqvf2Gdrbwc|k)dW77xf5PFu1s$1PE*WL5?}* zU<^5g&w_xX6#)RU!qDN50!VoB@j+g?sa3Wm<{;Fd8M4h~hB@c{wzt%0%nNULr%d!f zBC>rwbyaipRkVCbd+_|S*7W-G=(h1K0uRl6reAlAmyR^zsCzSdD-y|xiyl4t)AQFn z^V!vo(vhv|`p|2V=CnodA+ogDhfwQB8!J>^W?Bu6X6&%E6e&nSh(1=gj;w+IYD%*c>wotn zAum4Z!PFH440mdjP=swL?~f!RrDgch#?(yPC&?n9;rBSTQF&+Bw*OM}qKuOr#0zEcVpdL)1lA6Ra)C9{tT#rnRu>6GPe9Yj(MJpK58p0;?q-Rr{qq z3~9TO)+3>EiOM%ZoX!skn5vQOZ8csl%bD%C`e@)j*&s$I6%n$s{>@hEj`zst-H5E` zoQJ$TLTyZJm+9M9TidyCGVBZ+&VmR+VuxA_^7bJ(6c{`YDWMXw< z2|xWYdlE85Rfc?#P>I4Kn^46cSBSM`LT?1k;jfxtQXU; ze4w9O4?;^IEDIBBx0zGpT`TC)x2Piiz~Ke1zLAkAXN)jOZ4BkW&vSBD#8a%HD2 z{7>C-B!A@Qq_~ zhz3_Xm0kb1jlUUl2e-HNwig|zABNP5zM;>2K1ti}y<#*40tIaH+HYk$uF@|NaF%A- zs)#IqdYFB7!H&COLI;C*^}g*u<-p7Ax@VE(42LZlxM~p-CqROTLgq@-hBO3gt`7YPY7tQcG6vsYsl#+r6_MDpQJf zV}dAi{oO~vyoe#%5lVuv+HXfDDW8ZSB>nhG>Yk!{FKjO4C(!~?wAoIovK#>{(7S&o z6rIS&Kv z>q@X3o0l*7Lqv1XLz223+_Ns8CTJ;kAv=r`B3)bR9qkra`Lp9ARvk8Nx>lOGbX@?K z*a)s#8N$A6CUADYR(9tPxQkqB$G1yO86)PwNmnO5P#Cc0YpK8%3yeh$e{(79m9v

=~2aX-T z==Zht6?1cezD(&9Ol3hE=qbjNlU>&G9Rxa4x7utF!JRiBTmo1&I+ua6=!l@ z+lk6giXlVowN|s9g`Zw(E%cjz^L1#(^$F$Wx9of3_>sav9&D8X!?&U+(p6_Q) zYf5LjO^Wsi*$24ftAX3Npx%(Sy&Pz*k}aO^Ti2TY%63kD->0c9BU6^fPtW;vEWGpB z4`>`lZkjfD;GKrFWeS;7rQCfQ8YjS`;*ne%exzEb`7Rksf~{7q$0t57);U1^q2*8( zq7hnI&5h%0q&!BDk||1Hz58wT$j)Q+r+0T=8rBS=h}x*^^F3=M`k-a&_a zOtfa!DAsSr=+KKa(*;g9Xh~`jB~<(-yL;P9hN*6LeI-=UNo1{ zj7_YhqwOAmzUJeFNxM&aB~(%o4tKKs0wsc!cm0j8REgjc(y6unuayv zQUv$*z#TOnx}k@3Z_!3?)I!3EQEuk3e=

2a(23nB_w{zF9B@V@&=nzWp6h;u$sm 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 MW3*9~!4<;)0hRPEng9R* literal 0 HcmV?d00001 diff --git a/app/assets/images/envelope-2nd-class.svg b/app/assets/images/envelope-2nd-class.svg new file mode 100644 index 000000000..ec54d710b --- /dev/null +++ b/app/assets/images/envelope-2nd-class.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + diff --git a/app/assets/stylesheets/components/letter.scss b/app/assets/stylesheets/components/letter.scss index 61cc2f28b..1e50953d3 100644 --- a/app/assets/stylesheets/components/letter.scss +++ b/app/assets/stylesheets/components/letter.scss @@ -38,6 +38,52 @@ $iso-paper-ratio: 141.42135624%; box-shadow: inset 0 0 0 1px $border-colour; } + &-postage { + + $art-width: 97.83; + $art-height: 82.27; + $fold-height: 124px; + $envelope-colour: #C4B186; + + position: absolute; + top: 0; + right: 0; + z-index: 10; + width: $fold-height * ($art-width / $art-height); + height: $fold-height; + margin: 0; + background-color: mix($envelope-colour, $grey-1); + background-size: auto $fold-height; + background-position: right 0; + background-repeat: no-repeat; + background-origin: border-box; + text-indent: -1000em; + border-bottom: 1px solid $border-colour; + border-left: 1px solid $border-colour; + box-shadow: 0 2px 0 0 rgba($border-colour, 0.2); + + &-first { + + background-image: file-url('envelope-1st-class.svg'); + + @include ie-lte(8) { + background-image: file-url('envelope-1st-class.png'); + } + + } + + &-second { + + background-image: file-url('envelope-2nd-class.svg'); + + @include ie-lte(8) { + background-image: file-url('envelope-2nd-class.png'); + } + + } + + } + img { display: block; width: 100%; diff --git a/app/main/views/notifications.py b/app/main/views/notifications.py index a4841d970..3e031c632 100644 --- a/app/main/views/notifications.py +++ b/app/main/views/notifications.py @@ -70,6 +70,9 @@ def view_notification(service_id, notification_id): else: page_count = get_page_count_for_letter(notification['template'], values=personalisation) + if notification.get('postage'): + notification['template']['postage'] = notification['postage'] + template = get_template( notification['template'], current_service, diff --git a/app/utils.py b/app/utils.py index 6a7bb02e8..d2efab1a7 100644 --- a/app/utils.py +++ b/app/utils.py @@ -331,7 +331,8 @@ def get_template( template, image_url=letter_preview_url, page_count=int(page_count), - contact_block=template['reply_to_text'] + contact_block=template['reply_to_text'], + postage=template.get('postage') or service.postage, ) else: return LetterPreviewTemplate( diff --git a/requirements-app.txt b/requirements-app.txt index 80af0678e..9b9dcf302 100644 --- a/requirements-app.txt +++ b/requirements-app.txt @@ -23,4 +23,4 @@ awscli-cwlogs>=1.4,<1.5 # Putting upgrade on hold due to v1.0.0 using sha512 instead of sha1 by default itsdangerous==0.24 # pyup: <1.0.0 -git+https://github.com/alphagov/notifications-utils.git@30.7.5#egg=notifications-utils==30.7.5 +git+https://github.com/alphagov/notifications-utils.git@31.0.0#egg=notifications-utils==31.0.0 diff --git a/requirements.txt b/requirements.txt index 82ed99091..5f997fece 100644 --- a/requirements.txt +++ b/requirements.txt @@ -25,13 +25,13 @@ awscli-cwlogs>=1.4,<1.5 # Putting upgrade on hold due to v1.0.0 using sha512 instead of sha1 by default itsdangerous==0.24 # pyup: <1.0.0 -git+https://github.com/alphagov/notifications-utils.git@30.7.5#egg=notifications-utils==30.7.5 +git+https://github.com/alphagov/notifications-utils.git@31.0.0#egg=notifications-utils==31.0.0 ## The following requirements were added by pip freeze: -awscli==1.16.96 +awscli==1.16.97 bleach==3.0.2 boto3==1.6.16 -botocore==1.12.86 +botocore==1.12.87 certifi==2018.11.29 chardet==3.0.4 Click==7.0 @@ -59,7 +59,7 @@ pyasn1==0.4.5 pyexcel-ezodf==0.3.4 PyJWT==1.7.1 PyPDF2==1.26.0 -python-dateutil==2.7.5 +python-dateutil==2.8.0 python-json-logger==0.1.10 PyYAML==3.12 redis==3.1.0