Liberapayは、繰り返し寄付プラットフォームです。私たちはあなたが感謝するクリエイターとプロジェクトに資金を提供します。
注:このWebAppは自己ホスト可能ではありません。
チャットしたいですか? Gitterに参加してください。
または、GitHubサロンにメッセージを投稿することもできます。
Weblateを介してLiberapayを翻訳するのを手伝うことができます。現在のステータス:
Liberapayの翻訳について質問がある場合は、サロンで尋ねることができます。
LiberapayはもともとGratipayから分岐し、ファイルシステムのルーティングと単純化に基づいたWebマイクロフレームワークPando( NéAspen )を継承しました。心配しないでください、それは非常に簡単です。たとえば、liberapayにHello $user, your id is $userid www/%username/hello.spt /$user/hello 。
from liberapay.utils import get_participant
[---]
participant = get_participant(state)
[---] text/html
{{ _("Hello {0}, your id is {1}", request.path['username'], participant.id) }}
最後の行に示されているように、デフォルトのテンプレートエンジンはJinjaです。
_関数は、メッセージをユーザーの言語に変換しようと試み、変数を適切に逃げます(HTMLページのメッセージが生成されていることはわかっています)。
Simplates内のPythonコードは、リクエスト固有のロジックのみであり、一般的なバックエンドコードはliberapay/ディレクトリにあります。
最初に次の依存関係をインストールしていることを確認してください。
その後、実行:
make env
これで、Superuser Postgres Powers(まだ完了していない場合)を提供し、2つのデータベースを作成する必要があります。
su postgres -c "createuser --superuser $(whoami)"
createdb liberapay
createdb liberapay_tests
より深い理解が必要な場合は、データベースの役割とPostgreSQLのドキュメントのデータベースセクションを管理してください。
その後、DBをセットアップできます。
make schema
環境変数は構成に使用され、デフォルト値はdefaults.envおよびtests/test.envにあります。それぞれlocal.envおよびtests/local.envでそれらをオーバーライドできます。
すべてをインストールしてデータベースを設定したら、アプリを実行できます。
make run
これで、http:// localhost:8339/でアクセスできるようになりました。
デフォルトで提供されるユーザーはありません。実際のWebサイトでアカウントを作成することができます。また、必要に応じて、多くの偽のユーザーを作成することもできます(しかし、それらは素晴らしいものではありません):
make data
アカウントに管理者許可を付与するには、次のようなデータベースを変更します。
psql liberapay -c "update participants set privileges = 1 where username = 'account-username'"
ローカルペイデイを実行するには、http:// localhost:8339/admin/paydayを実行し、[給料日を実行]ボタンをクリックします。 local.envファイルにOVERRIDE_PAYDAY_CHECKS=yesを追加して、間違った時間に給料日を実行するのを防ぐ安全チェックを無効にすることができます。
Pythonコードは、postgres.pyライブラリを介して生のSQLクエリを送信することにより、データベースと対話します。
公式のPostgreSQLドキュメントは、SQL、特に「SQL言語」と「SQLコマンド」のセクションを扱う際の友人です。
DBスキーマはsql/schema.sqlにありますが、そのファイルを直接変更せず、代わりにsql/branch.sqlに変更を配置します。展開中、そのスクリプトは生成DBで実行され、変更はsql/schema.sqlに統合されます。そのプロセスは、 release.shによって半自動化されています。
スタイルには、SASSとBootstrap 3を使用します。StyleSheetsはstyle/ディレクトリにあり、JavaScriptコードはjs/にあります。両方のポリシーは、できるだけ少ないことを含めることです。WebサイトはJSなしではほぼ完全に使用できるはずです。CSSは、維持する負担になる多くのカスタムルールを含めるのではなく、ブートストラップを可能な限り活用する必要があります。
style/bootstrap/ディレクトリのSASSソースからブートストラップをコンパイルします。 style/variables.scssの値を変更することで簡単にカスタマイズできるように、それを行います。 style/bootstrap/でファイルを変更することは、おそらく悪い考えです。
ユーザーインターフェイスアイコンには、ブートストラップアイコンを使用します。アイコンは、 templates/macros/icons.htmlからiconマクロを呼び出してページに含めることができます{{ icon('liberapay') }} 。アイコンは、 www/assets/icons.svgファイルに保存されます。そのファイルに新しいアイコンを追加するには、追加されるアイコンのルート<svg>要素を<symbol>要素に変換し、 viewBox属性のみを保持し、 id属性を追加する必要があります。
ユースケースに適合するブートストラップアイコンにアイコンが見つからない場合は、Flaticon、Icons8、Pictogrammers、SVG Repo、Noun Projectなどのオンラインカタログを検索してみてください。ブランドアイコンの場合、シンプルなアイコンは良いリソースです。
テストスイートを実行する最も簡単な方法は、次のとおりです。
make test
これにより、テストDBのスキーマが再現され、すべてのテストが実行されます。物事をスピードアップするには、次のコマンドを使用することもできます。
make pytest 、テストDBを再現せずにPythonテストのみを実行しますmake pytest-re以前に失敗したテストのみを実行します一部のテストには、外部サービスとのやり取りが含まれます。これらのテストをスピードアップするために、VCRを使用してリクエストと応答を自動的に記録します。レコードは、テストクラスごとにtests/py/fixturesディレクトリにあります。
外部サービスとの対話を追加または変更すると、VCRはレコードに新しいまたは変更されたリクエストが見つからず、デフォルトで新しい要求を録音することを拒否します(詳細については、レコードモードを参照)。その場合、 VCR=new_episodesテストコマンドに追加する(例: make pytest VCR=new_episodes )または廃止されたフィクスチャーファイル( rm tests/py/fixtures/TestPayinsStripe.ymlなど)を削除できます。
iDempotencyキー(StripeのAPIなど)を使用するAPIをテストしている場合、正確に同一でない場合、一部の要求は失敗します。その場合、テストクラスのoffset属性の値を増やして、異なるiDempotencyキーが使用されるようにします。
PostgreSQLは、データの損失を防ぐように設計されているため、デフォルトで多くの同期ディスク書き込みを行います。ブロッキングの書き込みの数を減らすために、 recreate-schema.shスクリプトはsynchronous_commitオプションを自動的にテストデータベースのoffに切り替えますが、これは同期を完全に無効にしません。 PostgreSQLインスタンスに失われる可能性のあるデータのみが含まれている場合は、 fsyncをoffに設定し、 wal_level minimalに、 max_wal_sendersをサーバーの構成ファイル( postgresql.conf )に設定することで0スピードアップできます。
Liberapayは現在、StripeとPayPalの2つの支払いプロセッサをサポートしています。
Stripeのコールバックをmake stripe-bridgeを実行することで、地元のLiberapayインスタンスに転送できます。これを機能させるには、Stripe-Cliプログラムをインストールする必要があります。
すべての新しい依存関係は、悪意のあるコードやセキュリティの脆弱性が含まれていないことを確認するために監査する必要があります。
PIPのハッシュチェックモードを使用して、依存の改ざんから自分自身を保護します。したがって、依存関係を追加またはアップグレードするときは、新しいハッシュを計算して要件ファイルに入れる必要があります。そのためには、Hashinを使用できます。
pip install hashin
hashin package==x.y -r requirements_base.txt
何らかの理由ですべての要件を再ハッシュする必要がある場合は、 make rehash-requirements実行します。
要件ファイルのすべての依存関係をアップグレードするには、 hashin -u -r requirements_base.txtを実行します。新しいサブ依存性が欠落している場合、追加のhashinコマンドを実行する必要がある場合があります。
requirements_tests.txtのテスト依存関係は、これらのルールが生産にインストールされていないため、これらのルールに従わないでください。テスト依存関係の脆弱性から保護するために、開発環境を他のシステムから分離するのはあなた次第です。
個人情報を処理するコードを作成するときは、GDPRにenられている原則に留意してください。
注:Liberapayは自己ホストすることはできません。このセクションは、新しいバージョンの展開方法を文書化することのみを目的としています。
Liberapayは現在、AWS(アイルランド)でホストされています。
アプリを展開するには、単にrelease.sh実行するだけで、それをガイドします。もちろん、最初にアクセスする必要があります。
CC0パブリックドメインの献身(詳細については、この説明を参照してください。)