From dac9a35e0d86c0ec50f33d69d73be5d7ae7ae7ef Mon Sep 17 00:00:00 2001 From: Radek Czajka Date: Thu, 25 Apr 2013 13:08:36 +0200 Subject: [PATCH] Different handling of current payment view, add share icons, set email for payment broker, getpaid-1.4, reqs fix. --- apps/funding/admin.py | 0 apps/funding/forms.py | 2 +- apps/funding/locale/pl/LC_MESSAGES/django.mo | Bin 6637 -> 6764 bytes apps/funding/locale/pl/LC_MESSAGES/django.po | 105 +++++++++-------- apps/funding/models.py | 13 ++- apps/funding/static/funding/funding.css | 2 +- apps/funding/static/funding/funding.scss | 36 +++--- .../templates/funding/offer_detail.html | 17 ++- .../funding/templates/funding/offer_list.html | 3 +- .../templates/funding/tags/funding.html | 8 +- .../templates/funding/tags/offer_status.html | 8 +- .../funding/tags/offer_status_more.html | 8 +- apps/funding/templates/funding/thanks.html | 11 +- apps/funding/templates/funding/wlfund.html | 13 ++- apps/funding/templatetags/funding_tags.py | 1 + apps/funding/urls.py | 6 +- apps/funding/views.py | 39 ++++--- .../static/img/social/bigfacebook.png | Bin 0 -> 454 bytes .../static/img/social/biggoogle.png | Bin 0 -> 489 bytes .../static/img/social/bignk.png | Bin 0 -> 1857 bytes .../static/img/social/bigtwitter.png | Bin 0 -> 397 bytes requirements.txt | 2 +- ...ernal_id__add_field_payment_description.py | 106 ++++++++++++++++++ wolnelektury/settings/__init__.py | 2 - 24 files changed, 273 insertions(+), 109 deletions(-) mode change 100755 => 100644 apps/funding/admin.py mode change 100755 => 100644 apps/funding/forms.py mode change 100755 => 100644 apps/funding/urls.py create mode 100644 apps/wolnelektury_core/static/img/social/bigfacebook.png create mode 100644 apps/wolnelektury_core/static/img/social/biggoogle.png create mode 100644 apps/wolnelektury_core/static/img/social/bignk.png create mode 100644 apps/wolnelektury_core/static/img/social/bigtwitter.png create mode 100644 wolnelektury/migrations/getpaid/0002_auto__add_field_payment_external_id__add_field_payment_description.py diff --git a/apps/funding/admin.py b/apps/funding/admin.py old mode 100755 new mode 100644 diff --git a/apps/funding/forms.py b/apps/funding/forms.py old mode 100755 new mode 100644 index bc66e5d42..6eba5175b --- a/apps/funding/forms.py +++ b/apps/funding/forms.py @@ -15,7 +15,7 @@ class FundingForm(forms.Form): "If we need any data for your perks, we'll get to you by e-mail anyway.")) email = forms.EmailField(label=_("Contact e-mail"), help_text=_("Won't be publicised.
" - "We'll use it to contact you about your perks and fundraiser status updates.
" + "We'll use it to contact you about your perks and fundraiser status and payment updates.
" "Leave empty if you prefer not to be contacted by us."), required=False) def __init__(self, offer, *args, **kwargs): diff --git a/apps/funding/locale/pl/LC_MESSAGES/django.mo b/apps/funding/locale/pl/LC_MESSAGES/django.mo index 866363abeeef8d3f3796bdc61aeb2633d1ba2281..15d8b9838afdae30b478b233c0e9ca32845ad44e 100644 GIT binary patch delta 1779 zcmZA1e`r-@9LMqJ+@|h_&E4yr+qBJd*P6d-bG!3rb7oB!+cHZ@upe~WPIYGYhu4kk z)OKNrAncFmYG{QK%|Ap@^wJ+u2BD)cY+w<^)$V}{a2+(+yP7!$*>A}*AQ*~ZMnAo6D-TuN{$?!i`^gX36^XK_A$ zj2dFn-v0(0Xy3$oba<%Rn5=1_GDXJ*+=h{2V@ffNOYn8n1E){}eu3xk8qURotVRRF6|Tc6T!6JqGLQL98Wn$k1jt-ob;&+cWVn`PVz$$5VRnZ7wo`+j&?WFWqj1D7(qRM*xo;h%HSnz#H-kg)3^dVvTUQ9$^a@8 zAKLaOc$M}XM%#kdaXHrT%>>wSC+b~x)y((=Y606(nR^!X6}*TVH)YKr$HI)D{y#fr zD@U#G;$m)$qjq=&HPIC6Rou4zhT7R*sDX+}lkQib7Eps)K%H$jp$>NxITmIEvaqb_ zrJ_`CM@{rHvcbZqwF=e8X73hdW6j+b15xMo7Ya!;j}ZDHQ_)6Lv``hD31veWSVDyL z{r|VDrJ?uSVLSExHxkW6o9%nRTG%ahEncOGc$Cn=Y9aJ~dCi5glIz2STWHN(l%*2Q zuM@hCAd`jD4Q3;u^r9G=_I0riqgKB(78}qM(B5A6QQp~MTb#Ezaw3R+RTC0 zFY1Ftcx5as8X*W0k3_n#K+;%rp+s4*knsK8P7^2hKc92XojK>sf6h!-@z+_&Pm#29 zMyVu55=%p7ajZ+@K>6O+EEBu2A37Y;F^u~#g8lJ04#v|M#Y?Cm?gane$9&ptI2JoF z*DPsiT>Y7jJY0uP*sKUQpiWGn2D*&5@hT3)^{he@R%15qMlJMMpodwsTX8Nv2>O3u z4((8eSqAf4j7o%#0vv&JQh%6j!ZEbBp%!)oOYt3U!1MuTB*nJk4BU<_cow%{F{_+~ z&3FNyAUADQgL>S7>CA7tsBn!Pz&>~cHSmd`eG0j0YeuE|e9*oUv~Qp?a1V9I&ruos zfEuR*HE}0uoNvMZzc8s2{!o!2@~PB@Q3GV7`eUd8+@M{AnrI5@yb65mm@P+TGJQzT zbt6&Njm0LM5VTuyDD9g=$iFUVqeBC|MXj(M$KglJLx;16;b_cZqEf7;y_Spf@fOa+ zcgQ8ymmT;WhapeP`mK;R%VfZuCX{BG2D*}uo*|;E97TiI4JeXvn~vy z{&!IsE5|}ygKMx6C*dPpg31%y6C|Cdr4^9Vg+m6+atZJ;THHjs)oo{F-eqMfQTnOH<< zLro(l5ZW6mQ;E5RQrcUTC1qqfF`M9tq`og;3khXU^QY2Ph)PohF@w;DLup?^j3;`F zz7yqycC!lGCsp*_s0`|4*jz&UX)zHZ^vty(=MehLr^@2GIzOvlb;v&)zV7%7GJZLJ z`M|rOwCVFoW_mvd=cg+Eh|GH-@Ac3sZ&IYt-P@3;*%eP5*jcl?$!&PzAKX)0^Q_I? zTc4G_M_49A%A0brxUF|7~fMHcN=S;UT_ocruywqPk8fl%ABd*!)VOA Umh;{_oV(h4nY+S|4Bz7X1A=Izr~m)} diff --git a/apps/funding/locale/pl/LC_MESSAGES/django.po b/apps/funding/locale/pl/LC_MESSAGES/django.po index 86dc282b6..2f7c0c56b 100644 --- a/apps/funding/locale/pl/LC_MESSAGES/django.po +++ b/apps/funding/locale/pl/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-25 10:52+0200\n" -"PO-Revision-Date: 2013-04-25 10:52+0100\n" +"POT-Creation-Date: 2013-04-25 13:01+0200\n" +"PO-Revision-Date: 2013-04-25 13:03+0100\n" "Last-Translator: Radek Czajka \n" "Language-Team: LANGUAGE \n" "Language: \n" @@ -18,7 +18,7 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" #: forms.py:10 -#: templates/funding/wlfund.html:25 +#: templates/funding/wlfund.html:28 msgid "Amount" msgstr "Kwota" @@ -35,8 +35,8 @@ msgid "Contact e-mail" msgstr "E-mail kontaktowy" #: forms.py:17 -msgid "Won't be publicised.
We'll use it to contact you about your perks and fundraiser status updates.
Leave empty if you prefer not to be contacted by us." -msgstr "Nie będzie publikowany.
Użyjemy go do kontaktowania się z Tobą w sprawie prezentów i informacji o zmianach statusu zbiórki.
Zostaw puste, jeśli nie chcesz abyśmy się z Tobą kontaktowali." +msgid "Won't be publicised.
We'll use it to contact you about your perks and fundraiser status and payment updates.
Leave empty if you prefer not to be contacted by us." +msgstr "Nie będzie publikowany.
Użyjemy go do kontaktu w sprawie prezentów i informacji o zmianach statusu zbiórki i płatności.
Nie wypełniaj, jeśli nie chcesz abyśmy się z Tobą kontaktowali." #: models.py:15 msgid "author" @@ -51,7 +51,7 @@ msgid "slug" msgstr "slug" #: models.py:18 -#: models.py:100 +#: models.py:106 msgid "description" msgstr "opis" @@ -84,8 +84,8 @@ msgid "Published book." msgstr "Opublikowana książka." #: models.py:29 -#: models.py:97 -#: models.py:118 +#: models.py:103 +#: models.py:124 msgid "offer" msgstr "zbiórka" @@ -93,58 +93,58 @@ msgstr "zbiórka" msgid "offers" msgstr "zbiórki" -#: models.py:98 +#: models.py:104 msgid "price" msgstr "cena" -#: models.py:99 -#: models.py:119 +#: models.py:105 +#: models.py:125 msgid "name" msgstr "nazwa" -#: models.py:101 +#: models.py:107 msgid "end date" msgstr "data końcowa" -#: models.py:104 +#: models.py:110 msgid "perk" msgstr "prezent" -#: models.py:105 -#: models.py:123 +#: models.py:111 +#: models.py:129 msgid "perks" msgstr "prezenty" -#: models.py:120 +#: models.py:126 msgid "email" msgstr "e-mail" -#: models.py:121 -#: models.py:150 +#: models.py:127 +#: models.py:156 msgid "amount" msgstr "kwota" -#: models.py:122 +#: models.py:128 msgid "payed at" msgstr "data wpłaty" -#: models.py:133 +#: models.py:139 msgid "funding" msgstr "wpłata" -#: models.py:134 +#: models.py:140 msgid "fundings" msgstr "wpłaty" -#: models.py:151 +#: models.py:157 msgid "when" msgstr "kiedy" -#: models.py:154 +#: models.py:160 msgid "money spent on a book" msgstr "pieniądze wydane na książkę" -#: models.py:155 +#: models.py:161 msgid "money spent on books" msgstr "pieniądze wydane na książki" @@ -158,27 +158,42 @@ msgid "You're support has not been processed successfully." msgstr "Twoje wsparcie nie zostało zaksięgowane." #: templates/funding/no_thanks.html:17 -#: templates/funding/thanks.html:29 +#: templates/funding/thanks.html:31 msgid "Go back to the current fundraiser." msgstr "Wróć do aktualnej zbiórki." -#: templates/funding/offer_detail.html:24 +#: templates/funding/offer_detail.html:25 +#: templates/funding/thanks.html:28 +#: templates/funding/wlfund.html:17 +msgid "Learn more" +msgstr "Dowiedz się więcej" + +#: templates/funding/offer_detail.html:31 msgid "Support the publication" msgstr "Wesprzyj publikację" -#: templates/funding/offer_detail.html:29 +#: templates/funding/offer_detail.html:38 msgid "Donate!" msgstr "Wpłać!" -#: templates/funding/offer_detail.html:35 +#: templates/funding/offer_detail.html:46 +#: templates/funding/thanks.html:34 +msgid "Tell your friends!" +msgstr "Powiedz swoim znajomym!" + +#: templates/funding/offer_detail.html:47 +msgid "Support Wolne Lektury!" +msgstr "Wesprzyj Wolne Lektury!" + +#: templates/funding/offer_detail.html:50 msgid "See all fundraisers." msgstr "Zobacz wszystkie zbiórki." -#: templates/funding/offer_detail.html:40 +#: templates/funding/offer_detail.html:55 msgid "Supporters" msgstr "Wpłaty" -#: templates/funding/offer_detail.html:54 +#: templates/funding/offer_detail.html:69 msgid "Anonymous" msgstr "Anonim" @@ -192,7 +207,7 @@ msgid "Current fundraiser:" msgstr "Aktualna zbiórka:" #: templates/funding/offer_list.html:22 -#: templates/funding/offer_list.html:38 +#: templates/funding/offer_list.html:37 msgid "Previous fundraisers:" msgstr "Poprzednie zbiórki:" @@ -225,13 +240,9 @@ msgid "" " donation will be spent on publishing\n" " the book %(b)s if the full amount is raised by %(end)s.\n" " The book will then be published by %(due)s." -msgstr "Pieniądze przez Ciebie wpłacone zostaną przekazane napublikację książki %(b)s, jeśli do %(end)s uda nam się zebrać pełnąkwotę potrzebną na digitalizację, redakcję techniczną i literacką.Książka zostanie wówczas opublikowana do %(due)s." - -#: templates/funding/thanks.html:32 -msgid "Tell your friends!" -msgstr "Powiedz swoim znajomym!" +msgstr "Pieniądze przez Ciebie wpłacone zostaną przekazane na publikację książki %(b)s, jeśli do %(end)s uda nam się zebrać pełną kwotę potrzebną na digitalizację, redakcję techniczną i literacką. Książka zostanie wówczas opublikowana do %(due)s." -#: templates/funding/thanks.html:34 +#: templates/funding/thanks.html:35 msgid "I support Wolne Lektury." msgstr "Wspieram Wolne Lektury" @@ -248,29 +259,29 @@ msgid "" "the funds are spent on other books waiting for\n" "publication. The same thing happens with any money remaining\n" "from successful fundraisers." -msgstr "Jeśli nie udało się zebrać pełnej kwoty potrzebnej do opublikowaniaksiążki, środki przekazujemy na redakcję innych utworów oczekujących napublikację w serwisie. Na ten celprzekazujemy również pozostałe środki ze zbiórek ukończonych sukcesem." +msgstr "Jeśli nie udało się zebrać pełnej kwoty potrzebnej do opublikowania książki, środki przekazujemy na redakcję innych utworów oczekujących na publikację w serwisie. Na ten cel przekazujemy również nadmiarowe środki ze zbiórek ukończonych sukcesem." -#: templates/funding/wlfund.html:16 +#: templates/funding/wlfund.html:19 msgid "Spending these remaining funds is recorded in this table." msgstr "W poniższej tabeli rejetrujemy wydatkowanie tych środków." -#: templates/funding/wlfund.html:23 +#: templates/funding/wlfund.html:26 msgid "Date" msgstr "Data" -#: templates/funding/wlfund.html:24 +#: templates/funding/wlfund.html:27 msgid "Title" msgstr "Tytuł" -#: templates/funding/wlfund.html:26 +#: templates/funding/wlfund.html:29 msgid "Balance" msgstr "Bilans" -#: templates/funding/wlfund.html:33 +#: templates/funding/wlfund.html:36 msgid "Money spent on publishing the book" msgstr "Pieniądze przeznaczone na opublikowanie książki" -#: templates/funding/wlfund.html:42 +#: templates/funding/wlfund.html:45 msgid "Money remaining from the fundraiser for" msgstr "Pieniądze pozostałe ze zbiórki na" @@ -285,15 +296,15 @@ msgstr "Wszelkie pozostałe środki przeznaczymy na i msgid "Support a book!" msgstr "Wesprzyj kolejną publikację!" -#: templates/funding/tags/funding.html:21 +#: templates/funding/tags/funding.html:20 msgid "collected" msgstr "zebrane" -#: templates/funding/tags/funding.html:24 +#: templates/funding/tags/funding.html:23 msgid "missing" msgstr "brakuje" -#: templates/funding/tags/funding.html:27 +#: templates/funding/tags/funding.html:26 msgid "until fundraiser end" msgstr "do końca zbiórki" diff --git a/apps/funding/models.py b/apps/funding/models.py index de90226f3..d193b41c4 100644 --- a/apps/funding/models.py +++ b/apps/funding/models.py @@ -60,11 +60,17 @@ class Offer(models.Model): except IndexError: return None + @classmethod + def past(cls): + """ QuerySet for all current and past fundraisers. """ + today = date.today() + return cls.objects.filter(end__lt=today) + @classmethod def public(cls): """ QuerySet for all current and past fundraisers. """ today = date.today() - return cls.objects.filter(start__lte=today) + return cls.objects.filter(start__lte=today) def get_perks(self, amount=None): """ Finds all the perks for the offer. @@ -166,6 +172,11 @@ def new_payment_query_listener(sender, order=None, payment=None, **kwargs): getpaid.signals.new_payment_query.connect(new_payment_query_listener) +def user_data_query_listener(sender, order, user_data, **kwargs): + """ Set user data for payment. """ + user_data['email'] = order.email +getpaid.signals.user_data_query.connect(user_data_query_listener) + def payment_status_changed_listener(sender, instance, old_status, new_status, **kwargs): """ React to status changes from getpaid. """ if old_status != 'paid' and new_status == 'paid': diff --git a/apps/funding/static/funding/funding.css b/apps/funding/static/funding/funding.css index 9b458a2db..56cac3f73 100755 --- a/apps/funding/static/funding/funding.css +++ b/apps/funding/static/funding/funding.css @@ -1 +1 @@ -.funding{background:orange}.funding a.call{font-size:1.5em;height:1.2em;width:13em;position:relative;padding:.35em .5em;margin:.5em;display:inline-block;vertical-align:top;box-shadow:.2em .2em .3em #888;text-align:center;background:#fff;color:#4E56C8}.funding a.call:hover{box-shadow:none;top:.1em;left:.1em}.funding .description{display:inline-block;padding-left:.6em}.funding strong{font-size:1.5em;padding:.2em .2em 0;display:block}.funding strong a{color:#000}.funding .progress{width:95.7em;margin:.1em .3em .4em;border-radius:2em;background-image:url(/static/img/progress-pixel.png);background-repeat:repeat-y;background-color:rgba(236, 109, 0, .5);box-shadow:.1em .1em .1em #888}.funding .progress .piece{font-size:1.3em;padding:.3em .5em}.funding .with-button .progress{width:73em}.wlfund{width:100%;border-collapse:collapse}.wlfund td{padding:0 0 1em 0;text-align:center}.wlfund td:last-child{text-align:right}.wlfund td div{padding:1em;box-shadow:0 2px 0 #DDD}.wlfund .funding-plus td div{background:rgba(13, 126, 133, .2)}.wlfund .funding-minus td div{background:#fff}button.honking{background:#018189;font-size:1.5em;padding:.5em;color:#fff;border:0;box-shadow:.2em .2em .3em #888;position:relative}button.honking:hover{box-shadow:none;top:.1em;left:.1em} \ No newline at end of file +.funding{background:orange}.funding a.call{height:1.2em;width:13em;padding:.35em .5em;margin:.5em;display:inline-block;vertical-align:top;text-align:center;background:rgb(.465%, 59.936%, 63.653%)}.funding .description{display:inline-block;padding-left:.6em}.funding .description a{display:block;color:#000}.funding strong{font-size:1.5em;padding:.2em .2em 0;display:block}.funding .progress{width:95.7em;margin:.1em .3em .4em;border-radius:2em;background-image:url(/static/img/progress-pixel.png);background-repeat:repeat-y;background-color:rgba(236, 109, 0, .5);box-shadow:.1em .1em .1em #888}.funding .progress .piece{font-size:1.3em;padding:.3em .5em}.funding .with-button .progress{width:73em}.wlfund{width:100%;border-collapse:collapse}.wlfund td{padding:0 0 1em 0;text-align:center}.wlfund td:last-child{text-align:right}.wlfund td div{padding:1em;box-shadow:0 2px 0 #DDD}.wlfund .funding-plus td div{background:rgba(13, 126, 133, .2)}.wlfund .funding-minus td div{background:#fff}.honking{background:#018189;font-size:1.5em;padding:.5em;color:#fff;border:0;box-shadow:.2em .2em .3em #888;position:relative}.honking:hover{box-shadow:none;top:.1em;left:.1em}.share a{margin-right:1.5em}.share a img{vertical-align:middle} \ No newline at end of file diff --git a/apps/funding/static/funding/funding.scss b/apps/funding/static/funding/funding.scss index 44109ee9c..ef766f506 100755 --- a/apps/funding/static/funding/funding.scss +++ b/apps/funding/static/funding/funding.scss @@ -2,35 +2,28 @@ background: orange; a.call { - font-size: 1.5em; height: 1.2em; width: 13em; - position: relative; padding: .35em .5em; margin: .5em; display: inline-block; vertical-align: top; - box-shadow: 0.2em 0.2em 0.3em #888888; text-align: center; - background: white; - color: #4E56C8; - } - a.call:hover { - box-shadow: none; - top: .1em; - left: .1em; + + background: lighten(#018189, .05); } .description { display: inline-block; padding-left: .6em; + a { + display: block; + color: black; + } } strong { font-size: 1.5em; padding: .2em .2em 0; display: block; - a { - color: black; - } } .progress { .piece { @@ -82,7 +75,7 @@ -button.honking { +.honking { background: #018189; font-size: 1.5em; padding: .5em; @@ -91,9 +84,20 @@ button.honking { box-shadow: 0.2em 0.2em 0.3em #888888; position: relative; } -button.honking:hover { +.honking:hover { box-shadow: none; top: .1em; left: .1em; - +} + + + +.share { + a { + margin-right: 1.5em; + + img { + vertical-align: middle; + } + } } diff --git a/apps/funding/templates/funding/offer_detail.html b/apps/funding/templates/funding/offer_detail.html index f3484ed16..da50f13a7 100755 --- a/apps/funding/templates/funding/offer_detail.html +++ b/apps/funding/templates/funding/offer_detail.html @@ -3,10 +3,13 @@ {% load i18n %} {% load funding_tags %} {% load pagination_tags %} +{% load fnp_share %} {% block titleextra %}{{ object }}{% endblock %} +{% block metadescription %}Wesprzyj kolejną publikację Wolnych Lektur!{% endblock %} + {% block body %} @@ -16,8 +19,12 @@ {% funding object %}
+
{% offer_status object %} {% offer_status_more object %} +

{% trans "Learn more" %}.

+
+ {% if object.is_current %}
@@ -26,10 +33,18 @@ {% csrf_token %} {{ form.as_table }} - +
+ +
+ + {% url 'funding_current' object.slug as current %} +

{% trans "Tell your friends!" %}

+ {% endif %}

{% trans "See all fundraisers." %}

diff --git a/apps/funding/templates/funding/offer_list.html b/apps/funding/templates/funding/offer_list.html index f9b9d54fc..ffb6af000 100755 --- a/apps/funding/templates/funding/offer_list.html +++ b/apps/funding/templates/funding/offer_list.html @@ -22,7 +22,7 @@

{% trans "Previous fundraisers:" %}

{% endif %} -
+
{% offer_status offer %}
@@ -33,7 +33,6 @@ {% offer_status_more offer %}
-
{% if is_current and not forloop.is_last %}

{% trans "Previous fundraisers:" %}

{% endif %} diff --git a/apps/funding/templates/funding/tags/funding.html b/apps/funding/templates/funding/tags/funding.html index dbcb871df..c842f8ad5 100755 --- a/apps/funding/templates/funding/tags/funding.html +++ b/apps/funding/templates/funding/tags/funding.html @@ -4,21 +4,20 @@ {% spaceless %}
{% if link and is_current %} - + {% trans "Support a book!" %} {% endif %}
{% endspaceless %} diff --git a/apps/funding/templates/funding/tags/offer_status.html b/apps/funding/templates/funding/tags/offer_status.html index 998d942dc..24a5fcde7 100755 --- a/apps/funding/templates/funding/tags/offer_status.html +++ b/apps/funding/templates/funding/tags/offer_status.html @@ -2,23 +2,23 @@ {% if offer.is_current %} {% if offer.is_win %} -

+

{% blocktrans with due=offer.due end=offer.end %}The fundraiser ends on {{ end }}. The book will be published by {{ due }}.{% endblocktrans %}

{% else %} -

+

{% blocktrans with due=offer.due end=offer.end %}If the target is met by {{ end }}, this book will be published by {{ due }}.{% endblocktrans %}

{% endif %} {% else %} {% if offer.is_win %} -

+

{% trans "Full amount was successfully raised!" %}

{% else %} -

+

{% trans "The amount needed was not raised." %}

{% endif %} diff --git a/apps/funding/templates/funding/tags/offer_status_more.html b/apps/funding/templates/funding/tags/offer_status_more.html index 6291e9fb4..3ba0440ce 100755 --- a/apps/funding/templates/funding/tags/offer_status_more.html +++ b/apps/funding/templates/funding/tags/offer_status_more.html @@ -1,13 +1,13 @@ {% load i18n %} {% if offer.is_current %} -

+

{% include "funding/snippets/any_remaining.html" %}

{% else %} -

{{ offer.start }} – {{ offer.end }}

+

{{ offer.start }} – {{ offer.end }}

{% if offer.is_win %} -

+

{% if offer.book %} {% blocktrans with bu=offer.book.get_absolute_url bt=offer.book %}The book {{ bt }} has been already published.{% endblocktrans %} @@ -23,6 +23,6 @@ {% endif %} {% if offer.remaining %} -

{% include "funding/snippets/any_remaining.html" %}

+

{% include "funding/snippets/any_remaining.html" %}

{% endif %} {% endif %} diff --git a/apps/funding/templates/funding/thanks.html b/apps/funding/templates/funding/thanks.html index 72b7c2970..923ed666d 100755 --- a/apps/funding/templates/funding/thanks.html +++ b/apps/funding/templates/funding/thanks.html @@ -17,21 +17,22 @@

{% blocktrans with due=offer.due end=offer.end %}The fundraiser ends on {{ end }}. The book will be published by {{ due }}.{% endblocktrans %}

{% else %} -

{% blocktrans with b=object.title due=offer.due end=offer.end %}Your +

{% blocktrans with b=offer.title due=offer.due end=offer.end %}Your donation will be spent on publishing the book {{ b }} if the full amount is raised by {{ end }}. The book will then be published by {{ due }}.{% endblocktrans %}

{% endif %} -

{% include "funding/snippets/any_remaining.html" %}

+

{% include "funding/snippets/any_remaining.html" %} -{% url 'funding_current' as current %} +{% trans "Learn more" %}.

+ +{% url 'funding_current' offer.slug as current %}

{% trans "Go back to the current fundraiser." %}

{% trans "Tell your friends!" %}

- -

{% share current _("I support Wolne Lektury.") %}

+ diff --git a/apps/funding/templates/funding/wlfund.html b/apps/funding/templates/funding/wlfund.html index 6a405ad56..b0b74f8bf 100755 --- a/apps/funding/templates/funding/wlfund.html +++ b/apps/funding/templates/funding/wlfund.html @@ -12,7 +12,10 @@ the full amount needed for publishing a book is not raised in time, the funds are spent on other books waiting for publication. The same thing happens with any money remaining -from successful fundraisers.{% endblocktrans %}

+from successful fundraisers.{% endblocktrans %} + +{% trans "Learn more" %}.

+

{% trans "Spending these remaining funds is recorded in this table." %}

@@ -30,18 +33,18 @@ from successful fundraisers.{% endblocktrans %}

{% if tag == 'spent' %}
{{ entry.timestamp }}
- {% trans "Money spent on publishing the book" %}: +
{% trans "Money spent on publishing the book" %}: - {{ entry.book }} + {{ entry.book }}
-{{ entry.amount }} zł
{{ entry.total }} zł
{% else %}
{{ entry.end }}
- {% trans "Money remaining from the fundraiser for" %}: +
{% trans "Money remaining from the fundraiser for" %}: - {{ entry }} + {{ entry }}
{{ entry.total }} zł
+{{ entry.wlfund }} zł
diff --git a/apps/funding/templatetags/funding_tags.py b/apps/funding/templatetags/funding_tags.py index d50551a38..bfac2654e 100755 --- a/apps/funding/templatetags/funding_tags.py +++ b/apps/funding/templatetags/funding_tags.py @@ -16,6 +16,7 @@ def funding(context, offer=None, link=False, add_class=""): 'offer': offer, 'sum': offer_sum, 'is_current': offer.is_current(), + 'is_win': offer_sum >= offer.target, 'missing': offer.target - offer_sum, 'percentage': 100 * offer_sum / offer.target, 'link': link, diff --git a/apps/funding/urls.py b/apps/funding/urls.py old mode 100755 new mode 100644 index 6b60035c3..eb9718038 --- a/apps/funding/urls.py +++ b/apps/funding/urls.py @@ -6,11 +6,13 @@ from django.conf.urls import patterns, url, include from .models import Offer from .views import (WLFundView, OfferDetailView, OfferListView, - ThanksView, NoThanksView) + ThanksView, NoThanksView, CurrentView) urlpatterns = patterns('', - url(r'^$', OfferDetailView.as_view(), name='funding_current'), + + url(r'^$', CurrentView.as_view(), name='funding_current'), + url(r'^teraz/(?P[^/]+)/$', CurrentView.as_view(), name='funding_current'), url(r'^lektura/$', OfferListView.as_view(), name='funding'), url(r'^lektura/(?P[^/]+)/$', OfferDetailView.as_view(), name='funding_offer'), url(r'^fundusz/$', WLFundView.as_view(), name='funding_wlfund'), diff --git a/apps/funding/views.py b/apps/funding/views.py index 66c34a28f..7bc822677 100644 --- a/apps/funding/views.py +++ b/apps/funding/views.py @@ -2,6 +2,7 @@ # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later. # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. # +from datetime import date from django.views.decorators.cache import never_cache from django.conf import settings from django.core.urlresolvers import reverse @@ -51,13 +52,14 @@ class WLFundView(TemplateView): ctx = super(WLFundView, self).get_context_data() offers = [] - for o in Offer.objects.all(): - if o.state() == 'lose': - o.wlfund = o.sum() + + for o in Offer.past(): + if o.is_win(): + o.wlfund = o.sum() - o.target if o.wlfund > 0: offers.append(o) - elif o.state() == 'win': - o.wlfund = o.sum() - o.target + else: + o.wlfund = o.sum() if o.wlfund > 0: offers.append(o) amount = sum(o.wlfund for o in offers) - sum(o.amount for o in Spent.objects.all()) @@ -77,12 +79,13 @@ class OfferDetailView(FormView): backend = 'getpaid.backends.payu' def dispatch(self, request, slug=None): - if slug: - self.object = get_object_or_404(Offer.public(), slug=slug) - else: - self.object = Offer.current() - if self.object is None: - raise Http404 + if getattr(self, 'object', None) is None: + if slug: + self.object = get_object_or_404(Offer.public(), slug=slug) + else: + self.object = Offer.current() + if self.object is None: + raise Http404 return super(OfferDetailView, self).dispatch(request, slug) def get_form(self, form_class): @@ -102,9 +105,19 @@ class OfferDetailView(FormView): funding = form.save() # Skip getpaid.forms.PaymentMethodForm, go directly to the broker. payment = Payment.create(funding, self.backend) - gateway_url = payment.get_processor()(payment).get_gateway_url(self.request) + gateway_url_tuple = payment.get_processor()(payment).get_gateway_url(self.request) payment.change_status('in_progress') - return redirect(gateway_url) + return redirect(gateway_url_tuple[0]) + + +class CurrentView(OfferDetailView): + def dispatch(self, request, slug=None): + self.object = Offer.current() + if self.object is None: + raise Http404 + elif slug != self.object.slug: + return redirect(reverse('funding_current', args=[self.object.slug])) + return super(CurrentView, self).dispatch(request, slug) class OfferListView(ListView): diff --git a/apps/wolnelektury_core/static/img/social/bigfacebook.png b/apps/wolnelektury_core/static/img/social/bigfacebook.png new file mode 100644 index 0000000000000000000000000000000000000000..630416cf237367324b350f9bff62d9c6ef417b0a GIT binary patch literal 454 zcmeAS@N?(olHy`uVBq!ia0vp^G9b*s1|*Ak?@s|zY)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPahb%vX^e!QrWk4ax64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aRvrPJx>?M5Rc<~r#+n5j4VFgp$%zSK_tYx)yy3DfO3;4zn9rtR8s`K?_XTWmojaJ0 zny0WY2oz`ybYC^W#j;6*r*zv_mXy6qUVEg?D*DqIF|TO<%abdnyk5FKeOB!BiRIp&*Cfn(?3%psY|@j?v-*o~E-sebaBYnr uoAG;9JN1y5lO0|{YxhYmnfP+z5$TvS8ne zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00B`+L_t(Y$E{ZFje{@@eXzh~ zgJXkZ1iC?P14ifw-GC9eP3Q(?1JnuVO_2NJoUAAEfz>BPw8759&a;ySX?OrVfG+?p zWA_5^O>@2YtnxmI9>4}5$a9h3M`IUzM)Vm4$ox)HUOG_z?_)U=g(En_j7;R$yBjaozfbtFruRz zUkxHUrN)T}$Amyq^`-4@nbP>j%qkMcxsvEK23dTeVh-;nV%(^6n9-iJchtt-j^U^q z6i$L_c(q@_(DAF#A2ix{rgakGq)vrM=qyCLTEG{IUn}(V9xj2qpOy_ zb(3EfCr2t9Dt-2fhFsjUM}@+4|MZsV_(F4~uHA`vwun!*M3Q$@D| fc*>D)I-&mn_ExA{t`FZQ00000NkvXXu0mjfJ|NCD literal 0 HcmV?d00001 diff --git a/apps/wolnelektury_core/static/img/social/bignk.png b/apps/wolnelektury_core/static/img/social/bignk.png new file mode 100644 index 0000000000000000000000000000000000000000..c119cd117c0e11ba4e96f1428ed47f9b31de4e85 GIT binary patch literal 1857 zcmV-H2fp};P)e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00yZ^L_t(Y$CXuEjFndzUEkjS z{Xh3}W;zUmoq`OcK!FO<5*(x@O-U{714I)IF9vxMO?)uX2OHC-#_Eg4q}3*dG!?8w z()6LNL~O7{g;plDQ!AI!GBC{T%(-9w|KI!DKFpj`j4$neT;I;O_S$=WYt!))4`RpW zGFSsq;^Uo516aRm0l6STCuVe{2i6f}GJuvm3N1H5m?{7QGl#i!_}eY(Mh_}xWlL%O z_2Pfde*fpk4%V9OIVl8)fSH9Vet6^{zOrW<+U*FAO|bB(mIJ{v7;t`!ru76mYCQ-o z7$RE=8nL8=C8Y%bySA(w-*)%vHS>$LIVlCAD8XY7Y{$;6V`z7ye#cKqY`_R1MGao} zX&`tS!Wji~*VwLCHwKE9MHs_LK9`Ol03rd_jQj2x!(b_g#cB(d5TAv3iQK@0peic0 zX~ZHAAgNC;)W2((pWU=(WH$h`I#F$UW_qz)tHZEC5QNYMP)dUcpH=Z~i!wm%7;ZL> zAkmJoEvk(T7oA?Y(e75iuwg7xTA|wP;Nk~UAejGaBQz6?0oVX+2*%L=Y|w_Fn4mPJ zG*d=1!9c>n6W+w2xOkihv#I;6i@zz{boj83F zD@q0H!TYxy-M-=TKkytIoHMvNSH?@PoqNXeLN#g&0~i2?v2mpG)kuqnJYfc@hZ6uM zKoNw+Sif@aYu9JrQE~!t@eAw?QXmnC9!J7jDccd=hye``gY(gTR;LQ z|8(wqum5f0Iq~7V|GR3#eIH~177zxuFL{sz1ID16i0Rp?Gtr8v0cij&K!z|f6s^gG z9x|c7Qjqw>7(|uhf1Zd_ftx@4*sdQ1o|EpCj=y^L#eZG?_}S2RTf&V~zi&nM6$qeb zK24-%Dyj4D-pGDyriGnTWq;pX(|-}PG*&P`r$u_OltD2c4&83Xg>rR~HDmwodk^p2 zJoZ2jzcxL8>A91qpL*k+$@b*cDOiGxpR!FJYye4!6?G=2^3S9!^AiKz0SpvLiWp6R zm+lJ&l2FbDj!b!W@pj_*O7&(j8{BpH@$v8Uo!;(5zj)#0C$8O?`8SB5HA85(m1aw4 z00IP~-nA!<7SCIfJIsJ#2Z2L=+ExPq0R(6xOp{f4)o@APQOx#gPCFFJWe~(EWLvvK%<$FU4_^{kc+tM!!>ZENis`{ z1r$>g8kM1ZPTH1T>JislorSIIMi1@YGPbXWoqc=qjh9|O_mmJ)`JM;Mwm~2WS8$48 z(mnSoE$W@FY;|G@-vP)tNrL`mIqgiC@%f4n-$ z%^MXpSBY$-aziMTMvyNJL(JB~P)Z#x$1%DJwQ5YQdQ2dZz_t?jPLxS`@d~g2z|hK6 z8j;^Q|NckP_f(%)5UCTd{{6`-Q?noRu)Sa0@aUJfZ+yI+NN94PU_-%yAa?Q&!G$3} z7&JOwZMKruv(+?M6JQJkan=%CTpDOVv00p~KC12<9tZ>1?x&Vk$}ChHS5Kb#=P#F& z5$V9oJhXl68^Z-Jld=smE+OL*gcs-n#BxAu0nd*X2TM&17MqxleB5ZJQHlJ(m%Q{G zAjC$MUH@}DR4C*;*XoDIVy!jjcs`$d@52+5*QPJ_@ZI;W*|%-|$R1`5TM}%GAf!|U z7!U|BAhe7w*Q^$5vW0qNquTY*OstRud%f7Sn9Ieqt#fI&Kted5d?;q_z@Dw$z_A;r z&RqDlS(fd)uDgGH>(SAbg9Ev2h+-}cA+2r!0t7NhH0dnajrF06wSkMAr;&CNgpMu{ znSQ`@Vo}Ry13i!r3zDc$?ATU4oAQ;46TCHX_2k5*seklpo5x1RM^}`_6$2Usk#Y1G z@$!k;NUdc@umrKhV31&CDyBg{S&g1t08wOj3)zs1IsYyakiF*RYAu<%H5iNOyt|t5!0(l&OyL2XA00000NkvXXu0mjfG~sAX literal 0 HcmV?d00001 diff --git a/apps/wolnelektury_core/static/img/social/bigtwitter.png b/apps/wolnelektury_core/static/img/social/bigtwitter.png new file mode 100644 index 0000000000000000000000000000000000000000..fafbe64127e7083bfc50bfcb7f4f2d63d3750392 GIT binary patch literal 397 zcmeAS@N?(olHy`uVBq!ia0vp^5|gW!U_%O?XxI14-? ziy0WWg+Z8+Vb&aw9`+JXUsv`!9J2h3?Atj4R{(`1OI#yLobz*YQ}ap~oQqNuOHxx5 z$}>wc6x=<11Hv2m#DR*wdb&7meHtl)sc>Zv=nTm9K4bRj~Jq5m%H zk@p);{9mB>Qu#r$`GHy=0|wm*t_QSLci8(rr<|!*zT{}~#Hfss%buGiEr`)X1o|}EdI{&#^T2@ofqj!IsgEAWV m1vkYw7+qY!_oHL|Ci&)f|C2Rl3bFzNfWgz%&t;ucLK6V0C7P=M literal 0 HcmV?d00001 diff --git a/requirements.txt b/requirements.txt index 784e85a10..836f6d309 100644 --- a/requirements.txt +++ b/requirements.txt @@ -55,4 +55,4 @@ pyoai egenix-mx-base sunburnt -django-getpaid +django-getpaid>=1.4,<1.5 diff --git a/wolnelektury/migrations/getpaid/0002_auto__add_field_payment_external_id__add_field_payment_description.py b/wolnelektury/migrations/getpaid/0002_auto__add_field_payment_external_id__add_field_payment_description.py new file mode 100644 index 000000000..c017e3ca8 --- /dev/null +++ b/wolnelektury/migrations/getpaid/0002_auto__add_field_payment_external_id__add_field_payment_description.py @@ -0,0 +1,106 @@ +# -*- coding: utf-8 -*- +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Adding field 'Payment.external_id' + db.add_column(u'getpaid_payment', 'external_id', + self.gf('django.db.models.fields.CharField')(max_length=64, null=True, blank=True), + keep_default=False) + + # Adding field 'Payment.description' + db.add_column(u'getpaid_payment', 'description', + self.gf('django.db.models.fields.CharField')(max_length=128, null=True, blank=True), + keep_default=False) + + + def backwards(self, orm): + # Deleting field 'Payment.external_id' + db.delete_column(u'getpaid_payment', 'external_id') + + # Deleting field 'Payment.description' + db.delete_column(u'getpaid_payment', 'description') + + + models = { + 'catalogue.book': { + 'Meta': {'ordering': "('sort_key',)", 'object_name': 'Book'}, + '_related_info': ('jsonfield.fields.JSONField', [], {'null': 'True', 'blank': 'True'}), + 'changed_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}), + 'common_slug': ('django.db.models.fields.SlugField', [], {'max_length': '120'}), + 'cover': ('catalogue.fields.EbookField', [], {'max_length': '100', 'null': 'True', 'format_name': "'cover'", 'blank': 'True'}), + 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}), + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'epub_file': ('catalogue.fields.EbookField', [], {'default': "''", 'max_length': '100', 'format_name': "'epub'", 'blank': 'True'}), + 'extra_info': ('jsonfield.fields.JSONField', [], {'default': "'{}'"}), + 'fb2_file': ('catalogue.fields.EbookField', [], {'default': "''", 'max_length': '100', 'format_name': "'fb2'", 'blank': 'True'}), + 'gazeta_link': ('django.db.models.fields.CharField', [], {'max_length': '240', 'blank': 'True'}), + 'html_file': ('catalogue.fields.EbookField', [], {'default': "''", 'max_length': '100', 'format_name': "'html'", 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'language': ('django.db.models.fields.CharField', [], {'default': "'pol'", 'max_length': '3', 'db_index': 'True'}), + 'mobi_file': ('catalogue.fields.EbookField', [], {'default': "''", 'max_length': '100', 'format_name': "'mobi'", 'blank': 'True'}), + 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['catalogue.Book']"}), + 'parent_number': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'pdf_file': ('catalogue.fields.EbookField', [], {'default': "''", 'max_length': '100', 'format_name': "'pdf'", 'blank': 'True'}), + 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '120'}), + 'sort_key': ('django.db.models.fields.CharField', [], {'max_length': '120', 'db_index': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '120'}), + 'txt_file': ('catalogue.fields.EbookField', [], {'default': "''", 'max_length': '100', 'format_name': "'txt'", 'blank': 'True'}), + 'wiki_link': ('django.db.models.fields.CharField', [], {'max_length': '240', 'blank': 'True'}), + 'xml_file': ('catalogue.fields.EbookField', [], {'default': "''", 'max_length': '100', 'format_name': "'xml'", 'blank': 'True'}) + }, + u'funding.funding': { + 'Meta': {'ordering': "['-payed_at']", 'object_name': 'Funding'}, + 'amount': ('django.db.models.fields.DecimalField', [], {'max_digits': '10', 'decimal_places': '2'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '127', 'blank': 'True'}), + 'offer': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['funding.Offer']"}), + 'payed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'perks': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['funding.Perk']", 'symmetrical': 'False', 'blank': 'True'}) + }, + u'funding.offer': { + 'Meta': {'ordering': "['-end']", 'object_name': 'Offer'}, + 'author': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'book': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['catalogue.Book']", 'null': 'True', 'blank': 'True'}), + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'due': ('django.db.models.fields.DateField', [], {}), + 'end': ('django.db.models.fields.DateField', [], {}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'redakcja_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}), + 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50'}), + 'start': ('django.db.models.fields.DateField', [], {}), + 'target': ('django.db.models.fields.DecimalField', [], {'max_digits': '10', 'decimal_places': '2'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}) + }, + u'funding.perk': { + 'Meta': {'ordering': "['-price']", 'object_name': 'Perk'}, + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'offer': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['funding.Offer']", 'null': 'True', 'blank': 'True'}), + 'price': ('django.db.models.fields.DecimalField', [], {'max_digits': '10', 'decimal_places': '2'}) + }, + u'getpaid.payment': { + 'Meta': {'ordering': "('-created_on',)", 'object_name': 'Payment'}, + 'amount': ('django.db.models.fields.DecimalField', [], {'max_digits': '20', 'decimal_places': '4'}), + 'amount_paid': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '20', 'decimal_places': '4'}), + 'backend': ('django.db.models.fields.CharField', [], {'max_length': '50'}), + 'created_on': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}), + 'currency': ('django.db.models.fields.CharField', [], {'max_length': '3'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), + 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'order': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'payment'", 'to': u"orm['funding.Funding']"}), + 'paid_on': ('django.db.models.fields.DateTimeField', [], {'default': 'None', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + 'status': ('django.db.models.fields.CharField', [], {'default': "'new'", 'max_length': '20', 'db_index': 'True'}) + } + } + + complete_apps = ['getpaid'] \ No newline at end of file diff --git a/wolnelektury/settings/__init__.py b/wolnelektury/settings/__init__.py index 8403688a4..1ff9e0ef1 100644 --- a/wolnelektury/settings/__init__.py +++ b/wolnelektury/settings/__init__.py @@ -71,7 +71,6 @@ INSTALLED_APPS_OUR = [ ] GETPAID_BACKENDS = ( - 'getpaid.backends.dummy', 'getpaid.backends.payu', ) @@ -97,7 +96,6 @@ INSTALLED_APPS_CONTRIB = [ #'django_nose', 'fnpdjango', 'getpaid', - 'getpaid.backends.dummy', 'getpaid.backends.payu', #allauth stuff -- 2.20.1