Liberapay - это платформа пожертвований. Мы помогаем вам финансировать создателей и проекты, которые вы цените.
Примечание: это веб-приложение не является самодовольным.
Хотите пообщаться? Присоединяйтесь к нам на gitter.
В качестве альтернативы вы можете опубликовать сообщение в нашем салоне GitHub.
Вы можете помочь перевести Liberapay с помощью The Wanblate. Текущий статус:
Если у вас есть вопросы о переводе Liberapay, вы можете спросить их в салоне.
Либерапай был первоначально раздроблен от Gratipay и унаследовал свой веб-микро-обрабатный Pando ( Né Aspen), который основан на маршрутизации файловой системы и упрощает. Не волнуйся, это довольно просто. Например /$user/hello чтобы сделать Liberapay вернуть Hello $user, your id is $userid 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 внутри Simplates предназначен только для логики, специфичной для запроса, общий бэкэнд код находится в каталоге liberapay/ .
Убедитесь, что у вас сначала установлены следующие зависимости:
Затем беги:
make env
Теперь вам нужно дать себе Posters Postgres Powers (если это еще не было сделано) и создать две базы данных:
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
Чтобы предоставить разрешения администратора учетной записи, измените базу данных, как SO:
psql liberapay -c "update participants set privileges = 1 where username = 'account-username'"
Чтобы запустить локальную зарплату откройте http: // localhost: 8339/admin/день выплаты зарплаты и нажмите кнопку «Запустить зарплату». Вы можете добавить OVERRIDE_PAYDAY_CHECKS=yes в файле local.env , чтобы отключить проверки безопасности, которые предотвращают запуск зарплаты в неподходящее время.
Код Python взаимодействует с базой данных, отправляя необработанные запросы SQL через библиотеку postgres.py.
Официальная документация PostgreSQL - это ваш друг при работе с SQL, особенно разделы «Язык SQL» и «Команды SQL».
Схема DB находится в sql/schema.sql , но не изменяйте этот файл напрямую, вместо этого размещайте изменения в sql/branch.sql . Во время развертывания этот скрипт будет выполнен на производственном DB, а изменения будут объединены с sql/schema.sql . Этот процесс полуавтоматизирован с помощью release.sh .
Для наших стилей мы используем SASS и Bootstrap 3. Стили -листы находятся в style/ каталоге, а наш код JavaScript находится в js/ . Наша политика для обоих заключается в том, чтобы включить как можно меньше: веб -сайт должен быть почти полностью полезен без JS, и наш CSS должен как можно больше использовать начальную загрузку, а не содержать множество пользовательских правил, которые станут бременем для поддержания.
Мы составляем начальную загрузку из источника SASS в style/bootstrap/ каталоге. Мы делаем это, чтобы иметь возможность легко настраивать его, изменяя значения в style/variables.scss . Изменение файлов в style/bootstrap/ , вероятно, плохая идея.
Для значков пользовательского интерфейса мы используем значки Bootstrap. Значок может быть включен в страницу, вызывая макрос icon из templates/macros/icons.html , например {{ icon('liberapay') }} . Значки хранятся в файле www/assets/icons.svg . Чтобы добавить новый значок в этом файле, элемент root <svg> добавленного значка должен быть превращен в элемент <symbol> , сохраняя только его атрибут viewBox и добавив атрибут id .
Если вы не найдете значок в иконках Bootstrap, которые соответствуют вашим варианту использования, вы можете попытаться найти онлайн -каталоги, такие как Flaticon, Icons8, Pictogrammers, SVG Repo и существительный проект. Для значков бренда простые значки - хороший ресурс.
Самый простой способ запустить тестовый набор - это:
make test
Это воссоздает тестовую схему DB и запускает все тесты. Чтобы ускорить ситуацию, вы также можете использовать следующие команды:
make pytest только запускает тесты Python без воссоздания теста DBmake pytest-re запускает только тесты, которые ранее не удались Некоторые из наших тестов включают взаимодействие с внешними службами. Чтобы ускорить эти тесты, мы записываем запросы и ответы автоматически с помощью видеомагнитофона. Записи находятся в каталоге tests/py/fixtures , один на тестовый класс.
Если вы добавите или изменяете взаимодействие с внешними службами, то тесты потерпят неудачу, поскольку VCR не найдет новый или измененный запрос в записях и отказатся от записи нового запроса по умолчанию (см. В режимах записи для получения дополнительной информации). Когда это произойдет, вы можете добавить VCR=new_episodes в вашу тестовую команду (например, make pytest VCR=new_episodes ), либо удалить устаревшие файлы приспособления (например rm tests/py/fixtures/TestPayinsStripe.yml ).
Если вы тестируете API, который использует ключи от идентичности (например, API Stripe), то некоторые запросы не будут сбой, если они больше не идентичны. В этом случае увеличьте значение атрибута offset тестового класса, чтобы использовать различные ключи от идентичности.
PostgreSQL предназначен для предотвращения потери данных, поэтому он делает много синхронных дисков по умолчанию. Чтобы уменьшить количество этих блокирующих записей, наш сценарий recreate-schema.sh автоматически переключает опцию synchronous_commit , чтобы off тестовую базу данных, однако это не полностью отключает синхронизацию. Если ваш экземпляр PostgreSQL содержит только данные, которые вы можете позволить себе проиграть, то вы можете ускорить вещи дальше, установив fsync на off , wal_level на minimal и max_wal_senders на 0 в файле конфигурации сервера ( postgresql.conf ).
В настоящее время Liberapay поддерживает два платежных процессора: Stripe и PayPal.
Вы можете перенаправить обратные вызовы Stripe в ваш местный экземпляр Liberapay, выполняя make stripe-bridge . Программа 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.
Примечание. Либерапай не может быть самостоятельно, этот раздел предназначен только для того, чтобы документировать, как мы развертываем новые версии.
Либерапай в настоящее время размещен на AWS (Ирландия).
Чтобы развернуть приложение, просто запустить release.sh , оно проведет вас через него. Конечно, вам нужно сначала получить доступ.
CC0 Общественная доменная посвящение (подробности см. В этом обсуждении.)