diff --git a/c3l_membership/__init__.py b/c3l_membership/__init__.py --- a/c3l_membership/__init__.py +++ b/c3l_membership/__init__.py @@ -36,23 +36,7 @@ def create_app(): app.config.setdefault("REGULAR_FEE", 120) app.config.setdefault("DIGICASH_ENABLED", True) - app.config.setdefault("BITCOIN_ENABLED", True) - app.config.setdefault("ETHEREUM_ENABLED", True) - app.config.setdefault("MONERO_ENABLED", True) - app.config.setdefault("ZCASH_ENABLED", True) - - app.config.setdefault( - "BITCOIN_CONVERSION_SCRIPT", "/usr/local/share/btc/BTC_Membership.pl" - ) - app.config.setdefault( - "ETHEREUM_CONVERSION_SCRIPT", "/usr/local/share/eth/ETH_Membership.pl" - ) - app.config.setdefault( - "MONERO_CONVERSION_SCRIPT", "/usr/local/share/xmr/XMR_Membership.pl" - ) - app.config.setdefault( - "ZCASH_CONVERSION_SCRIPT", "/usr/local/share/zcash/ZCASH_Membership.pl" - ) + app.config.setdefault("CRYPTOCURRENCIES", dict()) @babel.localeselector def get_locale(): diff --git a/c3l_membership/static/pdf.css b/c3l_membership/static/pdf.css --- a/c3l_membership/static/pdf.css +++ b/c3l_membership/static/pdf.css @@ -87,18 +87,24 @@ footer { padding: 0; } -.btccontainer { +.cryptocontainer { display: flex; justify-content: space-between; } -.btctext { +.cryptotext { list-style-type: none; margin: 0; padding: 0; + max-width: 20em; } -.btcqrcode { +.cryptotext li { + word-break: break-all; + overflow-wrap: break-word; +} + +.cryptoqrcode { width: 10em; } diff --git a/c3l_membership/templates/member.html b/c3l_membership/templates/member.html --- a/c3l_membership/templates/member.html +++ b/c3l_membership/templates/member.html @@ -65,7 +65,7 @@
{% trans %}Payment:{% endtrans %}
-
{{ form.payment.data }}
+
{{ form.payment.data.lower() }}
{% trans %}Agreed to Terms & Conditions:{% endtrans %}
@@ -87,57 +87,19 @@ {% elif form.payment.data == 'cash' %}

{% trans %}Please bring {{ price }}€ with you the next time you meet us!{% endtrans %}

- {% elif form.payment.data == 'bitcoin' %} -
+ {% elif form.payment.data in config["CRYPTOCURRENCIES"] %} +
-
    -
  • {% trans %}Address:{% endtrans %} {{ config["BITCOIN_ADDRESS"] }}
  • +
      +
    • {% trans %}Address:{% endtrans %} {{ config["CRYPTOCURRENCIES"][form.payment.data]["ADDRESS"] }}
    • {% trans %}Label:{% endtrans %} Membership Fee
    • {% trans %}Message:{% endtrans %} {{ year }} {{ form.username.data }}
    • -
    • {% trans %}Amount:{% endtrans %} {{ price }} BTC
    • -
    -
- {% set bitcoin_url="bitcoin:" + config["BITCOIN_ADDRESS"] + "?amount={amount}&label=Membership Fee {year} {username}&message=Membership Fee {year} {username}".format(amount=price, year=year, username=form.username.data) %} -
-
- {% elif form.payment.data == 'ethereum' %} -
-
-
    -
  • {% trans %}Address:{% endtrans %} {{ config["ETHEREUM_ADDRESS"] }}
  • -
  • {% trans %}Label:{% endtrans %} Membership Fee
  • -
  • {% trans %}Message:{% endtrans %} {{ year }} {{ form.username.data }}
  • -
  • {% trans %}Amount:{% endtrans %} {{ price }} ETH
  • +
  • {% trans %}Amount:{% endtrans %} {{ price }} {{ config["CRYPTOCURRENCIES"][form.payment.data]["COMMODITY"] }}
- {% set ethereum_url=config["ETHEREUM_ADDRESS"] %} -
-
- {% elif form.payment.data == 'monero' %} -
-
-
    -
  • {% trans %}Address:{% endtrans %} {{ config["MONERO_ADDRESS"] }}
  • -
  • {% trans %}Label:{% endtrans %} Membership Fee
  • -
  • {% trans %}Message:{% endtrans %} {{ year }} {{ form.username.data }}
  • -
  • {% trans %}Amount:{% endtrans %} {{ price }} XMR
  • -
-
- {% set monero_url=config["MONERO_ADDRESS"] %} -
-
- {% elif form.payment.data == 'zcash' %} -
-
-
    -
  • {% trans %}Address:{% endtrans %} {{ config["ZCASH_ADDRESS"] }}
  • -
  • {% trans %}Label:{% endtrans %} Membership Fee
  • -
  • {% trans %}Message:{% endtrans %} {{ year }} {{ form.username.data }}
  • -
  • {% trans %}Amount:{% endtrans %} {{ price }} ZEC
  • -
-
- {% set zcash_url=config["ZCASH_ADDRESS"] %} -
+ {% set address = config["CRYPTOCURRENCIES"][form.payment.data]["ADDRESS"] %} + {% set crypto_url=config["CRYPTOCURRENCIES"][form.payment.data]["URL"].format(address=address, amount=price, year=year, username=form.username.data) %} +
{% elif form.payment.data == 'digicash' %}
diff --git a/c3l_membership/translations/de/LC_MESSAGES/messages.po b/c3l_membership/translations/de/LC_MESSAGES/messages.po --- a/c3l_membership/translations/de/LC_MESSAGES/messages.po +++ b/c3l_membership/translations/de/LC_MESSAGES/messages.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2022-01-17 11:38+0100\n" -"PO-Revision-Date: 2022-01-18 17:42+0100\n" +"POT-Creation-Date: 2022-01-18 09:55+0100\n" +"PO-Revision-Date: 2022-01-18 09:55+0100\n" "Last-Translator: Dennis Fink \n" "Language: de\n" "Language-Team: de \n" @@ -121,33 +121,21 @@ msgstr "Ich bin unter 18 Jahre alt und h msgid "Become a member" msgstr "Mitglied werden" -#: c3l_membership/views.py:31 +#: c3l_membership/views.py:33 msgid "by cash" msgstr "mit Bargeld" -#: c3l_membership/views.py:32 +#: c3l_membership/views.py:34 msgid "by wire transfer" msgstr "per Überweisung" -#: c3l_membership/views.py:36 +#: c3l_membership/views.py:38 msgid "by DigiCash" msgstr "per DigiCash" -#: c3l_membership/views.py:37 -msgid "by bitcoin" -msgstr "per Bitcoin" - -#: c3l_membership/views.py:38 -msgid "by ethereum" -msgstr "per Ethereum" - -#: c3l_membership/views.py:39 -msgid "by monero" -msgstr "per Monero" - -#: c3l_membership/views.py:40 -msgid "by zcash" -msgstr "per Zcash" +#: c3l_membership/views.py:45 +msgid "by" +msgstr "per" #: c3l_membership/templates/index.html:6 msgid "C3L Membership Application" @@ -357,9 +345,6 @@ msgstr "Kontoinhaber:" #: c3l_membership/templates/member.html:85 #: c3l_membership/templates/member.html:96 -#: c3l_membership/templates/member.html:109 -#: c3l_membership/templates/member.html:122 -#: c3l_membership/templates/member.html:135 msgid "Message:" msgstr "Mitteilung:" @@ -374,38 +359,40 @@ msgid "Please bring %(price)s€ with you the next time you meet us!" msgstr "Bitte bringen Sie %(price)s€ mit, wenn Sie uns das nächste Mal treffen!" #: c3l_membership/templates/member.html:94 -#: c3l_membership/templates/member.html:107 -#: c3l_membership/templates/member.html:120 -#: c3l_membership/templates/member.html:133 msgid "Address:" msgstr "Addresse:" #: c3l_membership/templates/member.html:95 -#: c3l_membership/templates/member.html:108 -#: c3l_membership/templates/member.html:121 -#: c3l_membership/templates/member.html:134 msgid "Label:" msgstr "Bezeichnung:" #: c3l_membership/templates/member.html:97 -#: c3l_membership/templates/member.html:110 -#: c3l_membership/templates/member.html:123 -#: c3l_membership/templates/member.html:136 msgid "Amount:" msgstr "Betrag:" -#: c3l_membership/templates/member.html:145 +#: c3l_membership/templates/member.html:106 msgid "Pay with digicash!" msgstr "Bezahle mit DigiCash!" -#: c3l_membership/templates/member.html:150 +#: c3l_membership/templates/member.html:111 msgid "Luxembourg, the" msgstr "Luxemburg, der" -#: c3l_membership/templates/member.html:152 +#: c3l_membership/templates/member.html:113 msgid "Signature of your legal representative" msgstr "Unterschrift des Vormundes" -#: c3l_membership/templates/member.html:152 +#: c3l_membership/templates/member.html:113 msgid "Your signature" msgstr "Ihre Unterschrift" +#~ msgid "by bitcoin" +#~ msgstr "per Bitcoin" + +#~ msgid "by ethereum" +#~ msgstr "per Ethereum" + +#~ msgid "by monero" +#~ msgstr "per Monero" + +#~ msgid "by zcash" +#~ msgstr "per Zcash" diff --git a/c3l_membership/translations/fr/LC_MESSAGES/messages.mo b/c3l_membership/translations/fr/LC_MESSAGES/messages.mo index 470e9c86093770662e7de2210930aea9930c966a..93eb0251ba5bdf69f08f1acb8000fc27c480cf04 GIT binary patch literal 7653 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 ylW%>p!@a|e(0Q92oyo2%xgCLFT9Dt`\n" "Language: fr\n" "Language-Team: fr \n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" @@ -16,7 +17,6 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.9.1\n" -"Last-Translator: Dennis Fink \n" "X-Generator: Poedit 3.0\n" #: c3l_membership/forms.py:12 @@ -46,27 +46,23 @@ msgstr "Veuillez sélectionner une des options!" #: c3l_membership/forms.py:36 msgid "" -"Regular membership - Membership with voting rights on the general " -"assembly." -msgstr "" -"Membre régulier - Membre avec droit de vote à l'assemblée générale." +"Regular membership - Membership with voting rights on the general assembly." +msgstr "Membre régulier - Membre avec droit de vote à l'assemblée générale." #: c3l_membership/forms.py:42 msgid "" "Supporting membership - Membership without voting rights on the general " "assembly." -msgstr "" -"Membre de soutien - Membre sans droit de vote à l'assemblée générale." +msgstr "Membre de soutien - Membre sans droit de vote à l'assemblée générale." #: c3l_membership/forms.py:50 msgid "I am a student and would like to have the reduced membership fees." -msgstr "" -"Je suis étudiant et j'aimerais bénéficier de la réduction de cotisation." +msgstr "Je suis étudiant et j'aimerais bénéficier de la réduction de cotisation." #: c3l_membership/forms.py:56 msgid "" -"I am a starving hacker and cannot afford the membership! (Please get in " -"touch with us at info@c3l.lu before filling out this membership form)" +"I am a starving hacker and cannot afford the membership! (Please get in touch " +"with us at info@c3l.lu before filling out this membership form)" msgstr "" "Je suis un \"starving\" hacker et je ne peux pas payer la cotisation! " "(Veuillez nous contacter à info@c3l.lu avant de remplir ce formulaire " @@ -106,54 +102,40 @@ msgid "" "understood the statutes of the Chaos " "Computer Club Lëtzebuerg A.S.B.L.." msgstr "" -"En soumettant cette demande d'adhésion, vous acceptez d'avoir lu et " -"compris les statuts du Chaos Computer " -"Club Lëtzebuerg A.S.B.L.." +"En soumettant cette demande d'adhésion, vous acceptez d'avoir lu et compris " +"les statuts du Chaos Computer Club " +"Lëtzebuerg A.S.B.L.." #: c3l_membership/forms.py:100 msgid "" -"I am under 18 years of age and have the approval of my legal " -"representative." +"I am under 18 years of age and have the approval of my legal representative." msgstr "J'ai moins de 18 ans et j'ai l'accord de mon représentant légal." #: c3l_membership/forms.py:104 msgid "Become a member" msgstr "Devenir membre" -#: c3l_membership/views.py:31 +#: c3l_membership/views.py:33 msgid "by cash" msgstr "en espèces" -#: c3l_membership/views.py:32 +#: c3l_membership/views.py:34 msgid "by wire transfer" msgstr "par virement bancaire" -#: c3l_membership/views.py:36 +#: c3l_membership/views.py:38 msgid "by DigiCash" msgstr "par DigiCash" -#: c3l_membership/views.py:37 -msgid "by bitcoin" -msgstr "par Bitcoin" - -#: c3l_membership/views.py:38 -msgid "by ethereum" -msgstr "par Ethereum" - -#: c3l_membership/views.py:39 -msgid "by monero" -msgstr "par Monero" - -#: c3l_membership/views.py:40 -msgid "by zcash" -msgstr "par Zcash" +#: c3l_membership/views.py:45 +msgid "by" +msgstr "per" #: c3l_membership/templates/index.html:6 msgid "C3L Membership Application" msgstr "Demande d'adhésion à C3L" -#: c3l_membership/templates/index.html:40 -#: c3l_membership/templates/member.html:16 +#: c3l_membership/templates/index.html:40 c3l_membership/templates/member.html:16 msgid "Membership Application" msgstr "Demande d'adhésion" @@ -163,17 +145,16 @@ msgstr "Comment utiliser ce formulaire" #: c3l_membership/templates/index.html:42 msgid "" -"Fill out this form and click on \"Become a member\". Afterwards you will " -"be presented with a PDF, which you have to send to info@c3l.lu or bring " -"it to one of our next events. Print it or save it to your local " -"hardware, because we don't save a copy on our servers for data " -"protection reasons!" +"Fill out this form and click on \"Become a member\". Afterwards you will be " +"presented with a PDF, which you have to send to info@c3l.lu or bring it to one " +"of our next events. Print it or save it to your local hardware, because we " +"don't save a copy on our servers for data protection reasons!" msgstr "" -"Remplissez ce formulaire et cliquez sur \"Devenir membre\". Ensuite, " -"vous recevrez un PDF, que vous devrez envoyer à info@c3l.lu ou apporter " -"à l'un de nos prochains événements. Imprimez-le ou enregistrez-le sur " -"votre matériel local, car nous n'enregistrons pas de copie sur nos " -"serveurs pour des raisons de protection des données!" +"Remplissez ce formulaire et cliquez sur \"Devenir membre\". Ensuite, vous " +"recevrez un PDF, que vous devrez envoyer à info@c3l.lu ou apporter à l'un de " +"nos prochains événements. Imprimez-le ou enregistrez-le sur votre matériel " +"local, car nous n'enregistrons pas de copie sur nos serveurs pour des raisons " +"de protection des données!" #: c3l_membership/templates/index.html:53 msgid "Required information" @@ -197,11 +178,11 @@ msgstr "" #: c3l_membership/templates/index.html:98 msgid "" -"Access to our hackerspace: ChaosStuff" +"Access to our hackerspace: ChaosStuff" msgstr "" -"Access to our hackerspace: ChaosStuff" +"Access to our hackerspace: ChaosStuff" #: c3l_membership/templates/index.html:100 msgid "Becoming a regular member gives you these additional benefits:" @@ -219,11 +200,11 @@ msgstr "Accès à notre liste de diffusion interne" #: c3l_membership/templates/index.html:105 msgid "" -"You can read more on the membership here." +"You can read more on the membership here." msgstr "" -"Vous pouvez en savoir plus sur l'adhésion ici." +"Vous pouvez en savoir plus sur l'adhésion ici." #: c3l_membership/templates/index.html:106 msgid "What are the membership fees?" @@ -232,17 +213,15 @@ msgstr "Quelles sont les cotisations des #: c3l_membership/templates/index.html:107 #, python-format msgid "" -"The membership fee for the regular membership is %(regular_fee)s€ per " -"year. The membership fee for the supporting membership is " -"%(supporting_fee)s€ per year. If you are a student, all membership fees " -"are %(supporting_fee)s€ per year. For that please select the " -"corresponding option." +"The membership fee for the regular membership is %(regular_fee)s€ per year. " +"The membership fee for the supporting membership is %(supporting_fee)s€ per " +"year. If you are a student, all membership fees are %(supporting_fee)s€ per " +"year. For that please select the corresponding option." msgstr "" -"La cotisation pour une adhésion régulière est de %(regular_fee)s€ par " -"an. La cotisation pour l'adhésion de soutien est de %(supporting_fee)s€ " -"par an. Si vous êtes étudiant, toutes les cotisations sont de " -"%(supporting_fee)s€ par an. Pour cela, veuillez sélectionner l'option " -"correspondante." +"La cotisation pour une adhésion régulière est de %(regular_fee)s€ par an. La " +"cotisation pour l'adhésion de soutien est de %(supporting_fee)s€ par an. Si " +"vous êtes étudiant, toutes les cotisations sont de %(supporting_fee)s€ par an. " +"Pour cela, veuillez sélectionner l'option correspondante." #: c3l_membership/templates/index.html:108 msgid "I cannot afford the membership?" @@ -250,13 +229,13 @@ msgstr "Je n'ai pas les moyens de payer l'adhésion?" #: c3l_membership/templates/index.html:109 msgid "" -"If you cannot afford the membership, please contact us via info@c3l.lu " -"first, before filling out the membership form. We will try to find a " -"solution together." +"If you cannot afford the membership, please contact us via info@c3l.lu first, " +"before filling out the membership form. We will try to find a solution " +"together." msgstr "" "Si vous n'avez pas les moyens de payer l'adhésion, veuillez d'abord nous " -"contacter via info@c3l.lu, avant de remplir le formulaire d'adhésion. " -"Nous essaierons de trouver une solution ensemble." +"contacter via info@c3l.lu, avant de remplir le formulaire d'adhésion. Nous " +"essaierons de trouver une solution ensemble." #: c3l_membership/templates/index.html:122 msgid "Additional information" @@ -359,9 +338,6 @@ msgstr "Titulaire du compte:" #: c3l_membership/templates/member.html:85 #: c3l_membership/templates/member.html:96 -#: c3l_membership/templates/member.html:109 -#: c3l_membership/templates/member.html:122 -#: c3l_membership/templates/member.html:135 msgid "Message:" msgstr "Message:" @@ -374,42 +350,45 @@ msgstr "Montant: %(price)s€" #, python-format msgid "Please bring %(price)s€ with you the next time you meet us!" msgstr "" -"Veuillez apporter des %(price)s€ avec vous la prochaine fois que vous " -"nous rencontrerez !" +"Veuillez apporter des %(price)s€ avec vous la prochaine fois que vous nous " +"rencontrerez !" #: c3l_membership/templates/member.html:94 -#: c3l_membership/templates/member.html:107 -#: c3l_membership/templates/member.html:120 -#: c3l_membership/templates/member.html:133 msgid "Address:" msgstr "Adresse:" #: c3l_membership/templates/member.html:95 -#: c3l_membership/templates/member.html:108 -#: c3l_membership/templates/member.html:121 -#: c3l_membership/templates/member.html:134 msgid "Label:" msgstr "Label:" #: c3l_membership/templates/member.html:97 -#: c3l_membership/templates/member.html:110 -#: c3l_membership/templates/member.html:123 -#: c3l_membership/templates/member.html:136 msgid "Amount:" msgstr "Montant:" -#: c3l_membership/templates/member.html:145 +#: c3l_membership/templates/member.html:106 msgid "Pay with digicash!" msgstr "Payer avec DigiCash!" -#: c3l_membership/templates/member.html:150 +#: c3l_membership/templates/member.html:111 msgid "Luxembourg, the" msgstr "Luxembourg, le" -#: c3l_membership/templates/member.html:152 +#: c3l_membership/templates/member.html:113 msgid "Signature of your legal representative" msgstr "Signature de votre représentant légal" -#: c3l_membership/templates/member.html:152 +#: c3l_membership/templates/member.html:113 msgid "Your signature" msgstr "Votre signature" + +#~ msgid "by bitcoin" +#~ msgstr "par Bitcoin" + +#~ msgid "by ethereum" +#~ msgstr "par Ethereum" + +#~ msgid "by monero" +#~ msgstr "par Monero" + +#~ msgid "by zcash" +#~ msgstr "par Zcash" diff --git a/c3l_membership/translations/lb/LC_MESSAGES/messages.mo b/c3l_membership/translations/lb/LC_MESSAGES/messages.mo index ccc8c707dc275d2a7a7efe6c8a2a64789fd95e0b..9e1838eb437990548d25c5432a996886ae5a7294 GIT binary patch literal 7540 zc$}?QTZ|k>6>T7i!`kr%+ey}rO=>qJw#Clu+EKt6zp_tz?Ol7bv$09|h<)CSKYez+(*^@`?i~&cJS{M{_n>B;Db)zzu(;CI91?pfg`~CZ+09FoC6L5 ze+|47_0l${5|3S9yC%~h?Uu|ao{+rFebBp7gCcU<>{t>VM{37sv;EP+>&NqN}kbPTN z&zo;!K6c;6@;?TA1egN~@bh`#UBus3{{F&Nmh-!CV*0l$ZR-v(YF-aq0v_X6JrroiECJntFc-N5I! zv0g6$KMMTgHjbyawz1s1w=*C2Zs+|DZD;e1CZ-=izHRIsS)tvHXc$%*W|ntoI|kSf5X2 z=mH-HUI5+$eqP?icD!*nf8Vs5<=noTdDyj^<85j;*P2i7=6HDy*rfagZYO{4;e7ez z9=3O859>Xb;kiA`Uzvh)qFk0qB8(O~jl~gHRAX5=I#M;Jo)pH$8mgx9YcfviZdn$@6iq48lp|yAu{9g1$jCTy z0};9^P>~;~#Pm!tRr$_!(XsDFYSlGLM}<&^C8$tU^?OS)k`-l=kzc`HcEbCATSFlO^ zPU~F}OFs?VIQt@ewIUPI)G6(qU`f}G?p~8BHdW7Ub{;U)6iHeNl`$mNR8=Cn^a;0K z4^-JwFlvRnWImZvbyp;Ga6REho=78*ml&5 zi(}fixYYHVTY}PpUG`JM(TyB46gyCm{mCjI-!AId(kdW8b7YOhX~X zz*(-y?e~I{#U1BfZ{cMLSvBP(Gzw*aMndcY=7-y>6B!_9+DY3}`7uKy83NQbPdZC| z_1YSl>#bsT#}#eMaIE~QNhnQ8oR9h)LyVgwm>x9qkoB2VA#D4OsG=<_lnb6Nr`F)? z6um)p9d?S!k5G_fYXO&&bz;~lW|>`}CnLvfQEiSbBKUF0$@NERGC79OrXn8FdR@oX z(v8@lpnZpgEU$@eoKaNNIJ>Xm9TeTSFB^XXbJ^u}P(wMM7aK@R)>YjK?0#BLW|rQl z&E29jDqN)AnzCc3+(_E2RR^W9-WP+UVOhuUS)DEdU|Q5SR7b9yPTVX)ud}~8o5*u2geT{%#9z&;rtnYsPN!}A0Iz3K8}gG zCAp%K>(2WG&zpA>lUpV=1J~%dAf{y$!T+-=s)-|>eaWNd*Rs>&7*<4nN+nkWrOr!k zS-K&Oh$Hj!4+km_QjZNR1}UNWhXtC7IFaUPYAU%y-FX?+xtXY}DXB>zu3u2PaC~+|VQ2xLGUF=)WBby>26-wB9ZEH?$+}6-mx=veVZH-vSnwr*?q+B&U zbKb|ErpP@_Oj?WzuXS08P~k2q(X6P3jGWWpPm4*J*lLfX^KqRftxIMV<)SL)I;Te( z$(|l(T8h(ILqi{~UR>3wFB8+c5{8Bw9D9_~M*;U#-2e}EdvrKHokQnT>`4?QY&j{x zpx?p%24|t&y+je8kgZGYa~`z06(fA8Zp0kv>w!zL+G|12HYe<1W)jc!d!Jzq9%=F3 znHVJttE5;-BP&dXeS0ND2Mz^A7wANJ9&#V|SGpq`H(D=-u4!z%y+t0v9^t!cYfxqb zMde>~_gj^snnqDy$HSV6M=PVc7dzaL!XqjlGFt!Xn`nG-I~FEWHi;0MqcLq z{92ar*^~loa2#LS&p(>`LfJ6NPFtWV}9!YZ)FOZ*o z*=?Mp#D8=zw%$^R%h)zf8YdnKG+9qYsD;W@ zVfT@9+PTr+Te*gRZSO?B>1m!aLB`=|Hz764A7cwL%pIasfULL5^~ zKt*3i7Uk=8RnJ7O+xK*&+PdITAjwWqql0>sms2~{v#q?bz}c*nA`ERXQc1jeks2sj zL(kieK#D)`V<*yaFiVXTJ;>gW$=WG8McNPKxOYZBYFeJO82KhUq%-k dB%4#Wr8(=kD19g4C)5Vdewia}8`4%@=l^2-ZP5S# diff --git a/c3l_membership/translations/lb/LC_MESSAGES/messages.po b/c3l_membership/translations/lb/LC_MESSAGES/messages.po --- a/c3l_membership/translations/lb/LC_MESSAGES/messages.po +++ b/c3l_membership/translations/lb/LC_MESSAGES/messages.po @@ -7,8 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2022-01-17 11:38+0100\n" -"PO-Revision-Date: 2022-01-17 17:28+0100\n" +"POT-Creation-Date: 2022-01-18 09:55+0100\n" +"PO-Revision-Date: 2022-01-18 09:56+0100\n" +"Last-Translator: Dennis Fink \n" "Language: lb\n" "Language-Team: lb \n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -16,7 +17,6 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.9.1\n" -"Last-Translator: Dennis Fink \n" "X-Generator: Poedit 3.0\n" #: c3l_membership/forms.py:12 @@ -46,19 +46,17 @@ msgstr "Wielt wannechgelift eng vun den Optiounen aus!" #: c3l_membership/forms.py:36 msgid "" -"Regular membership - Membership with voting rights on the general " -"assembly." +"Regular membership - Membership with voting rights on the general assembly." msgstr "" -"Regulär Memberschaft - Memberschaft mat Stëmmrecht op der Assemblée " -"Générale." +"Regulär Memberschaft - Memberschaft mat Stëmmrecht op der Assemblée Générale." #: c3l_membership/forms.py:42 msgid "" "Supporting membership - Membership without voting rights on the general " "assembly." msgstr "" -"Ënnerstëtzend Memberschaft - Memberschaft ouni Stëmmrecht op der " -"Assemblée Générale." +"Ënnerstëtzend Memberschaft - Memberschaft ouni Stëmmrecht op der Assemblée " +"Générale." #: c3l_membership/forms.py:50 msgid "I am a student and would like to have the reduced membership fees." @@ -66,8 +64,8 @@ msgstr "Ech sinn Student a géif gären déi reduzéiert Cotisatioun bezuelen." #: c3l_membership/forms.py:56 msgid "" -"I am a starving hacker and cannot afford the membership! (Please get in " -"touch with us at info@c3l.lu before filling out this membership form)" +"I am a starving hacker and cannot afford the membership! (Please get in touch " +"with us at info@c3l.lu before filling out this membership form)" msgstr "" "Ech sinn en \"starving\" Hacker a kann d'Memberschaft net leeschten! " "(Kontaktéiert eis w.e.g. op info@c3l.lu ier Dir dëse " @@ -107,55 +105,40 @@ msgid "" "understood the statutes of the Chaos " "Computer Club Lëtzebuerg A.S.B.L.." msgstr "" -"Duerch d'Erareeche vun dësem Memberschaftsformulaire, sidd Dir " -"averstanen d'Statute vum Chaos " -"Computer Club Lëtzebuerg A.S.B.L. gelies a verstanen ze hunn." +"Duerch d'Erareeche vun dësem Memberschaftsformulaire, sidd Dir averstanen d'Statute vum Chaos Computer Club Lëtzebuerg " +"A.S.B.L. gelies a verstanen ze hunn." #: c3l_membership/forms.py:100 msgid "" -"I am under 18 years of age and have the approval of my legal " -"representative." -msgstr "" -"Ech sinn méi Jonk wéi 18 Joer an hunn d'Zoustëmmung vu mengem Tuteur." +"I am under 18 years of age and have the approval of my legal representative." +msgstr "Ech sinn méi Jonk wéi 18 Joer an hunn d'Zoustëmmung vu mengem Tuteur." #: c3l_membership/forms.py:104 msgid "Become a member" msgstr "Member ginn" -#: c3l_membership/views.py:31 +#: c3l_membership/views.py:33 msgid "by cash" msgstr "mat Boergeld" -#: c3l_membership/views.py:32 +#: c3l_membership/views.py:34 msgid "by wire transfer" msgstr "per Iwwerweisung" -#: c3l_membership/views.py:36 +#: c3l_membership/views.py:38 msgid "by DigiCash" msgstr "per DigiCash" -#: c3l_membership/views.py:37 -msgid "by bitcoin" -msgstr "mat Bitcoin" - -#: c3l_membership/views.py:38 -msgid "by ethereum" -msgstr "mat Ethereum" - -#: c3l_membership/views.py:39 -msgid "by monero" -msgstr "mat Monero" - -#: c3l_membership/views.py:40 -msgid "by zcash" -msgstr "mat Zcash" +#: c3l_membership/views.py:45 +msgid "by" +msgstr "mat" #: c3l_membership/templates/index.html:6 msgid "C3L Membership Application" msgstr "C3L Memberschafts Ufro" -#: c3l_membership/templates/index.html:40 -#: c3l_membership/templates/member.html:16 +#: c3l_membership/templates/index.html:40 c3l_membership/templates/member.html:16 msgid "Membership Application" msgstr "Memberschafts Ufro" @@ -165,16 +148,15 @@ msgstr "Wéi ass dëse Formulaire ze benotzen" #: c3l_membership/templates/index.html:42 msgid "" -"Fill out this form and click on \"Become a member\". Afterwards you will " -"be presented with a PDF, which you have to send to info@c3l.lu or bring " -"it to one of our next events. Print it or save it to your local " -"hardware, because we don't save a copy on our servers for data " -"protection reasons!" +"Fill out this form and click on \"Become a member\". Afterwards you will be " +"presented with a PDF, which you have to send to info@c3l.lu or bring it to one " +"of our next events. Print it or save it to your local hardware, because we " +"don't save a copy on our servers for data protection reasons!" msgstr "" -"Fëllt dëse Formulaire aus a klickt op \"Gitt Member\". Duerno kritt Dir " -"en PDF, deen Dir op info@c3l.lu schéckt oder op ee vun eisen nächsten " -"Eventer matbréngt. Dréckt et oder späichert de PDF op är lokal Hardware, " -"well mir aus Dateschutzgrënn keng Kopie op eisem Server späicheren!" +"Fëllt dëse Formulaire aus a klickt op \"Gitt Member\". Duerno kritt Dir en " +"PDF, deen Dir op info@c3l.lu schéckt oder op ee vun eisen nächsten Eventer " +"matbréngt. Dréckt et oder späichert de PDF op är lokal Hardware, well mir aus " +"Dateschutzgrënn keng Kopie op eisem Server späicheren!" #: c3l_membership/templates/index.html:53 msgid "Required information" @@ -182,8 +164,7 @@ msgstr "Erfuerderlech Informatiounen" #: c3l_membership/templates/index.html:94 msgid "What's difference between the different membership options?" -msgstr "" -"Wat sinn Ënnerscheeder tëscht deene verschiddene Memberschaftsoptiounen?" +msgstr "Wat sinn Ënnerscheeder tëscht deene verschiddene Memberschaftsoptiounen?" #: c3l_membership/templates/index.html:95 msgid "All the options include to following benefits:" @@ -199,11 +180,11 @@ msgstr "" #: c3l_membership/templates/index.html:98 msgid "" -"Access to our hackerspace: ChaosStuff" +"Access to our hackerspace: ChaosStuff" msgstr "" -"Accès an eisen Hackerspace: ChaosStuff" +"Accès an eisen Hackerspace: ChaosStuff" #: c3l_membership/templates/index.html:100 msgid "Becoming a regular member gives you these additional benefits:" @@ -219,11 +200,11 @@ msgstr "Accès op eis intern Mailinglëscht" #: c3l_membership/templates/index.html:105 msgid "" -"You can read more on the membership here." +"You can read more on the membership here." msgstr "" -"Dir kënnt méi iwwert d'Memberschaft hei noliesen." +"Dir kënnt méi iwwert d'Memberschaft hei noliesen." #: c3l_membership/templates/index.html:106 msgid "What are the membership fees?" @@ -232,16 +213,15 @@ msgstr "Wat sinn Cotisatiounen?" #: c3l_membership/templates/index.html:107 #, python-format msgid "" -"The membership fee for the regular membership is %(regular_fee)s€ per " -"year. The membership fee for the supporting membership is " -"%(supporting_fee)s€ per year. If you are a student, all membership fees " -"are %(supporting_fee)s€ per year. For that please select the " -"corresponding option." +"The membership fee for the regular membership is %(regular_fee)s€ per year. " +"The membership fee for the supporting membership is %(supporting_fee)s€ per " +"year. If you are a student, all membership fees are %(supporting_fee)s€ per " +"year. For that please select the corresponding option." msgstr "" "D'Cotisatioun fir d'regulär Memberschaft sinn %(regular_fee)s€ pro Joer. " -"D'Cotisatioun fir d'ënnerstëtzend Memberschaft sinn %(supporting_fee)s€ " -"pro Joer. Wann dir ee Student sidd, sinn all Cotisatiounen " -"%(supporting_fee)s€ pro Joer. Fir dëst wielt déi respektiv Optioun aus." +"D'Cotisatioun fir d'ënnerstëtzend Memberschaft sinn %(supporting_fee)s€ pro " +"Joer. Wann dir ee Student sidd, sinn all Cotisatiounen %(supporting_fee)s€ pro " +"Joer. Fir dëst wielt déi respektiv Optioun aus." #: c3l_membership/templates/index.html:108 msgid "I cannot afford the membership?" @@ -249,13 +229,13 @@ msgstr "Ech ka mir d'Memberschaft net le #: c3l_membership/templates/index.html:109 msgid "" -"If you cannot afford the membership, please contact us via info@c3l.lu " -"first, before filling out the membership form. We will try to find a " -"solution together." +"If you cannot afford the membership, please contact us via info@c3l.lu first, " +"before filling out the membership form. We will try to find a solution " +"together." msgstr "" -"Wann Dir d'Memberschaft net leeschte kënnt, mellt Iech w.e.g. fir " -"d'éischt iwwer info@c3l.lu ier Dir de Membersformular ausfëllt. Mir " -"probéieren zesummen eng Léisung ze fannen." +"Wann Dir d'Memberschaft net leeschte kënnt, mellt Iech w.e.g. fir d'éischt " +"iwwer info@c3l.lu ier Dir de Membersformular ausfëllt. Mir probéieren zesummen " +"eng Léisung ze fannen." #: c3l_membership/templates/index.html:122 msgid "Additional information" @@ -358,9 +338,6 @@ msgstr "Konto Besëtzer:" #: c3l_membership/templates/member.html:85 #: c3l_membership/templates/member.html:96 -#: c3l_membership/templates/member.html:109 -#: c3l_membership/templates/member.html:122 -#: c3l_membership/templates/member.html:135 msgid "Message:" msgstr "Message:" @@ -375,38 +352,41 @@ msgid "Please bring %(price)s€ with you the next time you meet us!" msgstr "Bréngt w.e.g. %(price)s€ mat Iech, wann Dir eis begéint!" #: c3l_membership/templates/member.html:94 -#: c3l_membership/templates/member.html:107 -#: c3l_membership/templates/member.html:120 -#: c3l_membership/templates/member.html:133 msgid "Address:" msgstr "Address:" #: c3l_membership/templates/member.html:95 -#: c3l_membership/templates/member.html:108 -#: c3l_membership/templates/member.html:121 -#: c3l_membership/templates/member.html:134 msgid "Label:" msgstr "Label:" #: c3l_membership/templates/member.html:97 -#: c3l_membership/templates/member.html:110 -#: c3l_membership/templates/member.html:123 -#: c3l_membership/templates/member.html:136 msgid "Amount:" msgstr "Betrag:" -#: c3l_membership/templates/member.html:145 +#: c3l_membership/templates/member.html:106 msgid "Pay with digicash!" msgstr "Bezuel mat DigiCash!" -#: c3l_membership/templates/member.html:150 +#: c3l_membership/templates/member.html:111 msgid "Luxembourg, the" msgstr "Lëtzebuerg, den" -#: c3l_membership/templates/member.html:152 +#: c3l_membership/templates/member.html:113 msgid "Signature of your legal representative" msgstr "Ënnerschrëft vun ärem Tuteur" -#: c3l_membership/templates/member.html:152 +#: c3l_membership/templates/member.html:113 msgid "Your signature" msgstr "Äer Ënnerschrëft" + +#~ msgid "by bitcoin" +#~ msgstr "mat Bitcoin" + +#~ msgid "by ethereum" +#~ msgstr "mat Ethereum" + +#~ msgid "by monero" +#~ msgstr "mat Monero" + +#~ msgid "by zcash" +#~ msgstr "mat Zcash" diff --git a/c3l_membership/views.py b/c3l_membership/views.py --- a/c3l_membership/views.py +++ b/c3l_membership/views.py @@ -2,6 +2,7 @@ import re import subprocess from datetime import date +import requests from flask import Blueprint, current_app, g, render_template, request from flask_babel import gettext from flask_weasyprint import HTML, render_pdf @@ -34,15 +35,18 @@ def index(): ("wire transfer", gettext("by wire transfer")), ] - for k, v in ( - ("DIGICASH_ENABLED", ("digicash", gettext("by DigiCash"))), - ("BITCOIN_ENABLED", ("bitcoin", gettext("by bitcoin"))), - ("ETHEREUM_ENABLED", ("ethereum", gettext("by ethereum"))), - ("MONERO_ENABLED", ("monero", gettext("by monero"))), - ("ZCASH_ENABLED", ("zcash", gettext("by zcash"))), - ): - if current_app.config[k]: - choices.append(v) + if current_app.config["DIGICASH_ENABLED"]: + choices.append(("digicash", gettext("by DigiCash"))) + + for cryptocurrency_label, options in current_app.config["CRYPTOCURRENCIES"].items(): + if options["ENABLED"]: + choices.append( + ( + cryptocurrency_label, + " ".join((gettext("by"), cryptocurrency_label.title())), + ), + ) + form.payment.choices = choices if form.validate_on_submit(): @@ -62,14 +66,15 @@ def index(): if form.starving.data: price = 1 - xml_data["status"] = "Starving" + status = "Starving" elif form.minor_member.data or form.student.data: - xml_data["status"] = "Student" + status = "Student" elif form.membership.data == "supporting": - xml_data["status"] = "Supporter" + status = "Supporter" else: - xml_data["status"] = "Regular" + status = "Regular" + xml_data["status"] = status xml_data["name"] = form.fullname.data xml_data["birthday"] = ( form.birthday.data if form.birthday.data is not None else date(9999, 12, 12) @@ -87,22 +92,21 @@ def index(): ) xml_data["address"] = re.sub("\s+", " ", xml_data["address"]) - if form.payment.data == "bitcoin": - price = subprocess.check_output( - [current_app.config["BITCOIN_CONVERSION_SCRIPT"], str(price)] - ).decode("utf-8") - elif form.payment.data == "ethereum": - price = subprocess.check_output( - [current_app.config["ETHEREUM_CONVERSION_SCRIPT"], str(price)] - ).decode("utf-8") - elif form.payment.data == "monero": - price = subprocess.check_output( - [current_app.config["MONERO_CONVERSION_SCRIPT"], str(price)] - ).decode("utf-8") - elif form.payment.data == "zcash": - price = subprocess.check_output( - [current_app.config["ZCASH_CONVERSION_SCRIPT"], str(price)] - ).decode("utf-8") + if form.payment.data in current_app.config["CRYPTOCURRENCIES"]: + + current_conversion_r = requests.get( + current_app.config["CONVERSION_URL"], timeout=30 + ) + try: + current_conversion_r.raise_for_status() + except: + return 500 + else: + current_conversion = current_conversion_r.json() + commodity = current_app.config["CRYPTOCURRENCIES"][form.payment.data][ + "COMMODITY" + ] + price = current_conversion[commodity][status.upper()] elif form.payment.data == "digicash": price = price * 100 diff --git a/messages.pot b/messages.pot --- a/messages.pot +++ b/messages.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2022-01-17 11:38+0100\n" +"POT-Creation-Date: 2022-01-18 09:55+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -109,32 +109,20 @@ msgstr "" msgid "Become a member" msgstr "" -#: c3l_membership/views.py:31 +#: c3l_membership/views.py:33 msgid "by cash" msgstr "" -#: c3l_membership/views.py:32 +#: c3l_membership/views.py:34 msgid "by wire transfer" msgstr "" -#: c3l_membership/views.py:36 +#: c3l_membership/views.py:38 msgid "by DigiCash" msgstr "" -#: c3l_membership/views.py:37 -msgid "by bitcoin" -msgstr "" - -#: c3l_membership/views.py:38 -msgid "by ethereum" -msgstr "" - -#: c3l_membership/views.py:39 -msgid "by monero" -msgstr "" - -#: c3l_membership/views.py:40 -msgid "by zcash" +#: c3l_membership/views.py:45 +msgid "by" msgstr "" #: c3l_membership/templates/index.html:6 @@ -328,9 +316,6 @@ msgstr "" #: c3l_membership/templates/member.html:85 #: c3l_membership/templates/member.html:96 -#: c3l_membership/templates/member.html:109 -#: c3l_membership/templates/member.html:122 -#: c3l_membership/templates/member.html:135 msgid "Message:" msgstr "" @@ -345,39 +330,30 @@ msgid "Please bring %(price)s€ with you the next time you meet us!" msgstr "" #: c3l_membership/templates/member.html:94 -#: c3l_membership/templates/member.html:107 -#: c3l_membership/templates/member.html:120 -#: c3l_membership/templates/member.html:133 msgid "Address:" msgstr "" #: c3l_membership/templates/member.html:95 -#: c3l_membership/templates/member.html:108 -#: c3l_membership/templates/member.html:121 -#: c3l_membership/templates/member.html:134 msgid "Label:" msgstr "" #: c3l_membership/templates/member.html:97 -#: c3l_membership/templates/member.html:110 -#: c3l_membership/templates/member.html:123 -#: c3l_membership/templates/member.html:136 msgid "Amount:" msgstr "" -#: c3l_membership/templates/member.html:145 +#: c3l_membership/templates/member.html:106 msgid "Pay with digicash!" msgstr "" -#: c3l_membership/templates/member.html:150 +#: c3l_membership/templates/member.html:111 msgid "Luxembourg, the" msgstr "" -#: c3l_membership/templates/member.html:152 +#: c3l_membership/templates/member.html:113 msgid "Signature of your legal representative" msgstr "" -#: c3l_membership/templates/member.html:152 +#: c3l_membership/templates/member.html:113 msgid "Your signature" msgstr "" diff --git a/poetry.lock b/poetry.lock --- a/poetry.lock +++ b/poetry.lock @@ -72,6 +72,14 @@ doc = ["sphinx", "sphinx-rtd-theme"] test = ["pytest-runner", "pytest-cov", "pytest-flake8", "pytest-isort"] [[package]] +name = "certifi" +version = "2021.10.8" +description = "Python package for providing Mozilla's CA Bundle." +category = "main" +optional = false +python-versions = "*" + +[[package]] name = "cffi" version = "1.15.0" description = "Foreign Function Interface for Python calling C code." @@ -83,6 +91,17 @@ python-versions = "*" pycparser = "*" [[package]] +name = "charset-normalizer" +version = "2.0.10" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "main" +optional = false +python-versions = ">=3.5.0" + +[package.extras] +unicode_backport = ["unicodedata2"] + +[[package]] name = "click" version = "8.0.3" description = "Composable command line interface toolkit" @@ -428,6 +447,24 @@ pil = ["pillow"] test = ["pytest", "pytest-cov"] [[package]] +name = "requests" +version = "2.27.1" +description = "Python HTTP for Humans." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = {version = ">=2.0.0,<2.1.0", markers = "python_version >= \"3\""} +idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""} +urllib3 = ">=1.21.1,<1.27" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] +use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] + +[[package]] name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" @@ -475,6 +512,19 @@ optional = false python-versions = ">=3.6" [[package]] +name = "urllib3" +version = "1.26.8" +description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" + +[package.extras] +brotli = ["brotlipy (>=0.6.0)"] +secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] + +[[package]] name = "weasyprint" version = "52.5" description = "The Awesome Document Factory" @@ -544,7 +594,7 @@ testing = ["pytest (>=4.6)", "pytest-che [metadata] lock-version = "1.1" python-versions = ">=3.7.0,<4" -content-hash = "e6337b7e5ae01abe852dbd202497fef50c09546e0a0f98f26b3ee81beb262237" +content-hash = "09986a21dfa3c1e41f48db17b04f4f3bade80e86642fecd895ad3df4b9cf061e" [metadata.files] babel = [ @@ -562,6 +612,10 @@ cairosvg = [ {file = "CairoSVG-2.5.2-py3-none-any.whl", hash = "sha256:98c276b7e4f0caf01e5c7176765c104ffa1aa1461d63b2053b04ab663cf7052b"}, {file = "CairoSVG-2.5.2.tar.gz", hash = "sha256:b0b9929cf5dba005178d746a8036fcf0025550f498ca54db61873322384783bc"}, ] +certifi = [ + {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"}, + {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"}, +] cffi = [ {file = "cffi-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:c2502a1a03b6312837279c8c1bd3ebedf6c12c4228ddbad40912d671ccc8a962"}, {file = "cffi-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:23cfe892bd5dd8941608f93348c0737e369e51c100d03718f108bf1add7bd6d0"}, @@ -614,6 +668,10 @@ cffi = [ {file = "cffi-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:3773c4d81e6e818df2efbc7dd77325ca0dcb688116050fb2b3011218eda36139"}, {file = "cffi-1.15.0.tar.gz", hash = "sha256:920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954"}, ] +charset-normalizer = [ + {file = "charset-normalizer-2.0.10.tar.gz", hash = "sha256:876d180e9d7432c5d1dfd4c5d26b72f099d503e8fcc0feb7532c9289be60fcbd"}, + {file = "charset_normalizer-2.0.10-py3-none-any.whl", hash = "sha256:cb957888737fc0bbcd78e3df769addb41fd1ff8cf950dc9e7ad7793f1bf44455"}, +] click = [ {file = "click-8.0.3-py3-none-any.whl", hash = "sha256:353f466495adaeb40b6b5f592f9f91cb22372351c84caeb068132442a4518ef3"}, {file = "click-8.0.3.tar.gz", hash = "sha256:410e932b050f5eed773c4cda94de75971c89cdb3155a72a0831139a79e5ecb5b"}, @@ -847,6 +905,10 @@ pytz = [ qrcode = [ {file = "qrcode-7.3.1.tar.gz", hash = "sha256:375a6ff240ca9bd41adc070428b5dfc1dcfbb0f2507f1ac848f6cded38956578"}, ] +requests = [ + {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"}, + {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"}, +] six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, @@ -884,6 +946,10 @@ typing-extensions = [ {file = "typing_extensions-4.0.1-py3-none-any.whl", hash = "sha256:7f001e5ac290a0c0401508864c7ec868be4e701886d5b573a9528ed3973d9d3b"}, {file = "typing_extensions-4.0.1.tar.gz", hash = "sha256:4ca091dea149f945ec56afb48dae714f21e8692ef22a395223bcd328961b6a0e"}, ] +urllib3 = [ + {file = "urllib3-1.26.8-py2.py3-none-any.whl", hash = "sha256:000ca7f471a233c2251c6c7023ee85305721bfdf18621ebff4fd17a8653427ed"}, + {file = "urllib3-1.26.8.tar.gz", hash = "sha256:0e7c33d9a63e7ddfcb86780aac87befc2fbddf46c58dbb487e0855f7ceec283c"}, +] weasyprint = [ {file = "WeasyPrint-52.5-py3-none-any.whl", hash = "sha256:3433d657049a65d7d63f545fd71f5efa8aae7f05d24e49e01a757973fd3799f1"}, {file = "WeasyPrint-52.5.tar.gz", hash = "sha256:b37ea02d75ca04babd7becad7341426be332ae560d8f02d664bfa1e9afb18481"}, diff --git a/pyproject.toml b/pyproject.toml --- a/pyproject.toml +++ b/pyproject.toml @@ -17,6 +17,7 @@ WTForms="^3.0.1" WeasyPrint="52.5" djhtml = "^1.4.11" Flask-Babel = "^2.0.0" +requests = "^2.27.1" [tool.poetry.dev-dependencies] black = "^21.12b0"