Liberapay是一個經常出現的捐贈平台。我們幫助您為您欣賞的創作者和項目提供資金。
注意:此WebApp無法自我主持。
想聊天嗎?加入我們的吉特。
另外,您可以在我們的Github沙龍中發布消息。
您可以通過Weblate幫助翻譯Liberapay。當前狀態:
如果您對翻譯Liberapay有疑問,可以在沙龍中詢問他們。
Liberapay最初是從Gratipay分配的,並繼承了其Web Micro-Framework Pando( NéAspen ),該Web基於文件系統路由和簡化。不用擔心,這很簡單。例如,要使LiberApay返回Hello $user, your id is $userid消息,用於url /$user/hello ,您只需要在內部創建文件www/%username/hello.spt 。
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頁面生成消息)。
簡單內部的Python代碼僅用於特定於請求的邏輯,共同的後端代碼在liberapay/ Directory中。
確保首先安裝了以下依賴關係:
然後運行:
make env
現在,您需要給自己超級用戶Postgres權力(如果還沒有完成),並創建兩個數據庫:
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/。
默認情況下沒有提供用戶。您可以像在真實網站上一樣創建帳戶,如果您願意,也可以創建一堆假用戶(但不是很好):
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庫發送RAW SQL查詢來與數據庫進行交互。
與SQL打交道時,官方的PostgreSQL文檔是您的朋友,尤其是“ SQL語言”和“ SQL命令”部分。
DB架構在sql/schema.sql中,但不要直接修改該文件,而是將更改放在sql/branch.sql中。在部署過程中,腳本將在生產DB上運行,更改將合併到sql/schema.sql中。該過程通過release.sh半自動化。
對於我們的樣式,我們使用SASS和Bootstrap3。樣式表處於style/目錄,我們的JavaScript代碼在js/中。我們對兩者的政策都應盡可能少地包括在內:網站幾乎應該在沒有JS的情況下完全可用,並且我們的CSS應盡可能多地利用Bootstrap,而不是包含許多將成為維護負擔的自定義規則。
我們從style/bootstrap/ Directory中的Sass源中編譯自動程序。我們這樣做是為了能夠通過更改style/variables.scss中的值來輕鬆自定義它。修改style/bootstrap/的文件可能是一個壞主意。
對於用戶界面圖標,我們使用bootstrap圖標。可以通過從templates/macros/icons.html調用icon宏來包含圖標,例如{{ icon('liberapay') }} 。圖標存儲在www/assets/icons.svg文件中。要在該文件中添加新圖標,必須將添加的圖標的root <svg>元素轉換為<symbol>元素,僅保留其viewBox屬性並添加id屬性。
如果您在Bootstrap圖標中找不到任何適合您用例的圖標,則可以嘗試搜索Flaticon,Icons8,Putragrammers,Svg Repo和Noun項目等在線目錄。對於品牌圖標,簡單圖標是一個很好的資源。
運行測試套件的最簡單方法是:
make test
這重新製作了測試數據庫的模式並運行所有測試。為了加快事項,您還可以使用以下命令:
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實例僅包含0可以負擔得起的數據,那麼您可以通過將fsync設置為off , wal_level , minimal to max_wal_senders在服務器的配置文件( postgresql.conf )中進一步加速問題。
Liberapay目前支持兩個付款處理器:Stripe和PayPal。
您可以通過運行make stripe-bridge將Stripe的回調轉發到本地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中所述的原則。
注意:Liberapay不能自我託管,本節僅旨在記錄我們如何部署新版本。
Liberapay目前由AWS(愛爾蘭)主持。
要部署該應用程序,只需運行release.sh ,它將指導您完成它。當然,您需要先獲得訪問權限。
CC0公共領域奉獻(有關詳細信息,請參見此討論。)