From 6034428b14b634d1801e2d8279b1a0863b918a48 Mon Sep 17 00:00:00 2001 From: Radek Czajka Date: Mon, 20 May 2019 15:00:23 +0200 Subject: [PATCH] Nicer membership form. --- src/club/forms.py | 24 ++++-- .../migrations/0009_auto_20190510_1510.py | 31 ++++++++ src/club/models.py | 3 +- src/club/payment_methods.py | 13 ++-- src/club/static/club/form.js | 20 +++++ src/club/static/club/paypal.png | Bin 0 -> 4829 bytes src/club/static/club/payu/blik.png | Bin 0 -> 12806 bytes src/club/static/club/payu/payu.png | Bin 0 -> 22326 bytes src/club/templates/club/membership_form.html | 69 +++++++++++++++++- .../templates/club/payment/paypal-re.html | 2 - src/club/templates/club/payment/paypal.html | 3 + src/club/templates/club/payment/payu-re.html | 6 +- src/club/templates/club/payment/payu.html | 6 +- src/club/views.py | 6 +- src/wolnelektury/settings/static.py | 1 + src/wolnelektury/static/scss/main/form.scss | 61 ++++++++++++++++ 16 files changed, 225 insertions(+), 20 deletions(-) create mode 100644 src/club/migrations/0009_auto_20190510_1510.py create mode 100644 src/club/static/club/form.js create mode 100644 src/club/static/club/paypal.png create mode 100644 src/club/static/club/payu/blik.png create mode 100644 src/club/static/club/payu/payu.png delete mode 100644 src/club/templates/club/payment/paypal-re.html create mode 100644 src/club/templates/club/payment/paypal.html diff --git a/src/club/forms.py b/src/club/forms.py index bede0cb62..b818d1c12 100644 --- a/src/club/forms.py +++ b/src/club/forms.py @@ -1,6 +1,7 @@ +from decimal import Decimal from django import forms from . import models -from .payment_methods import method_by_slug +from .payment_methods import method_by_slug, methods from .payu.forms import CardTokenForm @@ -16,16 +17,29 @@ class ScheduleForm(forms.ModelForm): def __init__(self, *args, request=None, **kwargs): super(ScheduleForm, self).__init__(*args, **kwargs) self.request = request - self.fields['plan'].empty_label = None + self.plans = models.Plan.objects.all() + self.payment_methods = methods + self.fields['amount'].required = False def clean(self): cleaned_data = super(ScheduleForm, self).clean() + + if 'plan' in cleaned_data: + cleaned_data['amount'] = self.fields['amount'].clean( + self.request.POST['amount-{}'.format(cleaned_data['plan'].id)] + ) + + if cleaned_data['amount'] < cleaned_data['plan'].min_amount: + self.add_error( + 'amount', + 'Minimalna kwota dla tego planu to %d zł.' % cleaned_data['plan'].min_amount + ) + if 'method' in cleaned_data: method = method_by_slug[cleaned_data['method']] if method not in cleaned_data['plan'].payment_methods(): - self.add_error('method', 'Metoda płatności niedostępna dla tego planu.') - if cleaned_data['amount'] < cleaned_data['plan'].min_amount: - self.add_error('amount', 'Minimalna kwota dla tego planu to %d zł.' % cleaned_data['plan'].min_amount) + self.add_error('method', 'Wybrana metoda płatności nie jest dostępna dla tego planu.') + class PayUCardTokenForm(CardTokenForm): diff --git a/src/club/migrations/0009_auto_20190510_1510.py b/src/club/migrations/0009_auto_20190510_1510.py new file mode 100644 index 000000000..57a110fa1 --- /dev/null +++ b/src/club/migrations/0009_auto_20190510_1510.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.20 on 2019-05-10 13:10 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('club', '0008_membership_name'), + ] + + operations = [ + migrations.AddField( + model_name='plan', + name='default_amount', + field=models.DecimalField(decimal_places=2, default=0, max_digits=10, verbose_name='default amount'), + preserve_default=False, + ), + migrations.AlterField( + model_name='plan', + name='min_amount', + field=models.DecimalField(decimal_places=2, max_digits=10, verbose_name='min amount'), + ), + migrations.AlterField( + model_name='schedule', + name='method', + field=models.CharField(choices=[('payu', 'PayU'), ('payu-re', 'PayU Recurring'), ('paypal', 'PayPal')], max_length=255, verbose_name='method'), + ), + ] diff --git a/src/club/models.py b/src/club/models.py index 1128070e7..d7be28732 100644 --- a/src/club/models.py +++ b/src/club/models.py @@ -22,7 +22,8 @@ class Plan(models.Model): ] interval = models.SmallIntegerField(_('inteval'), choices=intervals) - min_amount = models.DecimalField(_('min_amount'), max_digits=10, decimal_places=2) + min_amount = models.DecimalField(_('min amount'), max_digits=10, decimal_places=2) + default_amount = models.DecimalField(_('default amount'), max_digits=10, decimal_places=2) allow_recurring = models.BooleanField(_('allow recurring')) allow_one_time = models.BooleanField(_('allow one time')) active = models.BooleanField(_('active'), default=True) diff --git a/src/club/payment_methods.py b/src/club/payment_methods.py index 29221ee6d..b215b1d69 100644 --- a/src/club/payment_methods.py +++ b/src/club/payment_methods.py @@ -3,6 +3,7 @@ from django.urls import reverse class PaymentMethod(object): + is_onetime = False is_recurring = False def initiate(self, request, schedule): @@ -10,6 +11,7 @@ class PaymentMethod(object): class PayU(PaymentMethod): + is_onetime = True slug = 'payu' name = 'PayU' template_name = 'club/payment/payu.html' @@ -51,11 +53,12 @@ class PayURe(PaymentMethod): return order.put() -class PayPalRe(PaymentMethod): - slug='paypal-re' - name = 'PayPal Recurring' - template_name = 'club/payment/paypal-re.html' +class PayPal(PaymentMethod): + slug='paypal' + name = 'PayPal' + template_name = 'club/payment/paypal.html' is_recurring = True + is_onetime = True def initiate(self, request, schedule): return reverse('club_dummy_payment', args=[schedule.key]) @@ -78,7 +81,7 @@ else: payure_method = None -methods.append(PayPalRe()) +methods.append(PayPal()) method_by_slug = { diff --git a/src/club/static/club/form.js b/src/club/static/club/form.js new file mode 100644 index 000000000..6be8220eb --- /dev/null +++ b/src/club/static/club/form.js @@ -0,0 +1,20 @@ +$(function() { + + function update_methods() { + $("#payment-form .payment-method").addClass("disabled"); + $("#payment-form .payment-method input").prop("disabled", true); + var plan = $("#payment-form .plan:checked"); + if (plan.length) { + $.each( + $("#payment-form .plan:checked").attr('data-methods').trim().split(" "), + function(i, slug) { + $("#payment-method-" + slug).removeClass("disabled"); + $("#payment-method-" + slug + " input").prop("disabled", false); + } + ); + } + } + update_methods(); + $("#payment-form .plan").change(update_methods); + +}); diff --git a/src/club/static/club/paypal.png b/src/club/static/club/paypal.png new file mode 100644 index 0000000000000000000000000000000000000000..14613cc29fefd117a95e5e52a1e9ee3905bb6dc1 GIT binary patch literal 4829 zcmbVQX*iVa+qaJ)G=%J9tQBUlj-8po*c$s5HD<;VW2Q0oC|i;}WXrCyMj|aJAtFnN zC}fE|l{K>T3QD||KtDRy^rI*uj@Lm^LMVl^UIxxvo_`766IoIV&cJ?p=}v! z2IE!Y+M#-ozwBx=_P@kX2>34*x}P58 z@1UHma9|XLMgps=Xeblls#;)8qzYUesfAEe0wZ8>4JZr=g{vvU;My>xHVh8_=YcT1 z(THB!wrG=od@)XX5Fa|7sttvPgoLPssH#wC-cUFaiG;!sPy|Amp`jcY7C^^`DhCA0 z{I-B51rlh!RJt!E0Q}1$-jfnU*Ml%3{W}FR)ynE$!vTT+6pB$YXegcvg{#1zWb&`P z{?ZPl+mik_jQ^+|Xdgx;L2XHalpq>`(GM?~-(W`V{=1`Jii~KqPt$xEO~L!4DTE+0 zDS(be>p>VdDnwtRwuw4MUEK(SL75;_HMHPxEd;^{qXtt)YNFJP)RAhxZTu%J#z0|+04%anTH@65~M@&t(YyWFPvnz5uJhkV68K3%2#(Hd=EE_*U`oK~? z(`EmVGE)$ysfzVN@QI#l4~)tUTbusA+Ild3>4^m~N5wrxvBXFu2_Z;QH0L$fzQ&9J zz`toUmA%DPa1?Vi9)HrsmE2SoZm& zfrN(|hBq+aW1!v@I*kY^yu7KCHDR1>VQtMp5_VnS$&&jPt(Im|K6e$Rxq1#oc*tSM z6^*7kRJMf;psPPSWF3pbmb*UxZ<~W0&jw9IY9&qDPhghw@-E3k$-l$un6l6_FJX zTx6hI8Yfz@=6uYPqUoc4Z61rE0??~cT>?eWY?b63*2Gf=ny-+8w&Juk4(1Ss;7_!+O{AxrW7d8|tlu z!&LRhbN8gaOnYdaZ~?AOS0vbzhh8?dKICby{1)U~7biP^!IVV0RrG2SeN3+~JskGN zbyoCw!{g^qnWtv0rj9wcKF}>&7IIPxj!2n)&0Al)E9pql4eM67!CHh8l62}+9#V?+ zs=fbI40pVXmCM7*w1X-1E-A?Cfr_2(SgP&iGDLzZ8(tT*SU58B=uksDXm}NP3D@$l zHFZy4S2H`4cwhh16rYCR*$e#H!C;$eYi7cAb!oA^1a0A)K7Y8BEWGGBrpZ19R`576 zNjduBElxi3w3@w^qFlS4qeOl;$Ol51BTB7}oqy{#!;*OrVsKb@?-oxrbn?fn)dkVr zfNjqok;n7P?zJA|4b5%UG0$JEZ?n~!esz7m4xZQmcI)3>uODpbxT!3hx1~--^saRT z_K_uTZ+(1mN>%|>cG)Z|5NX!5O!eW9uS?t~G7~HIpH5A6j-qcZJKNoum}OB`9{9Po zKzT(pBdYo2`mCGzDvN8o$1V-BN7|-Pw|XsA=3LHrNPT+k;x*&n*kdeba;esT(NaMg z?!ldR;sS2O=>E6S$EA-Zoq9ko&XF@pfK689f*jSrH@tkuvk}M1HioG-%-$I=WtCYS zbK@RecZCF7v4cUH3ST1aD*9ziVJ5$+`S}RzvQU9gVL^BT*9gyCM&)%mn}A@*R^;JE zHScYe_=7{-J;A80{a`KEzHuGv`j|<9gU^vAYb(uqHD zu%aoq-rGOB`*c>jU8**G&+$c9NlY9whdvP{UQ6b_Hokdpk{rE>HQmp(ltp+j2z=9zvv7Cg;gf2SXU~j2 zwE6MIGcg}d&2YKg?rPwOPU@drcI9uv*-Rf92v!i@xwJVu`f3lE33xsjyF6F4tWm}% ze5OSxLI(xD3&(vv(yJD2bce;Qrrz#i^OGa*eYB6!@@6gd4<@F6BIsWWPS3Ik2J>lQ z8Z*qEmEcM=bK@yK1^D*~2Ey*TD-ob!@aFwQs9BR0;T47R1Q$3KECIQiw$(BSa1TX%SO zGOw<0w+D(RGKN0BnAJD&ojh+`cgu40=%f(QQ+pfPaN?)NAWN0G@Q=^_&$>v`BEf^^ zvG&;%^UV>w$?>-Kd}-TMo59H*yAr8P>ZgSS@IY-$iq91m>j$D9``c`ET0u#3v*4Ft zon*26<=Lyk$fbhsH;hPD+)9z&X@|~bSiqXTL97hUR6u|WSVj`r@+V;c$g9iiN!Qqn4X7`!099)4%J5$$zmmiJXn z%XOqoY_VyuQ+4w84(l?i*ep5CjCH{A-CSn;qvP()aSn@?B-Z7e-BC*{$J_nynD;oq zfP*>gykQdP*nrgS$#BVw!1>Bkmke#w7cO;7#YLs5Dk8R!ZIZbRbbmf; zP-;&^1*AU2&82ba_$@imM*Ny(cST|<(88qRd9+<&Ef{-s&Du2Pb~i`)O{)e{BXHcr z5S)r$F34LWa3iEg%UD#kvpAZ?Zt{w$X=u>&oQLHlK`V;bNg|=V+-Y`p$mh*_f7Q{; zm{AVZ2`K?g$oBzJu9mbRPf>S&Pc5qg6~O&>FA{5;fuf?K&%EyMz3Uv{W$TExs4ZC6 z+cy_GDUm!`wj6Y14bY9fX}RPSS0XNF)g+Ood~2p^;PXJkTo)t0v3$=HpL=xrZUSKWNQa^Y zZ!uXp{;NU5s0+uo)w%Z5BH6&DP~`=*!2a#-&H{_uRM*ot7eEEMvUMy+K6qXgKW3jh zskEaC@W;)R&2f0AsXfGZizpCQH+O64Sit=}0R`?wkSx=mD(y0>VE(Vq`RXe5gKYDf z`jQ5uX$Bm#pDqHDRm1UA7GyPfcx+g-89MF|oA6u)qq&boYn}0rS2!Hmb8Wp@%lo=~ zf@kZ_$7k1qOmlxW(k7K~FQ=1*POW^f=Yt2WeHrYx@8mXn;F?gc`Zfc8Nq^;2Yt%+Z zhD#a8K!xq&-sDi@C83Lc2O$~A`{lLeQmD4GT=Xy5tqCHVQ(~EF5>6gFx|$B4+Qi45 z)1!b+=$bfa^Zlz0)`zvtm$T4%JMkYjl-sWG2o*W2i3aqwuz?nPQbmY%-z6LYU)NvT z(^nljBw(03m&>C3Hx+WeM_$9oik^405X}RwGHu91p+hP<7v|X{imgE>2VBdW-@Jxg z_~S_jz;ub(^0*{@cL8)>@e4FXWcpII8sgXko2 zrN&jwg_6Y0I&+CyBq3omrF{cO9RA8KOS3p5bLN|?`hTVCn#BI zjRn#wYLb*nZeTM#N^+EwnYm60LQb5@M}0YKtt2im_Aoa~?XAwra`FB^i>-7*WX)W9UYGblB!alj|AVVe@@zaQW>HKzVoyy(IQpSa1R?5)$Y{m zJZjJ+&~>Rd@68I`hNstBsxbQFB->olS~iFKokkr)nVdmKQvtl~B<|xA$o%z>IwFUZ z$@0u|)Z&NMV#%B`!A&w&s~b^f!yCBo$-z}l-a+7~^_wp8p?}Q3kvv=CUm}dfd#Q0Q zB3b5-81><+cWQ#S0DaK9Y0*!|GflVSd)6ePtkzEB&Yp$F?TCf7?=~%F$e8B7X39b> z+NNVw3kI$`fTg9SeVpSxwCY9cwbNasN1@}y=k!#+Y(rw-(F%O;qmM6wxVX4t#^*L)7U~r{I zVC-j8g5XffEo1GNCH8tI^32SAq8&s;_slnS zF42x0P_79-q-+L# zC3ZD_>Q1=tQN6Fe#_e2OCma1Ry*TU~e*E4I4MRw&|4EW{eA}VtlfE5&&P+aRKhE4Z z*Qt9gPX3%!Gd%7Q`-O-3X2}Ds?~^ydeTBU<51rXU-o)N4KHbq0{U+6n`#T-G80;a* zK3h!6jj?6=QcN0tF?D+)+CFu62qFGU{I;j~Gw7$nGp3o?I!C>ax#xcUaKd7&(RYo{ G#rzMOpnCoQ literal 0 HcmV?d00001 diff --git a/src/club/static/club/payu/blik.png b/src/club/static/club/payu/blik.png new file mode 100644 index 0000000000000000000000000000000000000000..9bc5063078f7b3ccfa0e01c85932695176249fff GIT binary patch literal 12806 zcmZ8|2RNH=^mbxz8nuh01Sv&PdykUXX-n--)aA1j(ECJkN8U=bZb#&k?DoqfSl1N&y0asF50~Xb=bt2Y!zxBLSXy zN#f0bA4K*_+Daf$Wjy7D6*2HPxtoTO2XOuJ^*30oELszIk;Gb4T^022`YW%wI0<-# z)Dx+#MmkSQO2Nj0^JKmswzG5HQ&i5Ph;r(aboKQPQH7msv(*z>h_!4B4piy ze5FAGPHvI<7EB>B!+Ff94e;Ik2Vy+;zNM|4eNlbtee~nQgQqbjV#4ij-sB17k57Ni z|Bf$q9hk|PE{>R1$zD5C5IymplYd-1c=oeob92+h)H;Uz-}J?+H+JAD(zF}%yP)sH zzCtbMAoI_@e?nSFe}HqS-3)^^z*EFQ3KR|SgpOA?^K64u2xM6;m)3G$J(K^tEqc(y zo13=MmztSs5jZJ(GUKs&ww8Ocw>J?5rv1F%%U@JgHL_1A3$`Gtg0*mgX=p&XVN^*$ zY1X{$m`|jq-k@s7QJ#a_LNUt0YRCoW6;slB@cgR@jA~G_>Gsi23yEsGf%k=D?d|Pch}Hh|r%4&u zth8emjyzkpe$?KpQwzRfp^$$j#A$3TAIv_Dn|l3tT;zAKT6@zMc!=G+Yg{92Xc17m zlB}mgIV3G<2R~If)`hnIv(YFf68`byhuu_-W3Axk!oorVBR!9nFu%cvAUiq;)aTpH zmzFe2dV15|_DN8N6c2wZQxI||8E=rpqy5~x8yKVt zWlV?s`FcT+H9gbQNn(Zl>kmVUvz|u@F!++m zhv0lYZMdAtOcj9FfxEhXy%fiHaNUtnL5&(w45D0q_HY0Xqot;;@+5V1kuu6>Kc;tB zopVQa@_Id;so2E(<@uSqcd#QKva(&(cgp|sQPsCNnOz6YMe5}fESf?0s7dD#xW9uy zSm|eeSRu7g^I_rvH?6Ih>of1klCsJA_Q4|ih-|Ho-Y(i7v!{t(`B2IK#vJcV$V+}H zaNJF`^~JoloK8|4S3<3JGFf=$EWZskC^OFBVD}O4+Wpl!Be73*upe`y$bagd-9Q-E zK-W`R2~KtkD+3))XLEVS#75UKVbQ?fas%=^Q|at=(}R9;wDCo66t4cn4<(pMZXgl- zV$OEQzsCmqr|PTyT&9NYRMdQ`_p#nZ?{#^rFNOx~{N~E-&a7T!tXv-7OTIjo;6FbS zD?L9E--;^}{wL`kB~}0G)u>BxHUZjs<;#}{b@~wA!kE_H(}WjZ;@>%6g&FxA?iTIO z*V#?J&F-&i_ZICtC$<@LjR(ERT#5K?pF+FNl2>mOsLEM=(cMmPD8Wy1D8U)e>XMTw z*{QYbg>_u2=85N_(M7T3@6?qIY+rgyl=5)cy?^1#gw>a+{_vZLfE$Vrjv$pB5m0c_ z+w-X~@*2}S*mZw6z@QSInO!&itK@ro0Rno0A1l;k`c&t1y0_pRtAd!XpHe9pR|*&V zHxw`sJ`7$s{3Q>~ry(aValNbj{??-#mT4uj{$VBZPIx1)3jvSzy-KBTkEHK;ZH*5+ zv&|Z}^9z)J{;~O3B$R|&gpia*fc(_-WOw#bG@k{q<#~0smKn2)$gO9NbC` zu>%*KtlN#pZdj$T*Mw5Q9@B8R+~NP0zNxe{P_?8h&P2;$WnBAgXUu{s)%1C!Y(h3_ z|8vpK`PRpJ{s;-ogyr~0i#bauC6nOc*13q{F4FPp;>_-7^G6-T5&y7QXK+j6=0L`M zQNpHOr}w-^5BsoT*gO1j63Hq&nJ4^38L9CylUYNhAFHW4-6m~Q(`gkhgg^LgB(9}C zn0a|HV09P8#L?q4T~~H+&QZt(%wgd*QwFX4X^X+_ScilW8er%Bldzg!mE!hN&ak-? zpU!I8bmlN7TkYAcTK%Fp+}=0U+`oh(VJ#i^tZAdDg0Zmg=a=LAfa_Y4(0r`;v3x%d zkL_P({Zm#iBrMUNg2Ti-9|Rc{ZKg>Top(?U7+pq4_Mtgt5q{`9_P%HewNTs?ky~I% z+Y{sls#K)Ml{85C=tfK*-oJqz`i`7ZXmziFm_U8dV8r)eJ9lZ2LP2S(?JEO{Kw zXt(=TZlG6wXX^=biKfQmu0TY~q}^-{|3D+Dp=949rvDup{4Qc==zX#uW}ob#*ScV= ziU!x9_+zf`qMY%K9i{>64x|2mm-(CJ{%0z{^|dauy%&G*l|@yqYY({a?-Q6ZeiR7a zi;v5)Ki+DJs5TY!MepMu4esG@qKwf~_n?KZjL^3=Q7Rfq^z`T-?}+VwtoIEF@eE2_ zo@}iMq*CVKWD&`tvWVCDN+{QU>A^?)HLs9iVsDjLAYqU0pN|CLzBuLNcqXt^ymGZ~ zH2uF<$lvyuyr^nU9zo`497vX?KJ;N%M<{eg6M_gg}N^ zrNLITD6JQa8DWIu-@@req>dmXQSQ+Lq)%PNzUEeSQ|(Sx%o6;suhcXm%hVN3bs?Ca z?~@xpTUQv#t-tFhckGTgQgy&uhQm!2|xo=ssb_HfaD)e*TF&jjnD^rE@#-v#sP>NpEc!v1*slLUYlBJuK@wAD6h~$? zw|GiYi(9gGOXJjEL}BG*3dnYR5Vvm^`kc7#gBt4Pyk^~LKOx_i;g@}eVhn#&?N{%w2^-IaFdpm2AA)Gv7K9PNzHtAo(tq=EBFUQ!l%BlJdC2i9da2ELkJVwlpa|DYckcv?c8$DClDq73xf3X7dSm*@nquZ_o12}qug?`?K%Ue$D)J+RA zwKNKTIkjd$PuZrLeeh6Y?<=f^&9l;t?y}3IC(&#>2TGk$RXg^o+5H$29f(@6C&nKt zJX2 zKHwy=sj=JsvAVQWE|Ht%`{``H|L?$edvjZzEt%fK&CiAdGQURXAbWVcE~+Mi7tTJ0 zL`}PX4G_cqH(?%_tLQDm-3q!VCc#6kUvg#av0jDFsQLfH8 zLZ?Wx*la*>M)*Zu_N~bT&pYSbatCZ68pw!~>y;Bh`d7z3wya8}fn=ww% z9o zqr>1BMHAZ{2@}G-0%Lp!DU~KFgH(7fABj5jT{LCxE_}$gej~qx)_A4W&d|&&nH4xQ zVc)8ZjBV6V89Oz#1PbSU7FX6gCMqaqMwK;i|JS`+sp1GLLSPz^qwaB3^{26l;U*OU zW?$ztaymwDX6j_lOWaR3LyO3mk!_YUUM=&G`YU^Yij5GMn$%AG@gp!T~t zOCz`86{Mazd7~J^P{K@Zpqj+HM-<8in{nyK~)_I@pORrX9rYFj78zr=K z89a#LB9S%?>rm@?))%{t#b>`xzSswzwsRJ>EyXK53p}pQO=o-7(7OHU_ZM5vIh@c> zysDx@A_NZ(r{#Rc5pbw~uvz*sgMr^5?P%*~=68jEva;1y`;+#$Mr|SQ$oQ(>6Vgbw zkdVY}zc)eNb+{?^&uD&6zXfE9Exigk6{t*rxf~Z`Rm1Rxoh4VrtV1`5}FtI zC)y${flJ*Of`^$N^%2-G5{+iucW#3u3*uy?JzGmmr3>b7X^_j{Z%C7iOss-|)HOyL z=+VXQ6J~hFtb*$(K?_Ont5EbhW5ux#{4lg&chV4I6US71!cbT>9j4Ip+22Jk5)yX_ z`+>l%T=cB?4mZuGCbM{Dp>Dn3sb4P&2l|;$M)}J9okBou8-O#UMN_ zYXo)U-0;=9?whZ%rqW5)0FAxR5*IE^WOI}5_o-=9A9(M(#lLey6K_q_%a#hQ)m5-0 zu%lcMu!gi;|M_6j4+rxz)IrHKA)ED7 z15-S%hDz}8_uQP_hH;xLUtQ5CRzMJyRW5>Y)cZn!&TolvJOJ_F4|GtsZFDAHZH|?A z^KHEUNK!F*|EFnz4hn)5%+{ax{rmgtR|-VJj_?J8GEUKBBbMMV008_e5p^2x=U&Sl zPZaPl-(OBPG%snS)cULUC49ZDf%)<#5oDlZV0nY9klk{uIy?nElTy73;0Px z$TF4KIlM}jL{*st*Z{GO--fT^_=KIk_dz4*GIgF_WOqi2pqbOO@+Y~9$;Hm-#~S3k zT^lgsEVEm)g@!HeyYfz0NNE+UkPp%1`AsRE<-Cvq1`o**AiC__-RTkL8 zN_)e&!h#T-;`uT9i=N5$nuKhOHmI9vjj^(zW7jA=_kIVxZd&unuW4~y=~W>p(^d(U zXtnf2u$dt4WP9@AYn<;p0}Z6caG@xTNahEPk|&o1^E1dKo|4%O+mMT^zrX9nVVWU0 z2hPSD2{o~G+zu)%-;B{AZ}~je2D3fDS(S(+NSi;yDw~5qDm5zw=G&$RfC=Afib2i% ziEkRJStg-hY zOXNAyN|usVkLTA;7F75xi{| zRpXX<)!vYU-8;%0xZ>3VZw zFXzQB`Nu~<%5#^46zb^zSAX!mvJ7>kOE| z+{K6O1^w=bq%W&Ray4zEIV;k65cgCq<%!prihVX1+%ED$Y0z-E2tgwYwu6W010&)s z6FMX-YGaLgYpBKmb8rC_QlwK(jC6tZ@WJ4fno>dgjMoOn%S^5fXye0VFZSB&VjW~t zwWGk9Wdl-P^I zVujiR^lPN65(Mba~1ng3bDFUli{!LRc3+IJn8%9?F*etaVnyLuGy`y5&S^-NE#cPR?Ae6+2_LFqw z9eK3UEZN(LZyf?CpvrHzajpMbESo47FQej!O7ubF_7XvBd$O&NT18eiJx*mv)4iUs3mU+<$G-HkSDiLpZB@0- zb4*`-(z4^s^w=HT^#cg%!em-K5I2GUJaN2Jnt{-#36CFn+jRIq$xi)65fEy^LzScS zFKhY^H%5OLV3s00A1G^_vb5Wiky|8{F!f?PXjaI2Efi7AiLcH4Kyiv(wrVJ<&cOYo z+$Z_1H8x!+vL&H=&iZFB5cPZ9x zXR3DLF)Ec0flSf+aO)PptGdS$r-Ju^;BBM$f)WuGctvwda>!1cm7p@<=ypfjZ~biqhAXjf{*548r_y8%GSVNF67;kY2qu9ORuLsMb2d7f(vMPq@$r2G zV8;zBLk*>n=(WESJ&(CmR#~-3EuE`8FZ3A89#oIv<@E+zBA#obB$XNQs^J~}d3>;* z33hcTncIWIB|0MRX6`ufDd(PCmy~W5c^%IWNZpTY8J}`$iXOD7cT`)_h#h*d^+(O( zZFmoQJ&3u^ne0=36)A&Pa$JIr{_1`P1q{rK(3h&?A0TwV3TQ+ok75&IrkD6_V5}Mu z(3UrgZ}j)r=Ox$N<NbgT)V3X_PN1&?45pHj%OSlMEqkk*7RtA z{vBm>SOP1$t#VQs0RA^>k&(swju-2y`S>15a4XXQnQ3@z=z(PJ+;BnFn>fS!j%4k0 zy{eNAdWVe|c#GZK={Jc-7!npbD3O#c9oiF!Us>nQ*hCu?5uXv?@!cZMAt?Z>EytL_ z$ixl*o-W0=i;j@HsFEVWRO@u?qGsWun$`!h!RJ7T1gpMJBb|R^9IpkPnT2-e(?=eL z5V1F{lfQn`@uvKFCv0tBCh)u7S{S_!S#1$LtJ}rtA8}!BJ~LaoZaVbSQy#o3mL57* zmZmK^n8FTF6Pj$iHkre*sxChk@+FwPqV898-* zFIMKQ@qtDMES=LUNlJSI%7*?fOTc*t3cu55gW*t&f2)Q9kok#A5HjNyJ4Cgo`*9pv zF<#iNpZRaMqOnz{@Ji8VNda504Wfx{pe|#;1ve@nL?H7Tu4l?6GKE)d=I-+WAeoFK zHgP6^>!G#@XM$~CiqS|MB=Lh7pWVskEbb5Y(69BE#PUIMt zx}FaAF|esEAA>3V+UOIZ_P|kG>KI3Ha*O9ir`>01(@-4r8Nmb0<6I!S7(IH2MA^`d zX;!@ijxgCXYV_hD?+c8xi({YHlSQTMWgRwl+bnENKxI}CEkLtkdk2I3K+VDg( z`I;Sov+V4l3Mr>^v6BvDDhjKO`C(x~z2|if_Dk;{J_O4@Qbaw<$Oa#P2=qd6X}Y)j zT5jYUB@)$Z){~Is8&%uAF61){JSw%Agx&C9>+BtH*G9LQ_YVtWa6#_Z$0e29DG6ee zS<}qC>4+TxC`H}~>^2tSL*Fw7EKk`h%rx_tCxR^zvIyd~lzd=UE9E8JNrJ=4tHgqE zI?@~XikpRf2j3N3m0fP0#*};y9|0Ec#IVg8xIxUqL+-s)Y12Xe+ zbOKN#Vn7M5+55aP8QX)J$P<&$Hre7 zC04G<>(v*6OPq>XQVFNh=Y?09z|?@PEa|f`Qg{uat2{L#e~bsM@gP#e-Pl*JDx63B z?-T2Nzn&f$fDu|`u1=Sn>!dZf1cIJ2x9luB=zThL0?Aa1M{(RM+Z$6*0+%SG=mcW7 zMl@$9ZUGY%lnkW{{5w4d6mf2tztD=OB@-rhN;Rj}dsfEVyMla95Qa1r(O~^q z$kettUd@B(j2r?u&Y!m`5$}^Aswzb(_yMx#=8uyNpm3fh7ha}dY=n!>-vGF4-%*R_Y|kTJn*$5t;tzGNwK z>c;sHN{kx>s2hI})V|^o!%)G}v0xbmU$CKNvGTqiD zy=`@T#%!NqGiJ67vgww;7OUUp1rp;`3#!Ns%|XEq&0kh!=FZ~01hWhX`U^$xLa8`( zE!Vnh+OoSQtL>+m80Y|VsBiNl)K-oOkaQN0JBiukH?AYSJZ3`J3!OjEJr=b=dfLww zFAFg*0TkVCEM7Dyt&%X1Fu{SGD8h9y3AvSKX!!{!C;u4##E7T_3@d^X-5r|!a4v4- z7=JTIAfBOH?;8aS*i?rL^QvW5&c~5k_&fJ7o1SmDR72t2I&c14+lBUsQY?fLpjx|W zDD{v4Ak7EK0y;I%R3#YSdgMo)IIc-Zx0<@=p&@h~czF?U$Fb)G$(EHYuGYhJm=;wG zW9;|ZiTUj|N+B(F+-l{(1K;15pyFf`lU|vcUgfifD*E|eW+~k zvKLW2(PTGll|uN=5R5?1FBA6<3~3l2pvXQxZc~&@Pm$}G7f7+;^1ZuINks5)H{^yJ zRl(5O9a68`Y4^v+6jA-f6$BhrN!$I`EZ88|IRV1V5O~KYs2h+J<;y}=BfW23f;UTTGwKy&*EN^Z!o|Cb-(aVb!!$V;4g-Am6W+8puCzwq5q zUxFaL+hI^YapU1n(!j1cKqUKI^pXe{uGm2biI*1c8Td@XO#vQh`BMdovsXhMT}Su2 zkwKhILw3h2*seNffEYlB2oU!?!_v4PMkf(@Th-Q&yRlmtQjTXJ)uG}-oeF)_6CVLC z0!{9tZ!kmY_UtAYnQ|8Xl`~H1=?ZWG}<$R$IY+QM>+% z^blDN6-&Cbk?;w)x%jGCjYi}r9lE3$=DbvXJGQtaIfn#@4?9a;ui3}*O+jcHpnr(e z@+pDjmn2xzjUMe414(3V6OJu7>JzO<6;LdL!KqN8z>-@zFz@<0G&k`HQhkCJiw;V* z%U__}mcoK8=Y{0puUK*_yx)-9hIbfstI*2XtR*yTF|s!)g(M76DUWyUrrFtEf2HqXyuUl6zk?bo0da1AAmOX z0WOjdwL(ot9NT`No-`PAMvh27;Df;dA@M_!I+MZGd7&SgG zoQ;SSKzfT?{(*+6=&CF=VThpGE@-WqYXy4dYs9OBexDpxqI>Jsfy{xpej2h zl+Ez)X@ZC)ecV8%gs$AvtJ&Xy_P-fN%dP*OZ<_D6TnCNLiQhc&P$_I zhzUF>`L!~Py0<%V;-RU*qa?)qX$_~&MiuRR79d!f#Nt5pUtiO0jZ#a>dv8B^jJ8G+ z;8lwZK3oM=Rn3c+DWdir5^bCWF98;FxQ{I>n)jh4HWF>xxJkBceI#UWSqune=<=ik zf>m)}lZXdH$pu3XWQ&wiI;OaJ8eqi!uQc91`RkYnF@gZMRc%S|XQCvFb54Z(2I|LY zyg;%!bv3|0$_?DqW^9?8yI7T2VDJpPZ;vCM(^c+WiQ!R4VK^R~O@3Sh1k+juXOuG3 z!h6y-1?zhh_dz>~hCND(TkgGG5jQ>!hihqYUlM`Adu|Q|3w0b(FmE~}0b@Vvq^*0q zG+z{Xyq67S(^yI+)0Gk(i)tQ|4`7^}fX@ILhs3JEDF zw_*_qf^qcwy}{s?`#jSHZO_wqb9~#(bE~-jL_8<7eYI2j6BFR15g8?%nQN~nwHciB zJXOHux2(;UJ5YD6e=$>+{n8aD9QBFjbpKatl!HN*|zXoUxE#ntKo;K(gzV zuxcY>KwCF6M5`NpM)Go}8{cD7+y#h5EJ@E;7|zrmY`Y{`w0@btCDse@QpGOMMpG#Wytq%sVxnECOH`bT; zR{MPdU2|R?Q1^~KjC*tA{Z~q&a=?rmJvv`D(e@KCsZt(<(zr6p#tFIIDy$ie>rQk4 zfOZ(j)W3jkZuw;nasT48KM!@~Y%e+fsWUme`G_GO3jBBe^DE}eStBwe$w-V?L#>3K zT7|Cq6=S<)cvh7YyL=(QDg6 zY#WX<0rY6=Y}|}{ep&QnnAJFK;9e*|FEnvD8ya;$JC&g6?P;`0v$^j$XTi*Lku@v0 z7vM<-=%;AGyh{pT1nuS84TVQPnLjr=(O17+Dl{Dhsf>5wwKhJ3}55oOK2o*)`NI%G6z32{iF{*V+ zHfw6h$~}!Ky#+|AK;T_5Uq>q~jq(w}>s`sIvYJd+)6=qKe}6vs5Zbq>!Bd;Ak_a;~ zRwmF+#*s-A$VC2gN`$!31F{#MIf9PfcC8WV@|N&wB=w7p%OlhoEB!*-!Wv54sIFdfs07O z;JvFO{CP7#1zx--yIT^`=t;?Jmyl4De6G<`STCq&9;h;{lP!He$zHTwzb|z~2bk2Dk zb^|l>12%8#a64}Ky#>TAo0P*>aV5Y53n&bXU9!|lYGOp44Jr zMorU6dE4*B`)}XQ1+7GqlDpS=(x6=7P#blDDDJ;4!?vTs{^C5?f>y?lhAKfSiRl0a zT_#89>u4m2T%S>eNyRBM1~TJ1%V6A-&pktoGQipOr0jNha+YOK-h6C4Z7_2gooHR+ z!rejSE3a?zB8ich?l+BGIR&>{ph%-o?qI>erT3aDit~vGM}gQp4lJZybJfw! zvv&h<6Aj(h2Rw@NRpHSzuNUsB3gOpB?&dZ3u<{Z5ylXi>+PX_N!>!nm6#cb3D+Oy^ zveWUqf)n3SMV>;g_)GAzFi4_Q_^a5ftC!Q})}`paOk%#InXvaTcud_La_*xdrUfxLMmo7}O+ppB0`(X$@Nnc57&+ zwSi<>u}+e-OH}b3=F>(f6(2U?Mjv0Hg9xjxB9UI+U9x|-t9MeGfiRyRz(ZXeWC~S5 z2QW!Km|QN0Qc6{_&$$NxjBSYP+>eb?x4znm{qO!??sM=mb$XwwOjqJWv_}JR{4<`Q z$%yRj*r%qU;#{Fc?5Av`a~?D*uii-ML^)1H&sh^>7YSIbURoN%E-#n6@~$| z3oBawk<;n$BNF=B8VnQgH@FqMwdmEHr`$Us z=JE+Sxu>=r^=e3-&IkRs1J>7Bom$ukrzn3X7^ zr|<^6R-DxddaFz#DRF#5*+FA+SjhVuqgIPGXZa4W$iZqxmGCf7;{)>6LLnMQ=V97L z)Hi;A=q%sjx$Q2k!i`Hov%(-}BrlS^l6EC}n%DfBB>wY=-B{B3gT5JN`Bb8sE&ys$ z@|K0-41^`xQe$N5y)B`vlrM(dL}v1Q-YVH*;tS}QC3#h(z`18ROGJW7-+!OV4bs8$ z->Ee8CNkjTaG@=Dj14ueni-n!VD?TOvBCtDeTGFwclDK@Z@6Oge(tSMBx6UaF_6x%+^yv@1~Epu z5CSotV8wRjN0ORmfT+Fj=z?Z#g>{k4WQt`-C{A~h2=HaM--V!yaK6QMrmDo7Eus4r z_$&QOYDDO|u5;))-CYY6%yP(>F2>;fY!!ioX`7G46%D#6$pnAhE-KfZBf(J%3#V6S zv`2(HEJYJGlz)Z8j-2>9c*>o{iTr+k)DJ(0uJG4pxr;qWXQSx#=wvYLexBf}gyP)~ zzRS)hR&OsC)owc@Y5MhGZ|@zoZ^VgsI9`kxJtfs5%|QjnK4Ak|xfh0?1o^bR?%i78 z(kL+sDvVj1po*pE(au-~-b;|0XY-z?$`$*s$+|`9rAl2#0Z4XW=lZ?-^O>8QPV1x_ z43=!LLPl^(i-D}#0CRld?tjhJ;GBi*aH|wg!)}%7CkweiXZxcAw?%DmZNK zMkB}$#^5rTs0#GDlK{Q$yZjwj3c{?EnLtmy>_~{}S~%OYib!3)YJwUn#QN8lj}ESz z+{+01$t@r9kJI+2-D{5no1w0+jsjn$NqH2_+QcLB_3TI;7|^jGW>d++G?hz`^*Y^zm#xwFR1Z&*46wNW7ihY4H%_20X9*32Cg zAo!YCXS=(5@I{qUityWrhzQakrum3#_2zQju-ueo_RnDs=o9g~bQOv#+JB`g`Mi6t zK+i@i<2DvRTSgQ#P(;qAE$M^fr`AF@X=&rjn5ww=57hQT-PE8n)+VfZK0*I}9n*53 zziNj3(3N2O$YEF8X%;aj%vBGWyt>lJw4_Q literal 0 HcmV?d00001 diff --git a/src/club/static/club/payu/payu.png b/src/club/static/club/payu/payu.png new file mode 100644 index 0000000000000000000000000000000000000000..c1bd5c2fe181b04c2d0da8fc7fd5565aba50ed28 GIT binary patch literal 22326 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 literal 0 HcmV?d00001 diff --git a/src/club/templates/club/membership_form.html b/src/club/templates/club/membership_form.html index db2a8ed24..3a9a00620 100644 --- a/src/club/templates/club/membership_form.html +++ b/src/club/templates/club/membership_form.html @@ -5,15 +5,78 @@ {% block body %} + + + +

{% if membership %}Odnów swoje członkostwo w Towarzystwie Wolnych Lektur{% else %}Dołącz do Towarzystwa Wolnych Lektur{% endif %}

-
+ {% csrf_token %} - {{ form.as_p }} - +

Składka

+ +
    + {% for e in form.non_field_errors %} +
  • {{ e }}
  • + {% endfor %} + {% for e in form.plan.errors %} +
  • {{ e }}
  • + {% endfor %} + {% for e in form.amount.errors %} +
  • {{ e }}
  • + {% endfor %} +
+ + {% for plan in form.plans %} + +
+ + +
+ + {% endfor %} + +

Metoda płatności

+ +
    + {% for e in form.method.errors %} +
  • {{ e }}
  • + {% endfor %} +
+ + {% for payment_method in form.payment_methods %} +
+ + +
+ {% endfor %} + +

+ {{ form.email.label }}: + {{ form.email }}

+
diff --git a/src/club/templates/club/payment/paypal-re.html b/src/club/templates/club/payment/paypal-re.html deleted file mode 100644 index 42563e809..000000000 --- a/src/club/templates/club/payment/paypal-re.html +++ /dev/null @@ -1,2 +0,0 @@ -PayPal - diff --git a/src/club/templates/club/payment/paypal.html b/src/club/templates/club/payment/paypal.html new file mode 100644 index 000000000..befd9f2c1 --- /dev/null +++ b/src/club/templates/club/payment/paypal.html @@ -0,0 +1,3 @@ +{% load staticfiles %} + + diff --git a/src/club/templates/club/payment/payu-re.html b/src/club/templates/club/payment/payu-re.html index 28b693635..712b27c2e 100644 --- a/src/club/templates/club/payment/payu-re.html +++ b/src/club/templates/club/payment/payu-re.html @@ -1 +1,5 @@ -Kartą +{% load staticfiles %} + +karta +⟳ płatność cykliczna + diff --git a/src/club/templates/club/payment/payu.html b/src/club/templates/club/payment/payu.html index 6da90e30f..7979115a4 100644 --- a/src/club/templates/club/payment/payu.html +++ b/src/club/templates/club/payment/payu.html @@ -1 +1,5 @@ -Czekolada / karta płatnicza +{% load staticfiles %} + + +karta +przelew diff --git a/src/club/views.py b/src/club/views.py index 9816b4b99..93afaddb9 100644 --- a/src/club/views.py +++ b/src/club/views.py @@ -38,9 +38,11 @@ class JoinView(CreateView): kwargs['request'] = self.request return kwargs - def get_context_data(self, form=None): - c = super(JoinView, self).get_context_data() + def get_context_data(self, **kwargs): + c = super(JoinView, self).get_context_data(**kwargs) c['membership'] = getattr(self.request.user, 'membership', None) + #if hasattr(form, 'errors'): + # print(form.errors) return c def get_initial(self): diff --git a/src/wolnelektury/settings/static.py b/src/wolnelektury/settings/static.py index f6411ccc5..0d599f2fc 100644 --- a/src/wolnelektury/settings/static.py +++ b/src/wolnelektury/settings/static.py @@ -108,6 +108,7 @@ PIPELINE = { 'player/openplayer.js', 'js/search.js', 'funding/funding.js', + 'club/form.js', 'js/annoy.js', ), diff --git a/src/wolnelektury/static/scss/main/form.scss b/src/wolnelektury/static/scss/main/form.scss index d3c763838..ef15365e3 100755 --- a/src/wolnelektury/static/scss/main/form.scss +++ b/src/wolnelektury/static/scss/main/form.scss @@ -29,3 +29,64 @@ form table { padding-left: 0; } } + +.wlform { + .errorlist { + color: red; + margin: 0; + padding: 0; + list-style: none; + } + + h2 { + margin-top: 1.5em; + } + + input[type=number] { + height: 1.3em; + } + input[type=radio] { + margin-right: 1em; + } + + .submit { + background: #018189; + color: white; + border: 0; + border-radius: 10px; + padding: 1em 2em; + font-size: 1.2em; + } +} + +.wlform { + .payment-method { + input { + height: 50px; + vertical-align: middle; + } + + img { + vertical-align: middle; + margin-right: 1em; + } + label { + margin: .5em 0; + vertical-align: middle; + } + + + .method { + // border: 1px solid black; + border-radius: 10px; + line-height: 48px; + display: inline-block; + vertical-align: middle; + padding: 0 1em; + margin-right: 1em; + font-size: 1.25em; + background: #01818980; + color: white; + } + } +} -- 2.20.1