From bc773059e7e54926032c110c146e58dcc9c59a58 Mon Sep 17 00:00:00 2001
From: Nicolas Joyard <joyard.nicolas@gmail.com>
Date: Wed, 1 Jun 2016 21:24:48 +0200
Subject: [PATCH] Add social network links

---
 memopol/templatetags/__init__.py              |   0
 memopol/templatetags/memopol_tags.py          |  20 +++++++++++++++
 static/images/facebook.png                    | Bin 0 -> 1809 bytes
 static/images/twitter.png                     | Bin 0 -> 3207 bytes
 static/less/base.less                         |   1 +
 static/less/external.less                     |  24 ++++++++++++++++++
 .../_representative_block.haml                |  12 +++++++++
 7 files changed, 57 insertions(+)
 create mode 100644 memopol/templatetags/__init__.py
 create mode 100644 memopol/templatetags/memopol_tags.py
 create mode 100644 static/images/facebook.png
 create mode 100644 static/images/twitter.png
 create mode 100644 static/less/external.less

diff --git a/memopol/templatetags/__init__.py b/memopol/templatetags/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/memopol/templatetags/memopol_tags.py b/memopol/templatetags/memopol_tags.py
new file mode 100644
index 00000000..b01305d1
--- /dev/null
+++ b/memopol/templatetags/memopol_tags.py
@@ -0,0 +1,20 @@
+# coding: utf-8
+from django import template
+from django.utils.safestring import mark_safe
+import re
+
+register = template.Library()
+link = '<a class="{network}-link" href="{url}" target="_blank">{user}</a>'
+
+
+@register.filter
+def twitter_link(url):
+    return mark_safe(link.format(network='twitter', url=url,
+                                 user=re.sub(r'.*/@?([^/]+)', '@\\1', url)))
+
+
+@register.filter
+def facebook_link(url):
+    return mark_safe(link.format(network='facebook', url=url,
+                                 user=re.sub(r'.*/([^/]+)', '\\1', url)))
+
diff --git a/static/images/facebook.png b/static/images/facebook.png
new file mode 100644
index 0000000000000000000000000000000000000000..e4eb58426c769666b1ba0ce7f002dfcd0d846ed0
GIT binary patch
literal 1809
zcmbVNc~BE)6pw-$s8~Qnpz3S_3ZgkSAtwaL=71=N4XLCYVn`N9A-m~jQ^HXzf&vOi
z6;KCT6&L|au`-I&GI&s`2uc+xRtAe&6fbmOP_$m%AYlJ+{G&U&`+eWr_j~X6uGxaM
z;lU2}?)D@S$w3h!RT8Vt`jBT6Z{w{p6|uPCGBqBFCgN!t3?_+nXaWo<44NcZ32Sue
zU!I5kNhF(Oy-JO%!$O5x)Iir*b?6p@kwBA3{(%;wMw<fTKmwekM?}=e&8Mh<UMHeP
zal)8kMhTp(56Qsb$c%86HX}tV&`|>e0Dp^+Fkpaj4PY^(A||0lM4hlJB=%M@g9=Qj
z;3*>NTT<$<wSWZ0V1Pqs)3i(w1h`x}=*!`9!Bqf@39=YW;^xvoUm=GpWbuH>i%NLI
zbcsTxR6gm8IEkpqIBpa&7-?x~^fWdd#gZ7HKp?Q%V6kX~2F;X?;2H}JF?mc`kisS{
zrZ?hx6alOjH3_I07f}hOZ$mH`!@{NwBc{nj5h-I>G)4wUXEF>1Yg`lBCR_=>qw!vC
zlPcW^GnB9iHDg+$9*G`PU?O)Pc4So~*a#yqJy8@*sub0l4KRW$q#`Qug|5@<giH>f
z$Rf{|$zw6Od=TU_`D}><Wb>I4mY5@hrfj?q3kf73lP711xgZw=Wh_1<6GIXio6VO>
zAhv)xg;gLXT!U!gDZhHc?<5xdAXX^BU=5C9Dilqf>VUP$D2|$vQ6nIU<O1Gd8m%6&
z3RYMP^fq28jOo9Eb#e?f023J&>fggaEa8bExmdvFPev{QeFc26T)+p#kXRz4PGWWc
zCu<CX48z(U|7n*g5z&Lz?R4`Khw1Tw5n^UAVmMZIb@mW57pRbmRhGVo`&uF*KXuKE
z?;CaUu5`&J&#<*wCz~y+0=5PL?(>~F9YOg*u%xy??)F`7;2H58FLTraUe0p5r+mKG
zvC_?U`9UShyLsP7ZvP}_cW-9&ey``W;THXifR=I5_`ZsYKeFy+d)BJlRDvpH!>t7&
z%bd#G%7%Q#RWJXM1>d?zFWces$_{J~5j9AEG+zv?#SwDdy7WqANKvY`q9d}*hc?)>
z+KF>?$?%P0kIU@SbHn|d9Ts0W&?>g!+1KQ_@0kTT&LoS;fGwrOKDP7*?;1VNH>0!q
zV1w%ZQ;ROGAZA<Ioi#|)no%syd0z0cV@nIrX7_FFm@%$A3h&juesMS}M*Z!z=Laq@
zX5YU4f&|q!p6K&f^vl!Ex~ejzx}^E%pHh?j-CN=cYBpRk#AGa`4x)A5w4K=}m+J+w
z=T~%wH#SPU%u7qM|MK|e^$7XsgLA?qtUm{Q;=EFl?=SZqZob-AeY|d)=7?SFsjPmB
z+nb`2;ycmz9@P%DUa}o?d~&u-8(UWaq2rVl*bt@7w*R>RJK0&WZa`4AWuM`P9TAy8
zn`2)@PxbY*E;Z#hKYLw#(HzR5OLu8S5xc6dr$UG9M|vOib-%ux9J;>v>+%zSM~><f
z!pqAg&e7X}HlNRK_dYIuB^;L^4yT;sH)MNweqOq;nKoRrs1li1)G;_l6?yKpG!4b{
zp@UCy4J=l4NO;rn{ZAA7fA?OwP~8HI&2n){aL(}E;+R9;+DZls)DOKN5`{b?7qE5Q
z>=;CbP6rgmf9#f-#W4ghoQo8h169wy@CeSI@hqvl$<v0SNL1P#%-iFsbEn8}u4(ON
zKs(!alb}NJk*d&(K%47WOYDQ2-Vm$q8^CifG?RRjoZYiN2k@+`sh^d*r}g2>)!mPV
zSR0$J-rr@e@9INtD*_f%+{n{~-{hD}vL4<MnqW5}o9K)Q1*_~MsIv5oYh`r%Tr+d)
zCYRAdq3f^tF0A@SDJ?bF&$S!M@)7xT_Ox;FVaDN5q_A;)t#56A)X0^)Z^CRMdZMqs
hJkU|Qab!2ih6J8FyDDYC&)NEuQpm!k4bX<o{{n3?oIn5o

literal 0
HcmV?d00001

diff --git a/static/images/twitter.png b/static/images/twitter.png
new file mode 100644
index 0000000000000000000000000000000000000000..7de53332db1ce2f7d51ffd1bed0837ab373b4e80
GIT binary patch
literal 3207
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
WO1`e)c>K=G0KnPcu?;7E>Hi1m<JQ0c

literal 0
HcmV?d00001

diff --git a/static/less/base.less b/static/less/base.less
index 214f4d14..f8cff323 100644
--- a/static/less/base.less
+++ b/static/less/base.less
@@ -7,6 +7,7 @@
 @import 'positions';
 @import 'chambers';
 @import 'groups';
+@import 'external';
 
 body {
     background: #E5E5E5;
diff --git a/static/less/external.less b/static/less/external.less
new file mode 100644
index 00000000..7e27fd5b
--- /dev/null
+++ b/static/less/external.less
@@ -0,0 +1,24 @@
+a.twitter-link:before,
+a.facebook-link:before {
+	content: ' ';
+	overflow: hidden;
+
+	display: inline-block;
+	width: 1.5em;
+	height: 1.5em;
+
+	vertical-align: bottom;
+}
+
+a.twitter-link:before {
+	background-size: 110%;
+	background-position: center;
+	background-image: url(../images/twitter.png);
+}
+
+a.facebook-link:before {
+	background-size: 75%;
+	background-repeat: no-repeat;
+	background-position: center;
+	background-image: url(../images/facebook.png);
+}
\ No newline at end of file
diff --git a/templates/representatives/_representative_block.haml b/templates/representatives/_representative_block.haml
index a02a9be7..63fe335b 100644
--- a/templates/representatives/_representative_block.haml
+++ b/templates/representatives/_representative_block.haml
@@ -1,3 +1,4 @@
+- load memopol_tags
 - load representatives_tags
 - load representatives_recommendations_tags
 - load humanize
@@ -39,3 +40,14 @@
             Born in {{ representative.birth_place }} the
             {{ representative.birth_date|naturalday:'d/m/Y' }}
             ({{ representative.get_gender_display }})
+
+        - if representative.social_websites|length > 0
+          %tr
+            %th Social
+            %td
+              - for site in representative.social_websites
+                - if site.kind == 'twitter'
+                  = site.url|twitter_link
+                - elif site.kind == 'facebook'
+                  = site.url|facebook_link
+
-- 
GitLab