rename Gittip to Gratipay

This commit is contained in:
Changaco 2014-08-26 18:33:18 +02:00
parent 58c2f934ae
commit 2e1f8c9adb
229 changed files with 1321 additions and 1321 deletions

View File

@ -1,5 +1,5 @@
[extractors] [extractors]
spt = gittip.utils.i18n:extract_spt spt = gratipay.utils.i18n:extract_spt
[jinja2: **.html] [jinja2: **.html]
[spt: **.spt] [spt: **.spt]

8
.gitignore vendored
View File

@ -1,5 +1,5 @@
env/ env/
gittip.egg-info/ gratipay.egg-info/
*~ *~
*.pyc *.pyc
local.env local.env
@ -12,11 +12,11 @@ nosetests.xml
.noseids .noseids
.deps .deps
.sass-cache/ .sass-cache/
gittip.css gratipay.css
.vagrant .vagrant
node_modules/ node_modules/
.DS_Store .DS_Store
docs/_build docs/_build
docs/gittip docs/gratipay
docs/gittip.rst docs/gratipay.rst
_vimrc_local.vim _vimrc_local.vim

View File

@ -7,8 +7,8 @@ install:
- make env node_modules - make env node_modules
- pip install coveralls - pip install coveralls
before_script: before_script:
- echo "DATABASE_URL=dbname=gittip" | tee -a tests/local.env local.env - echo "DATABASE_URL=dbname=gratipay" | tee -a tests/local.env local.env
- psql -U postgres -c 'CREATE DATABASE "gittip";' - psql -U postgres -c 'CREATE DATABASE "gratipay";'
- if [ "`git rev-parse --abbrev-ref HEAD`" = "master" ]; then rm -rf tests/fixtures; fi - if [ "`git rev-parse --abbrev-ref HEAD`" = "master" ]; then rm -rf tests/fixtures; fi
script: make test script: make test
after_success: after_success:
@ -17,7 +17,7 @@ notifications:
email: false email: false
irc: irc:
channels: channels:
- "irc.freenode.org#gittip" - "irc.freenode.org#gratipay"
on_success: change on_success: change
on_failure: always on_failure: always
template: template:

View File

@ -1,14 +1,14 @@
## Contributing to Gittip ## Contributing to Gratipay
If you are opening a new issue or submitting a pull request, **go for it!** If you are opening a new issue or submitting a pull request, **go for it!**
Don't be afraid that it's a dumb idea or a duplicate of another issue or an Don't be afraid that it's a dumb idea or a duplicate of another issue or an
unwanted change or whatever. Maybe it is! We're still glad to have you! :^) unwanted change or whatever. Maybe it is! We're still glad to have you! :^)
**License.** Gittip is [licensed under **License.** Gratipay is [licensed under
CC0](https://github.com/gittip/www.gittip.com/tree/master/COPYING), i.e., CC0](https://github.com/gratipay/www.gratipay.com/tree/master/COPYING), i.e.,
it's public domain. it's public domain.
**More info.** If you want to really get involved, then check out our full **More info.** If you want to really get involved, then check out our full
documentation for contributors: documentation for contributors:
http://building.gittip.com/ http://building.gratipay.com/

View File

@ -1,4 +1,4 @@
Gittip is in the public domain, via the "CC0 1.0 Universal - Public Domain Gratipay is in the public domain, via the "CC0 1.0 Universal - Public Domain
Dedication" from the Creative Commons. Dedication" from the Creative Commons.

View File

@ -1,4 +1,4 @@
# Dockerfile to build and run Gittip # Dockerfile to build and run Gratipay
# Version 0.1 (April 15, 2014) # Version 0.1 (April 15, 2014)
################################################## General Information ################################################## ################################################## General Information ##################################################
@ -34,21 +34,21 @@ RUN apt-get -y install \
################################################## Configure Postgres ################################################# ################################################## Configure Postgres #################################################
RUN /etc/init.d/postgresql start && su postgres -c "createuser --superuser root" && su postgres -c "createdb gittip" RUN /etc/init.d/postgresql start && su postgres -c "createuser --superuser root" && su postgres -c "createdb gratipay"
################################################# Clone + Setup Gittip ################################################ ################################################# Clone + Setup Gratipay ################################################
RUN cd /srv && wget --quiet https://github.com/gittip/www.gittip.com/archive/master.zip && unzip master.zip RUN cd /srv && wget --quiet https://github.com/gratipay/www.gratipay.com/archive/master.zip && unzip master.zip
RUN cd /srv/www.gittip.com-master && make env && /etc/init.d/postgresql start && make schema && make schema data RUN cd /srv/www.gratipay.com-master && make env && /etc/init.d/postgresql start && make schema && make schema data
################################################ Create a Launch Script ############################################### ################################################ Create a Launch Script ###############################################
RUN echo "#!/bin/bash" >> /usr/bin/gittip RUN echo "#!/bin/bash" >> /usr/bin/gratipay
RUN echo "/etc/init.d/postgresql start" >> /usr/bin/gittip RUN echo "/etc/init.d/postgresql start" >> /usr/bin/gratipay
RUN echo "cd /srv/www.gittip.com-master && make run" >> /usr/bin/gittip RUN echo "cd /srv/www.gratipay.com-master && make run" >> /usr/bin/gratipay
RUN chmod +x /usr/bin/gittip RUN chmod +x /usr/bin/gratipay
################################################### Set an Entrypoint ################################################# ################################################### Set an Entrypoint #################################################
ENTRYPOINT ["/usr/bin/gittip"] ENTRYPOINT ["/usr/bin/gratipay"]

View File

@ -43,7 +43,7 @@ module.exports = function(grunt) {
jshintrc: '.jshintrc', jshintrc: '.jshintrc',
globals: { globals: {
Gittip: true, Gratipay: true,
_gttp: true, _gttp: true,
gttpURI: true, gttpURI: true,
alert: true alert: true

View File

@ -14,7 +14,7 @@ py_test := $(honcho) -e $(test_env_files) run $(env_bin)/py.test
env: requirements.txt requirements_tests.txt setup.py env: requirements.txt requirements_tests.txt setup.py
$(python) $(venv) \ $(python) $(venv) \
--unzip-setuptools \ --unzip-setuptools \
--prompt="[gittip] " \ --prompt="[gratipay] " \
--never-download \ --never-download \
--extra-search-dir=./vendor/ \ --extra-search-dir=./vendor/ \
--distribute \ --distribute \
@ -37,18 +37,18 @@ run: env
PATH=$(env_bin):$(PATH) $(honcho_run) web PATH=$(env_bin):$(PATH) $(honcho_run) web
py: env py: env
$(honcho_run) $(env_bin)/python -i -c 'from gittip.wireup import env, db; db = db(env())' $(honcho_run) $(env_bin)/python -i -c 'from gratipay.wireup import env, db; db = db(env())'
test-schema: env test-schema: env
$(honcho) -e $(test_env_files) run ./recreate-schema.sh $(honcho) -e $(test_env_files) run ./recreate-schema.sh
pyflakes: env pyflakes: env
$(env_bin)/pyflakes bin gittip tests $(env_bin)/pyflakes bin gratipay tests
test: test-schema pytest jstest test: test-schema pytest jstest
pytest: env pytest: env
$(py_test) --cov gittip ./tests/py/ $(py_test) --cov gratipay ./tests/py/
@$(MAKE) --no-print-directory pyflakes @$(MAKE) --no-print-directory pyflakes
retest: env retest: env
@ -56,7 +56,7 @@ retest: env
@$(MAKE) --no-print-directory pyflakes @$(MAKE) --no-print-directory pyflakes
test-cov: env test-cov: env
$(py_test) --cov-report html --cov gittip ./tests/py/ $(py_test) --cov-report html --cov gratipay ./tests/py/
tests: test tests: test

172
README.md
View File

@ -1,13 +1,13 @@
# Welcome to Gittip [<img height="26px" src="https://raw.githubusercontent.com/gittip/www.gittip.com/master/www/assets/%25version/gittip.opengraph.png"/>](https://www.gittip.com/) # Welcome to Gratipay [<img height="26px" src="https://raw.githubusercontent.com/gratipay/www.gratipay.com/master/www/assets/%25version/gratipay.opengraph.png"/>](https://www.gratipay.com/)
[![Build Status](http://img.shields.io/travis/gittip/www.gittip.com/master.svg)](https://travis-ci.org/gittip/www.gittip.com) [![Build Status](http://img.shields.io/travis/gratipay/www.gratipay.com/master.svg)](https://travis-ci.org/gratipay/www.gratipay.com)
[![Coverage Status](https://img.shields.io/coveralls/gittip/www.gittip.com.svg)](https://coveralls.io/r/gittip/www.gittip.com?branch=master) [![Coverage Status](https://img.shields.io/coveralls/gratipay/www.gratipay.com.svg)](https://coveralls.io/r/gratipay/www.gratipay.com?branch=master)
[![HuBoard badge](http://img.shields.io/badge/Hu-Board-7965cc.svg)](https://huboard.com/gittip/www.gittip.com) [![HuBoard badge](http://img.shields.io/badge/Hu-Board-7965cc.svg)](https://huboard.com/gratipay/www.gratipay.com)
[![Open Bounties](https://api.bountysource.com/badge/team?team_id=423&style=bounties_received)](https://www.bountysource.com/teams/gittip/issues) [![Open Bounties](https://api.bountysource.com/badge/team?team_id=423&style=bounties_received)](https://www.bountysource.com/teams/gratipay/issues)
Gittip is a weekly gift exchange, helping to create a culture of generosity. Gratipay is a weekly gift exchange, helping to create a culture of generosity.
If you'd like to learn more, check out <https://gittip.com/about>. If you'd like to learn more, check out <https://gratipay.com/about>.
If you'd like to contribute to Gittip, check out <http://building.gittip.com>. If you'd like to contribute to Gratipay, check out <http://building.gratipay.com>.
Quick Start Quick Start
=========== ===========
@ -18,10 +18,10 @@ Local
Given Python 2.7, Postgres 9.3, and a C/make toolchain: Given Python 2.7, Postgres 9.3, and a C/make toolchain:
``` ```
$ git clone git@github.com:gittip/www.gittip.com.git $ git clone git@github.com:gratipay/www.gratipay.com.git
$ cd www.gittip.com $ cd www.gratipay.com
$ sudo -u postgres createuser --superuser $USER $ sudo -u postgres createuser --superuser $USER
$ createdb gittip $ createdb gratipay
$ make schema data $ make schema data
$ make run $ make run
``` ```
@ -53,8 +53,8 @@ Docker
Given some version(?) of Docker: Given some version(?) of Docker:
``` ```
$ docker build -t gittip . $ docker build -t gratipay .
$ docker run -p 8537:8537 gittip $ docker run -p 8537:8537 gratipay
``` ```
[Read more](#docker-1). [Read more](#docker-1).
@ -70,7 +70,7 @@ Table of Contents
- [Vagrant](#vagrant) - [Vagrant](#vagrant)
- [Docker](#docker) - [Docker](#docker)
- [Help!](#help) - [Help!](#help)
- [Configuration](https://github.com/gittip/www.gittip.com/wiki/Configuration) - [Configuration](https://github.com/gratipay/www.gratipay.com/wiki/Configuration)
- [Modifying CSS](#modifying-css) - [Modifying CSS](#modifying-css)
- [Testing](#testing-) - [Testing](#testing-)
- [Setting up a Database](#local-database-setup) - [Setting up a Database](#local-database-setup)
@ -82,15 +82,15 @@ Table of Contents
Installation Installation
============ ============
Thanks for hacking on Gittip! Be sure to review Thanks for hacking on Gratipay! Be sure to review
[CONTRIBUTING](https://github.com/gittip/www.gittip.com/blob/master/CONTRIBUTING.md#readme) [CONTRIBUTING](https://github.com/gratipay/www.gratipay.com/blob/master/CONTRIBUTING.md#readme)
as well if that's what you're planning to do. as well if that's what you're planning to do.
Dependencies Dependencies
------------ ------------
Building `www.gittip.com` requires [Python Building `www.gratipay.com` requires [Python
2.7](http://python.org/download/releases/2.7.4/), and a gcc/make toolchain. 2.7](http://python.org/download/releases/2.7.4/), and a gcc/make toolchain.
All Python library dependencies are bundled in the repo (under `vendor/`). If All Python library dependencies are bundled in the repo (under `vendor/`). If
@ -104,7 +104,7 @@ On Debian or Ubuntu you will need the following packages:
To configure local Postgres create default role and database: To configure local Postgres create default role and database:
$ sudo -u postgres createuser --superuser $USER $ sudo -u postgres createuser --superuser $USER
$ createdb gittip $ createdb gratipay
If you are getting an error about `unknown argument: '-mno-fused-madd'` when If you are getting an error about `unknown argument: '-mno-fused-madd'` when
running `make`, then add running `make`, then add
@ -118,8 +118,8 @@ for more information](http://stackoverflow.com/a/22355874/347246)):
Building Building
-------- --------
All Python dependencies (including virtualenv) are bundled with Gittip in the All Python dependencies (including virtualenv) are bundled with Gratipay in the
vendor/ directory. Gittip is designed so that you don't manage its vendor/ directory. Gratipay is designed so that you don't manage its
virtualenv directly and you don't download its dependencies at build virtualenv directly and you don't download its dependencies at build
time. time.
@ -131,7 +131,7 @@ in a sandbox:
$ make env $ make env
If you haven't run Gittip for a while, you can reinstall the dependencies: If you haven't run Gratipay for a while, you can reinstall the dependencies:
$ make clean env $ make clean env
@ -145,15 +145,15 @@ Launching
--------- ---------
Once you've installed Python and Postgres and set up a database, you can use Once you've installed Python and Postgres and set up a database, you can use
make to build and launch Gittip: make to build and launch Gratipay:
$ make run $ make run
If you don't have make, look at the Makefile to see what steps you need If you don't have make, look at the Makefile to see what steps you need
to perform to build and launch Gittip. The Makefile is pretty simple and to perform to build and launch Gratipay. The Makefile is pretty simple and
straightforward. straightforward.
If Gittip launches successfully it will look like this: If Gratipay launches successfully it will look like this:
``` ```
$ make run $ make run
@ -181,7 +181,7 @@ pid-1261 thread-140735191843600 (MainThread) show_tracebacks True
pid-1261 thread-140735191843600 (MainThread) www_root None default pid-1261 thread-140735191843600 (MainThread) www_root None default
pid-1261 thread-140735191843600 (MainThread) www_root www/ environment variable ASPEN_WWW_ROOT=www/ pid-1261 thread-140735191843600 (MainThread) www_root www/ environment variable ASPEN_WWW_ROOT=www/
pid-1261 thread-140735191843600 (MainThread) project_root is relative to CWD: '.'. pid-1261 thread-140735191843600 (MainThread) project_root is relative to CWD: '.'.
pid-1261 thread-140735191843600 (MainThread) project_root set to /Users/whit537/personal/gittip/www.gittip.com. pid-1261 thread-140735191843600 (MainThread) project_root set to /Users/whit537/personal/gratipay/www.gratipay.com.
pid-1261 thread-140735191843600 (MainThread) Found plugin for renderer 'jinja2' pid-1261 thread-140735191843600 (MainThread) Found plugin for renderer 'jinja2'
pid-1261 thread-140735191843600 (MainThread) Won't log to Sentry (SENTRY_DSN is empty). pid-1261 thread-140735191843600 (MainThread) Won't log to Sentry (SENTRY_DSN is empty).
pid-1261 thread-140735191843600 (MainThread) Renderers (*ed are unavailable, CAPS is default): pid-1261 thread-140735191843600 (MainThread) Renderers (*ed are unavailable, CAPS is default):
@ -195,45 +195,45 @@ pid-1261 thread-140735191843600 (MainThread) stdlib_template
You should then find this in your browser at You should then find this in your browser at
[http://localhost:8537/](http://localhost:8537/): [http://localhost:8537/](http://localhost:8537/):
![Success](https://raw.github.com/gittip/www.gittip.com/master/img-src/success.png) ![Success](https://raw.github.com/gratipay/www.gratipay.com/master/img-src/success.png)
Congratulations! Sign in using Twitter or GitHub and you're off and Congratulations! Sign in using Twitter or GitHub and you're off and
running. At some point, try [running the test suite](#testing-). running. At some point, try [running the test suite](#testing-).
Vagrant Vagrant
------- -------
If you have vagrant installed, you can run gittip by running `vagrant up` from the project directory. Please note that if you ever switch between running gittip on your own machine to vagrant or vice versa, you will need to run `make clean`. If you have vagrant installed, you can run gratipay by running `vagrant up` from the project directory. Please note that if you ever switch between running gratipay on your own machine to vagrant or vice versa, you will need to run `make clean`.
If you're using Vagrant for the first time you'll need [Vagrant](http://www.vagrantup.com/) and [VirtualBox](https://www.virtualbox.org/) installed. If you're on Linux you'll need to install `nfs-kernel-server`. If you're using Vagrant for the first time you'll need [Vagrant](http://www.vagrantup.com/) and [VirtualBox](https://www.virtualbox.org/) installed. If you're on Linux you'll need to install `nfs-kernel-server`.
The Vagrantfile will download a custom made image from the internet. If you have a slow internet connection, you can download a local copy of this file, by running: The Vagrantfile will download a custom made image from the internet. If you have a slow internet connection, you can download a local copy of this file, by running:
`curl http://downloads.gittipllc.netdna-cdn.com/gittip.box` `curl http://downloads.gratipayllc.netdna-cdn.com/gratipay.box`
Once downloaded, vagrant will use this local file automatically when you run `vagrant up`. Vagrant is setup to use key based SSH authentication, if you're prompted for a password please use `vagrant`. Once downloaded, vagrant will use this local file automatically when you run `vagrant up`. Vagrant is setup to use key based SSH authentication, if you're prompted for a password please use `vagrant`.
**Ubuntu users:** If you experience problems, please see [this **Ubuntu users:** If you experience problems, please see [this
issue](https://github.com/gittip/www.gittip.com/pull/2321#issuecomment-41455169). issue](https://github.com/gratipay/www.gratipay.com/pull/2321#issuecomment-41455169).
As mentioned, you will also need to be wary of projects that are nested As mentioned, you will also need to be wary of projects that are nested
in encrypted directories. in encrypted directories.
Docker Docker
------------ ------------
You can also install/run Gittip with Docker. You can also install/run Gratipay with Docker.
Either pull the image from the Docker Index: Either pull the image from the Docker Index:
``` ```
$ docker pull citruspi/gittip $ docker pull citruspi/gratipay
``` ```
or build it with the included Dockerfile: or build it with the included Dockerfile:
``` ```
$ git clone git@github.com:gittip/www.gittip.com.git $ git clone git@github.com:gratipay/www.gratipay.com.git
$ cd www.gittip.com $ cd www.gratipay.com
$ docker build -t gittip . $ docker build -t gratipay .
``` ```
Once you have the image, get the Image ID with Once you have the image, get the Image ID with
@ -279,24 +279,24 @@ $ docker kill [container_id]
Help! Help!
----- -----
If you get stuck somewhere along the way, you can find help in the #gittip If you get stuck somewhere along the way, you can find help in the #gratipay
channel on [Freenode](http://webchat.freenode.net/) or in the [issue channel on [Freenode](http://webchat.freenode.net/) or in the [issue
tracker](/gittip/www.gittip.com/issues/new) here on GitHub. tracker](/gratipay/www.gratipay.com/issues/new) here on GitHub.
Thanks for installing Gittip! :smiley: Thanks for installing Gratipay! :smiley:
Modifying CSS Modifying CSS
============= =============
We use SCSS, with files stored in `scss/`. All of the individual files are We use SCSS, with files stored in `scss/`. All of the individual files are
combined in `scss/gittip.scss` which itself is compiled by `libsass` in combined in `scss/gratipay.scss` which itself is compiled by `libsass` in
`www/assets/%version/gittip.css.spt` on each request. `www/assets/%version/gratipay.css.spt` on each request.
Testing [![Build Status](http://img.shields.io/travis/gittip/www.gittip.com/master.svg)](https://travis-ci.org/gittip/www.gittip.com) Testing [![Build Status](http://img.shields.io/travis/gratipay/www.gratipay.com/master.svg)](https://travis-ci.org/gratipay/www.gratipay.com)
======= =======
Please write unit tests for all new code and all code you change. Gittip's Please write unit tests for all new code and all code you change. Gratipay's
test suite uses the py.test test runner, which will be installed into the test suite uses the py.test test runner, which will be installed into the
virtualenv you get by running `make env`. As a rule of thumb, each test case virtualenv you get by running `make env`. As a rule of thumb, each test case
should perform one assertion. should perform one assertion.
@ -311,8 +311,8 @@ database configured in your testing environment.
To invoke py.test directly you should use the `honcho` utility that comes To invoke py.test directly you should use the `honcho` utility that comes
with the install. First `make tests/env`, activate the virtualenv and then: with the install. First `make tests/env`, activate the virtualenv and then:
[gittip] $ cd tests/ [gratipay] $ cd tests/
[gittip] $ honcho -e defaults.env,local.env run py.test [gratipay] $ honcho -e defaults.env,local.env run py.test
Local Database Setup Local Database Setup
-------------------- --------------------
@ -326,15 +326,15 @@ specify a URI to `psql`, and that was added in 9.2.
+ Mac: use Homerew: `brew install postgres` + Mac: use Homerew: `brew install postgres`
+ Ubuntu: use Apt: `apt-get install postgresql postgresql-contrib libpq-dev` + Ubuntu: use Apt: `apt-get install postgresql postgresql-contrib libpq-dev`
To setup the instance for gittip's needs run: To setup the instance for gratipay's needs run:
$ sudo -u postgres createuser --superuser $USER $ sudo -u postgres createuser --superuser $USER
$ createdb gittip $ createdb gratipay
$ createdb gittip-test $ createdb gratipay-test
You can speed up the test suite when using a regular HDD by running: You can speed up the test suite when using a regular HDD by running:
$ psql -q gittip-test -c 'alter database "gittip-test" set synchronous_commit to off' $ psql -q gratipay-test -c 'alter database "gratipay-test" set synchronous_commit to off'
### Schema ### Schema
@ -352,7 +352,7 @@ production database as part of deployment.
### Example data ### Example data
The gittip database created in the last step is empty. To populate it with The gratipay database created in the last step is empty. To populate it with
some fake data, so that more of the site is functional, run this command: some fake data, so that more of the site is functional, run this command:
$ make data $ make data
@ -361,37 +361,37 @@ some fake data, so that more of the site is functional, run this command:
API API
=== ===
The Gittip API is comprised of these six endpoints: The Gratipay API is comprised of these six endpoints:
**[/about/charts.json](https://www.gittip.com/about/charts.json)** **[/about/charts.json](https://www.gratipay.com/about/charts.json)**
([source](https://github.com/gittip/www.gittip.com/tree/master/www/about/charts.json.spt))&mdash;<i>public</i>&mdash;Returns ([source](https://github.com/gratipay/www.gratipay.com/tree/master/www/about/charts.json.spt))&mdash;<i>public</i>&mdash;Returns
an array of objects, one per week, showing aggregate numbers over time. The an array of objects, one per week, showing aggregate numbers over time. The
[charts](https://www.gittip.com/about/charts.html) page uses this. [charts](https://www.gratipay.com/about/charts.html) page uses this.
**[/about/paydays.json](https://www.gittip.com/about/paydays.json)** **[/about/paydays.json](https://www.gratipay.com/about/paydays.json)**
([source](https://github.com/gittip/www.gittip.com/tree/master/www/about/paydays.json.spt))&mdash;<i>public</i>&mdash;Returns ([source](https://github.com/gratipay/www.gratipay.com/tree/master/www/about/paydays.json.spt))&mdash;<i>public</i>&mdash;Returns
an array of objects, one per week, showing aggregate numbers over time. The an array of objects, one per week, showing aggregate numbers over time. The
[charts](https://www.gittip.com/about/charts.html) page used to use this. [charts](https://www.gratipay.com/about/charts.html) page used to use this.
**[/about/stats.json](https://www.gittip.com/about/stats.json)** **[/about/stats.json](https://www.gratipay.com/about/stats.json)**
([source](https://github.com/gittip/www.gittip.com/tree/master/www/about/stats.spt))&mdash;<i>public</i>&mdash;Returns ([source](https://github.com/gratipay/www.gratipay.com/tree/master/www/about/stats.spt))&mdash;<i>public</i>&mdash;Returns
an object giving a point-in-time snapshot of Gittip. The an object giving a point-in-time snapshot of Gratipay. The
[stats](https://www.gittip.com/about/stats.html) page displays the same info. [stats](https://www.gratipay.com/about/stats.html) page displays the same info.
**/`%username`/charts.json** **/`%username`/charts.json**
([example](https://www.gittip.com/Gittip/charts.json), ([example](https://www.gratipay.com/Gratipay/charts.json),
[source](https://github.com/gittip/www.gittip.com/tree/master/www/%25username/charts.json.spt))&mdash;<i>public</i>&mdash;Returns [source](https://github.com/gratipay/www.gratipay.com/tree/master/www/%25username/charts.json.spt))&mdash;<i>public</i>&mdash;Returns
an array of objects, one per week, showing aggregate numbers over time for the an array of objects, one per week, showing aggregate numbers over time for the
given user. given user.
**/`%username`/public.json** **/`%username`/public.json**
([example](https://www.gittip.com/Gittip/public.json), ([example](https://www.gratipay.com/Gratipay/public.json),
[source](https://github.com/gittip/www.gittip.com/tree/master/www/%25username/public.json.spt))&mdash;<i>public</i>&mdash;Returns an object with these keys: [source](https://github.com/gratipay/www.gratipay.com/tree/master/www/%25username/public.json.spt))&mdash;<i>public</i>&mdash;Returns an object with these keys:
- "receiving"&mdash;an estimate of the amount the given participant will - "receiving"&mdash;an estimate of the amount the given participant will
receive this week receive this week
- "my_tip"&mdash;logged-in user's tip to the Gittip participant in - "my_tip"&mdash;logged-in user's tip to the Gratipay participant in
question; possible values are: question; possible values are:
- `undefined` (key not present)&mdash;there is no logged-in user - `undefined` (key not present)&mdash;there is no logged-in user
@ -425,7 +425,7 @@ given user.
**/`%username`/tips.json** **/`%username`/tips.json**
([source](https://github.com/gittip/www.gittip.com/tree/master/www/%25username/tips.json.spt))&mdash;<i>private</i>&mdash;Responds ([source](https://github.com/gratipay/www.gratipay.com/tree/master/www/%25username/tips.json.spt))&mdash;<i>private</i>&mdash;Responds
to `GET` with an array of objects representing your current tips. `POST` the to `GET` with an array of objects representing your current tips. `POST` the
same structure back in order to update tips in bulk (be sure to set same structure back in order to update tips in bulk (be sure to set
`Content-Type` to `application/json` instead of `Content-Type` to `application/json` instead of
@ -437,50 +437,50 @@ querystring (not the body!) with a value of `yes`, `true`, or `1`, then any
tips not in the array you `POST` will be zeroed out. tips not in the array you `POST` will be zeroed out.
NOTE: The amounts must be encoded as a string (rather than a number). NOTE: The amounts must be encoded as a string (rather than a number).
Additionally, currently, the only supported platform is 'gittip'. Additionally, currently, the only supported platform is 'gratipay'.
This endpoint requires authentication. Look for your API key on your [profile This endpoint requires authentication. Look for your API key on your [profile
page](https://www.gittip.com/about/me/account), and pass it as the basic auth page](https://www.gratipay.com/about/me/account), and pass it as the basic auth
username. E.g.: username. E.g.:
``` ```
curl https://www.gittip.com/foobar/tips.json \ curl https://www.gratipay.com/foobar/tips.json \
-u API_KEY: \ -u API_KEY: \
-X POST \ -X POST \
-d'[{"username":"bazbuz", "platform":"gittip", "amount": "1.00"}]' \ -d'[{"username":"bazbuz", "platform":"gratipay", "amount": "1.00"}]' \
-H"Content-Type: application/json" -H"Content-Type: application/json"
``` ```
API Implementations API Implementations
------------------- -------------------
Below are some projects that use the Gittip APIs, that can serve as inspiration Below are some projects that use the Gratipay APIs, that can serve as inspiration
for your project! for your project!
- [Drupal: Gittip](https://drupal.org/project/gittip): Includes a Gittip - [Drupal: Gratipay](https://drupal.org/project/gratipay): Includes a Gratipay
giving field type to let you implement the Khan academy model for users on giving field type to let you implement the Khan academy model for users on
your Drupal site. your Drupal site.
- [Node.js: Node-Gittip](https://npmjs.org/package/gittip) (also see [Khan - [Node.js: Node-Gratipay](https://npmjs.org/package/gratipay) (also see [Khan
Academy's setup](http://ejohn.org/blog/gittip-at-khan-academy/)) Academy's setup](http://ejohn.org/blog/gratipay-at-khan-academy/))
- [Ruby: gratitude](https://github.com/JohnKellyFerguson/gratitude): A ruby - [Ruby: gratitude](https://github.com/JohnKellyFerguson/gratitude): A ruby
gem that wraps the Gittip API. gem that wraps the Gratipay API.
- [WordPress: WP-Gittip](https://github.com/daankortenbach/WP-Gittip) - [WordPress: WP-Gratipay](https://github.com/daankortenbach/WP-Gratipay)
- [hubot-gittip](https://github.com/myplanetdigital/hubot-gittip): A Hubot - [hubot-gratipay](https://github.com/myplanetdigital/hubot-gratipay): A Hubot
script for interacting with a shared Gittip account. script for interacting with a shared Gratipay account.
- [gittip-collab](https://github.com/engineyard/gittip-collab): A Khan-style - [gratipay-collab](https://github.com/engineyard/gratipay-collab): A Khan-style
tool for managing a Gittip account as a team. tool for managing a Gratipay account as a team.
- [WWW::Gittip](https://metacpan.org/pod/WWW::Gittip): A Perl module - [WWW::Gratipay](https://metacpan.org/pod/WWW::Gratipay): A Perl module
implementing the Gittip API more or less implementing the Gratipay API more or less
- [php-curl-class](https://github.com/php-curl-class/php-curl-class/blob/master/examples/gittip_send_tip.php): A php class to tip using the Gittip API. - [php-curl-class](https://github.com/php-curl-class/php-curl-class/blob/master/examples/gratipay_send_tip.php): A php class to tip using the Gratipay API.
- [gittip-twisted](https://github.com/TigerND/gittip-twisted): Gittip client - [gratipay-twisted](https://github.com/TigerND/gratipay-twisted): Gratipay client
for the Twisted framework for the Twisted framework
@ -488,11 +488,11 @@ Glossary
======== ========
**Account Elsewhere** - An entity's registration on a platform other than **Account Elsewhere** - An entity's registration on a platform other than
Gittip (e.g., Twitter). Gratipay (e.g., Twitter).
**Entity** - An entity. **Entity** - An entity.
**Participant** - An entity registered with Gittip. **Participant** - An entity registered with Gratipay.
**User** - A person using the Gittip website. Can be authenticated or **User** - A person using the Gratipay website. Can be authenticated or
anonymous. If authenticated, the user is guaranteed to also be a participant. anonymous. If authenticated, the user is guaranteed to also be a participant.

10
Vagrantfile vendored
View File

@ -11,11 +11,11 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
#For now we have a custom built vagrant image. It was built in the following manner: #For now we have a custom built vagrant image. It was built in the following manner:
#-Use 'precise64' as a base. #-Use 'precise64' as a base.
#-perform a 'vagrant up' using this vagrantfile: https://github.com/gittip/www.gittip.com/blob/83312e60c6b31c298ffca61036baa9849044c75e/Vagrantfile #-perform a 'vagrant up' using this vagrantfile: https://github.com/gratipay/www.gratipay.com/blob/83312e60c6b31c298ffca61036baa9849044c75e/Vagrantfile
#-drop database gittip #-drop database gratipay
#-drop role gittip #-drop role gratipay
config.vm.box = "gittip" config.vm.box = "gratipay"
config.vm.box_url = File.exist?("gittip.box") ? "file://gittip.box" : "http://downloads.gittipllc.netdna-cdn.com/gittip.box" config.vm.box_url = File.exist?("gratipay.box") ? "file://gratipay.box" : "http://downloads.gratipayllc.netdna-cdn.com/gratipay.box"
# Sync the project directory and expose the app # Sync the project directory and expose the app
config.vm.network "private_network", ip: "172.27.36.119" config.vm.network "private_network", ip: "172.27.36.119"

View File

@ -76,8 +76,8 @@ then
exit "Too many backups!" exit "Too many backups!"
fi fi
confirm "Backup the Gittip database to $FILEPATH?" confirm "Backup the Gratipay database to $FILEPATH?"
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
export PGSSLMODE=require export PGSSLMODE=require
pg_dump `heroku config:get DATABASE_URL -a gittip` > $FILEPATH pg_dump `heroku config:get DATABASE_URL -a gratipay` > $FILEPATH
fi fi

View File

@ -42,15 +42,15 @@ db_exists() {
return 1; return 1;
} }
if ! db_exists gittip-test; if ! db_exists gratipay-test;
then then
createdb gittip-test createdb gratipay-test
psql -q gittip-test -c 'alter database "gittip-test" set synchronous_commit to off' psql -q gratipay-test -c 'alter database "gratipay-test" set synchronous_commit to off'
fi fi
if ! db_exists gittip; if ! db_exists gratipay;
then then
createdb gittip createdb gratipay
fi fi
echo "done" echo "done"

View File

@ -9,10 +9,10 @@ interfacing with PayPal's MassPay feature.
This script provides for: This script provides for:
1. Computing an input CSV by hitting the Gittip database directly. 1. Computing an input CSV by hitting the Gratipay database directly.
2. Computing two output CSVs (one to upload to PayPal, the second to use for POSTing 2. Computing two output CSVs (one to upload to PayPal, the second to use for POSTing
the exchanges back to Gittip) the exchanges back to Gratipay)
3. POSTing the exchanges back to Gittip via the HTTP API. 3. POSTing the exchanges back to Gratipay via the HTTP API.
The idea is that you run steps 1 and 2, then run through the MassPay UI on the The idea is that you run steps 1 and 2, then run through the MassPay UI on the
PayPal website using the appropriate CSV from step 2, then run step 3. PayPal website using the appropriate CSV from step 2, then run step 3.
@ -35,7 +35,7 @@ os.chdir('../masspay')
ts = datetime.datetime.now().strftime('%Y-%m-%d') ts = datetime.datetime.now().strftime('%Y-%m-%d')
INPUT_CSV = '{}.input.csv'.format(ts) INPUT_CSV = '{}.input.csv'.format(ts)
PAYPAL_CSV = '{}.output.paypal.csv'.format(ts) PAYPAL_CSV = '{}.output.paypal.csv'.format(ts)
GITTIP_CSV = '{}.output.gittip.csv'.format(ts) GITTIP_CSV = '{}.output.gratipay.csv'.format(ts)
def round_(d): def round_(d):
@ -85,17 +85,17 @@ class Payee(object):
# #
# 9. We can't. # 9. We can't.
# #
# 10. Our solution is to leave a penny behind in Gittip for # 10. Our solution is to leave a penny behind in Gratipay for
# affected payees. # affected payees.
# #
# 11. BUT ... if we upload 1.25, PayPal upcharges to 1.28. Think about # 11. BUT ... if we upload 1.25, PayPal upcharges to 1.28. Think about
# it. # it.
# #
# See also: https://github.com/gittip/www.gittip.com/issues/1673 # See also: https://github.com/gratipay/www.gratipay.com/issues/1673
# https://github.com/gittip/www.gittip.com/issues/2029 # https://github.com/gratipay/www.gratipay.com/issues/2029
# https://github.com/gittip/www.gittip.com/issues/2198 # https://github.com/gratipay/www.gratipay.com/issues/2198
# https://github.com/gittip/www.gittip.com/pull/2209 # https://github.com/gratipay/www.gratipay.com/pull/2209
# https://github.com/gittip/www.gittip.com/issues/2296 # https://github.com/gratipay/www.gratipay.com/issues/2296
target = net = self.gross target = net = self.gross
while 1: while 1:
@ -118,7 +118,7 @@ class Payee(object):
def compute_input_csv(): def compute_input_csv():
from gittip import wireup from gratipay import wireup
db = wireup.db(wireup.env()) db = wireup.db(wireup.env())
participants = db.all(""" participants = db.all("""
@ -140,7 +140,7 @@ def compute_input_csv():
amount = participant.balance - total amount = participant.balance - total
if amount < 0.50: if amount < 0.50:
# Minimum payout of 50 cents. I think that otherwise PayPal upcharges to a penny. # Minimum payout of 50 cents. I think that otherwise PayPal upcharges to a penny.
# See https://github.com/gittip/www.gittip.com/issues/1958. # See https://github.com/gratipay/www.gratipay.com/issues/1958.
continue continue
total_gross += amount total_gross += amount
print("{:<24}{:<32} {:>7} {:>7} {:>7} {:>7}".format( participant.username print("{:<24}{:<32} {:>7} {:>7} {:>7} {:>7}".format( participant.username
@ -166,13 +166,13 @@ def compute_output_csvs():
assert total_fees + total_net == total_gross assert total_fees + total_net == total_gross
paypal_csv = csv.writer(open(PAYPAL_CSV, 'w+')) paypal_csv = csv.writer(open(PAYPAL_CSV, 'w+'))
gittip_csv = csv.writer(open(GITTIP_CSV, 'w+')) gratipay_csv = csv.writer(open(GITTIP_CSV, 'w+'))
print_rule() print_rule()
print("{:<24}{:<32} {:^7} {:^7} {:^7}".format("username", "email", "gross", "fee", "net")) print("{:<24}{:<32} {:^7} {:^7} {:^7}".format("username", "email", "gross", "fee", "net"))
print_rule() print_rule()
for payee in payees: for payee in payees:
paypal_csv.writerow((payee.email, payee.net, "usd")) paypal_csv.writerow((payee.email, payee.net, "usd"))
gittip_csv.writerow(( payee.username gratipay_csv.writerow(( payee.username
, payee.email , payee.email
, payee.gross , payee.gross
, payee.fee , payee.fee
@ -185,21 +185,21 @@ def compute_output_csvs():
print("{:>64} {:>7} {:>7}".format(total_gross, total_fees, total_net)) print("{:>64} {:>7} {:>7}".format(total_gross, total_fees, total_net))
def post_back_to_gittip(): def post_back_to_gratipay():
try: try:
gittip_api_key = os.environ['GITTIP_API_KEY'] gratipay_api_key = os.environ['GITTIP_API_KEY']
except KeyError: except KeyError:
gittip_api_key = getpass.getpass("Gittip API key: ") gratipay_api_key = getpass.getpass("Gratipay API key: ")
try: try:
gittip_base_url = os.environ['GITTIP_BASE_URL'] gratipay_base_url = os.environ['GITTIP_BASE_URL']
except KeyError: except KeyError:
gittip_base_url = 'https://www.gittip.com' gratipay_base_url = 'https://www.gratipay.com'
nposts = 0 nposts = 0
for username, email, gross, fee, net, additional_note in csv.reader(open(GITTIP_CSV)): for username, email, gross, fee, net, additional_note in csv.reader(open(GITTIP_CSV)):
url = '{}/{}/history/record-an-exchange'.format(gittip_base_url, username) url = '{}/{}/history/record-an-exchange'.format(gratipay_base_url, username)
note = 'PayPal MassPay to {}.'.format(email) note = 'PayPal MassPay to {}.'.format(email)
if additional_note: if additional_note:
note += " " + additional_note note += " " + additional_note
@ -207,7 +207,7 @@ def post_back_to_gittip():
data = {'amount': '-' + net, 'fee': fee, 'note': note} data = {'amount': '-' + net, 'fee': fee, 'note': note}
try: try:
response = requests.post(url, auth=(gittip_api_key, ''), data=data) response = requests.post(url, auth=(gratipay_api_key, ''), data=data)
except IncompleteRead: except IncompleteRead:
print('IncompleteRead, proceeding (but double-check!)') print('IncompleteRead, proceeding (but double-check!)')
else: else:
@ -215,12 +215,12 @@ def post_back_to_gittip():
nposts += 1 nposts += 1
else: else:
if response.status_code == 404: if response.status_code == 404:
print('Got 404, is your API key good? {}'.format(gittip_api_key)) print('Got 404, is your API key good? {}'.format(gratipay_api_key))
else: else:
print('... resulted in a {} response:'.format(response.status_code)) print('... resulted in a {} response:'.format(response.status_code))
print(response.text) print(response.text)
raise SystemExit raise SystemExit
print("POSTed MassPay back to Gittip for {} users.".format(nposts)) print("POSTed MassPay back to Gratipay for {} users.".format(nposts))
def run_report(): def run_report():
@ -261,13 +261,13 @@ def main():
print("Rerun with one of these options:") print("Rerun with one of these options:")
print(" -i - hits db to generate input CSV (needs envvars via heroku + honcho)") print(" -i - hits db to generate input CSV (needs envvars via heroku + honcho)")
print(" -o - computes output CSVs (doesn't need anything but input CSV)") print(" -o - computes output CSVs (doesn't need anything but input CSV)")
print(" -p - posts back to Gittip (prompts for API key)") print(" -p - posts back to Gratipay (prompts for API key)")
elif '-i' in sys.argv: elif '-i' in sys.argv:
compute_input_csv() compute_input_csv()
elif '-o' in sys.argv: elif '-o' in sys.argv:
compute_output_csvs() compute_output_csvs()
elif '-p' in sys.argv: elif '-p' in sys.argv:
post_back_to_gittip() post_back_to_gratipay()
if __name__ == '__main__': if __name__ == '__main__':

View File

@ -1,8 +1,8 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# see https://github.com/gittip/www.gittip.com/issues/1771 # see https://github.com/gratipay/www.gratipay.com/issues/1771
dump=${1-`ls -r ~/gittip-dumps/????-??-??.dump | head -1`} dump=${1-`ls -r ~/gratipay-dumps/????-??-??.dump | head -1`}
cores=`grep -c ^processor /proc/cpuinfo` cores=`grep -c ^processor /proc/cpuinfo`
echo "Clearing '$USER' database..." echo "Clearing '$USER' database..."
psql -q -c "drop schema public cascade; create schema public;" 2> /dev/null psql -q -c "drop schema public cascade; create schema public;" 2> /dev/null

View File

@ -1,9 +1,9 @@
#!/usr/bin/env python #!/usr/bin/env python
"""This is a command line utility for managing Gittip backups. """This is a command line utility for managing Gratipay backups.
Running this script gets you a `snapper> ` prompt with commands to take backups Running this script gets you a `snapper> ` prompt with commands to take backups
and load them locally. Backups are managed as *.psql files in ../backups/, and and load them locally. Backups are managed as *.psql files in ../backups/, and
they're loaded into a local gittip-bak database. Type 'help' or '?' at the they're loaded into a local gratipay-bak database. Type 'help' or '?' at the
prompt for help. prompt for help.
""" """
@ -18,7 +18,7 @@ class Snapper(cmd.Cmd):
prompt = 'snapper> ' prompt = 'snapper> '
root = '../backups' root = '../backups'
dbname = 'gittip-bak' dbname = 'gratipay-bak'
def do_EOF(self, line): def do_EOF(self, line):
raise KeyboardInterrupt raise KeyboardInterrupt

View File

@ -10,7 +10,7 @@ import time
import sys import sys
import requests import requests
from gittip import wireup from gratipay import wireup
from requests_oauthlib import OAuth1 from requests_oauthlib import OAuth1
db = wireup.db(wireup.env()) db = wireup.db(wireup.env())
@ -59,7 +59,7 @@ def update_twitter():
for user_info in users: for user_info in users:
# flatten per upsert method in gittip/elsewhere/__init__.py # flatten per upsert method in gratipay/elsewhere/__init__.py
for k, v in user_info.items(): for k, v in user_info.items():
user_info[k] = unicode(v) user_info[k] = unicode(v)
@ -131,7 +131,7 @@ def update_github():
user_info = response.json() user_info = response.json()
# flatten per upsert method in gittip/elsewhere/__init__.py # flatten per upsert method in gratipay/elsewhere/__init__.py
for k, v in user_info.items(): for k, v in user_info.items():
user_info[k] = unicode(v) user_info[k] = unicode(v)

View File

@ -7,11 +7,11 @@ import threading
import time import time
import traceback import traceback
import gittip import gratipay
import gittip.wireup import gratipay.wireup
from gittip import canonize, utils from gratipay import canonize, utils
from gittip.security import authentication, csrf, x_frame_options from gratipay.security import authentication, csrf, x_frame_options
from gittip.utils import cache_static, i18n, set_cookie, timer from gratipay.utils import cache_static, i18n, set_cookie, timer
import aspen import aspen
@ -56,16 +56,16 @@ website.renderer_factories['jinja2'].Renderer.global_context = {
} }
env = website.env = gittip.wireup.env() env = website.env = gratipay.wireup.env()
gittip.wireup.canonical(env) gratipay.wireup.canonical(env)
website.db = gittip.wireup.db(env) website.db = gratipay.wireup.db(env)
website.mail = gittip.wireup.mail(env) website.mail = gratipay.wireup.mail(env)
gittip.wireup.billing(env) gratipay.wireup.billing(env)
gittip.wireup.username_restrictions(website) gratipay.wireup.username_restrictions(website)
gittip.wireup.nanswers(env) gratipay.wireup.nanswers(env)
gittip.wireup.other_stuff(website, env) gratipay.wireup.other_stuff(website, env)
gittip.wireup.accounts_elsewhere(website, env) gratipay.wireup.accounts_elsewhere(website, env)
tell_sentry = website.tell_sentry = gittip.wireup.make_sentry_teller(env) tell_sentry = website.tell_sentry = gratipay.wireup.make_sentry_teller(env)
# The homepage wants expensive queries. Let's periodically select into an # The homepage wants expensive queries. Let's periodically select into an
# intermediate table. # intermediate table.
@ -96,7 +96,7 @@ cron(env.check_db_every, website.db.self_check)
def add_stuff_to_context(request): def add_stuff_to_context(request):
request.context['username'] = None request.context['username'] = None
# Helpers for global call to action to support Gittip itself. # Helpers for global call to action to support Gratipay itself.
user = request.context.get('user') user = request.context.get('user')
p = user.participant if user else None p = user.participant if user else None
if p and p.is_free_rider is None: if p and p.is_free_rider is None:
@ -153,7 +153,7 @@ algorithm.functions = [ timer.start
, tell_sentry , tell_sentry
, algorithm['get_response_for_exception'] , algorithm['get_response_for_exception']
, gittip.outbound , gratipay.outbound
, authentication.outbound , authentication.outbound
, csrf.outbound , csrf.outbound
, cache_static.outbound , cache_static.outbound

View File

@ -1,4 +1,4 @@
DATABASE_URL="dbname=gittip" DATABASE_URL="dbname=gratipay"
PYTHONDONTWRITEBYTECODE=true PYTHONDONTWRITEBYTECODE=true
PORT=8537 PORT=8537

View File

@ -27,10 +27,10 @@ help:
@echo " doctest to run all doctests embedded in the documentation (if enabled)" @echo " doctest to run all doctests embedded in the documentation (if enabled)"
clean: clean:
rm -rf gittip* $(BUILDDIR)/* rm -rf gratipay* $(BUILDDIR)/*
rst: rst:
AUTOLIB_LIBRARY_ROOT=../gittip ./autolib.py AUTOLIB_LIBRARY_ROOT=../gratipay ./autolib.py
html: html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
# Gittip documentation build configuration file, created by # Gratipay documentation build configuration file, created by
# sphinx-quickstart on Thu Aug 8 23:20:15 2013. # sphinx-quickstart on Thu Aug 8 23:20:15 2013.
# #
# This file is execfile()d with the current directory set to its containing dir. # This file is execfile()d with the current directory set to its containing dir.
@ -40,8 +40,8 @@ source_suffix = '.rst'
master_doc = 'index' master_doc = 'index'
# General information about the project. # General information about the project.
project = u'Gittip' project = u'Gratipay'
copyright = u'2013, Gittip, LLC' copyright = u'2013, Gratipay, LLC'
# The version info for the project you're documenting, acts as replacement for # The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the # |version| and |release|, also used in various other places throughout the
@ -93,7 +93,7 @@ pygments_style = 'sphinx'
# -- Generate RST files ------------------------------------------------------- # -- Generate RST files -------------------------------------------------------
# We do this in here instead of in the Makefile so that RTD picks this up. # We do this in here instead of in the Makefile so that RTD picks this up.
os.environ['AUTOLIB_LIBRARY_ROOT'] = '../gittip' os.environ['AUTOLIB_LIBRARY_ROOT'] = '../gratipay'
os.system("./autolib.py") os.system("./autolib.py")
@ -174,7 +174,7 @@ html_static_path = ['_static']
#html_file_suffix = None #html_file_suffix = None
# Output file base name for HTML help builder. # Output file base name for HTML help builder.
htmlhelp_basename = 'Gittipdoc' htmlhelp_basename = 'Gratipaydoc'
# -- Options for LaTeX output -------------------------------------------------- # -- Options for LaTeX output --------------------------------------------------
@ -193,8 +193,8 @@ latex_elements = {
# Grouping the document tree into LaTeX files. List of tuples # Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass [howto/manual]). # (source start file, target name, title, author, documentclass [howto/manual]).
latex_documents = [ latex_documents = [
('index', 'Gittip.tex', u'Gittip Documentation', ('index', 'Gratipay.tex', u'Gratipay Documentation',
u'Gittip, LLC', 'manual'), u'Gratipay, LLC', 'manual'),
] ]
# The name of an image file (relative to this directory) to place at the top of # The name of an image file (relative to this directory) to place at the top of
@ -223,8 +223,8 @@ latex_documents = [
# One entry per manual page. List of tuples # One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section). # (source start file, name, description, authors, manual section).
man_pages = [ man_pages = [
('index', 'gittip', u'Gittip Documentation', ('index', 'gratipay', u'Gratipay Documentation',
[u'Gittip, LLC'], 1) [u'Gratipay, LLC'], 1)
] ]
# If true, show URL addresses after external links. # If true, show URL addresses after external links.
@ -237,8 +237,8 @@ man_pages = [
# (source start file, target name, title, author, # (source start file, target name, title, author,
# dir menu entry, description, category) # dir menu entry, description, category)
texinfo_documents = [ texinfo_documents = [
('index', 'Gittip', u'Gittip Documentation', ('index', 'Gratipay', u'Gratipay Documentation',
u'Gittip, LLC', 'Gittip', 'One line description of project.', u'Gratipay, LLC', 'Gratipay', 'One line description of project.',
'Miscellaneous'), 'Miscellaneous'),
] ]

View File

@ -1,11 +1,11 @@
www.gittip.com www.gratipay.com
============== ==============
Welcome! This is the documentation for programmers working on `www.gittip.com`_ Welcome! This is the documentation for programmers working on `www.gratipay.com`_
(not to be confused with programmers working with Gittip's `web API`_). (not to be confused with programmers working with Gratipay's `web API`_).
.. _www.gittip.com: https://github.com/gittip/www.gittip.com .. _www.gratipay.com: https://github.com/gratipay/www.gratipay.com
.. _web API: https://github.com/gittip/www.gittip.com#api .. _web API: https://github.com/gratipay/www.gratipay.com#api
DB Schema DB Schema
@ -14,12 +14,12 @@ DB Schema
is_suspipicous on participant can be None, True or False. It represents unknown, is_suspipicous on participant can be None, True or False. It represents unknown,
blacklisted or whitelisted user. blacklisted or whitelisted user.
* whitelisted can transfer money out of gittip * whitelisted can transfer money out of gratipay
* unknown can move money within gittip * unknown can move money within gratipay
* blacklisted cannot do anything * blacklisted cannot do anything
The exchanges table records movements of money into and out of Gittip. The The exchanges table records movements of money into and out of Gratipay. The
``amount`` column shows a positive amount for payins and a negative amount for ``amount`` column shows a positive amount for payins and a negative amount for
payouts. The ``fee`` column is always positive. For both payins and payouts, payouts. The ``fee`` column is always positive. For both payins and payouts,
the ``amount`` does not include the ``fee`` (e.g., a $10 payin would result in the ``amount`` does not include the ``fee`` (e.g., a $10 payin would result in
@ -33,4 +33,4 @@ Contents
.. toctree:: .. toctree::
:maxdepth: 2 :maxdepth: 2
gittip Python library <gittip> gratipay Python library <gratipay>

View File

@ -115,9 +115,9 @@ if "%1" == "qthelp" (
echo. echo.
echo.Build finished; now you can run "qcollectiongenerator" with the ^ echo.Build finished; now you can run "qcollectiongenerator" with the ^
.qhcp project file in %BUILDDIR%/qthelp, like this: .qhcp project file in %BUILDDIR%/qthelp, like this:
echo.^> qcollectiongenerator %BUILDDIR%\qthelp\Gittip.qhcp echo.^> qcollectiongenerator %BUILDDIR%\qthelp\Gratipay.qhcp
echo.To view the help file: echo.To view the help file:
echo.^> assistant -collectionFile %BUILDDIR%\qthelp\Gittip.ghc echo.^> assistant -collectionFile %BUILDDIR%\qthelp\Gratipay.ghc
goto end goto end
) )

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python #!/usr/bin/env python
"""\ """\
Gittip Gratipay
~~~~~~ ~~~~~~
A personal funding platform. A personal funding platform.
@ -10,7 +10,7 @@ Dependencies:
- Postgresql 9.2 - Postgresql 9.2
To run: To run:
$ gittip.py $ gratipay.py
This will also initialize a local environment on the first run. This will also initialize a local environment on the first run.
""" """
@ -88,7 +88,7 @@ def init_virtualenv():
shell('python', virtualenv_path, shell('python', virtualenv_path,
'--unzip-setuptools', '--unzip-setuptools',
'--prompt="[gittip] "', '--prompt="[gratipay] "',
'--never-download', '--never-download',
'--extra-search-dir=' + vendor_path, '--extra-search-dir=' + vendor_path,
'--distribute', '--distribute',

View File

@ -1,4 +1,4 @@
"""This is the Python library behind www.gittip.com. """This is the Python library behind www.gratipay.com.
""" """
import datetime import datetime
import locale import locale
@ -45,7 +45,7 @@ class NotSane(Exception):
""" """
db = None # This global is wired in wireup. It's an instance of db = None # This global is wired in wireup. It's an instance of
# gittip.postgres.PostgresManager. # gratipay.postgres.PostgresManager.
MAX_TIP_SINGULAR = Decimal('100.00') MAX_TIP_SINGULAR = Decimal('100.00')
@ -89,5 +89,5 @@ def outbound(request, response, website):
version = website.version version = website.version
# Set misc headers for the website # Set misc headers for the website
response.headers['X-Gittip-Version'] = version response.headers['X-Gratipay-Version'] = version
response.headers['Content-Language'] = 'en' response.headers['Content-Language'] = 'en'

View File

@ -197,7 +197,7 @@ class BalancedThing(object):
break break
if out is None: if out is None:
# Default to ''; see https://github.com/gittip/www.gittip.com/issues/2161. # Default to ''; see https://github.com/gratipay/www.gratipay.com/issues/2161.
out = '' out = ''
return out return out
@ -244,7 +244,7 @@ class BalancedCard(BalancedThing):
'country': 'meta.country', 'country': 'meta.country',
'city_town': 'meta.city_town', 'city_town': 'meta.city_town',
'zip': 'address.postal_code', 'zip': 'address.postal_code',
# gittip is saving the state in the meta field # gratipay is saving the state in the meta field
# for compatibility with legacy customers # for compatibility with legacy customers
'state': 'meta.region', 'state': 'meta.region',
'last4': 'number', 'last4': 'number',

View File

@ -1,4 +1,4 @@
"""Functions for moving money between Gittip and the outside world. """Functions for moving money between Gratipay and the outside world.
""" """
from __future__ import unicode_literals from __future__ import unicode_literals
@ -8,9 +8,9 @@ import balanced
from aspen import log from aspen import log
from aspen.utils import typecheck from aspen.utils import typecheck
from gittip.exceptions import NegativeBalance, NoBalancedCustomerHref, NotWhitelisted from gratipay.exceptions import NegativeBalance, NoBalancedCustomerHref, NotWhitelisted
from gittip.models import check_db from gratipay.models import check_db
from gittip.models.participant import Participant from gratipay.models.participant import Participant
# https://docs.balancedpayments.com/1.1/api/customers/ # https://docs.balancedpayments.com/1.1/api/customers/
@ -41,7 +41,7 @@ def customer_from_href(href):
# Balanced has a $0.50 minimum. We go even higher to avoid onerous # Balanced has a $0.50 minimum. We go even higher to avoid onerous
# per-transaction fees. See: # per-transaction fees. See:
# https://github.com/gittip/www.gittip.com/issues/167 # https://github.com/gratipay/www.gratipay.com/issues/167
MINIMUM_CHARGE = Decimal("9.41") MINIMUM_CHARGE = Decimal("9.41")
MINIMUM_CREDIT = Decimal("10.00") MINIMUM_CREDIT = Decimal("10.00")
@ -82,7 +82,7 @@ def ach_credit(db, participant, withhold, minimum_credit=MINIMUM_CREDIT):
# Compute the amount to credit them. # Compute the amount to credit them.
# ================================== # ==================================
# Leave money in Gittip to cover their obligations next week (as these # Leave money in Gratipay to cover their obligations next week (as these
# currently stand). # currently stand).
balance = participant.balance balance = participant.balance
@ -152,7 +152,7 @@ def ach_credit(db, participant, withhold, minimum_credit=MINIMUM_CREDIT):
def create_card_hold(db, participant, amount): def create_card_hold(db, participant, amount):
"""Create a hold on the participant's credit card. """Create a hold on the participant's credit card.
Amount should be the nominal amount. We'll compute Gittip's fee below Amount should be the nominal amount. We'll compute Gratipay's fee below
this function and add it to amount to end up with charge_amount. this function and add it to amount to end up with charge_amount.
""" """
@ -270,7 +270,7 @@ def record_exchange(db, kind, amount, fee, participant, status):
Records in the exchanges table have these characteristics: Records in the exchanges table have these characteristics:
amount It's negative for credits (representing an outflow from amount It's negative for credits (representing an outflow from
Gittip to you) and positive for charges. Gratipay to you) and positive for charges.
The sign is how we differentiate the two in, e.g., the The sign is how we differentiate the two in, e.g., the
history page. history page.

View File

@ -1,7 +1,7 @@
"""This is Gittip's payday algorithm. """This is Gratipay's payday algorithm.
Exchanges (moving money between Gittip and the outside world) and transfers Exchanges (moving money between Gratipay and the outside world) and transfers
(moving money amongst Gittip users) happen within an isolated event called (moving money amongst Gratipay users) happen within an isolated event called
payday. This event has duration (it's not punctiliar). payday. This event has duration (it's not punctiliar).
Payday is designed to be crash-resistant. Everything that can be rolled back Payday is designed to be crash-resistant. Everything that can be rolled back
@ -17,11 +17,11 @@ from balanced import CardHold
import aspen.utils import aspen.utils
from aspen import log from aspen import log
from gittip.billing.exchanges import ( from gratipay.billing.exchanges import (
ach_credit, cancel_card_hold, capture_card_hold, create_card_hold, upcharge ach_credit, cancel_card_hold, capture_card_hold, create_card_hold, upcharge
) )
from gittip.exceptions import NegativeBalance from gratipay.exceptions import NegativeBalance
from gittip.models import check_db from gratipay.models import check_db
from psycopg2 import IntegrityError from psycopg2 import IntegrityError
@ -32,7 +32,7 @@ class NoPayday(Exception):
class Payday(object): class Payday(object):
"""Represent an abstract event during which money is moved. """Represent an abstract event during which money is moved.
On Payday, we want to use a participant's Gittip balance to settle their On Payday, we want to use a participant's Gratipay balance to settle their
tips due (pulling in more money via credit card as needed), but we only tips due (pulling in more money via credit card as needed), but we only
want to use their balance at the start of Payday. Balance changes should be want to use their balance at the start of Payday. Balance changes should be
atomic globally per-Payday. atomic globally per-Payday.

View File

@ -1,6 +1,6 @@
"""This is installed as `payday`. """This is installed as `payday`.
""" """
from gittip import wireup from gratipay import wireup
def payday(): def payday():
@ -18,10 +18,10 @@ def payday():
# Lazily import the billing module. # Lazily import the billing module.
# ================================= # =================================
# This dodges a problem where db in billing is None if we import it from # This dodges a problem where db in billing is None if we import it from
# gittip before calling wireup.billing. # gratipay before calling wireup.billing.
from gittip.billing.exchanges import sync_with_balanced from gratipay.billing.exchanges import sync_with_balanced
from gittip.billing.payday import Payday from gratipay.billing.payday import Payday
try: try:
with db.get_cursor() as cursor: with db.get_cursor() as cursor:

View File

@ -13,7 +13,7 @@ from aspen import log, Response
from aspen.utils import to_age, utc from aspen.utils import to_age, utc
from requests_oauthlib import OAuth1Session, OAuth2Session from requests_oauthlib import OAuth1Session, OAuth2Session
from gittip.elsewhere._extractors import not_available from gratipay.elsewhere._extractors import not_available
ACTIONS = {'opt-in', 'connect', 'lock', 'unlock'} ACTIONS = {'opt-in', 'connect', 'lock', 'unlock'}
@ -24,7 +24,7 @@ class UnknownAccountElsewhere(Exception): pass
class PlatformRegistry(object): class PlatformRegistry(object):
"""Registry of platforms we support connecting to Gittip accounts. """Registry of platforms we support connecting to Gratipay accounts.
""" """
def __init__(self, platforms): def __init__(self, platforms):
self.__dict__ = OrderedDict((p.name, p) for p in platforms) self.__dict__ = OrderedDict((p.name, p) for p in platforms)

View File

@ -1,8 +1,8 @@
from __future__ import absolute_import, division, print_function, unicode_literals from __future__ import absolute_import, division, print_function, unicode_literals
from gittip.elsewhere import PlatformOAuth1 from gratipay.elsewhere import PlatformOAuth1
from gittip.elsewhere._extractors import any_key, key, not_available from gratipay.elsewhere._extractors import any_key, key, not_available
from gittip.elsewhere._paginators import keys_paginator from gratipay.elsewhere._paginators import keys_paginator
class Bitbucket(PlatformOAuth1): class Bitbucket(PlatformOAuth1):

View File

@ -10,8 +10,8 @@ from urlparse import parse_qs, urlparse
import requests import requests
from aspen import Response from aspen import Response
from gittip.elsewhere import Platform from gratipay.elsewhere import Platform
from gittip.elsewhere._extractors import key, not_available from gratipay.elsewhere._extractors import key, not_available
class Bountysource(Platform): class Bountysource(Platform):
@ -48,7 +48,7 @@ class Bountysource(Platform):
redirect_url=self.callback_url+'?query_id='+query_id, redirect_url=self.callback_url+'?query_id='+query_id,
external_access_token=token external_access_token=token
) )
url = self.auth_url+'/auth/gittip/confirm?'+urlencode(params) url = self.auth_url+'/auth/gratipay/confirm?'+urlencode(params)
return url, query_id, '' return url, query_id, ''
def get_query_id(self, querystring): def get_query_id(self, querystring):

View File

@ -1,8 +1,8 @@
from __future__ import absolute_import, division, print_function, unicode_literals from __future__ import absolute_import, division, print_function, unicode_literals
from gittip.elsewhere import PlatformOAuth2 from gratipay.elsewhere import PlatformOAuth2
from gittip.elsewhere._extractors import key from gratipay.elsewhere._extractors import key
from gittip.elsewhere._paginators import header_links_paginator from gratipay.elsewhere._paginators import header_links_paginator
class GitHub(PlatformOAuth2): class GitHub(PlatformOAuth2):

View File

@ -1,7 +1,7 @@
from __future__ import absolute_import, division, print_function, unicode_literals from __future__ import absolute_import, division, print_function, unicode_literals
from gittip.elsewhere import PlatformOAuth1 from gratipay.elsewhere import PlatformOAuth1
from gittip.elsewhere._extractors import not_available, xpath from gratipay.elsewhere._extractors import not_available, xpath
class OpenStreetMap(PlatformOAuth1): class OpenStreetMap(PlatformOAuth1):

View File

@ -1,7 +1,7 @@
from __future__ import absolute_import, division, print_function, unicode_literals from __future__ import absolute_import, division, print_function, unicode_literals
from gittip.elsewhere import PlatformOAuth1 from gratipay.elsewhere import PlatformOAuth1
from gittip.elsewhere._extractors import key, not_available from gratipay.elsewhere._extractors import key, not_available
class Twitter(PlatformOAuth1): class Twitter(PlatformOAuth1):

View File

@ -1,7 +1,7 @@
from __future__ import absolute_import, division, print_function, unicode_literals from __future__ import absolute_import, division, print_function, unicode_literals
from gittip.elsewhere import PlatformOAuth2 from gratipay.elsewhere import PlatformOAuth2
from gittip.elsewhere._extractors import key from gratipay.elsewhere._extractors import key
class Venmo(PlatformOAuth2): class Venmo(PlatformOAuth2):

View File

@ -30,7 +30,7 @@ class ProblemChangingNumber(Exception):
return self.msg return self.msg
class HasBigTips(ProblemChangingNumber): class HasBigTips(ProblemChangingNumber):
msg = "You receive tips too large for an individual. Please contact support@gittip.com." msg = "You receive tips too large for an individual. Please contact support@gratipay.com."
class TooGreedy(Exception): pass class TooGreedy(Exception): pass

View File

@ -1,16 +1,16 @@
""" """
The most important object in the Gittip object model is Participant, and the The most important object in the Gratipay object model is Participant, and the
second most important one is Ccommunity. There are a few others, but those are second most important one is Ccommunity. There are a few others, but those are
the most important two. Participant, in particular, is at the center of the most important two. Participant, in particular, is at the center of
everything on Gittip. everything on Gratipay.
""" """
from postgres import Postgres from postgres import Postgres
import psycopg2.extras import psycopg2.extras
class GittipDB(Postgres): class GratipayDB(Postgres):
def self_check(self): def self_check(self):
with self.get_cursor() as cursor: with self.get_cursor() as cursor:
@ -32,7 +32,7 @@ def _check_tips(cursor):
""" """
Checks that there are no rows in tips with duplicate (tipper, tippee, mtime). Checks that there are no rows in tips with duplicate (tipper, tippee, mtime).
https://github.com/gittip/www.gittip.com/issues/1704 https://github.com/gratipay/www.gratipay.com/issues/1704
""" """
conflicting_tips = cursor.one(""" conflicting_tips = cursor.one("""
SELECT count(*) SELECT count(*)
@ -52,7 +52,7 @@ def _check_balances(cursor):
""" """
Recalculates balances for all participants from transfers and exchanges. Recalculates balances for all participants from transfers and exchanges.
https://github.com/gittip/www.gittip.com/issues/1118 https://github.com/gratipay/www.gratipay.com/issues/1118
""" """
b = cursor.all(""" b = cursor.all("""
select p.username, expected, balance as actual select p.username, expected, balance as actual
@ -106,7 +106,7 @@ def _check_orphans(cursor):
Especially bad case is when also claimed_time is set because Especially bad case is when also claimed_time is set because
there must have been elsewhere account attached and used to sign in. there must have been elsewhere account attached and used to sign in.
https://github.com/gittip/www.gittip.com/issues/617 https://github.com/gratipay/www.gratipay.com/issues/617
""" """
orphans = cursor.all(""" orphans = cursor.all("""
select username select username

View File

@ -1,4 +1,4 @@
"""Teams on Gittip are plural participants with members. """Teams on Gratipay are plural participants with members.
""" """
from collections import OrderedDict from collections import OrderedDict
from decimal import Decimal from decimal import Decimal
@ -13,7 +13,7 @@ class StubParticipantAdded(Exception): pass
class MixinTeam(object): class MixinTeam(object):
"""This class provides methods for working with a Participant as a Team. """This class provides methods for working with a Participant as a Team.
:param Participant participant: the underlying :py:class:`~gittip.participant.Participant` object for this team :param Participant participant: the underlying :py:class:`~gratipay.participant.Participant` object for this team
""" """
@ -112,8 +112,8 @@ class MixinTeam(object):
assert self.IS_PLURAL assert self.IS_PLURAL
# lazy import to avoid circular import # lazy import to avoid circular import
from gittip.security.user import User from gratipay.security.user import User
from gittip.models.participant import Participant from gratipay.models.participant import Participant
typecheck( member, Participant typecheck( member, Participant
, take, Decimal , take, Decimal

View File

@ -8,8 +8,8 @@ import xml.etree.ElementTree as ET
import xmltodict import xmltodict
from aspen import Response from aspen import Response
from gittip.exceptions import ProblemChangingUsername from gratipay.exceptions import ProblemChangingUsername
from gittip.utils.username import safely_reserve_a_username from gratipay.utils.username import safely_reserve_a_username
class UnknownAccountElsewhere(Exception): pass class UnknownAccountElsewhere(Exception): pass
@ -140,7 +140,7 @@ class AccountElsewhere(Model):
def opt_in(self, desired_username): def opt_in(self, desired_username):
"""Given a desired username, return a User object. """Given a desired username, return a User object.
""" """
from gittip.security.user import User from gratipay.security.user import User
self.set_is_locked(False) self.set_is_locked(False)
user = User.from_username(self.participant.username) user = User.from_username(self.participant.username)
assert not user.ANON, self.participant # sanity check assert not user.ANON, self.participant # sanity check

View File

@ -46,7 +46,7 @@ def get_list_for(db, username):
""".format(member_test, sort_order), params) """.format(member_test, sort_order), params)
class Community(Model): class Community(Model):
"""Model a community on Gittip. """Model a community on Gratipay.
""" """
typname = "community_summary" typname = "community_summary"

View File

@ -1,5 +1,5 @@
"""*Participant* is the name Gittip gives to people and groups that are known """*Participant* is the name Gratipay gives to people and groups that are known
to Gittip. We've got a ``participants`` table in the database, and a to Gratipay. We've got a ``participants`` table in the database, and a
:py:class:`Participant` class that we define here. We distinguish several kinds :py:class:`Participant` class that we define here. We distinguish several kinds
of participant, based on certain properties. of participant, based on certain properties.
@ -18,9 +18,9 @@ from aspen.utils import typecheck, utcnow
from postgres.orm import Model from postgres.orm import Model
from psycopg2 import IntegrityError from psycopg2 import IntegrityError
import gittip import gratipay
from gittip import NotSane from gratipay import NotSane
from gittip.exceptions import ( from gratipay.exceptions import (
HasBigTips, HasBigTips,
UsernameIsEmpty, UsernameIsEmpty,
UsernameTooLong, UsernameTooLong,
@ -33,12 +33,12 @@ from gittip.exceptions import (
UserDoesntAcceptTips, UserDoesntAcceptTips,
) )
from gittip.models import add_event from gratipay.models import add_event
from gittip.models._mixin_team import MixinTeam from gratipay.models._mixin_team import MixinTeam
from gittip.models.account_elsewhere import AccountElsewhere from gratipay.models.account_elsewhere import AccountElsewhere
from gittip.utils.username import safely_reserve_a_username from gratipay.utils.username import safely_reserve_a_username
from gittip import billing from gratipay import billing
from gittip.utils import is_card_expiring from gratipay.utils import is_card_expiring
ASCII_ALLOWED_IN_USERNAME = set("0123456789" ASCII_ALLOWED_IN_USERNAME = set("0123456789"
@ -52,7 +52,7 @@ NANSWERS_THRESHOLD = 0 # configured in wireup.py
NOTIFIED_ABOUT_EXPIRATION = b'notifiedAboutExpiration' NOTIFIED_ABOUT_EXPIRATION = b'notifiedAboutExpiration'
class Participant(Model, MixinTeam): class Participant(Model, MixinTeam):
"""Represent a Gittip participant. """Represent a Gratipay participant.
""" """
typname = 'participants' typname = 'participants'
@ -182,7 +182,7 @@ class Participant(Model, MixinTeam):
if number == 'singular': if number == 'singular':
nbigtips = self.db.one("""\ nbigtips = self.db.one("""\
SELECT count(*) FROM current_tips WHERE tippee=%s AND amount > %s SELECT count(*) FROM current_tips WHERE tippee=%s AND amount > %s
""", (self.username, gittip.MAX_TIP_SINGULAR)) """, (self.username, gratipay.MAX_TIP_SINGULAR))
if nbigtips > 0: if nbigtips > 0:
raise HasBigTips raise HasBigTips
with self.db.get_cursor() as c: with self.db.get_cursor() as c:
@ -252,7 +252,7 @@ class Participant(Model, MixinTeam):
# Claiming # Claiming
# ======== # ========
# An unclaimed Participant is a stub that's created when someone pledges to # An unclaimed Participant is a stub that's created when someone pledges to
# give to an AccountElsewhere that's not been connected on Gittip yet. # give to an AccountElsewhere that's not been connected on Gratipay yet.
def resolve_unclaimed(self): def resolve_unclaimed(self):
"""Given a username, return an URL path. """Given a username, return an URL path.
@ -308,7 +308,7 @@ class Participant(Model, MixinTeam):
def withdraw_balance_to_bank_account(self, cursor): def withdraw_balance_to_bank_account(self, cursor):
from gittip.billing.exchanges import ach_credit from gratipay.billing.exchanges import ach_credit
ach_credit( self.db ach_credit( self.db
, self , self
, Decimal('0.00') # don't withhold anything , Decimal('0.00') # don't withhold anything
@ -506,7 +506,7 @@ class Participant(Model, MixinTeam):
lowercased = suggested.lower() lowercased = suggested.lower()
if lowercased in gittip.RESTRICTED_USERNAMES: if lowercased in gratipay.RESTRICTED_USERNAMES:
raise UsernameIsRestricted(suggested) raise UsernameIsRestricted(suggested)
if suggested != self.username: if suggested != self.username:
@ -692,8 +692,8 @@ class Participant(Model, MixinTeam):
raise NoSelfTipping raise NoSelfTipping
amount = Decimal(amount) # May raise InvalidOperation amount = Decimal(amount) # May raise InvalidOperation
max_tip = gittip.MAX_TIP_PLURAL if tippee.IS_PLURAL else gittip.MAX_TIP_SINGULAR max_tip = gratipay.MAX_TIP_PLURAL if tippee.IS_PLURAL else gratipay.MAX_TIP_SINGULAR
if (amount < gittip.MIN_TIP) or (amount > max_tip): if (amount < gratipay.MIN_TIP) or (amount > max_tip):
raise BadAmount raise BadAmount
if not tippee.accepts_tips and amount != 0: if not tippee.accepts_tips and amount != 0:
@ -727,8 +727,8 @@ class Participant(Model, MixinTeam):
if update_tippee: if update_tippee:
# Update receiving amount of tippee # Update receiving amount of tippee
tippee.update_receiving(cursor) tippee.update_receiving(cursor)
if tippee.username == 'Gittip': if tippee.username == 'Gratipay':
# Update whether the tipper is using Gittip for free # Update whether the tipper is using Gratipay for free
self.update_is_free_rider(None if amount == 0 else False, cursor) self.update_is_free_rider(None if amount == 0 else False, cursor)
return amount, first_time_tipper return amount, first_time_tipper
@ -871,7 +871,7 @@ class Participant(Model, MixinTeam):
# Compute the total. # Compute the total.
# ================== # ==================
# For payday we only want to process payments to tippees who have # For payday we only want to process payments to tippees who have
# themselves opted into Gittip. For the tipper's profile page we want # themselves opted into Gratipay. For the tipper's profile page we want
# to show the total amount they've pledged (so they're not surprised # to show the total amount they've pledged (so they're not surprised
# when someone *does* start accepting tips and all of a sudden they're # when someone *does* start accepting tips and all of a sudden they're
# hit with bigger charges. # hit with bigger charges.
@ -921,7 +921,7 @@ class Participant(Model, MixinTeam):
out += " receives $%.2f/wk" % receiving out += " receives $%.2f/wk" % receiving
else: else:
out += " is" out += " is"
return out + " on Gittip" return out + " on Gratipay"
def get_age_in_seconds(self): def get_age_in_seconds(self):
@ -1016,16 +1016,16 @@ class Participant(Model, MixinTeam):
Returns None or raises NeedConfirmation. Returns None or raises NeedConfirmation.
This method associates an account on another platform (GitHub, Twitter, This method associates an account on another platform (GitHub, Twitter,
etc.) with the given Gittip participant. Every account elsewhere has an etc.) with the given Gratipay participant. Every account elsewhere has an
associated Gittip participant account, even if its only a stub associated Gratipay participant account, even if its only a stub
participant (it allows us to track pledges to that account should they participant (it allows us to track pledges to that account should they
ever decide to join Gittip). ever decide to join Gratipay).
In certain circumstances, we want to present the user with a In certain circumstances, we want to present the user with a
confirmation before proceeding to transfer the account elsewhere to confirmation before proceeding to transfer the account elsewhere to
the new Gittip account; NeedConfirmation is the signal to request the new Gratipay account; NeedConfirmation is the signal to request
confirmation. If it was the last account elsewhere connected to the old confirmation. If it was the last account elsewhere connected to the old
Gittip account, then we absorb the old Gittip account into the new one, Gratipay account, then we absorb the old Gratipay account into the new one,
effectively archiving the old account. effectively archiving the old account.
Here's what absorbing means: Here's what absorbing means:
@ -1167,7 +1167,7 @@ class Participant(Model, MixinTeam):
# Load the existing connection. # Load the existing connection.
# ============================= # =============================
# Every account elsewhere has at least a stub participant account # Every account elsewhere has at least a stub participant account
# on Gittip. # on Gratipay.
elsewhere = cursor.one(""" elsewhere = cursor.one("""
@ -1191,11 +1191,11 @@ class Participant(Model, MixinTeam):
# three cases: # three cases:
# #
# - the other participant is not a stub; we are taking the # - the other participant is not a stub; we are taking the
# account elsewhere away from another viable Gittip # account elsewhere away from another viable Gratipay
# participant # participant
# #
# - the other participant has no other accounts elsewhere; taking # - the other participant has no other accounts elsewhere; taking
# away the account elsewhere will leave the other Gittip # away the account elsewhere will leave the other Gratipay
# participant without any means of logging in, and it will be # participant without any means of logging in, and it will be
# archived and its tips absorbed by us # archived and its tips absorbed by us
# #
@ -1368,7 +1368,7 @@ class Participant(Model, MixinTeam):
, 'username': self.username , 'username': self.username
, 'avatar': self.avatar_url , 'avatar': self.avatar_url
, 'number': self.number , 'number': self.number
, 'on': 'gittip' , 'on': 'gratipay'
} }
if not details: if not details:

View File

@ -3,8 +3,8 @@
from datetime import datetime from datetime import datetime
from aspen.utils import to_rfc822 from aspen.utils import to_rfc822
from gittip.security import csrf from gratipay.security import csrf
from gittip.security.user import User, SESSION from gratipay.security.user import User, SESSION
BEGINNING_OF_EPOCH = to_rfc822(datetime(1970, 1, 1)) BEGINNING_OF_EPOCH = to_rfc822(datetime(1970, 1, 1))

View File

@ -4,7 +4,7 @@ See also:
https://github.com/django/django/blob/master/django/middleware/csrf.py https://github.com/django/django/blob/master/django/middleware/csrf.py
https://docs.djangoproject.com/en/dev/ref/contrib/csrf/ https://docs.djangoproject.com/en/dev/ref/contrib/csrf/
https://github.com/gittip/www.gittip.com/issues/88 https://github.com/gratipay/www.gratipay.com/issues/88
""" """
@ -73,8 +73,8 @@ def _sanitize_token(token):
return token return token
def _is_secure(request): def _is_secure(request):
import gittip import gratipay
return gittip.canonical_scheme == 'https' return gratipay.canonical_scheme == 'https'
def _get_host(request): def _get_host(request):
"""Returns the HTTP host using the request headers. """Returns the HTTP host using the request headers.

View File

@ -3,8 +3,8 @@ from datetime import timedelta
import uuid import uuid
from aspen.utils import utcnow from aspen.utils import utcnow
from gittip.models.participant import Participant from gratipay.models.participant import Participant
from gittip.utils import set_cookie from gratipay.utils import set_cookie
SESSION = b'session' SESSION = b'session'

View File

@ -1,4 +1,4 @@
"""Helpers for testing Gittip. """Helpers for testing Gratipay.
""" """
from __future__ import absolute_import, division, print_function, unicode_literals from __future__ import absolute_import, division, print_function, unicode_literals
@ -9,12 +9,12 @@ from os.path import join, dirname, realpath
from aspen import resources from aspen import resources
from aspen.utils import utcnow from aspen.utils import utcnow
from aspen.testing.client import Client from aspen.testing.client import Client
from gittip.billing.exchanges import record_exchange, record_exchange_result from gratipay.billing.exchanges import record_exchange, record_exchange_result
from gittip.elsewhere import UserInfo from gratipay.elsewhere import UserInfo
from gittip.models.account_elsewhere import AccountElsewhere from gratipay.models.account_elsewhere import AccountElsewhere
from gittip.security.user import User, SESSION from gratipay.security.user import User, SESSION
from gittip.testing.vcr import use_cassette from gratipay.testing.vcr import use_cassette
from gittip import wireup from gratipay import wireup
from psycopg2 import IntegrityError, InternalError from psycopg2 import IntegrityError, InternalError

View File

@ -2,8 +2,8 @@ from __future__ import absolute_import, division, print_function, unicode_litera
import balanced import balanced
from gittip.testing import Harness from gratipay.testing import Harness
from gittip.testing.vcr import use_cassette from gratipay.testing.vcr import use_cassette
class BalancedHarness(Harness): class BalancedHarness(Harness):
@ -42,7 +42,7 @@ with use_cassette('BalancedHarness'):
'state': 'Confusion', 'state': 'Confusion',
'postal_code': '90210', 'postal_code': '90210',
}, },
# gittip stores some of the address data in the meta fields, # gratipay stores some of the address data in the meta fields,
# continue using them to support backwards compatibility # continue using them to support backwards compatibility
meta={ meta={
'address_2': 'Box 2', 'address_2': 'Box 2',

View File

@ -130,7 +130,7 @@ bountysource = lambda: {
"login": "corytheboyd", "login": "corytheboyd",
"id": 2103 "id": 2103
}, },
"gittip_account": { "gratipay_account": {
"uid": 17306, "uid": 17306,
"followers": 0, "followers": 0,
"following": 0, "following": 0,
@ -175,7 +175,7 @@ github = lambda: {
"email": "chad@zetaweb.com", "email": "chad@zetaweb.com",
"public_repos": 25, "public_repos": 25,
"events_url": "https://api.github.com/users/whit537/events{/privacy}", "events_url": "https://api.github.com/users/whit537/events{/privacy}",
"company": "Gittip", "company": "Gratipay",
"gists_url": "https://api.github.com/users/whit537/gists{/gist_id}", "gists_url": "https://api.github.com/users/whit537/gists{/gist_id}",
"html_url": "https://github.com/whit537", "html_url": "https://github.com/whit537",
"subscriptions_url": "https://api.github.com/users/whit537/subscriptions", "subscriptions_url": "https://api.github.com/users/whit537/subscriptions",

View File

@ -5,7 +5,7 @@ import re
from aspen import Response from aspen import Response
from aspen.utils import typecheck, to_rfc822, utcnow from aspen.utils import typecheck, to_rfc822, utcnow
import gittip import gratipay
from postgres.cursors import SimpleCursorBase from postgres.cursors import SimpleCursorBase
from jinja2 import escape from jinja2 import escape
@ -358,7 +358,7 @@ def get_participant(request, restrict=True):
if participant.claimed_time is None: if participant.claimed_time is None:
# This is a stub participant record for someone on another platform who # This is a stub participant record for someone on another platform who
# hasn't actually registered with Gittip yet. Let's bounce the viewer # hasn't actually registered with Gratipay yet. Let's bounce the viewer
# over to the appropriate platform page. # over to the appropriate platform page.
to = participant.resolve_unclaimed() to = participant.resolve_unclaimed()
@ -386,7 +386,7 @@ def update_global_stats(website):
nbackers = website.db.one(""" nbackers = website.db.one("""
SELECT npatrons SELECT npatrons
FROM participants FROM participants
WHERE username = 'Gittip' WHERE username = 'Gratipay'
""", default=0) """, default=0)
website.support_current = cur = int(round(nbackers / stats[0] * 100)) if stats[0] else 0 website.support_current = cur = int(round(nbackers / stats[0] * 100)) if stats[0] else 0
if cur < 10: goal = 20 if cur < 10: goal = 20
@ -472,5 +472,5 @@ def set_cookie(cookies, key, value, expires=None, httponly=True, path='/'):
cookie['httponly'] = True cookie['httponly'] = True
if path: if path:
cookie['path'] = path cookie['path'] = path
if gittip.canonical_scheme == 'https': if gratipay.canonical_scheme == 'https':
cookie['secure'] = True cookie['secure'] = True

View File

@ -1,7 +1,7 @@
from faker import Factory from faker import Factory
from gittip import wireup, MAX_TIP_SINGULAR, MIN_TIP from gratipay import wireup, MAX_TIP_SINGULAR, MIN_TIP
from gittip.elsewhere import PLATFORMS from gratipay.elsewhere import PLATFORMS
from gittip.models.participant import Participant from gratipay.models.participant import Participant
import datetime import datetime
import decimal import decimal

View File

@ -17,7 +17,7 @@ from babel.numbers import (
) )
import jinja2.ext import jinja2.ext
from gittip.utils import COUNTRIES, COUNTRIES_MAP from gratipay.utils import COUNTRIES, COUNTRIES_MAP
ternary_re = re.compile(r'^\(? *(.+?) *\? *(.+?) *: *(.+?) *\)?$') ternary_re = re.compile(r'^\(? *(.+?) *\? *(.+?) *: *(.+?) *\)?$')

View File

@ -5,40 +5,40 @@ import os
import aspen import aspen
import balanced import balanced
import gittip import gratipay
import gittip.billing.payday import gratipay.billing.payday
import raven import raven
import mandrill import mandrill
from environment import Environment, is_yesish from environment import Environment, is_yesish
from gittip.elsewhere import PlatformRegistry from gratipay.elsewhere import PlatformRegistry
from gittip.elsewhere.bitbucket import Bitbucket from gratipay.elsewhere.bitbucket import Bitbucket
from gittip.elsewhere.bountysource import Bountysource from gratipay.elsewhere.bountysource import Bountysource
from gittip.elsewhere.github import GitHub from gratipay.elsewhere.github import GitHub
from gittip.elsewhere.openstreetmap import OpenStreetMap from gratipay.elsewhere.openstreetmap import OpenStreetMap
from gittip.elsewhere.twitter import Twitter from gratipay.elsewhere.twitter import Twitter
from gittip.elsewhere.venmo import Venmo from gratipay.elsewhere.venmo import Venmo
from gittip.models.account_elsewhere import AccountElsewhere from gratipay.models.account_elsewhere import AccountElsewhere
from gittip.models.community import Community from gratipay.models.community import Community
from gittip.models.participant import Participant from gratipay.models.participant import Participant
from gittip.models.email_address_with_confirmation import EmailAddressWithConfirmation from gratipay.models.email_address_with_confirmation import EmailAddressWithConfirmation
from gittip.models import GittipDB from gratipay.models import GratipayDB
def canonical(env): def canonical(env):
gittip.canonical_scheme = env.canonical_scheme gratipay.canonical_scheme = env.canonical_scheme
gittip.canonical_host = env.canonical_host gratipay.canonical_host = env.canonical_host
def db(env): def db(env):
dburl = env.database_url dburl = env.database_url
maxconn = env.database_maxconn maxconn = env.database_maxconn
db = GittipDB(dburl, maxconn=maxconn) db = GratipayDB(dburl, maxconn=maxconn)
db.register_model(Community) db.register_model(Community)
db.register_model(AccountElsewhere) db.register_model(AccountElsewhere)
db.register_model(Participant) db.register_model(Participant)
db.register_model(EmailAddressWithConfirmation) db.register_model(EmailAddressWithConfirmation)
gittip.billing.payday.Payday.db = db gratipay.billing.payday.Payday.db = db
return db return db
@ -52,8 +52,8 @@ def billing(env):
def username_restrictions(website): def username_restrictions(website):
if not hasattr(gittip, 'RESTRICTED_USERNAMES'): if not hasattr(gratipay, 'RESTRICTED_USERNAMES'):
gittip.RESTRICTED_USERNAMES = os.listdir(website.www_root) gratipay.RESTRICTED_USERNAMES = os.listdir(website.www_root)
def make_sentry_teller(env): def make_sentry_teller(env):
@ -77,7 +77,7 @@ def make_sentry_teller(env):
# Only log server errors to Sentry. For responses < 500 we use # Only log server errors to Sentry. For responses < 500 we use
# stream-/line-based access logging. See discussion on: # stream-/line-based access logging. See discussion on:
# https://github.com/gittip/www.gittip.com/pull/1560. # https://github.com/gratipay/www.gratipay.com/pull/1560.
return return
@ -117,7 +117,7 @@ def make_sentry_teller(env):
, 'is_admin': user.participant.is_admin , 'is_admin': user.participant.is_admin
, 'is_suspicious': user.participant.is_suspicious , 'is_suspicious': user.participant.is_suspicious
, 'claimed_time': user.participant.claimed_time.isoformat() , 'claimed_time': user.participant.claimed_time.isoformat()
, 'url': 'https://www.gittip.com/{}/'.format(username) , 'url': 'https://www.gratipay.com/{}/'.format(username)
} }
@ -144,7 +144,7 @@ def make_sentry_teller(env):
def nanswers(env): def nanswers(env):
from gittip.models import participant from gratipay.models import participant
participant.NANSWERS_THRESHOLD = env.nanswers_threshold participant.NANSWERS_THRESHOLD = env.nanswers_threshold
@ -207,9 +207,9 @@ def accounts_elsewhere(website, env):
def other_stuff(website, env): def other_stuff(website, env):
website.asset_url = env.gittip_asset_url.replace('%version', website.version) website.asset_url = env.gratipay_asset_url.replace('%version', website.version)
website.cache_static = env.gittip_cache_static website.cache_static = env.gratipay_cache_static
website.compress_assets = env.gittip_compress_assets website.compress_assets = env.gratipay_compress_assets
website.segment_key = env.segment_key website.segment_key = env.segment_key
website.sentry_dsn = env.sentry_dsn website.sentry_dsn = env.sentry_dsn
@ -271,7 +271,7 @@ def env():
these = len(env.malformed) != 1 and 'these' or 'this' these = len(env.malformed) != 1 and 'these' or 'this'
plural = len(env.malformed) != 1 and 's' or '' plural = len(env.malformed) != 1 and 's' or ''
aspen.log_dammit("=" * 42) aspen.log_dammit("=" * 42)
aspen.log_dammit( "Oh no! Gittip.com couldn't understand %s " % these aspen.log_dammit( "Oh no! Gratipay.com couldn't understand %s " % these
, "environment variable%s:" % plural , "environment variable%s:" % plural
) )
aspen.log_dammit(" ") aspen.log_dammit(" ")
@ -288,7 +288,7 @@ def env():
these = len(env.missing) != 1 and 'these' or 'this' these = len(env.missing) != 1 and 'these' or 'this'
plural = len(env.missing) != 1 and 's' or '' plural = len(env.missing) != 1 and 's' or ''
aspen.log_dammit("=" * 42) aspen.log_dammit("=" * 42)
aspen.log_dammit( "Oh no! Gittip.com needs %s missing " % these aspen.log_dammit( "Oh no! Gratipay.com needs %s missing " % these
, "environment variable%s:" % plural , "environment variable%s:" % plural
) )
aspen.log_dammit(" ") aspen.log_dammit(" ")
@ -296,10 +296,10 @@ def env():
aspen.log_dammit(" " + key) aspen.log_dammit(" " + key)
aspen.log_dammit(" ") aspen.log_dammit(" ")
aspen.log_dammit( "(Sorry, we must've started looking for " aspen.log_dammit( "(Sorry, we must've started looking for "
, "%s since you last updated Gittip!)" % these , "%s since you last updated Gratipay!)" % these
) )
aspen.log_dammit(" ") aspen.log_dammit(" ")
aspen.log_dammit("Running Gittip locally? Edit ./local.env.") aspen.log_dammit("Running Gratipay locally? Edit ./local.env.")
aspen.log_dammit("Running the test suite? Edit ./tests/env.") aspen.log_dammit("Running the test suite? Edit ./tests/env.")
aspen.log_dammit(" ") aspen.log_dammit(" ")
aspen.log_dammit("See ./default_local.env for hints.") aspen.log_dammit("See ./default_local.env for hints.")

View File

@ -1,6 +1,6 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Gittip\n" "Project-Id-Version: Gratipay\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2014-08-21 15:17+0200\n" "POT-Creation-Date: 2014-08-21 15:17+0200\n"
"PO-Revision-Date: 2014-08-25 23:46-0500\n" "PO-Revision-Date: 2014-08-25 23:46-0500\n"
@ -237,16 +237,16 @@ msgstr ""
"{bottomstart}por semajno{bottomend}" "{bottomstart}por semajno{bottomend}"
#: templates/participant.html:53 #: templates/participant.html:53
msgid "{0} just joined Gittip! :D" msgid "{0} just joined Gratipay! :D"
msgstr "{0} ĵus membriĝis Gittip! :D" msgstr "{0} ĵus membriĝis Gratipay! :D"
#: templates/participant.html:55 #: templates/participant.html:55
msgid "{0} joined recently" msgid "{0} joined recently"
msgstr "{0} membriĝis lastatempe" msgstr "{0} membriĝis lastatempe"
#: templates/participant.html:57 #: templates/participant.html:57
msgid "{0} is quietly watching the Gittip world" msgid "{0} is quietly watching the Gratipay world"
msgstr "{0} rigardas trankvile la Gittip mondo" msgstr "{0} rigardas trankvile la Gratipay mondo"
#: templates/participant.tip.html:5 #: templates/participant.tip.html:5
msgid "This account has been locked by its owner." msgid "This account has been locked by its owner."
@ -334,37 +334,37 @@ msgstr "{0} doni al {1}"
msgid "Sign in" msgid "Sign in"
msgstr "Ensaluti" msgstr "Ensaluti"
#: templates/support-gittip.html:5 #: templates/support-gratipay.html:5
#, python-format #, python-format
msgid "Only {0}% of active users also {1}support Gittip{2}." msgid "Only {0}% of active users also {1}support Gratipay{2}."
msgstr "Sole {0}% de aktivaj uzantoj ankaŭ {1}subtenas Gittip{2}." msgstr "Sole {0}% de aktivaj uzantoj ankaŭ {1}subtenas Gratipay{2}."
#: templates/support-gittip.html:7 #: templates/support-gratipay.html:7
#, python-format #, python-format
msgid "{0}% of active users also {1}support Gittip{2}." msgid "{0}% of active users also {1}support Gratipay{2}."
msgstr "{0}% de aktivaj uzantoj ankaŭ {1}subtenas Gittip{2}." msgstr "{0}% de aktivaj uzantoj ankaŭ {1}subtenas Gratipay{2}."
#: templates/support-gittip.html:11 #: templates/support-gratipay.html:11
msgid "Will you help us reach {0}%?" msgid "Will you help us reach {0}%?"
msgstr "Ĉu vi helpos nin atingi {0}%?" msgstr "Ĉu vi helpos nin atingi {0}%?"
#: templates/support-gittip.html:13 #: templates/support-gratipay.html:13
msgid "Will you join them?" msgid "Will you join them?"
msgstr "Ĉu vi aliĝos ilin?" msgstr "Ĉu vi aliĝos ilin?"
#: templates/support-gittip.html:19 #: templates/support-gratipay.html:19
msgid "Other" msgid "Other"
msgstr "Alia" msgstr "Alia"
#: templates/support-gittip.html:19 #: templates/support-gratipay.html:19
msgid "No thanks" msgid "No thanks"
msgstr "Ne dankon" msgstr "Ne dankon"
#: templates/support-gittip.html:22 #: templates/support-gratipay.html:22
msgid "We fund Gittip solely through your voluntary payments!" msgid "We fund Gratipay solely through your voluntary payments!"
msgstr "Ni fondusas Gittip sole tra via libervolaj pagoj!" msgstr "Ni fondusas Gratipay sole tra via libervolaj pagoj!"
#: templates/support-gittip.html:23 www/index.html.spt:56 #: templates/support-gratipay.html:23 www/index.html.spt:56
msgid "Learn more" msgid "Learn more"
msgstr "Lernu pli" msgstr "Lernu pli"
@ -382,18 +382,18 @@ msgstr "Bankokonto"
#: www/bank-account.html.spt:37 #: www/bank-account.html.spt:37
msgid "" msgid ""
"When you receive money on Gittip we'll automatically deposit it into your " "When you receive money on Gratipay we'll automatically deposit it into your "
"bank account." "bank account."
msgstr "" msgstr ""
"Kiam vi ricevas monon tra Gittip, ni deponas ĝin aŭtomate en via konekita " "Kiam vi ricevas monon tra Gratipay, ni deponas ĝin aŭtomate en via konekita "
"bankokonto." "bankokonto."
#: www/bank-account.html.spt:38 #: www/bank-account.html.spt:38
msgid "" msgid ""
"If you don't connect a bank account then your money will accumulate within " "If you don't connect a bank account then your money will accumulate within "
"Gittip unless you regift it to others." "Gratipay unless you regift it to others."
msgstr "" msgstr ""
"Se vi ne konektas bankokonton, tiam via mono amasigos ene Gittip krom se vi " "Se vi ne konektas bankokonton, tiam via mono amasigos ene Gratipay krom se vi "
"donas ĝin laŭvice al aliaj." "donas ĝin laŭvice al aliaj."
#: www/bank-account.html.spt:61 #: www/bank-account.html.spt:61
@ -494,10 +494,10 @@ msgstr "Kreditkarto"
#: www/credit-card.html.spt:42 #: www/credit-card.html.spt:42
msgid "" msgid ""
"When you don't have enough money in your Gittip account to cover your gifts, " "When you don't have enough money in your Gratipay account to cover your gifts, "
"we'll attempt to pull money in using your credit card." "we'll attempt to pull money in using your credit card."
msgstr "" msgstr ""
"Kiam vi ne havas sufiĉan monon en vian Gittip-a konto kovri viajn donacojn, " "Kiam vi ne havas sufiĉan monon en vian Gratipay-a konto kovri viajn donacojn, "
"ni pagigos vian kreditkaron fondusi viajn donacojn." "ni pagigos vian kreditkaron fondusi viajn donacojn."
#: www/credit-card.html.spt:43 #: www/credit-card.html.spt:43
@ -599,16 +599,16 @@ msgid "Want to see who they are? Browse {0}our communities{1}."
msgstr "Ĉu vi volas vidi kiu estas? Foliumu {0}niajn komunumojn{1}." msgstr "Ĉu vi volas vidi kiu estas? Foliumu {0}niajn komunumojn{1}."
#: www/index.html.spt:87 #: www/index.html.spt:87
msgid "Want to work for Gittip? We are an {0}open company{1}." msgid "Want to work for Gratipay? We are an {0}open company{1}."
msgstr "Ĉu vi volas labori por Gittip? Ni estas {0}malferma firmo{1}." msgstr "Ĉu vi volas labori por Gratipay? Ni estas {0}malferma firmo{1}."
#: www/index.html.spt:93 #: www/index.html.spt:93
msgid "Welcome, {0}!" msgid "Welcome, {0}!"
msgstr "Bonvenon, {0}!" msgstr "Bonvenon, {0}!"
#: www/index.html.spt:94 #: www/index.html.spt:94
msgid "Thanks for joining Gittip!" msgid "Thanks for joining Gratipay!"
msgstr "Dankon pro via aliĝado Gittip!" msgstr "Dankon pro via aliĝado Gratipay!"
#: www/index.html.spt:95 #: www/index.html.spt:95
msgid "Next steps:" msgid "Next steps:"
@ -683,8 +683,8 @@ msgid "I'm here as a patron, and politely decline to receive gifts."
msgstr "Mi estas ĉi tie kiel patrono, kaj malakceptas ĝentile ricevi donacojn." msgstr "Mi estas ĉi tie kiel patrono, kaj malakceptas ĝentile ricevi donacojn."
#: www/%username/index.html.spt:41 #: www/%username/index.html.spt:41
msgid "My goal is to receive {0} per week on Gittip." msgid "My goal is to receive {0} per week on Gratipay."
msgstr "Mia celo estas ricevi {0} ĉiusemajne tra Gittip." msgstr "Mia celo estas ricevi {0} ĉiusemajne tra Gratipay."
#: www/%username/index.html.spt:45 #: www/%username/index.html.spt:45
msgid "We're grateful for gifts, but don't have a specific funding goal." msgid "We're grateful for gifts, but don't have a specific funding goal."
@ -699,8 +699,8 @@ msgid "We're here as a patron, and politely decline to receive gifts."
msgstr "Ni estas ĉi tie kiel patrono, kaj ĝentile malakceptu ricevi donacojn." msgstr "Ni estas ĉi tie kiel patrono, kaj ĝentile malakceptu ricevi donacojn."
#: www/%username/index.html.spt:48 #: www/%username/index.html.spt:48
msgid "Our goal is to receive {0} per week on Gittip." msgid "Our goal is to receive {0} per week on Gratipay."
msgstr "Nia celo estas ricevi {0} ĉiusemajne tra Gittip." msgstr "Nia celo estas ricevi {0} ĉiusemajne tra Gratipay."
#: www/%username/index.html.spt:55 #: www/%username/index.html.spt:55
msgid "with {n} other" msgid "with {n} other"
@ -714,10 +714,10 @@ msgstr "Vi estas {0}"
#: www/%username/account/index.html.spt:39 #: www/%username/account/index.html.spt:39
msgid "" msgid ""
"Have you linked to your Gittip profile from other websites? Be sure to " "Have you linked to your Gratipay profile from other websites? Be sure to "
"update those links!" "update those links!"
msgstr "" msgstr ""
"Ĉu vi alligis via Gittip profilon de aliaj retejoj? Nepre aktualigi tiujn " "Ĉu vi alligis via Gratipay profilon de aliaj retejoj? Nepre aktualigi tiujn "
"ligilojn!" "ligilojn!"
#: www/%username/account/index.html.spt:46 #: www/%username/account/index.html.spt:46
@ -821,8 +821,8 @@ msgid "Outside"
msgstr "Ekstere" msgstr "Ekstere"
#: www/%username/history/index.html.spt:65 #: www/%username/history/index.html.spt:65
msgid "Inside Gittip" msgid "Inside Gratipay"
msgstr "Interne Gittip" msgstr "Interne Gratipay"
#: www/%username/history/index.html.spt:68 #: www/%username/history/index.html.spt:68
msgid "Bank" msgid "Bank"
@ -870,20 +870,20 @@ msgid "Widget #{0}"
msgstr "Umaĵo #{0}" msgstr "Umaĵo #{0}"
#: www/%username/widgets/index.html.spt:104 #: www/%username/widgets/index.html.spt:104
msgid "Use this code to embed a Gittip button on your website:" msgid "Use this code to embed a Gratipay button on your website:"
msgstr "Uzu tiun kodon por enkorpigi Gittip butonon sur vian retejon:" msgstr "Uzu tiun kodon por enkorpigi Gratipay butonon sur vian retejon:"
#: www/%username/widgets/index.html.spt:110 #: www/%username/widgets/index.html.spt:110
msgid "" msgid ""
"The button opens your profile on Gittip in a new tab or window. Here's what " "The button opens your profile on Gratipay in a new tab or window. Here's what "
"the text reads:" "the text reads:"
msgstr "" msgstr ""
"La butono malfermas vian profilon en Gittip en nova langeto aŭ fenestro. Jen " "La butono malfermas vian profilon en Gratipay en nova langeto aŭ fenestro. Jen "
"kion la teksto diras:" "kion la teksto diras:"
#: www/%username/widgets/index.html.spt:115 #: www/%username/widgets/index.html.spt:115
msgid "person is not logged into Gittip or doesn't tip you" msgid "person is not logged into Gratipay or doesn't tip you"
msgstr "persono ne estas ensalutinta en Gittip aŭ ne doni al vin" msgstr "persono ne estas ensalutinta en Gratipay aŭ ne doni al vin"
#: www/%username/widgets/index.html.spt:118 #: www/%username/widgets/index.html.spt:118
msgid "person tips you; shows current gift amount" msgid "person tips you; shows current gift amount"
@ -898,8 +898,8 @@ msgid "Here's an example using {0}:"
msgstr "Jen ekzemplo uzanta {0}:" msgstr "Jen ekzemplo uzanta {0}:"
#: www/%username/widgets/index.html.spt:134 #: www/%username/widgets/index.html.spt:134
msgid "Use this code to add a Gittip \"receiving\" widget on your website:" msgid "Use this code to add a Gratipay \"receiving\" widget on your website:"
msgstr "Uzu tiun kodon por aldoni Gittip \"ricevado\" ilon en via retejo:" msgstr "Uzu tiun kodon por aldoni Gratipay \"ricevado\" ilon en via retejo:"
#: www/%username/widgets/index.html.spt:139 #: www/%username/widgets/index.html.spt:139
#: www/%username/widgets/index.html.spt:150 #: www/%username/widgets/index.html.spt:150
@ -918,8 +918,8 @@ msgid "Browse Communities"
msgstr "Foliumu komunumojn" msgstr "Foliumu komunumojn"
#: www/for/index.html.spt:24 #: www/for/index.html.spt:24
msgid "{0}There are{1} {2} {3}communities on Gittip.{4}" msgid "{0}There are{1} {2} {3}communities on Gratipay.{4}"
msgstr "{0}Ekzistas{1} {2} {3}komunumoj sur Gittip.{4}" msgstr "{0}Ekzistas{1} {2} {3}komunumoj sur Gratipay.{4}"
#: www/for/index.html.spt:75 #: www/for/index.html.spt:75
msgid "Large Communities" msgid "Large Communities"
@ -953,8 +953,8 @@ msgid "Browse {0}All Communities{1}"
msgstr "Foliumu {0}Ĉiujn Komunumojn{1}" msgstr "Foliumu {0}Ĉiujn Komunumojn{1}"
#: www/for/%slug/index.html.spt:163 #: www/for/%slug/index.html.spt:163
msgid "{0} to join the {1} community on Gittip." msgid "{0} to join the {1} community on Gratipay."
msgstr "{0} por kuniĝi la {1}-an komunumon sur Gittip." msgstr "{0} por kuniĝi la {1}-an komunumon sur Gratipay."
#: www/for/%slug/index.html.spt:170 #: www/for/%slug/index.html.spt:170
msgid "Leave" msgid "Leave"
@ -970,8 +970,8 @@ msgstr "Vi estas la unua ĉi tie!"
#: www/for/%slug/index.html.spt:184 #: www/for/%slug/index.html.spt:184
msgid "" msgid ""
"Bring the {0} community to Gittip to find like-minded people to give to." "Bring the {0} community to Gratipay to find like-minded people to give to."
msgstr "Alportu la {0} komunumon al Gittip trovi samideanojn homojn doni." msgstr "Alportu la {0} komunumon al Gratipay trovi samideanojn homojn doni."
#: www/for/%slug/index.html.spt:193 #: www/for/%slug/index.html.spt:193
msgid "New Members" msgid "New Members"

View File

@ -235,16 +235,16 @@ msgstr ""
"{bottomstart}par semaine{bottomend}" "{bottomstart}par semaine{bottomend}"
#: templates/participant.html:53 #: templates/participant.html:53
msgid "{0} just joined Gittip! :D" msgid "{0} just joined Gratipay! :D"
msgstr "{0} vient juste de créer son compte Gittip! :D" msgstr "{0} vient juste de créer son compte Gratipay! :D"
#: templates/participant.html:55 #: templates/participant.html:55
msgid "{0} joined recently" msgid "{0} joined recently"
msgstr "{0} a créé son compte récemment" msgstr "{0} a créé son compte récemment"
#: templates/participant.html:57 #: templates/participant.html:57
msgid "{0} is quietly watching the Gittip world" msgid "{0} is quietly watching the Gratipay world"
msgstr "{0} observe silencieusement la planète Gittip" msgstr "{0} observe silencieusement la planète Gratipay"
#: templates/participant.tip.html:5 #: templates/participant.tip.html:5
msgid "This account has been locked by its owner." msgid "This account has been locked by its owner."
@ -331,37 +331,37 @@ msgstr "{0} pour donner à {1}"
msgid "Sign in" msgid "Sign in"
msgstr "Connectez vous" msgstr "Connectez vous"
#: templates/support-gittip.html:5 #: templates/support-gratipay.html:5
#, python-format #, python-format
msgid "Only {0}% of active users also {1}support Gittip{2}." msgid "Only {0}% of active users also {1}support Gratipay{2}."
msgstr "Seulement {0}% des utilisateurs actifs {1}supportent Gittip{2}." msgstr "Seulement {0}% des utilisateurs actifs {1}supportent Gratipay{2}."
#: templates/support-gittip.html:7 #: templates/support-gratipay.html:7
#, python-format #, python-format
msgid "{0}% of active users also {1}support Gittip{2}." msgid "{0}% of active users also {1}support Gratipay{2}."
msgstr "{0}% des utilisateurs actifs {1}supportent Gittip{2}." msgstr "{0}% des utilisateurs actifs {1}supportent Gratipay{2}."
#: templates/support-gittip.html:11 #: templates/support-gratipay.html:11
msgid "Will you help us reach {0}%?" msgid "Will you help us reach {0}%?"
msgstr "Voulez-vous nous aider à atteindre {0}% ?" msgstr "Voulez-vous nous aider à atteindre {0}% ?"
#: templates/support-gittip.html:13 #: templates/support-gratipay.html:13
msgid "Will you join them?" msgid "Will you join them?"
msgstr "Voulez-vous en faire de même ?" msgstr "Voulez-vous en faire de même ?"
#: templates/support-gittip.html:19 #: templates/support-gratipay.html:19
msgid "Other" msgid "Other"
msgstr "Autre" msgstr "Autre"
#: templates/support-gittip.html:19 #: templates/support-gratipay.html:19
msgid "No thanks" msgid "No thanks"
msgstr "Non merci" msgstr "Non merci"
#: templates/support-gittip.html:22 #: templates/support-gratipay.html:22
msgid "We fund Gittip solely through your voluntary payments!" msgid "We fund Gratipay solely through your voluntary payments!"
msgstr "Gittip n'est financé que par vos dons!" msgstr "Gratipay n'est financé que par vos dons!"
#: templates/support-gittip.html:23 www/index.html.spt:56 #: templates/support-gratipay.html:23 www/index.html.spt:56
msgid "Learn more" msgid "Learn more"
msgstr "En savoir plus" msgstr "En savoir plus"
@ -379,7 +379,7 @@ msgstr "Compte Bancaire"
#: www/bank-account.html.spt:37 #: www/bank-account.html.spt:37
msgid "" msgid ""
"When you receive money on Gittip we'll automatically deposit it into your" "When you receive money on Gratipay we'll automatically deposit it into your"
" bank account." " bank account."
msgstr "" msgstr ""
"Quand vous recevez des dons nous les déposerons automatiquement sur votre" "Quand vous recevez des dons nous les déposerons automatiquement sur votre"
@ -388,7 +388,7 @@ msgstr ""
#: www/bank-account.html.spt:38 #: www/bank-account.html.spt:38
msgid "" msgid ""
"If you don't connect a bank account then your money will accumulate " "If you don't connect a bank account then your money will accumulate "
"within Gittip unless you regift it to others." "within Gratipay unless you regift it to others."
msgstr "" msgstr ""
"Si vous ne connectez pas de compte bancaire alors votre argent " "Si vous ne connectez pas de compte bancaire alors votre argent "
"s'accumulera dans votre balance, sauf si vous le donner à d'autres " "s'accumulera dans votre balance, sauf si vous le donner à d'autres "
@ -492,10 +492,10 @@ msgstr "Carte de crédit"
#: www/credit-card.html.spt:42 #: www/credit-card.html.spt:42
msgid "" msgid ""
"When you don't have enough money in your Gittip account to cover your " "When you don't have enough money in your Gratipay account to cover your "
"gifts, we'll attempt to pull money in using your credit card." "gifts, we'll attempt to pull money in using your credit card."
msgstr "" msgstr ""
"Quand vous n'avez pas assez d'argent dans votre compte Gittip pour " "Quand vous n'avez pas assez d'argent dans votre compte Gratipay pour "
"financer vos dons, nous essayons d'en ajouter en utilisant votre carte de" "financer vos dons, nous essayons d'en ajouter en utilisant votre carte de"
" crédit." " crédit."
@ -602,9 +602,9 @@ msgstr ""
"utilisateurs." "utilisateurs."
#: www/index.html.spt:87 #: www/index.html.spt:87
msgid "Want to work for Gittip? We are an {0}open company{1}." msgid "Want to work for Gratipay? We are an {0}open company{1}."
msgstr "" msgstr ""
"Vous voulez travaillez pour Gittip ? Nous sommes une {0}entreprise " "Vous voulez travaillez pour Gratipay ? Nous sommes une {0}entreprise "
"ouverte{1}." "ouverte{1}."
#: www/index.html.spt:93 #: www/index.html.spt:93
@ -612,8 +612,8 @@ msgid "Welcome, {0}!"
msgstr "Bienvenue, {0}!" msgstr "Bienvenue, {0}!"
#: www/index.html.spt:94 #: www/index.html.spt:94
msgid "Thanks for joining Gittip!" msgid "Thanks for joining Gratipay!"
msgstr "Merci d'avoir rejoint Gittip!" msgstr "Merci d'avoir rejoint Gratipay!"
#: www/index.html.spt:95 #: www/index.html.spt:95
msgid "Next steps:" msgid "Next steps:"
@ -643,7 +643,7 @@ msgstr "Bonjour, {0}!"
#: www/index.html.spt:107 www/%username/history/index.html.spt:20 #: www/index.html.spt:107 www/%username/history/index.html.spt:20
msgid "Your balance is {0}." msgid "Your balance is {0}."
msgstr "Vous avec {0} dans votre compte Gittip." msgstr "Vous avec {0} dans votre compte Gratipay."
#: www/index.html.spt:110 #: www/index.html.spt:110
msgid "Go to {0}your profile{1}, or {2}sign out{3}." msgid "Go to {0}your profile{1}, or {2}sign out{3}."
@ -688,8 +688,8 @@ msgid "I'm here as a patron, and politely decline to receive gifts."
msgstr "Je suis ici pour donner, et ne souhaite pas recevoir de dons." msgstr "Je suis ici pour donner, et ne souhaite pas recevoir de dons."
#: www/%username/index.html.spt:41 #: www/%username/index.html.spt:41
msgid "My goal is to receive {0} per week on Gittip." msgid "My goal is to receive {0} per week on Gratipay."
msgstr "Mon objectif est de recevoir {0} par semaine sur Gittip." msgstr "Mon objectif est de recevoir {0} par semaine sur Gratipay."
#: www/%username/index.html.spt:45 #: www/%username/index.html.spt:45
msgid "We're grateful for gifts, but don't have a specific funding goal." msgid "We're grateful for gifts, but don't have a specific funding goal."
@ -706,8 +706,8 @@ msgid "We're here as a patron, and politely decline to receive gifts."
msgstr "Nous sommes ici pour donner, et ne souhaitons pas recevoir de dons." msgstr "Nous sommes ici pour donner, et ne souhaitons pas recevoir de dons."
#: www/%username/index.html.spt:48 #: www/%username/index.html.spt:48
msgid "Our goal is to receive {0} per week on Gittip." msgid "Our goal is to receive {0} per week on Gratipay."
msgstr "Notre objectif est de recevoir {0} par semaine sur Gittip." msgstr "Notre objectif est de recevoir {0} par semaine sur Gratipay."
#: www/%username/index.html.spt:55 #: www/%username/index.html.spt:55
msgid "with {n} other" msgid "with {n} other"
@ -721,10 +721,10 @@ msgstr "Vous êtes {0}"
#: www/%username/account/index.html.spt:39 #: www/%username/account/index.html.spt:39
msgid "" msgid ""
"Have you linked to your Gittip profile from other websites? Be sure to " "Have you linked to your Gratipay profile from other websites? Be sure to "
"update those links!" "update those links!"
msgstr "" msgstr ""
"Avez-vous mis des liens vers votre profil Gittip sur d'autres sites? " "Avez-vous mis des liens vers votre profil Gratipay sur d'autres sites? "
"Pensez à les mettre à jour!" "Pensez à les mettre à jour!"
#: www/%username/account/index.html.spt:46 #: www/%username/account/index.html.spt:46
@ -813,11 +813,11 @@ msgstr "De plus, vous promettez {0} par semaine"
#: www/%username/history/index.html.spt:15 #: www/%username/history/index.html.spt:15
msgid "You joined {0}." msgid "You joined {0}."
msgstr "Vous avez rejoint Gittip {0}." msgstr "Vous avez rejoint Gratipay {0}."
#: www/%username/history/index.html.spt:17 #: www/%username/history/index.html.spt:17
msgid "{0} joined {1}." msgid "{0} joined {1}."
msgstr "{0} a rejoint Gittip {1}." msgstr "{0} a rejoint Gratipay {1}."
#: www/%username/history/index.html.spt:22 #: www/%username/history/index.html.spt:22
msgid "Their balance is {0}." msgid "Their balance is {0}."
@ -828,8 +828,8 @@ msgid "Outside"
msgstr "À l'extérieur" msgstr "À l'extérieur"
#: www/%username/history/index.html.spt:65 #: www/%username/history/index.html.spt:65
msgid "Inside Gittip" msgid "Inside Gratipay"
msgstr "À l'intérieur de Gittip" msgstr "À l'intérieur de Gratipay"
#: www/%username/history/index.html.spt:68 #: www/%username/history/index.html.spt:68
msgid "Bank" msgid "Bank"
@ -877,19 +877,19 @@ msgid "Widget #{0}"
msgstr "Widget #{0}" msgstr "Widget #{0}"
#: www/%username/widgets/index.html.spt:104 #: www/%username/widgets/index.html.spt:104
msgid "Use this code to embed a Gittip button on your website:" msgid "Use this code to embed a Gratipay button on your website:"
msgstr "Utilisez ce code pour intégrer un bouton Gittip à votre site web:" msgstr "Utilisez ce code pour intégrer un bouton Gratipay à votre site web:"
#: www/%username/widgets/index.html.spt:110 #: www/%username/widgets/index.html.spt:110
msgid "" msgid ""
"The button opens your profile on Gittip in a new tab or window. Here's " "The button opens your profile on Gratipay in a new tab or window. Here's "
"what the text reads:" "what the text reads:"
msgstr "" msgstr ""
"Le bouton ouvre votre profil Gittip dans un nouvel onglet. Voilà ce qui " "Le bouton ouvre votre profil Gratipay dans un nouvel onglet. Voilà ce qui "
"est écrit:" "est écrit:"
#: www/%username/widgets/index.html.spt:115 #: www/%username/widgets/index.html.spt:115
msgid "person is not logged into Gittip or doesn't tip you" msgid "person is not logged into Gratipay or doesn't tip you"
msgstr "la personne n'est pas connectée ou ne vous fait pas de don" msgstr "la personne n'est pas connectée ou ne vous fait pas de don"
#: www/%username/widgets/index.html.spt:118 #: www/%username/widgets/index.html.spt:118
@ -905,9 +905,9 @@ msgid "Here's an example using {0}:"
msgstr "Voilà un exemple utilisant {0}:" msgstr "Voilà un exemple utilisant {0}:"
#: www/%username/widgets/index.html.spt:134 #: www/%username/widgets/index.html.spt:134
msgid "Use this code to add a Gittip \"receiving\" widget on your website:" msgid "Use this code to add a Gratipay \"receiving\" widget on your website:"
msgstr "" msgstr ""
"Utilisez ce code pour ajouter un widget de \"revenu\" Gittip sur votre " "Utilisez ce code pour ajouter un widget de \"revenu\" Gratipay sur votre "
"site web:" "site web:"
#: www/%username/widgets/index.html.spt:139 #: www/%username/widgets/index.html.spt:139
@ -928,8 +928,8 @@ msgid "Browse Communities"
msgstr "Explorer les communautés" msgstr "Explorer les communautés"
#: www/for/index.html.spt:24 #: www/for/index.html.spt:24
msgid "{0}There are{1} {2} {3}communities on Gittip.{4}" msgid "{0}There are{1} {2} {3}communities on Gratipay.{4}"
msgstr "{0}Il y a{1} {2} {3}communautés sur Gittip.{4}" msgstr "{0}Il y a{1} {2} {3}communautés sur Gratipay.{4}"
#: www/for/index.html.spt:75 #: www/for/index.html.spt:75
msgid "Large Communities" msgid "Large Communities"
@ -963,8 +963,8 @@ msgid "Browse {0}All Communities{1}"
msgstr "Explorer {0}toutes les communautés{1}" msgstr "Explorer {0}toutes les communautés{1}"
#: www/for/%slug/index.html.spt:163 #: www/for/%slug/index.html.spt:163
msgid "{0} to join the {1} community on Gittip." msgid "{0} to join the {1} community on Gratipay."
msgstr "{0} pour rejoindre la communauté {1} sur Gittip." msgstr "{0} pour rejoindre la communauté {1} sur Gratipay."
#: www/for/%slug/index.html.spt:170 #: www/for/%slug/index.html.spt:170
msgid "Leave" msgid "Leave"
@ -979,9 +979,9 @@ msgid "You're the first one here!"
msgstr "Vous êtes le premier ici!" msgstr "Vous êtes le premier ici!"
#: www/for/%slug/index.html.spt:184 #: www/for/%slug/index.html.spt:184
msgid "Bring the {0} community to Gittip to find like-minded people to give to." msgid "Bring the {0} community to Gratipay to find like-minded people to give to."
msgstr "" msgstr ""
"Amenez la communauté {0} sur Gittip pour trouver des gens comme vous à " "Amenez la communauté {0} sur Gratipay pour trouver des gens comme vous à "
"qui donner." "qui donner."
#: www/for/%slug/index.html.spt:193 #: www/for/%slug/index.html.spt:193

View File

@ -236,16 +236,16 @@ msgstr ""
"{bottomstart}per week{bottomend}" "{bottomstart}per week{bottomend}"
#: templates/participant.html:53 #: templates/participant.html:53
msgid "{0} just joined Gittip! :D" msgid "{0} just joined Gratipay! :D"
msgstr "{0} 님은 방금 전부터 Gittip을 시작했어요! :D" msgstr "{0} 님은 방금 전부터 Gratipay을 시작했어요! :D"
#: templates/participant.html:55 #: templates/participant.html:55
msgid "{0} joined recently" msgid "{0} joined recently"
msgstr "{0} 님은 얼마 전에 가입하셨습니다" msgstr "{0} 님은 얼마 전에 가입하셨습니다"
#: templates/participant.html:57 #: templates/participant.html:57
msgid "{0} is quietly watching the Gittip world" msgid "{0} is quietly watching the Gratipay world"
msgstr "{0} 님은 가만히 Gittip 세상을 지켜보고 있습니다" msgstr "{0} 님은 가만히 Gratipay 세상을 지켜보고 있습니다"
#: templates/participant.tip.html:5 #: templates/participant.tip.html:5
msgid "This account has been locked by its owner." msgid "This account has been locked by its owner."
@ -332,37 +332,37 @@ msgstr "{1} 님에게 기부하려면 {0}이 필요합니다"
msgid "Sign in" msgid "Sign in"
msgstr "로그인" msgstr "로그인"
#: templates/support-gittip.html:5 #: templates/support-gratipay.html:5
#, python-format #, python-format
msgid "Only {0}% of active users also {1}support Gittip{2}." msgid "Only {0}% of active users also {1}support Gratipay{2}."
msgstr "" msgstr ""
#: templates/support-gittip.html:7 #: templates/support-gratipay.html:7
#, python-format #, python-format
msgid "{0}% of active users also {1}support Gittip{2}." msgid "{0}% of active users also {1}support Gratipay{2}."
msgstr "" msgstr ""
#: templates/support-gittip.html:11 #: templates/support-gratipay.html:11
msgid "Will you help us reach {0}%?" msgid "Will you help us reach {0}%?"
msgstr "" msgstr ""
#: templates/support-gittip.html:13 #: templates/support-gratipay.html:13
msgid "Will you join them?" msgid "Will you join them?"
msgstr "" msgstr ""
#: templates/support-gittip.html:19 #: templates/support-gratipay.html:19
msgid "Other" msgid "Other"
msgstr "" msgstr ""
#: templates/support-gittip.html:19 #: templates/support-gratipay.html:19
msgid "No thanks" msgid "No thanks"
msgstr "" msgstr ""
#: templates/support-gittip.html:22 #: templates/support-gratipay.html:22
msgid "We fund Gittip solely through your voluntary payments!" msgid "We fund Gratipay solely through your voluntary payments!"
msgstr "" msgstr ""
#: templates/support-gittip.html:23 www/index.html.spt:56 #: templates/support-gratipay.html:23 www/index.html.spt:56
msgid "Learn more" msgid "Learn more"
msgstr "자세히 알아보기" msgstr "자세히 알아보기"
@ -380,16 +380,16 @@ msgstr "은행 계좌"
#: www/bank-account.html.spt:37 #: www/bank-account.html.spt:37
msgid "" msgid ""
"When you receive money on Gittip we'll automatically deposit it into your" "When you receive money on Gratipay we'll automatically deposit it into your"
" bank account." " bank account."
msgstr "Gittip으로 기부금을 받게 되면, 자동으로 은행 계좌로 금액이 입금됩니다." msgstr "Gratipay으로 기부금을 받게 되면, 자동으로 은행 계좌로 금액이 입금됩니다."
#: www/bank-account.html.spt:38 #: www/bank-account.html.spt:38
msgid "" msgid ""
"If you don't connect a bank account then your money will accumulate " "If you don't connect a bank account then your money will accumulate "
"within Gittip unless you regift it to others." "within Gratipay unless you regift it to others."
msgstr "" msgstr ""
"은행 계좌를 연결하지 않았다면, 받은 금액은 Gittip 계좌에 쌓이게 됩니다. Gittip 계좌에 쌓인 금액은 다른 사람에게 다시" "은행 계좌를 연결하지 않았다면, 받은 금액은 Gratipay 계좌에 쌓이게 됩니다. Gratipay 계좌에 쌓인 금액은 다른 사람에게 다시"
" 기부하지 않을 경우 소모되지 않습니다." " 기부하지 않을 경우 소모되지 않습니다."
#: www/bank-account.html.spt:61 #: www/bank-account.html.spt:61
@ -490,9 +490,9 @@ msgstr "신용 카드"
#: www/credit-card.html.spt:42 #: www/credit-card.html.spt:42
msgid "" msgid ""
"When you don't have enough money in your Gittip account to cover your " "When you don't have enough money in your Gratipay account to cover your "
"gifts, we'll attempt to pull money in using your credit card." "gifts, we'll attempt to pull money in using your credit card."
msgstr "Gittip 계좌에 여유금이 없을 경우, 설정하신 신용 카드를 통해 지불을 시도하게 됩니다." msgstr "Gratipay 계좌에 여유금이 없을 경우, 설정하신 신용 카드를 통해 지불을 시도하게 됩니다."
#: www/credit-card.html.spt:43 #: www/credit-card.html.spt:43
msgid "" msgid ""
@ -585,16 +585,16 @@ msgid "Want to see who they are? Browse {0}our communities{1}."
msgstr "어떤 사람들이 있는지 궁금하세요? 어떤 {0}커뮤니티{1}가 있는지 둘러보세요." msgstr "어떤 사람들이 있는지 궁금하세요? 어떤 {0}커뮤니티{1}가 있는지 둘러보세요."
#: www/index.html.spt:87 #: www/index.html.spt:87
msgid "Want to work for Gittip? We are an {0}open company{1}." msgid "Want to work for Gratipay? We are an {0}open company{1}."
msgstr "Gittip에 기여하고 싶으신가요? 저희는 {0}누구에게나 개방된 조직{1}입니다." msgstr "Gratipay에 기여하고 싶으신가요? 저희는 {0}누구에게나 개방된 조직{1}입니다."
#: www/index.html.spt:93 #: www/index.html.spt:93
msgid "Welcome, {0}!" msgid "Welcome, {0}!"
msgstr "{0} 님 안녕하세요?" msgstr "{0} 님 안녕하세요?"
#: www/index.html.spt:94 #: www/index.html.spt:94
msgid "Thanks for joining Gittip!" msgid "Thanks for joining Gratipay!"
msgstr "Gittip에 가입해주셔서 고맙습니다!" msgstr "Gratipay에 가입해주셔서 고맙습니다!"
#: www/index.html.spt:95 #: www/index.html.spt:95
msgid "Next steps:" msgid "Next steps:"
@ -665,8 +665,8 @@ msgid "I'm here as a patron, and politely decline to receive gifts."
msgstr "저는 후원자이며, 죄송합니다만 기부는 받지 않겠습니다." msgstr "저는 후원자이며, 죄송합니다만 기부는 받지 않겠습니다."
#: www/%username/index.html.spt:41 #: www/%username/index.html.spt:41
msgid "My goal is to receive {0} per week on Gittip." msgid "My goal is to receive {0} per week on Gratipay."
msgstr "제 목표 모금액은 매주 Gittip으로 {0}를 받는 것입니다." msgstr "제 목표 모금액은 매주 Gratipay으로 {0}를 받는 것입니다."
#: www/%username/index.html.spt:45 #: www/%username/index.html.spt:45
msgid "We're grateful for gifts, but don't have a specific funding goal." msgid "We're grateful for gifts, but don't have a specific funding goal."
@ -681,8 +681,8 @@ msgid "We're here as a patron, and politely decline to receive gifts."
msgstr "저희는 후원자이며, 죄송합니다만 기부는 받지 않겠습니다." msgstr "저희는 후원자이며, 죄송합니다만 기부는 받지 않겠습니다."
#: www/%username/index.html.spt:48 #: www/%username/index.html.spt:48
msgid "Our goal is to receive {0} per week on Gittip." msgid "Our goal is to receive {0} per week on Gratipay."
msgstr "저희의 목표 모금액은 매주 Gittip으로 {0}를 받는 것입니다." msgstr "저희의 목표 모금액은 매주 Gratipay으로 {0}를 받는 것입니다."
#: www/%username/index.html.spt:55 #: www/%username/index.html.spt:55
msgid "with {n} other" msgid "with {n} other"
@ -695,9 +695,9 @@ msgstr "아이디는 {0}입니다"
#: www/%username/account/index.html.spt:39 #: www/%username/account/index.html.spt:39
msgid "" msgid ""
"Have you linked to your Gittip profile from other websites? Be sure to " "Have you linked to your Gratipay profile from other websites? Be sure to "
"update those links!" "update those links!"
msgstr "혹시 다른 사이트에 Gittip 프로필 페이지를 링크하신 적 있으신가요? 그 링크들 업데이트 해주세요!" msgstr "혹시 다른 사이트에 Gratipay 프로필 페이지를 링크하신 적 있으신가요? 그 링크들 업데이트 해주세요!"
#: www/%username/account/index.html.spt:46 #: www/%username/account/index.html.spt:46
msgid "Hide total giving from others." msgid "Hide total giving from others."
@ -800,7 +800,7 @@ msgid "Outside"
msgstr "" msgstr ""
#: www/%username/history/index.html.spt:65 #: www/%username/history/index.html.spt:65
msgid "Inside Gittip" msgid "Inside Gratipay"
msgstr "" msgstr ""
#: www/%username/history/index.html.spt:68 #: www/%username/history/index.html.spt:68
@ -849,18 +849,18 @@ msgid "Widget #{0}"
msgstr "{0}번 위젯" msgstr "{0}번 위젯"
#: www/%username/widgets/index.html.spt:104 #: www/%username/widgets/index.html.spt:104
msgid "Use this code to embed a Gittip button on your website:" msgid "Use this code to embed a Gratipay button on your website:"
msgstr "여러분의 웹사이트에 Gittip 버튼을 붙이고 싶다면 아래 코드를 쓰면 됩니다:" msgstr "여러분의 웹사이트에 Gratipay 버튼을 붙이고 싶다면 아래 코드를 쓰면 됩니다:"
#: www/%username/widgets/index.html.spt:110 #: www/%username/widgets/index.html.spt:110
msgid "" msgid ""
"The button opens your profile on Gittip in a new tab or window. Here's " "The button opens your profile on Gratipay in a new tab or window. Here's "
"what the text reads:" "what the text reads:"
msgstr "이 버튼은 여러분의 Gittip 프로필 페이지 새 창(탭)으로 엽니다. 아래는 보이게 되는 문장입니다:" msgstr "이 버튼은 여러분의 Gratipay 프로필 페이지 새 창(탭)으로 엽니다. 아래는 보이게 되는 문장입니다:"
#: www/%username/widgets/index.html.spt:115 #: www/%username/widgets/index.html.spt:115
msgid "person is not logged into Gittip or doesn't tip you" msgid "person is not logged into Gratipay or doesn't tip you"
msgstr "Gittip에 로그인하지 않았거나 여러분한테 기부하고 있지 않은 사람에게" msgstr "Gratipay에 로그인하지 않았거나 여러분한테 기부하고 있지 않은 사람에게"
#: www/%username/widgets/index.html.spt:118 #: www/%username/widgets/index.html.spt:118
msgid "person tips you; shows current gift amount" msgid "person tips you; shows current gift amount"
@ -875,8 +875,8 @@ msgid "Here's an example using {0}:"
msgstr "예를 들면 {0} 님의 버튼은 이렇게 나옵니다:" msgstr "예를 들면 {0} 님의 버튼은 이렇게 나옵니다:"
#: www/%username/widgets/index.html.spt:134 #: www/%username/widgets/index.html.spt:134
msgid "Use this code to add a Gittip \"receiving\" widget on your website:" msgid "Use this code to add a Gratipay \"receiving\" widget on your website:"
msgstr "여러분의 웹사이트에 Gittip \"모금중\" 위젯을 붙이고 싶다면 아래 코드를 쓰면 됩니다:" msgstr "여러분의 웹사이트에 Gratipay \"모금중\" 위젯을 붙이고 싶다면 아래 코드를 쓰면 됩니다:"
#: www/%username/widgets/index.html.spt:139 #: www/%username/widgets/index.html.spt:139
#: www/%username/widgets/index.html.spt:150 #: www/%username/widgets/index.html.spt:150
@ -894,8 +894,8 @@ msgid "Browse Communities"
msgstr "커뮤니티 둘러보기" msgstr "커뮤니티 둘러보기"
#: www/for/index.html.spt:24 #: www/for/index.html.spt:24
msgid "{0}There are{1} {2} {3}communities on Gittip.{4}" msgid "{0}There are{1} {2} {3}communities on Gratipay.{4}"
msgstr "{0}모두{1} {2} {3}커뮤니티가 Gittip에 있습니다.{4}" msgstr "{0}모두{1} {2} {3}커뮤니티가 Gratipay에 있습니다.{4}"
#: www/for/index.html.spt:75 #: www/for/index.html.spt:75
msgid "Large Communities" msgid "Large Communities"
@ -928,7 +928,7 @@ msgid "Browse {0}All Communities{1}"
msgstr "{0}전체 커뮤니티{1} 둘러보기" msgstr "{0}전체 커뮤니티{1} 둘러보기"
#: www/for/%slug/index.html.spt:163 #: www/for/%slug/index.html.spt:163
msgid "{0} to join the {1} community on Gittip." msgid "{0} to join the {1} community on Gratipay."
msgstr "{1} 커뮤니티에 참여하려면 {0}이 필요합니다." msgstr "{1} 커뮤니티에 참여하려면 {0}이 필요합니다."
#: www/for/%slug/index.html.spt:170 #: www/for/%slug/index.html.spt:170
@ -944,7 +944,7 @@ msgid "You're the first one here!"
msgstr "첫 참여자십니다!" msgstr "첫 참여자십니다!"
#: www/for/%slug/index.html.spt:184 #: www/for/%slug/index.html.spt:184
msgid "Bring the {0} community to Gittip to find like-minded people to give to." msgid "Bring the {0} community to Gratipay to find like-minded people to give to."
msgstr "" msgstr ""
#: www/for/%slug/index.html.spt:193 #: www/for/%slug/index.html.spt:193

View File

@ -223,16 +223,16 @@ msgid ""
msgstr "" msgstr ""
#: templates/participant.html:53 #: templates/participant.html:53
msgid "{0} just joined Gittip! :D" msgid "{0} just joined Gratipay! :D"
msgstr "{0} 刚刚加入了 Gittip! :D" msgstr "{0} 刚刚加入了 Gratipay! :D"
#: templates/participant.html:55 #: templates/participant.html:55
msgid "{0} joined recently" msgid "{0} joined recently"
msgstr "{0} 最近加入了" msgstr "{0} 最近加入了"
#: templates/participant.html:57 #: templates/participant.html:57
msgid "{0} is quietly watching the Gittip world" msgid "{0} is quietly watching the Gratipay world"
msgstr "{0} 正在安静地看着Gittip的世界" msgstr "{0} 正在安静地看着Gratipay的世界"
#: templates/participant.tip.html:5 #: templates/participant.tip.html:5
msgid "This account has been locked by its owner." msgid "This account has been locked by its owner."
@ -319,37 +319,37 @@ msgstr ""
msgid "Sign in" msgid "Sign in"
msgstr "登录" msgstr "登录"
#: templates/support-gittip.html:5 #: templates/support-gratipay.html:5
#, python-format #, python-format
msgid "Only {0}% of active users also {1}support Gittip{2}." msgid "Only {0}% of active users also {1}support Gratipay{2}."
msgstr "" msgstr ""
#: templates/support-gittip.html:7 #: templates/support-gratipay.html:7
#, python-format #, python-format
msgid "{0}% of active users also {1}support Gittip{2}." msgid "{0}% of active users also {1}support Gratipay{2}."
msgstr "" msgstr ""
#: templates/support-gittip.html:11 #: templates/support-gratipay.html:11
msgid "Will you help us reach {0}%?" msgid "Will you help us reach {0}%?"
msgstr "" msgstr ""
#: templates/support-gittip.html:13 #: templates/support-gratipay.html:13
msgid "Will you join them?" msgid "Will you join them?"
msgstr "" msgstr ""
#: templates/support-gittip.html:19 #: templates/support-gratipay.html:19
msgid "Other" msgid "Other"
msgstr "" msgstr ""
#: templates/support-gittip.html:19 #: templates/support-gratipay.html:19
msgid "No thanks" msgid "No thanks"
msgstr "" msgstr ""
#: templates/support-gittip.html:22 #: templates/support-gratipay.html:22
msgid "We fund Gittip solely through your voluntary payments!" msgid "We fund Gratipay solely through your voluntary payments!"
msgstr "" msgstr ""
#: templates/support-gittip.html:23 www/index.html.spt:56 #: templates/support-gratipay.html:23 www/index.html.spt:56
msgid "Learn more" msgid "Learn more"
msgstr "" msgstr ""
@ -367,14 +367,14 @@ msgstr ""
#: www/bank-account.html.spt:37 #: www/bank-account.html.spt:37
msgid "" msgid ""
"When you receive money on Gittip we'll automatically deposit it into your" "When you receive money on Gratipay we'll automatically deposit it into your"
" bank account." " bank account."
msgstr "" msgstr ""
#: www/bank-account.html.spt:38 #: www/bank-account.html.spt:38
msgid "" msgid ""
"If you don't connect a bank account then your money will accumulate " "If you don't connect a bank account then your money will accumulate "
"within Gittip unless you regift it to others." "within Gratipay unless you regift it to others."
msgstr "" msgstr ""
#: www/bank-account.html.spt:61 #: www/bank-account.html.spt:61
@ -475,7 +475,7 @@ msgstr ""
#: www/credit-card.html.spt:42 #: www/credit-card.html.spt:42
msgid "" msgid ""
"When you don't have enough money in your Gittip account to cover your " "When you don't have enough money in your Gratipay account to cover your "
"gifts, we'll attempt to pull money in using your credit card." "gifts, we'll attempt to pull money in using your credit card."
msgstr "" msgstr ""
@ -570,7 +570,7 @@ msgid "Want to see who they are? Browse {0}our communities{1}."
msgstr "" msgstr ""
#: www/index.html.spt:87 #: www/index.html.spt:87
msgid "Want to work for Gittip? We are an {0}open company{1}." msgid "Want to work for Gratipay? We are an {0}open company{1}."
msgstr "" msgstr ""
#: www/index.html.spt:93 #: www/index.html.spt:93
@ -578,7 +578,7 @@ msgid "Welcome, {0}!"
msgstr "" msgstr ""
#: www/index.html.spt:94 #: www/index.html.spt:94
msgid "Thanks for joining Gittip!" msgid "Thanks for joining Gratipay!"
msgstr "" msgstr ""
#: www/index.html.spt:95 #: www/index.html.spt:95
@ -650,7 +650,7 @@ msgid "I'm here as a patron, and politely decline to receive gifts."
msgstr "" msgstr ""
#: www/%username/index.html.spt:41 #: www/%username/index.html.spt:41
msgid "My goal is to receive {0} per week on Gittip." msgid "My goal is to receive {0} per week on Gratipay."
msgstr "" msgstr ""
#: www/%username/index.html.spt:45 #: www/%username/index.html.spt:45
@ -666,7 +666,7 @@ msgid "We're here as a patron, and politely decline to receive gifts."
msgstr "" msgstr ""
#: www/%username/index.html.spt:48 #: www/%username/index.html.spt:48
msgid "Our goal is to receive {0} per week on Gittip." msgid "Our goal is to receive {0} per week on Gratipay."
msgstr "" msgstr ""
#: www/%username/index.html.spt:55 #: www/%username/index.html.spt:55
@ -681,7 +681,7 @@ msgstr ""
#: www/%username/account/index.html.spt:39 #: www/%username/account/index.html.spt:39
msgid "" msgid ""
"Have you linked to your Gittip profile from other websites? Be sure to " "Have you linked to your Gratipay profile from other websites? Be sure to "
"update those links!" "update those links!"
msgstr "" msgstr ""
@ -786,7 +786,7 @@ msgid "Outside"
msgstr "" msgstr ""
#: www/%username/history/index.html.spt:65 #: www/%username/history/index.html.spt:65
msgid "Inside Gittip" msgid "Inside Gratipay"
msgstr "" msgstr ""
#: www/%username/history/index.html.spt:68 #: www/%username/history/index.html.spt:68
@ -835,17 +835,17 @@ msgid "Widget #{0}"
msgstr "" msgstr ""
#: www/%username/widgets/index.html.spt:104 #: www/%username/widgets/index.html.spt:104
msgid "Use this code to embed a Gittip button on your website:" msgid "Use this code to embed a Gratipay button on your website:"
msgstr "" msgstr ""
#: www/%username/widgets/index.html.spt:110 #: www/%username/widgets/index.html.spt:110
msgid "" msgid ""
"The button opens your profile on Gittip in a new tab or window. Here's " "The button opens your profile on Gratipay in a new tab or window. Here's "
"what the text reads:" "what the text reads:"
msgstr "" msgstr ""
#: www/%username/widgets/index.html.spt:115 #: www/%username/widgets/index.html.spt:115
msgid "person is not logged into Gittip or doesn't tip you" msgid "person is not logged into Gratipay or doesn't tip you"
msgstr "" msgstr ""
#: www/%username/widgets/index.html.spt:118 #: www/%username/widgets/index.html.spt:118
@ -861,7 +861,7 @@ msgid "Here's an example using {0}:"
msgstr "" msgstr ""
#: www/%username/widgets/index.html.spt:134 #: www/%username/widgets/index.html.spt:134
msgid "Use this code to add a Gittip \"receiving\" widget on your website:" msgid "Use this code to add a Gratipay \"receiving\" widget on your website:"
msgstr "" msgstr ""
#: www/%username/widgets/index.html.spt:139 #: www/%username/widgets/index.html.spt:139
@ -880,7 +880,7 @@ msgid "Browse Communities"
msgstr "" msgstr ""
#: www/for/index.html.spt:24 #: www/for/index.html.spt:24
msgid "{0}There are{1} {2} {3}communities on Gittip.{4}" msgid "{0}There are{1} {2} {3}communities on Gratipay.{4}"
msgstr "" msgstr ""
#: www/for/index.html.spt:75 #: www/for/index.html.spt:75
@ -915,7 +915,7 @@ msgid "Browse {0}All Communities{1}"
msgstr "" msgstr ""
#: www/for/%slug/index.html.spt:163 #: www/for/%slug/index.html.spt:163
msgid "{0} to join the {1} community on Gittip." msgid "{0} to join the {1} community on Gratipay."
msgstr "" msgstr ""
#: www/for/%slug/index.html.spt:170 #: www/for/%slug/index.html.spt:170
@ -931,7 +931,7 @@ msgid "You're the first one here!"
msgstr "" msgstr ""
#: www/for/%slug/index.html.spt:184 #: www/for/%slug/index.html.spt:184
msgid "Bring the {0} community to Gittip to find like-minded people to give to." msgid "Bring the {0} community to Gratipay to find like-minded people to give to."
msgstr "" msgstr ""
#: www/for/%slug/index.html.spt:193 #: www/for/%slug/index.html.spt:193

View File

Before

Width:  |  Height:  |  Size: 9.9 KiB

After

Width:  |  Height:  |  Size: 9.9 KiB

View File

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@ -1,26 +0,0 @@
Gittip.communities = {};
Gittip.communities.update = function(name, is_member, callback) {
jQuery.ajax(
{ type: 'POST'
, url: '/for/communities.json'
, data: {name: name, is_member: is_member}
, dataType: 'json'
, success: callback
}
);
};
Gittip.communities.jumpTo = function(slug) {
window.location.href = "/for/" + slug + "/";
};
Gittip.communities.join = function(name, callback) {
Gittip.communities.update(name, true, callback);
};
Gittip.communities.leave = function(name, callback) {
if (confirm("Are you sure you want to leave the " + name + " community?"))
Gittip.communities.update(name, false, callback);
};

View File

@ -1,2 +0,0 @@
// Localize gittipURI for gttp.co widgets
gittipURI = '/';

View File

@ -1,20 +1,20 @@
/* Main namespace. /* Main namespace.
* =============== * ===============
* Individual modules are in the gittip/ directory. * Individual modules are in the gratipay/ directory.
*/ */
Gittip = {}; Gratipay = {};
Gittip.getCookie = function(key) { Gratipay.getCookie = function(key) {
var o = new RegExp("(?:^|; ?)" + escape(key) + "=([^;]+)").exec(document.cookie); var o = new RegExp("(?:^|; ?)" + escape(key) + "=([^;]+)").exec(document.cookie);
return o && unescape(o[1]); return o && unescape(o[1]);
} }
Gittip.init = function() { Gratipay.init = function() {
Gittip.forms.initCSRF(); Gratipay.forms.initCSRF();
Gittip.signIn(); Gratipay.signIn();
Gittip.signOut(); Gratipay.signOut();
Gittip.tips.initSupportGittip(); Gratipay.tips.initSupportGratipay();
}; };
@ -22,12 +22,12 @@ Gittip.init = function() {
// =================== // ===================
// yanked from gttp.co/v1/api.js // yanked from gttp.co/v1/api.js
Gittip.each = function(a, fn) { Gratipay.each = function(a, fn) {
for (var i=0; i<a.length; i++) for (var i=0; i<a.length; i++)
fn(a[i], i, length); fn(a[i], i, length);
}; };
Gittip.jsoncss = function(jsoncss) { Gratipay.jsoncss = function(jsoncss) {
var out = ''; var out = '';
this.each(jsoncss, function(selector) { this.each(jsoncss, function(selector) {
@ -47,7 +47,7 @@ Gittip.jsoncss = function(jsoncss) {
return this.jsonml(['style', out]); return this.jsonml(['style', out]);
}; };
Gittip.jsonml = function(jsonml) { Gratipay.jsonml = function(jsonml) {
var node = document.createElement(jsonml[0]), var node = document.createElement(jsonml[0]),
_ = this; _ = this;
@ -73,7 +73,7 @@ Gittip.jsonml = function(jsonml) {
return node; return node;
}; };
Gittip.signIn = function() { Gratipay.signIn = function() {
$('.sign-in > .dropdown').mouseenter(function(e) { $('.sign-in > .dropdown').mouseenter(function(e) {
clearTimeout($(this).data('timeoutId')); clearTimeout($(this).data('timeoutId'));
$(this).addClass('open'); $(this).addClass('open');
@ -101,7 +101,7 @@ Gittip.signIn = function() {
}); });
}; };
Gittip.signOut = function() { Gratipay.signOut = function() {
$('a#sign-out').click(function(e) { $('a#sign-out').click(function(e) {
e.preventDefault(); e.preventDefault();
@ -112,7 +112,7 @@ Gittip.signOut = function() {
window.location.href = window.location.href; window.location.href = window.location.href;
}, },
error: function() { error: function() {
Gittip.notification('Failed to sign out', 'error'); Gratipay.notification('Failed to sign out', 'error');
} }
}); });
}); });

View File

@ -1,6 +1,6 @@
Gittip.account = {}; Gratipay.account = {};
Gittip.account.init = function() { Gratipay.account.init = function() {
// Wire up username knob. // Wire up username knob.
// ====================== // ======================
@ -26,7 +26,7 @@ Gittip.account.init = function() {
} }
function error(e) { function error(e) {
$('#save-username').css('opacity', 1); $('#save-username').css('opacity', 1);
Gittip.notification(JSON.parse(e.responseText).error_message_long, 'error'); Gratipay.notification(JSON.parse(e.responseText).error_message_long, 'error');
} }
jQuery.ajax( jQuery.ajax(
{ url: "../username.json" { url: "../username.json"
@ -67,7 +67,7 @@ Gittip.account.init = function() {
$('.anonymous-giving input').attr('checked', data.giving); $('.anonymous-giving input').attr('checked', data.giving);
} }
, error: function() { , error: function() {
Gittip.notification("Failed to change your anonymity preference. Please try again.", 'error'); Gratipay.notification("Failed to change your anonymity preference. Please try again.", 'error');
} }
}); });
}); });
@ -86,7 +86,7 @@ Gittip.account.init = function() {
$('.anonymous-receiving input').attr('checked', data.receiving); $('.anonymous-receiving input').attr('checked', data.receiving);
} }
, error: function() { , error: function() {
Gittip.notification("Failed to change your anonymity preference. Please try again.", 'error'); Gratipay.notification("Failed to change your anonymity preference. Please try again.", 'error');
} }
}); });
}); });
@ -151,7 +151,7 @@ Gittip.account.init = function() {
success: success, success: success,
error: function (data) { error: function (data) {
$this.css('opacity', 1); $this.css('opacity', 1);
Gittip.notification('Failed to save your email address. ' Gratipay.notification('Failed to save your email address. '
+ 'Please try again.', 'error'); + 'Please try again.', 'error');
}, },
data: {email: $('input.email').val()} data: {email: $('input.email').val()}

View File

@ -1,7 +1,7 @@
Gittip.charts = {}; Gratipay.charts = {};
Gittip.charts.make = function(series) { Gratipay.charts.make = function(series) {
// Takes an array of time series data. // Takes an array of time series data.
if (!series.length) { if (!series.length) {

View File

@ -0,0 +1,26 @@
Gratipay.communities = {};
Gratipay.communities.update = function(name, is_member, callback) {
jQuery.ajax(
{ type: 'POST'
, url: '/for/communities.json'
, data: {name: name, is_member: is_member}
, dataType: 'json'
, success: callback
}
);
};
Gratipay.communities.jumpTo = function(slug) {
window.location.href = "/for/" + slug + "/";
};
Gratipay.communities.join = function(name, callback) {
Gratipay.communities.update(name, true, callback);
};
Gratipay.communities.leave = function(name, callback) {
if (confirm("Are you sure you want to leave the " + name + " community?"))
Gratipay.communities.update(name, false, callback);
};

View File

@ -1,13 +1,13 @@
// Form Generics // Form Generics
// ============= // =============
Gittip.forms = {}; Gratipay.forms = {};
Gittip.forms.clearFeedback = function() { Gratipay.forms.clearFeedback = function() {
$('#feedback').empty(); $('#feedback').empty();
}; };
Gittip.forms.showFeedback = function(msg, details) { Gratipay.forms.showFeedback = function(msg, details) {
if (msg === null) if (msg === null)
msg = "Failure"; msg = "Failure";
msg = '<h2><span class="highlight">' + msg + '</span></h2>'; msg = '<h2><span class="highlight">' + msg + '</span></h2>';
@ -18,16 +18,16 @@ Gittip.forms.showFeedback = function(msg, details) {
$('#feedback .details').append('<li>' + details[i] + '</li>'); $('#feedback .details').append('<li>' + details[i] + '</li>');
}; };
Gittip.forms.submit = function(url, data, success, error) { Gratipay.forms.submit = function(url, data, success, error) {
if (success === undefined) { if (success === undefined) {
success = function() { success = function() {
Gittip.forms.showFeedback("Success!"); Gratipay.forms.showFeedback("Success!");
}; };
} }
if (error === undefined) { if (error === undefined) {
error = function(data) { error = function(data) {
Gittip.forms.showFeedback(data.problem); Gratipay.forms.showFeedback(data.problem);
}; };
} }
@ -39,7 +39,7 @@ Gittip.forms.submit = function(url, data, success, error) {
} }
function _error(xhr, foo, bar) { function _error(xhr, foo, bar) {
Gittip.forms.showFeedback( "So sorry!!" Gratipay.forms.showFeedback( "So sorry!!"
, ["There was a fairly drastic error with your request."] , ["There was a fairly drastic error with your request."]
); );
console.log("failed", xhr, foo, bar); console.log("failed", xhr, foo, bar);
@ -54,7 +54,7 @@ Gittip.forms.submit = function(url, data, success, error) {
}); });
}; };
Gittip.forms.initCSRF = function() { // https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax Gratipay.forms.initCSRF = function() { // https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax
jQuery(document).ajaxSend(function(event, xhr, settings) { jQuery(document).ajaxSend(function(event, xhr, settings) {
function sameOrigin(url) { function sameOrigin(url) {
// url could be relative or scheme relative or absolute // url could be relative or scheme relative or absolute
@ -73,7 +73,7 @@ Gittip.forms.initCSRF = function() { // https://docs.djangoproject.com/en/dev/
} }
if (!safeMethod(settings.type) && sameOrigin(settings.url)) { if (!safeMethod(settings.type) && sameOrigin(settings.url)) {
xhr.setRequestHeader("X-CSRF-TOKEN", Gittip.getCookie('csrf_token')); xhr.setRequestHeader("X-CSRF-TOKEN", Gratipay.getCookie('csrf_token'));
} }
}); });
}; };

2
js/gratipay/gttp.js Normal file
View File

@ -0,0 +1,2 @@
// Localize gratipayURI for gttp.co widgets
gratipayURI = '/';

View File

@ -2,15 +2,15 @@
// ==================== // ====================
// "Who inspires you?" // "Who inspires you?"
Gittip.jump = {}; Gratipay.jump = {};
Gittip.jump.init = function() { Gratipay.jump.init = function() {
function jump(e) { function jump(e) {
e.preventDefault(); e.preventDefault();
e.stopPropagation(); e.stopPropagation();
var platform = Gittip.trim($('#jump select').val()), var platform = Gratipay.trim($('#jump select').val()),
val = Gittip.trim($('#jump input').val()); val = Gratipay.trim($('#jump input').val());
if (val) if (val)
window.location = '/on/' + platform + '/' + val + '/'; window.location = '/on/' + platform + '/' + val + '/';
} }

View File

@ -1,10 +1,10 @@
Gittip.modal = {}; Gratipay.modal = {};
/** /**
* Confirm dialog * Confirm dialog
* *
* @example * @example
* Gittip.modal.confirm({ * Gratipay.modal.confirm({
* message: 'Error.', * message: 'Error.',
* yes: 'Yes', // optional * yes: 'Yes', // optional
* no: 'No', // optional * no: 'No', // optional
@ -20,14 +20,14 @@ Gittip.modal = {};
* *
* @param {object} options * @param {object} options
*/ */
Gittip.modal.confirm = function(options) { Gratipay.modal.confirm = function(options) {
var message = options.message; var message = options.message;
var callback = options.callback; var callback = options.callback;
var yesText = options.yes || 'Yes'; var yesText = options.yes || 'Yes';
var noText = options.no || 'No'; var noText = options.no || 'No';
var selected = (options.selected || 'yes').toLowerCase(); var selected = (options.selected || 'yes').toLowerCase();
var dialog = Gittip.jsonml(['div', { 'class': 'modal modal-confirm' }, var dialog = Gratipay.jsonml(['div', { 'class': 'modal modal-confirm' },
['p', message], ['p', message],
['div', { 'class': 'controls' }, ['div', { 'class': 'controls' },

View File

@ -3,14 +3,14 @@
* @param {string} text Notification text * @param {string} text Notification text
* @param {string} [type=notice] Notification type (one of: notice, error, success) * @param {string} [type=notice] Notification type (one of: notice, error, success)
*/ */
Gittip.notification = function(text, type, timeout) { Gratipay.notification = function(text, type, timeout) {
var type = type || 'notice'; var type = type || 'notice';
var timeout = timeout || (type == 'error' ? 10000 : 5000); var timeout = timeout || (type == 'error' ? 10000 : 5000);
var dialog = ['div', { 'class': 'notification notification-' + type }, [ 'div', text ]]; var dialog = ['div', { 'class': 'notification notification-' + type }, [ 'div', text ]];
var $dialog = $([ var $dialog = $([
Gittip.jsonml(dialog), Gratipay.jsonml(dialog),
Gittip.jsonml(dialog) Gratipay.jsonml(dialog)
]); ]);
if (!$('#notification-area').length) if (!$('#notification-area').length)

View File

@ -1,23 +1,23 @@
/* Bank Account and Credit Card forms /* Bank Account and Credit Card forms
* *
* These two forms share some common wiring under the Gittip.payments * These two forms share some common wiring under the Gratipay.payments
* namespace, and each has unique code under the Gittip.payments.{cc,ba} * namespace, and each has unique code under the Gratipay.payments.{cc,ba}
* namespaces. Each form gets its own page so we only instantiate one of these * namespaces. Each form gets its own page so we only instantiate one of these
* at a time. * at a time.
* *
*/ */
Gittip.payments = {}; Gratipay.payments = {};
// Common code // Common code
// =========== // ===========
Gittip.payments.havePayments = false; Gratipay.payments.havePayments = false;
Gittip.payments.processorAttempts = 0; Gratipay.payments.processorAttempts = 0;
Gittip.payments.submitDeleteForm = function(e) { Gratipay.payments.submitDeleteForm = function(e) {
var item = $("#payout").length ? "bank account" : "credit card"; var item = $("#payout").length ? "bank account" : "credit card";
var slug = $("#payout").length ? "bank-account" : "credit-card"; var slug = $("#payout").length ? "bank-account" : "credit-card";
var msg = "Really disconnect your " + item + "?"; var msg = "Really disconnect your " + item + "?";
@ -36,7 +36,7 @@ Gittip.payments.submitDeleteForm = function(e) {
} }
, error: function(x,y,z) { , error: function(x,y,z) {
select(cur); select(cur);
Gittip.notification("Sorry, something went wrong deleting your " + item + ". :(", 'error'); Gratipay.notification("Sorry, something went wrong deleting your " + item + ". :(", 'error');
console.log(x,y,z); console.log(x,y,z);
} }
} }
@ -44,24 +44,24 @@ Gittip.payments.submitDeleteForm = function(e) {
return false; return false;
}; };
Gittip.payments.onError = function(response) { Gratipay.payments.onError = function(response) {
$('button#save').css('opacity', 1); $('button#save').css('opacity', 1);
var msg = response.status_code + ": " + var msg = response.status_code + ": " +
$.map(response.errors, function(obj) { return obj.description }).join(', '); $.map(response.errors, function(obj) { return obj.description }).join(', ');
Gittip.forms.showFeedback(null, [msg]); Gratipay.forms.showFeedback(null, [msg]);
return msg; return msg;
}; };
Gittip.payments.onSuccess = function(data) { Gratipay.payments.onSuccess = function(data) {
$('#status').text('working').addClass('highlight'); $('#status').text('working').addClass('highlight');
setTimeout(function() { setTimeout(function() {
$('#status').removeClass('highlight'); $('#status').removeClass('highlight');
}, 8000); }, 8000);
$('#delete').show(); $('#delete').show();
Gittip.forms.clearFeedback(); Gratipay.forms.clearFeedback();
$('button#save').css('opacity', 1); $('button#save').css('opacity', 1);
setTimeout(function() { setTimeout(function() {
window.location.href = '/' + Gittip.participantId + '/'; window.location.href = '/' + Gratipay.participantId + '/';
}, 1000); }, 1000);
}; };
@ -69,26 +69,26 @@ Gittip.payments.onSuccess = function(data) {
// Bank Accounts // Bank Accounts
// ============= // =============
Gittip.payments.ba = {}; Gratipay.payments.ba = {};
Gittip.payments.ba.init = function(balanced_uri, participantId) { Gratipay.payments.ba.init = function(balanced_uri, participantId) {
Gittip.participantId = participantId; Gratipay.participantId = participantId;
$('#delete form').submit(Gittip.payments.submitDeleteForm); $('#delete form').submit(Gratipay.payments.submitDeleteForm);
$('#payout').submit(Gittip.payments.ba.submit); $('#payout').submit(Gratipay.payments.ba.submit);
// Lazily depend on Balanced. // Lazily depend on Balanced.
var balanced_js = "https://js.balancedpayments.com/1.1/balanced.min.js"; var balanced_js = "https://js.balancedpayments.com/1.1/balanced.min.js";
jQuery.getScript(balanced_js, function() { jQuery.getScript(balanced_js, function() {
Gittip.havePayouts = true; Gratipay.havePayouts = true;
$('input[type!="hidden"]').eq(0).focus(); $('input[type!="hidden"]').eq(0).focus();
}); });
}; };
Gittip.payments.ba.submit = function (e) { Gratipay.payments.ba.submit = function (e) {
e.preventDefault(); e.preventDefault();
$('button#save').css('opacity', 0.5); $('button#save').css('opacity', 0.5);
Gittip.forms.clearFeedback(); Gratipay.forms.clearFeedback();
var bankAccount = { var bankAccount = {
name: $('#account_name').val(), name: $('#account_name').val(),
@ -96,7 +96,7 @@ Gittip.payments.ba.submit = function (e) {
routing_number: $('#routing_number').val() routing_number: $('#routing_number').val()
}; };
Gittip.payments.ba.merchantData = { Gratipay.payments.ba.merchantData = {
//type: 'person', // Oooh, may need to vary this some day? //type: 'person', // Oooh, may need to vary this some day?
street_address: $('#address_1').val(), street_address: $('#address_1').val(),
postal_code: $('#zip').val(), postal_code: $('#zip').val(),
@ -156,17 +156,17 @@ Gittip.payments.ba.submit = function (e) {
if (errors.length) { if (errors.length) {
$('button#save').css('opacity', 1); $('button#save').css('opacity', 1);
Gittip.forms.showFeedback(null, errors); Gratipay.forms.showFeedback(null, errors);
} else { } else {
balanced.bankAccount.create( bankAccount balanced.bankAccount.create( bankAccount
, Gittip.payments.ba.handleResponse , Gratipay.payments.ba.handleResponse
); );
} }
}; };
Gittip.payments.ba.handleResponse = function (response) { Gratipay.payments.ba.handleResponse = function (response) {
if (response.status_code !== 201) { if (response.status_code !== 201) {
var msg = Gittip.payments.onError(response); var msg = Gratipay.payments.onError(response);
$.post('/bank-account.json', {action: 'store-error', msg: msg}); $.post('/bank-account.json', {action: 'store-error', msg: msg});
return; return;
} }
@ -186,16 +186,16 @@ Gittip.payments.ba.handleResponse = function (response) {
+ "check, correct, and resubmit your details." + "check, correct, and resubmit your details."
]; ];
} }
Gittip.forms.showFeedback(data.problem, messages); Gratipay.forms.showFeedback(data.problem, messages);
$('button#save').css('opacity', 1); $('button#save').css('opacity', 1);
} }
var detailsToSubmit = Gittip.payments.ba.merchantData; var detailsToSubmit = Gratipay.payments.ba.merchantData;
detailsToSubmit.bank_account_uri = response.bank_accounts[0].href; detailsToSubmit.bank_account_uri = response.bank_accounts[0].href;
Gittip.forms.submit( "/bank-account.json" Gratipay.forms.submit( "/bank-account.json"
, detailsToSubmit , detailsToSubmit
, Gittip.payments.onSuccess , Gratipay.payments.onSuccess
, detailedFeedback , detailedFeedback
); );
}; };
@ -204,36 +204,36 @@ Gittip.payments.ba.handleResponse = function (response) {
// Credit Cards // Credit Cards
// ============ // ============
Gittip.payments.cc = {}; Gratipay.payments.cc = {};
Gittip.payments.cc.init = function(balanced_uri, participantId) { Gratipay.payments.cc.init = function(balanced_uri, participantId) {
Gittip.participantId = participantId; Gratipay.participantId = participantId;
$('#delete form').submit(Gittip.payments.submitDeleteForm); $('#delete form').submit(Gratipay.payments.submitDeleteForm);
$('form#payment').submit(Gittip.payments.cc.submit); $('form#payment').submit(Gratipay.payments.cc.submit);
// Lazily depend on Balanced. // Lazily depend on Balanced.
var balanced_js = "https://js.balancedpayments.com/1.1/balanced.min.js"; var balanced_js = "https://js.balancedpayments.com/1.1/balanced.min.js";
jQuery.getScript(balanced_js, function() { jQuery.getScript(balanced_js, function() {
Gittip.havePayments = true; Gratipay.havePayments = true;
$('input[type!="hidden"]').eq(0).focus(); $('input[type!="hidden"]').eq(0).focus();
}); });
}; };
Gittip.payments.cc.submit = function(e) { Gratipay.payments.cc.submit = function(e) {
e.stopPropagation(); e.stopPropagation();
e.preventDefault(); e.preventDefault();
$('button#save').css('opacity', 0.5); $('button#save').css('opacity', 0.5);
Gittip.forms.clearFeedback(); Gratipay.forms.clearFeedback();
if (!Gittip.havePayments) { if (!Gratipay.havePayments) {
if (Gittip.paymentProcessorAttempts++ === 50) if (Gratipay.paymentProcessorAttempts++ === 50)
Gittip.notification( "Gah! Apparently we suck. If you're really motivated, call " Gratipay.notification( "Gah! Apparently we suck. If you're really motivated, call "
+ "me (Chad) at 412-925-4220 and we'll figure this out. " + "me (Chad) at 412-925-4220 and we'll figure this out. "
+ "Sorry. :-(" + "Sorry. :-("
); );
else else
setTimeout(Gittip.submitPaymentForm, 200); setTimeout(Gratipay.submitPaymentForm, 200);
return false; return false;
} }
@ -260,7 +260,7 @@ Gittip.payments.cc.submit = function(e) {
// XXX We're duping some of this info in both meta and address due to // XXX We're duping some of this info in both meta and address due to
// evolution of the Balanced API and our stepwise keeping-up. See: // evolution of the Balanced API and our stepwise keeping-up. See:
// https://github.com/gittip/www.gittip.com/issues/2446 and links from // https://github.com/gratipay/www.gratipay.com/issues/2446 and links from
// there. // there.
credit_card.address = { 'line1': val('address_1') credit_card.address = { 'line1': val('address_1')
, 'line2': val('address_2') , 'line2': val('address_2')
@ -275,27 +275,27 @@ Gittip.payments.cc.submit = function(e) {
if (!balanced.card.isCardNumberValid(credit_card.number)) { if (!balanced.card.isCardNumberValid(credit_card.number)) {
$('button#save').css('opacity', 1); $('button#save').css('opacity', 1);
Gittip.forms.showFeedback(null, ["Your card number is bad."]); Gratipay.forms.showFeedback(null, ["Your card number is bad."]);
} else if (!balanced.card.isExpiryValid( credit_card.expiration_month } else if (!balanced.card.isExpiryValid( credit_card.expiration_month
, credit_card.expiration_year , credit_card.expiration_year
)) { )) {
$('button#save').css('opacity', 1); $('button#save').css('opacity', 1);
Gittip.forms.showFeedback(null, ["Your expiration date is bad."]); Gratipay.forms.showFeedback(null, ["Your expiration date is bad."]);
} else if (!balanced.card.isSecurityCodeValid( credit_card.number } else if (!balanced.card.isSecurityCodeValid( credit_card.number
, credit_card.cvv , credit_card.cvv
)) { )) {
$('button#save').css('opacity', 1); $('button#save').css('opacity', 1);
Gittip.forms.showFeedback(null, ["Your CVV is bad."]); Gratipay.forms.showFeedback(null, ["Your CVV is bad."]);
} else { } else {
balanced.card.create(credit_card, Gittip.payments.cc.handleResponse); balanced.card.create(credit_card, Gratipay.payments.cc.handleResponse);
} }
return false; return false;
}; };
Gittip.payments.cc.handleResponse = function(response) { Gratipay.payments.cc.handleResponse = function(response) {
if (response.status_code !== 201) { if (response.status_code !== 201) {
var msg = Gittip.payments.onError(response); var msg = Gratipay.payments.onError(response);
$.post('/credit-card.json', {action: 'store-error', msg: msg}); $.post('/credit-card.json', {action: 'store-error', msg: msg});
return; return;
} }
@ -312,13 +312,13 @@ Gittip.payments.cc.handleResponse = function(response) {
$('#status').text('failing'); $('#status').text('failing');
$('#delete').show(); $('#delete').show();
var details = []; var details = [];
Gittip.forms.showFeedback(data.problem, [data.error]); Gratipay.forms.showFeedback(data.problem, [data.error]);
$('button#save').css('opacity', 1); $('button#save').css('opacity', 1);
} }
Gittip.forms.submit( "/credit-card.json" Gratipay.forms.submit( "/credit-card.json"
, {card_uri: response.cards[0].href} , {card_uri: response.cards[0].href}
, Gittip.payments.onSuccess , Gratipay.payments.onSuccess
, detailedFeedback , detailedFeedback
); );
}; };

View File

@ -1,25 +1,25 @@
Gittip.profile = {}; Gratipay.profile = {};
Gittip.profile.toNumber = function(number) { Gratipay.profile.toNumber = function(number) {
if (number == 'plural') if (number == 'plural')
Gittip.profile.toPlural(); Gratipay.profile.toPlural();
else if (number == 'singular') else if (number == 'singular')
Gittip.profile.toSingular(); Gratipay.profile.toSingular();
}; };
Gittip.profile.toPlural = function() { Gratipay.profile.toPlural = function() {
$('.i-am').text('We are'); $('.i-am').text('We are');
$('.i-m').text("We're"); $('.i-m').text("We're");
$('.my').text("Our"); $('.my').text("Our");
}; };
Gittip.profile.toSingular = function() { Gratipay.profile.toSingular = function() {
$('.i-am').text('I am'); $('.i-am').text('I am');
$('.i-m').text("I'm"); $('.i-m').text("I'm");
$('.my').text("My"); $('.my').text("My");
}; };
Gittip.profile.init = function() { Gratipay.profile.init = function() {
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
// / // /
// XXX This is ripe for refactoring. I ran out of steam. :-/ // XXX This is ripe for refactoring. I ran out of steam. :-/
@ -70,13 +70,13 @@ Gittip.profile.init = function() {
function success(d) { function success(d) {
$('.statement .view span').html(d.statement); $('.statement .view span').html(d.statement);
var number = $('.statement select').val(); var number = $('.statement select').val();
Gittip.profile.toNumber(number); Gratipay.profile.toNumber(number);
finish_editing_statement(); finish_editing_statement();
update_members_button(is_plural); update_members_button(is_plural);
} }
function error(e) { function error(e) {
$('.statement button.save').css('opacity', 1); $('.statement button.save').css('opacity', 1);
Gittip.notification(JSON.parse(e.responseText).error_message_long, 'error'); Gratipay.notification(JSON.parse(e.responseText).error_message_long, 'error');
} }
jQuery.ajax( jQuery.ajax(
{ url: "statement.json" { url: "statement.json"
@ -161,7 +161,7 @@ Gittip.profile.init = function() {
, success: success , success: success
, error: function() { , error: function() {
$('.goal button.save').css('opacity', 1); $('.goal button.save').css('opacity', 1);
Gittip.notification("Failed to change your funding goal. Please try again.", 'error'); Gratipay.notification("Failed to change your funding goal. Please try again.", 'error');
} }
} }
); );
@ -217,7 +217,7 @@ Gittip.profile.init = function() {
success: success, success: success,
error: function () { error: function () {
$this.css('opacity', 1); $this.css('opacity', 1);
Gittip.notification("Invalid Bitcoin address. Please try again.", 'error'); Gratipay.notification("Invalid Bitcoin address. Please try again.", 'error');
}, },
data: { data: {
bitcoin_address: $('input.bitcoin').val() bitcoin_address: $('input.bitcoin').val()
@ -245,9 +245,9 @@ Gittip.profile.init = function() {
}, },
error: function (e) { error: function (e) {
try { try {
Gittip.notification(JSON.parse(e.responseText).error_message_long, 'error'); Gratipay.notification(JSON.parse(e.responseText).error_message_long, 'error');
} catch(exception) { } catch(exception) {
Gittip.notification("Some error occured: "+exception, 'error') Gratipay.notification("Some error occured: "+exception, 'error')
} }
}, },
data: { platform: this.dataset.platform, user_id: this.dataset.user_id } data: { platform: this.dataset.platform, user_id: this.dataset.user_id }

View File

@ -1,4 +1,4 @@
Gittip.team = (function() { Gratipay.team = (function() {
function init() { function init() {
var $team = $('#team'); var $team = $('#team');
@ -50,7 +50,7 @@ Gittip.team = (function() {
var rows = []; var rows = [];
if (nmembers === 0) { if (nmembers === 0) {
rows.push(Gittip.jsonml( rows.push(Gratipay.jsonml(
[ 'tr' [ 'tr'
, ['td', {'colspan': '6', 'class': 'no-members'}, "No members"] , ['td', {'colspan': '6', 'class': 'no-members'}, "No members"]
] ]
@ -69,7 +69,7 @@ Gittip.team = (function() {
increase = 'max'; increase = 'max';
if (i < nmembers) if (i < nmembers)
rows.push(Gittip.jsonml( rows.push(Gratipay.jsonml(
[ 'tr' [ 'tr'
, ['td', {'class': 'n'}, (i === nmembers ? '' : nmembers - i)] , ['td', {'class': 'n'}, (i === nmembers ? '' : nmembers - i)]
, ['td', ['a', {'href': '/'+member.username+'/'}, member.username]] , ['td', ['a', {'href': '/'+member.username+'/'}, member.username]]
@ -80,7 +80,7 @@ Gittip.team = (function() {
] ]
)); ));
else if (nmembers > 0) else if (nmembers > 0)
rows.push(Gittip.jsonml( rows.push(Gratipay.jsonml(
[ 'tr' [ 'tr'
, ['td'] , ['td']
, ['td'] , ['td']
@ -113,7 +113,7 @@ Gittip.team = (function() {
var items = []; var items = [];
for (var i=0, len=results.length; i<len; i++) { for (var i=0, len=results.length; i<len; i++) {
var result = results[i]; var result = results[i];
items.push(Gittip.jsonml( items.push(Gratipay.jsonml(
['li', {"data-id": result.id}, result.username] ['li', {"data-id": result.id}, result.username]
)); ));
} }
@ -124,7 +124,7 @@ Gittip.team = (function() {
e.preventDefault(); e.preventDefault();
e.stopPropagation(); e.stopPropagation();
var query = $('#query').val(); var query = $('#query').val();
setTake(query, '0.01', function() { Gittip.notification('Member added!', 'success'); }); setTake(query, '0.01', function() { Gratipay.notification('Member added!', 'success'); });
$('#lookup-results').empty(); $('#lookup-results').empty();
$('#query').val('').focus(); $('#query').val('').focus();
return false; return false;
@ -135,7 +135,7 @@ Gittip.team = (function() {
e.stopPropagation(); e.stopPropagation();
var membername = $(e.target).attr('data-username'); var membername = $(e.target).attr('data-username');
if (confirm("Remove " + membername + " from this team?")) if (confirm("Remove " + membername + " from this team?"))
setTake(membername, '0.00', function() { Gittip.notification('Member removed!'); }); setTake(membername, '0.00', function() { Gratipay.notification('Member removed!'); });
return false; return false;
} }
@ -161,21 +161,21 @@ Gittip.team = (function() {
var username = _.attr('data-username'), var username = _.attr('data-username'),
take = _.val(); take = _.val();
if (take.search(/^\d+\.?\d*$/) !== 0) if (take.search(/^\d+\.?\d*$/) !== 0)
Gittip.notification("Bad input! Must be a number.", 'error'); Gratipay.notification("Bad input! Must be a number.", 'error');
else else
{ {
var callback = function(d) { var callback = function(d) {
var newTake = $.grep(d, function(row) { return row.username == username })[0].take; var newTake = $.grep(d, function(row) { return row.username == username })[0].take;
if ( take == newTake) if ( take == newTake)
Gittip.notification('Updated your take!', 'success'); Gratipay.notification('Updated your take!', 'success');
else else
Gittip.notification('You cannot exceed double of last week. Updated your take to ' + newTake + '.', 'error'); Gratipay.notification('You cannot exceed double of last week. Updated your take to ' + newTake + '.', 'error');
// Have a little fun if updating the user's take results in the team balance // Have a little fun if updating the user's take results in the team balance
// equaling $0.01 or $1.00 // equaling $0.01 or $1.00
var balance = $('.figure.balance').last().text(); var balance = $('.figure.balance').last().text();
if (localStorage && !localStorage.lastSushi && (balance == '0.01' || balance == '1.00')) { if (localStorage && !localStorage.lastSushi && (balance == '0.01' || balance == '1.00')) {
Gittip.notification('Achievement Unlocked: The Last Sushi Roll', 'success'); Gratipay.notification('Achievement Unlocked: The Last Sushi Roll', 'success');
localStorage.lastSushi = true; localStorage.lastSushi = true;
} }
}; };
@ -184,7 +184,7 @@ Gittip.team = (function() {
resetTake(); resetTake();
return false; return false;
} }
callback = function() { Gittip.notification('Removed!'); }; callback = function() { Gratipay.notification('Removed!'); };
} }
setTake(username, take, callback); setTake(username, take, callback);
} }
@ -205,8 +205,8 @@ Gittip.team = (function() {
, success: function(d) { drawRows(d); callback(d); } , success: function(d) { drawRows(d); callback(d); }
, error: function(xhr) { , error: function(xhr) {
switch (xhr.status) { switch (xhr.status) {
case 404: Gittip.notification("Unknown user!", 'error'); break; case 404: Gratipay.notification("Unknown user!", 'error'); break;
default: Gittip.notification("Problem! " + xhr.status, 'error'); default: Gratipay.notification("Problem! " + xhr.status, 'error');
} }
} }
}); });

View File

@ -1,6 +1,6 @@
Gittip.tips = {}; Gratipay.tips = {};
Gittip.tips.init = function() { Gratipay.tips.init = function() {
// Check the tip value on change, or 0.7 seconds after the user stops typing. // Check the tip value on change, or 0.7 seconds after the user stops typing.
// If the user presses enter, the browser should natively submit the form. // If the user presses enter, the browser should natively submit the form.
@ -105,9 +105,9 @@ Gittip.tips.init = function() {
return; return;
if(isAnon) if(isAnon)
Gittip.notification("Please sign in first", 'error'); Gratipay.notification("Please sign in first", 'error');
else else
Gittip.tips.set(tippee, amount, function() { Gratipay.tips.set(tippee, amount, function() {
// lock-in changes // lock-in changes
$myTip[0].defaultValue = amount; $myTip[0].defaultValue = amount;
$myTip.change(); $myTip.change();
@ -119,43 +119,43 @@ Gittip.tips.init = function() {
parseInt($('.on-elsewhere .ready .number').text(),10) + 1); parseInt($('.on-elsewhere .ready .number').text(),10) + 1);
// Use global notification system. // Use global notification system.
Gittip.notification("Tip changed to $" + amount.toFixed(2) + "!", 'success'); Gratipay.notification("Tip changed to $" + amount.toFixed(2) + "!", 'success');
}); });
}); });
}; };
Gittip.tips.initSupportGittip = function() { Gratipay.tips.initSupportGratipay = function() {
$('.support-gittip button').click(function() { $('.support-gratipay button').click(function() {
var amount = parseFloat($(this).attr('data-amount'), 10); var amount = parseFloat($(this).attr('data-amount'), 10);
Gittip.tips.set('Gittip', amount, function() { Gratipay.tips.set('Gratipay', amount, function() {
Gittip.notification("Thank you so much for supporting Gittip! :D", 'success'); Gratipay.notification("Thank you so much for supporting Gratipay! :D", 'success');
$('.support-gittip').slideUp(); $('.support-gratipay').slideUp();
// If you're on your own giving page ... // If you're on your own giving page ...
var tip_on_giving = $('.my-tip[data-tippee="Gittip"]'); var tip_on_giving = $('.my-tip[data-tippee="Gratipay"]');
if (tip_on_giving.length > 0) { if (tip_on_giving.length > 0) {
tip_on_giving[0].defaultValue = amount; tip_on_giving[0].defaultValue = amount;
tip_on_giving.attr('value', amount.toFixed(2)); tip_on_giving.attr('value', amount.toFixed(2));
} }
// If you're on Gittip's profile page or your own profile page, // If you're on Gratipay's profile page or your own profile page,
// updating the proper giving/receiving amounts is apparently taken // updating the proper giving/receiving amounts is apparently taken
// care of in Gittip.tips.set. // care of in Gratipay.tips.set.
}); });
}); });
$('.support-gittip .no-thanks').click(function(event) { $('.support-gratipay .no-thanks').click(function(event) {
event.preventDefault(); event.preventDefault();
jQuery.post('/ride-free.json') jQuery.post('/ride-free.json')
.success(function() { $('.support-gittip').slideUp(); }) .success(function() { $('.support-gratipay').slideUp(); })
.fail(function() { Gittip.notification("Sorry, there was an error.", "failure"); }) .fail(function() { Gratipay.notification("Sorry, there was an error.", "failure"); })
}); });
}; };
Gittip.tips.set = function(tippee, amount, callback) { Gratipay.tips.set = function(tippee, amount, callback) {
// send request to change tip // send request to change tip
$.post('/' + tippee + '/tip.json', { amount: amount }, function(data) { $.post('/' + tippee + '/tip.json', { amount: amount }, function(data) {
@ -172,7 +172,7 @@ Gittip.tips.set = function(tippee, amount, callback) {
$('.quick-stats a').text('$' + data.total_giving + '/wk'); $('.quick-stats a').text('$' + data.total_giving + '/wk');
}) })
.fail(function() { .fail(function() {
Gittip.notification('Sorry, something went wrong while changing your tip. :(', 'error'); Gratipay.notification('Sorry, something went wrong while changing your tip. :(', 'error');
console.log.apply(console, arguments); console.log.apply(console, arguments);
}); });
}; };

View File

@ -1,4 +1,4 @@
// strips Unicode & non-printable characters, then leading/trailing whitespace // strips Unicode & non-printable characters, then leading/trailing whitespace
Gittip.trim = function(s) { Gratipay.trim = function(s) {
return s.replace(/[^\x20-\x7F]/g, '').replace(/^\s+|\s+$/g, ''); return s.replace(/[^\x20-\x7F]/g, '').replace(/^\s+|\s+$/g, '');
} }

View File

@ -1,6 +1,6 @@
Gittip.upgrade = {}; Gratipay.upgrade = {};
Gittip.upgrade.init = function () { Gratipay.upgrade.init = function () {
var userAgent = navigator.userAgent.toLowerCase(); var userAgent = navigator.userAgent.toLowerCase();
var browser = (userAgent.indexOf('msie') != -1) ? parseInt(userAgent.split('msie')[1], 10) : -1; var browser = (userAgent.indexOf('msie') != -1) ? parseInt(userAgent.split('msie')[1], 10) : -1;
@ -17,4 +17,4 @@ Gittip.upgrade.init = function () {
} }
}; };
$(document).ready(Gittip.upgrade.init); $(document).ready(Gratipay.upgrade.init);

View File

@ -1,5 +1,5 @@
{ {
"name": "gittip", "name": "gratipay",
"version": "0.0.0", "version": "0.0.0",
"private": true, "private": true,
"dependencies": {}, "dependencies": {},

View File

@ -19,9 +19,9 @@ if [ $# = 0 -o "$1" = "" ]; then
echo echo
echo "Usage: $0 <number> [\"for_real_please\"]" echo "Usage: $0 <number> [\"for_real_please\"]"
echo echo
echo " This is a payday wrapper script for Gittip. It runs payday, logging to a file." echo " This is a payday wrapper script for Gratipay. It runs payday, logging to a file."
echo " You must pass at least one argument, a small integer indicating which week of " echo " You must pass at least one argument, a small integer indicating which week of "
echo " Gittip you are running (it's only used to decide where to log). If you pass a" echo " Gratipay you are running (it's only used to decide where to log). If you pass a"
echo " second arg then it must be the string \"for_real_please\", and in that case we" echo " second arg then it must be the string \"for_real_please\", and in that case we"
echo " try to run against the production database. Without that string we run using " echo " try to run against the production database. Without that string we run using "
echo " your local.env configuration." echo " your local.env configuration."
@ -67,7 +67,7 @@ start () {
# ==== # ====
if [ "$2" == "for_real_please" ]; then if [ "$2" == "for_real_please" ]; then
LOG="../paydays/gittip-$1.log" LOG="../paydays/gratipay-$1.log"
else else
LOG="../paydays/test-$1.log" LOG="../paydays/test-$1.log"
fi fi

View File

@ -3,7 +3,7 @@
# Exit if any subcommands or pipeline returns a non-zero status. # Exit if any subcommands or pipeline returns a non-zero status.
set -e set -e
# Make a database for Gittip. # Make a database for Gratipay.
# #
# usage: DATABASE_URL=postgres://foo:bar@baz:5234/buz recreate-schema.sh # usage: DATABASE_URL=postgres://foo:bar@baz:5234/buz recreate-schema.sh

View File

@ -19,7 +19,7 @@ if [ $# = 0 ]; then
echo echo
echo "Usage: $0 <version>" echo "Usage: $0 <version>"
echo echo
echo " This is a release script for Gittip. We bump the version number in " echo " This is a release script for Gratipay. We bump the version number in "
echo " www/version.txt and then do a git dance, pushing to Heroku." echo " www/version.txt and then do a git dance, pushing to Heroku."
echo echo
exit exit
@ -83,8 +83,8 @@ if [ $1 ]; then
# Check that the environment contains all required variables. # Check that the environment contains all required variables.
# =========================================================== # ===========================================================
heroku config -sa gittip | ./env/bin/honcho run -e /dev/stdin \ heroku config -sa gratipay | ./env/bin/honcho run -e /dev/stdin \
./env/bin/python gittip/wireup.py ./env/bin/python gratipay/wireup.py
# Bump the version. # Bump the version.

View File

@ -9,11 +9,11 @@
-- numeric(35,2) maxes out at $999,999,999,999,999,999,999,999,999,999,999.00. -- numeric(35,2) maxes out at $999,999,999,999,999,999,999,999,999,999,999.00.
-- https://github.com/gittip/www.gittip.com/pull/1274 -- https://github.com/gratipay/www.gratipay.com/pull/1274
CREATE TYPE participant_number AS ENUM ('singular', 'plural'); CREATE TYPE participant_number AS ENUM ('singular', 'plural');
-- https://github.com/gittip/www.gittip.com/pull/2305 -- https://github.com/gratipay/www.gratipay.com/pull/2305
CREATE TYPE email_address_with_confirmation AS CREATE TYPE email_address_with_confirmation AS
( (
address text, address text,
@ -55,7 +55,7 @@ CREATE TABLE participants
, is_free_rider boolean DEFAULT NULL , is_free_rider boolean DEFAULT NULL
); );
-- https://github.com/gittip/www.gittip.com/pull/1610 -- https://github.com/gratipay/www.gratipay.com/pull/1610
CREATE INDEX participants_claimed_time ON participants (claimed_time DESC) CREATE INDEX participants_claimed_time ON participants (claimed_time DESC)
WHERE is_suspicious IS NOT TRUE WHERE is_suspicious IS NOT TRUE
AND claimed_time IS NOT null; AND claimed_time IS NOT null;
@ -82,7 +82,7 @@ CREATE TABLE elsewhere
, UNIQUE (platform, participant) , UNIQUE (platform, participant)
); );
-- https://github.com/gittip/www.gittip.com/issues/951 -- https://github.com/gratipay/www.gratipay.com/issues/951
CREATE INDEX elsewhere_participant ON elsewhere(participant); CREATE INDEX elsewhere_participant ON elsewhere(participant);
@ -104,7 +104,7 @@ CREATE VIEW current_tips AS
ORDER BY tipper, tippee, mtime DESC; ORDER BY tipper, tippee, mtime DESC;
-- https://github.com/gittip/www.gittip.com/pull/2501 -- https://github.com/gratipay/www.gratipay.com/pull/2501
CREATE TYPE context_type AS ENUM CREATE TYPE context_type AS ENUM
('tip', 'take', 'final-gift', 'take-over', 'one-off'); ('tip', 'take', 'final-gift', 'take-over', 'one-off');
@ -146,11 +146,11 @@ CREATE TABLE paydays
); );
-- https://github.com/gittip/www.gittip.com/pull/2579 -- https://github.com/gratipay/www.gratipay.com/pull/2579
CREATE TYPE exchange_status AS ENUM ('pre', 'pending', 'failed', 'succeeded'); CREATE TYPE exchange_status AS ENUM ('pre', 'pending', 'failed', 'succeeded');
-- exchanges -- when a participant moves cash between Gittip and their bank -- exchanges -- when a participant moves cash between Gratipay and their bank
CREATE TABLE exchanges CREATE TABLE exchanges
( id serial PRIMARY KEY ( id serial PRIMARY KEY
, timestamp timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP , timestamp timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP
@ -163,7 +163,7 @@ CREATE TABLE exchanges
); );
-- https://github.com/gittip/www.gittip.com/issues/406 -- https://github.com/gratipay/www.gratipay.com/issues/406
CREATE TABLE absorptions CREATE TABLE absorptions
( id serial PRIMARY KEY ( id serial PRIMARY KEY
, timestamp timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP , timestamp timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP
@ -175,8 +175,8 @@ CREATE TABLE absorptions
); );
-- https://github.com/gittip/www.gittip.com/issues/545 -- https://github.com/gratipay/www.gratipay.com/issues/545
-- https://github.com/gittip/www.gittip.com/issues/778 -- https://github.com/gratipay/www.gratipay.com/issues/778
CREATE VIEW goal_summary AS CREATE VIEW goal_summary AS
SELECT tippee as id SELECT tippee as id
, goal , goal
@ -196,7 +196,7 @@ CREATE VIEW goal_summary AS
GROUP BY tippee, goal, percentage, statement; GROUP BY tippee, goal, percentage, statement;
-- https://github.com/gittip/www.gittip.com/issues/496 -- https://github.com/gratipay/www.gratipay.com/issues/496
CREATE TABLE communities CREATE TABLE communities
( id bigserial PRIMARY KEY ( id bigserial PRIMARY KEY
, ctime timestamp with time zone NOT NULL , ctime timestamp with time zone NOT NULL
@ -208,7 +208,7 @@ CREATE TABLE communities
, is_member boolean , is_member boolean
); );
-- https://github.com/gittip/www.gittip.com/pull/2430 -- https://github.com/gratipay/www.gratipay.com/pull/2430
CREATE INDEX ON communities (slug); CREATE INDEX ON communities (slug);
CREATE OR REPLACE VIEW current_communities AS CREATE OR REPLACE VIEW current_communities AS
@ -231,7 +231,7 @@ CREATE VIEW community_summary AS
ORDER BY nmembers DESC, slug; ORDER BY nmembers DESC, slug;
-- https://github.com/gittip/www.gittip.com/issues/1085 -- https://github.com/gratipay/www.gratipay.com/issues/1085
CREATE TABLE takes CREATE TABLE takes
( id serial PRIMARY KEY ( id serial PRIMARY KEY
, ctime timestamp with time zone NOT NULL , ctime timestamp with time zone NOT NULL
@ -268,7 +268,7 @@ CREATE VIEW current_takes AS
) AS anon WHERE amount > 0; ) AS anon WHERE amount > 0;
-- https://github.com/gittip/www.gittip.com/pull/1369 -- https://github.com/gratipay/www.gratipay.com/pull/1369
-- The following lets us cast queries to elsewhere_with_participant to get the -- The following lets us cast queries to elsewhere_with_participant to get the
-- participant data dereferenced and returned in a composite type along with -- participant data dereferenced and returned in a composite type along with
-- the elsewhere data. -- the elsewhere data.
@ -309,7 +309,7 @@ CREATE CAST (elsewhere AS elsewhere_with_participant)
WITH FUNCTION load_participant_for_elsewhere(elsewhere); WITH FUNCTION load_participant_for_elsewhere(elsewhere);
-- https://github.com/gittip/www.gittip.com/pull/2006 -- https://github.com/gratipay/www.gratipay.com/pull/2006
CREATE TABLE events CREATE TABLE events
( id serial PRIMARY KEY ( id serial PRIMARY KEY
, ts timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP , ts timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
@ -321,7 +321,7 @@ CREATE INDEX events_ts ON events(ts ASC);
CREATE INDEX events_type ON events(type); CREATE INDEX events_type ON events(type);
-- https://github.com/gittip/www.gittip.com/issues/1417 -- https://github.com/gratipay/www.gratipay.com/issues/1417
CREATE INDEX transfers_tipper_tippee_timestamp_idx CREATE INDEX transfers_tipper_tippee_timestamp_idx
ON transfers ON transfers
USING btree USING btree
@ -329,7 +329,7 @@ CREATE INDEX transfers_tipper_tippee_timestamp_idx
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
-- https://github.com/gittip/www.gittip.com/pull/2682 -- https://github.com/gratipay/www.gratipay.com/pull/2682
BEGIN; BEGIN;

View File

@ -1,2 +1,2 @@
CREATE ROLE gittip LOGIN PASSWORD 'gittip' SUPERUSER; CREATE ROLE gratipay LOGIN PASSWORD 'gratipay' SUPERUSER;
CREATE DATABASE gittip WITH OWNER = gittip; CREATE DATABASE gratipay WITH OWNER = gratipay;

View File

@ -1 +1 @@
CREATE DATABASE "gittip-test" WITH OWNER = gittip; CREATE DATABASE "gratipay-test" WITH OWNER = gratipay;

View File

@ -23,12 +23,12 @@ if grep --quiet --binary --binary-files=without-match $(printf '\r') README.md;
exit 1 exit 1
fi fi
# Set up the environment, the database, and run Gittip # Set up the environment, the database, and run Gratipay
cd /vagrant && make clean env schema data cd /vagrant && make clean env schema data
# Output helper text # Output helper text
cat <<EOF cat <<EOF
Gittip installed! To run, Gratipay installed! To run,
$ vagrant ssh --command "make run" $ vagrant ssh --command "make run"
EOF EOF

Some files were not shown because too many files have changed in this diff Show More