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]
spt = gittip.utils.i18n:extract_spt
spt = gratipay.utils.i18n:extract_spt
[jinja2: **.html]
[spt: **.spt]

8
.gitignore vendored
View File

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

View File

@ -7,8 +7,8 @@ install:
- make env node_modules
- pip install coveralls
before_script:
- echo "DATABASE_URL=dbname=gittip" | tee -a tests/local.env local.env
- psql -U postgres -c 'CREATE DATABASE "gittip";'
- echo "DATABASE_URL=dbname=gratipay" | tee -a tests/local.env local.env
- psql -U postgres -c 'CREATE DATABASE "gratipay";'
- if [ "`git rev-parse --abbrev-ref HEAD`" = "master" ]; then rm -rf tests/fixtures; fi
script: make test
after_success:
@ -17,7 +17,7 @@ notifications:
email: false
irc:
channels:
- "irc.freenode.org#gittip"
- "irc.freenode.org#gratipay"
on_success: change
on_failure: always
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!**
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! :^)
**License.** Gittip is [licensed under
CC0](https://github.com/gittip/www.gittip.com/tree/master/COPYING), i.e.,
**License.** Gratipay is [licensed under
CC0](https://github.com/gratipay/www.gratipay.com/tree/master/COPYING), i.e.,
it's public domain.
**More info.** If you want to really get involved, then check out our full
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.

View File

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

View File

@ -43,7 +43,7 @@ module.exports = function(grunt) {
jshintrc: '.jshintrc',
globals: {
Gittip: true,
Gratipay: true,
_gttp: true,
gttpURI: 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
$(python) $(venv) \
--unzip-setuptools \
--prompt="[gittip] " \
--prompt="[gratipay] " \
--never-download \
--extra-search-dir=./vendor/ \
--distribute \
@ -37,18 +37,18 @@ run: env
PATH=$(env_bin):$(PATH) $(honcho_run) web
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
$(honcho) -e $(test_env_files) run ./recreate-schema.sh
pyflakes: env
$(env_bin)/pyflakes bin gittip tests
$(env_bin)/pyflakes bin gratipay tests
test: test-schema pytest jstest
pytest: env
$(py_test) --cov gittip ./tests/py/
$(py_test) --cov gratipay ./tests/py/
@$(MAKE) --no-print-directory pyflakes
retest: env
@ -56,7 +56,7 @@ retest: env
@$(MAKE) --no-print-directory pyflakes
test-cov: env
$(py_test) --cov-report html --cov gittip ./tests/py/
$(py_test) --cov-report html --cov gratipay ./tests/py/
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)
[![Coverage Status](https://img.shields.io/coveralls/gittip/www.gittip.com.svg)](https://coveralls.io/r/gittip/www.gittip.com?branch=master)
[![HuBoard badge](http://img.shields.io/badge/Hu-Board-7965cc.svg)](https://huboard.com/gittip/www.gittip.com)
[![Open Bounties](https://api.bountysource.com/badge/team?team_id=423&style=bounties_received)](https://www.bountysource.com/teams/gittip/issues)
[![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/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/gratipay/www.gratipay.com)
[![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.
If you'd like to learn more, check out <https://gittip.com/about>.
If you'd like to contribute to Gittip, check out <http://building.gittip.com>.
Gratipay is a weekly gift exchange, helping to create a culture of generosity.
If you'd like to learn more, check out <https://gratipay.com/about>.
If you'd like to contribute to Gratipay, check out <http://building.gratipay.com>.
Quick Start
===========
@ -18,10 +18,10 @@ Local
Given Python 2.7, Postgres 9.3, and a C/make toolchain:
```
$ git clone git@github.com:gittip/www.gittip.com.git
$ cd www.gittip.com
$ git clone git@github.com:gratipay/www.gratipay.com.git
$ cd www.gratipay.com
$ sudo -u postgres createuser --superuser $USER
$ createdb gittip
$ createdb gratipay
$ make schema data
$ make run
```
@ -53,8 +53,8 @@ Docker
Given some version(?) of Docker:
```
$ docker build -t gittip .
$ docker run -p 8537:8537 gittip
$ docker build -t gratipay .
$ docker run -p 8537:8537 gratipay
```
[Read more](#docker-1).
@ -70,7 +70,7 @@ Table of Contents
- [Vagrant](#vagrant)
- [Docker](#docker)
- [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)
- [Testing](#testing-)
- [Setting up a Database](#local-database-setup)
@ -82,15 +82,15 @@ Table of Contents
Installation
============
Thanks for hacking on Gittip! Be sure to review
[CONTRIBUTING](https://github.com/gittip/www.gittip.com/blob/master/CONTRIBUTING.md#readme)
Thanks for hacking on Gratipay! Be sure to review
[CONTRIBUTING](https://github.com/gratipay/www.gratipay.com/blob/master/CONTRIBUTING.md#readme)
as well if that's what you're planning to do.
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.
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:
$ sudo -u postgres createuser --superuser $USER
$ createdb gittip
$ createdb gratipay
If you are getting an error about `unknown argument: '-mno-fused-madd'` when
running `make`, then add
@ -118,8 +118,8 @@ for more information](http://stackoverflow.com/a/22355874/347246)):
Building
--------
All Python dependencies (including virtualenv) are bundled with Gittip in the
vendor/ directory. Gittip is designed so that you don't manage its
All Python dependencies (including virtualenv) are bundled with Gratipay in the
vendor/ directory. Gratipay is designed so that you don't manage its
virtualenv directly and you don't download its dependencies at build
time.
@ -131,7 +131,7 @@ in a sandbox:
$ 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
@ -145,15 +145,15 @@ Launching
---------
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
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.
If Gittip launches successfully it will look like this:
If Gratipay launches successfully it will look like this:
```
$ 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 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 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) Won't log to Sentry (SENTRY_DSN is empty).
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
[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
running. At some point, try [running the test suite](#testing-).
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`.
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`.
**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
in encrypted directories.
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:
```
$ docker pull citruspi/gittip
$ docker pull citruspi/gratipay
```
or build it with the included Dockerfile:
```
$ git clone git@github.com:gittip/www.gittip.com.git
$ cd www.gittip.com
$ docker build -t gittip .
$ git clone git@github.com:gratipay/www.gratipay.com.git
$ cd www.gratipay.com
$ docker build -t gratipay .
```
Once you have the image, get the Image ID with
@ -279,24 +279,24 @@ $ docker kill [container_id]
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
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
=============
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
`www/assets/%version/gittip.css.spt` on each request.
combined in `scss/gratipay.scss` which itself is compiled by `libsass` in
`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
virtualenv you get by running `make env`. As a rule of thumb, each test case
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
with the install. First `make tests/env`, activate the virtualenv and then:
[gittip] $ cd tests/
[gittip] $ honcho -e defaults.env,local.env run py.test
[gratipay] $ cd tests/
[gratipay] $ honcho -e defaults.env,local.env run py.test
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`
+ 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
$ createdb gittip
$ createdb gittip-test
$ createdb gratipay
$ createdb gratipay-test
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
@ -352,7 +352,7 @@ production database as part of deployment.
### 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:
$ make data
@ -361,37 +361,37 @@ some fake data, so that more of the site is functional, run this command:
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)**
([source](https://github.com/gittip/www.gittip.com/tree/master/www/about/charts.json.spt))&mdash;<i>public</i>&mdash;Returns
**[/about/charts.json](https://www.gratipay.com/about/charts.json)**
([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
[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)**
([source](https://github.com/gittip/www.gittip.com/tree/master/www/about/paydays.json.spt))&mdash;<i>public</i>&mdash;Returns
**[/about/paydays.json](https://www.gratipay.com/about/paydays.json)**
([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
[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)**
([source](https://github.com/gittip/www.gittip.com/tree/master/www/about/stats.spt))&mdash;<i>public</i>&mdash;Returns
an object giving a point-in-time snapshot of Gittip. The
[stats](https://www.gittip.com/about/stats.html) page displays the same info.
**[/about/stats.json](https://www.gratipay.com/about/stats.json)**
([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 Gratipay. The
[stats](https://www.gratipay.com/about/stats.html) page displays the same info.
**/`%username`/charts.json**
([example](https://www.gittip.com/Gittip/charts.json),
[source](https://github.com/gittip/www.gittip.com/tree/master/www/%25username/charts.json.spt))&mdash;<i>public</i>&mdash;Returns
([example](https://www.gratipay.com/Gratipay/charts.json),
[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
given user.
**/`%username`/public.json**
([example](https://www.gittip.com/Gittip/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:
([example](https://www.gratipay.com/Gratipay/public.json),
[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
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:
- `undefined` (key not present)&mdash;there is no logged-in user
@ -425,7 +425,7 @@ given user.
**/`%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
same structure back in order to update tips in bulk (be sure to set
`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.
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
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.:
```
curl https://www.gittip.com/foobar/tips.json \
curl https://www.gratipay.com/foobar/tips.json \
-u API_KEY: \
-X POST \
-d'[{"username":"bazbuz", "platform":"gittip", "amount": "1.00"}]' \
-d'[{"username":"bazbuz", "platform":"gratipay", "amount": "1.00"}]' \
-H"Content-Type: application/json"
```
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!
- [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
your Drupal site.
- [Node.js: Node-Gittip](https://npmjs.org/package/gittip) (also see [Khan
Academy's setup](http://ejohn.org/blog/gittip-at-khan-academy/))
- [Node.js: Node-Gratipay](https://npmjs.org/package/gratipay) (also see [Khan
Academy's setup](http://ejohn.org/blog/gratipay-at-khan-academy/))
- [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
script for interacting with a shared Gittip account.
- [hubot-gratipay](https://github.com/myplanetdigital/hubot-gratipay): A Hubot
script for interacting with a shared Gratipay account.
- [gittip-collab](https://github.com/engineyard/gittip-collab): A Khan-style
tool for managing a Gittip account as a team.
- [gratipay-collab](https://github.com/engineyard/gratipay-collab): A Khan-style
tool for managing a Gratipay account as a team.
- [WWW::Gittip](https://metacpan.org/pod/WWW::Gittip): A Perl module
implementing the Gittip API more or less
- [WWW::Gratipay](https://metacpan.org/pod/WWW::Gratipay): A Perl module
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
@ -488,11 +488,11 @@ Glossary
========
**Account Elsewhere** - An entity's registration on a platform other than
Gittip (e.g., Twitter).
Gratipay (e.g., Twitter).
**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.

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:
#-Use 'precise64' as a base.
#-perform a 'vagrant up' using this vagrantfile: https://github.com/gittip/www.gittip.com/blob/83312e60c6b31c298ffca61036baa9849044c75e/Vagrantfile
#-drop database gittip
#-drop role gittip
config.vm.box = "gittip"
config.vm.box_url = File.exist?("gittip.box") ? "file://gittip.box" : "http://downloads.gittipllc.netdna-cdn.com/gittip.box"
#-perform a 'vagrant up' using this vagrantfile: https://github.com/gratipay/www.gratipay.com/blob/83312e60c6b31c298ffca61036baa9849044c75e/Vagrantfile
#-drop database gratipay
#-drop role gratipay
config.vm.box = "gratipay"
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
config.vm.network "private_network", ip: "172.27.36.119"

View File

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

View File

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

View File

@ -9,10 +9,10 @@ interfacing with PayPal's MassPay feature.
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
the exchanges back to Gittip)
3. POSTing the exchanges back to Gittip via the HTTP API.
the exchanges back to Gratipay)
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
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')
INPUT_CSV = '{}.input.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):
@ -85,17 +85,17 @@ class Payee(object):
#
# 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.
#
# 11. BUT ... if we upload 1.25, PayPal upcharges to 1.28. Think about
# it.
#
# See also: https://github.com/gittip/www.gittip.com/issues/1673
# https://github.com/gittip/www.gittip.com/issues/2029
# https://github.com/gittip/www.gittip.com/issues/2198
# https://github.com/gittip/www.gittip.com/pull/2209
# https://github.com/gittip/www.gittip.com/issues/2296
# See also: https://github.com/gratipay/www.gratipay.com/issues/1673
# https://github.com/gratipay/www.gratipay.com/issues/2029
# https://github.com/gratipay/www.gratipay.com/issues/2198
# https://github.com/gratipay/www.gratipay.com/pull/2209
# https://github.com/gratipay/www.gratipay.com/issues/2296
target = net = self.gross
while 1:
@ -118,7 +118,7 @@ class Payee(object):
def compute_input_csv():
from gittip import wireup
from gratipay import wireup
db = wireup.db(wireup.env())
participants = db.all("""
@ -140,7 +140,7 @@ def compute_input_csv():
amount = participant.balance - total
if amount < 0.50:
# 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
total_gross += amount
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
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("{:<24}{:<32} {:^7} {:^7} {:^7}".format("username", "email", "gross", "fee", "net"))
print_rule()
for payee in payees:
paypal_csv.writerow((payee.email, payee.net, "usd"))
gittip_csv.writerow(( payee.username
gratipay_csv.writerow(( payee.username
, payee.email
, payee.gross
, payee.fee
@ -185,21 +185,21 @@ def compute_output_csvs():
print("{:>64} {:>7} {:>7}".format(total_gross, total_fees, total_net))
def post_back_to_gittip():
def post_back_to_gratipay():
try:
gittip_api_key = os.environ['GITTIP_API_KEY']
gratipay_api_key = os.environ['GITTIP_API_KEY']
except KeyError:
gittip_api_key = getpass.getpass("Gittip API key: ")
gratipay_api_key = getpass.getpass("Gratipay API key: ")
try:
gittip_base_url = os.environ['GITTIP_BASE_URL']
gratipay_base_url = os.environ['GITTIP_BASE_URL']
except KeyError:
gittip_base_url = 'https://www.gittip.com'
gratipay_base_url = 'https://www.gratipay.com'
nposts = 0
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)
if additional_note:
note += " " + additional_note
@ -207,7 +207,7 @@ def post_back_to_gittip():
data = {'amount': '-' + net, 'fee': fee, 'note': note}
try:
response = requests.post(url, auth=(gittip_api_key, ''), data=data)
response = requests.post(url, auth=(gratipay_api_key, ''), data=data)
except IncompleteRead:
print('IncompleteRead, proceeding (but double-check!)')
else:
@ -215,12 +215,12 @@ def post_back_to_gittip():
nposts += 1
else:
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:
print('... resulted in a {} response:'.format(response.status_code))
print(response.text)
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():
@ -261,13 +261,13 @@ def main():
print("Rerun with one of these options:")
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(" -p - posts back to Gittip (prompts for API key)")
print(" -p - posts back to Gratipay (prompts for API key)")
elif '-i' in sys.argv:
compute_input_csv()
elif '-o' in sys.argv:
compute_output_csvs()
elif '-p' in sys.argv:
post_back_to_gittip()
post_back_to_gratipay()
if __name__ == '__main__':

View File

@ -1,8 +1,8 @@
#!/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`
echo "Clearing '$USER' database..."
psql -q -c "drop schema public cascade; create schema public;" 2> /dev/null

View File

@ -1,9 +1,9 @@
#!/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
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.
"""
@ -18,7 +18,7 @@ class Snapper(cmd.Cmd):
prompt = 'snapper> '
root = '../backups'
dbname = 'gittip-bak'
dbname = 'gratipay-bak'
def do_EOF(self, line):
raise KeyboardInterrupt

View File

@ -10,7 +10,7 @@ import time
import sys
import requests
from gittip import wireup
from gratipay import wireup
from requests_oauthlib import OAuth1
db = wireup.db(wireup.env())
@ -59,7 +59,7 @@ def update_twitter():
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():
user_info[k] = unicode(v)
@ -131,7 +131,7 @@ def update_github():
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():
user_info[k] = unicode(v)

View File

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

View File

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

View File

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

View File

@ -1,6 +1,6 @@
# -*- 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.
#
# This file is execfile()d with the current directory set to its containing dir.
@ -40,8 +40,8 @@ source_suffix = '.rst'
master_doc = 'index'
# General information about the project.
project = u'Gittip'
copyright = u'2013, Gittip, LLC'
project = u'Gratipay'
copyright = u'2013, Gratipay, LLC'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
@ -93,7 +93,7 @@ pygments_style = 'sphinx'
# -- Generate RST files -------------------------------------------------------
# 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")
@ -174,7 +174,7 @@ html_static_path = ['_static']
#html_file_suffix = None
# Output file base name for HTML help builder.
htmlhelp_basename = 'Gittipdoc'
htmlhelp_basename = 'Gratipaydoc'
# -- Options for LaTeX output --------------------------------------------------
@ -193,8 +193,8 @@ latex_elements = {
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass [howto/manual]).
latex_documents = [
('index', 'Gittip.tex', u'Gittip Documentation',
u'Gittip, LLC', 'manual'),
('index', 'Gratipay.tex', u'Gratipay Documentation',
u'Gratipay, LLC', 'manual'),
]
# 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
# (source start file, name, description, authors, manual section).
man_pages = [
('index', 'gittip', u'Gittip Documentation',
[u'Gittip, LLC'], 1)
('index', 'gratipay', u'Gratipay Documentation',
[u'Gratipay, LLC'], 1)
]
# If true, show URL addresses after external links.
@ -237,8 +237,8 @@ man_pages = [
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
('index', 'Gittip', u'Gittip Documentation',
u'Gittip, LLC', 'Gittip', 'One line description of project.',
('index', 'Gratipay', u'Gratipay Documentation',
u'Gratipay, LLC', 'Gratipay', 'One line description of project.',
'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`_
(not to be confused with programmers working with Gittip's `web API`_).
Welcome! This is the documentation for programmers working on `www.gratipay.com`_
(not to be confused with programmers working with Gratipay's `web API`_).
.. _www.gittip.com: https://github.com/gittip/www.gittip.com
.. _web API: https://github.com/gittip/www.gittip.com#api
.. _www.gratipay.com: https://github.com/gratipay/www.gratipay.com
.. _web API: https://github.com/gratipay/www.gratipay.com#api
DB Schema
@ -14,12 +14,12 @@ DB Schema
is_suspipicous on participant can be None, True or False. It represents unknown,
blacklisted or whitelisted user.
* whitelisted can transfer money out of gittip
* unknown can move money within gittip
* whitelisted can transfer money out of gratipay
* unknown can move money within gratipay
* 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
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
@ -33,4 +33,4 @@ Contents
.. toctree::
:maxdepth: 2
gittip Python library <gittip>
gratipay Python library <gratipay>

View File

@ -115,9 +115,9 @@ if "%1" == "qthelp" (
echo.
echo.Build finished; now you can run "qcollectiongenerator" with the ^
.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.^> assistant -collectionFile %BUILDDIR%\qthelp\Gittip.ghc
echo.^> assistant -collectionFile %BUILDDIR%\qthelp\Gratipay.ghc
goto end
)

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python
"""\
Gittip
Gratipay
~~~~~~
A personal funding platform.
@ -10,7 +10,7 @@ Dependencies:
- Postgresql 9.2
To run:
$ gittip.py
$ gratipay.py
This will also initialize a local environment on the first run.
"""
@ -88,7 +88,7 @@ def init_virtualenv():
shell('python', virtualenv_path,
'--unzip-setuptools',
'--prompt="[gittip] "',
'--prompt="[gratipay] "',
'--never-download',
'--extra-search-dir=' + vendor_path,
'--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 locale
@ -45,7 +45,7 @@ class NotSane(Exception):
"""
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')
@ -89,5 +89,5 @@ def outbound(request, response, website):
version = website.version
# Set misc headers for the website
response.headers['X-Gittip-Version'] = version
response.headers['X-Gratipay-Version'] = version
response.headers['Content-Language'] = 'en'

View File

@ -197,7 +197,7 @@ class BalancedThing(object):
break
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 = ''
return out
@ -244,7 +244,7 @@ class BalancedCard(BalancedThing):
'country': 'meta.country',
'city_town': 'meta.city_town',
'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
'state': 'meta.region',
'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
@ -8,9 +8,9 @@ import balanced
from aspen import log
from aspen.utils import typecheck
from gittip.exceptions import NegativeBalance, NoBalancedCustomerHref, NotWhitelisted
from gittip.models import check_db
from gittip.models.participant import Participant
from gratipay.exceptions import NegativeBalance, NoBalancedCustomerHref, NotWhitelisted
from gratipay.models import check_db
from gratipay.models.participant import Participant
# 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
# 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_CREDIT = Decimal("10.00")
@ -82,7 +82,7 @@ def ach_credit(db, participant, withhold, minimum_credit=MINIMUM_CREDIT):
# 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).
balance = participant.balance
@ -152,7 +152,7 @@ def ach_credit(db, participant, withhold, minimum_credit=MINIMUM_CREDIT):
def create_card_hold(db, participant, amount):
"""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.
"""
@ -270,7 +270,7 @@ def record_exchange(db, kind, amount, fee, participant, status):
Records in the exchanges table have these characteristics:
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
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
(moving money amongst Gittip users) happen within an isolated event called
Exchanges (moving money between Gratipay and the outside world) and transfers
(moving money amongst Gratipay users) happen within an isolated event called
payday. This event has duration (it's not punctiliar).
Payday is designed to be crash-resistant. Everything that can be rolled back
@ -17,11 +17,11 @@ from balanced import CardHold
import aspen.utils
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
)
from gittip.exceptions import NegativeBalance
from gittip.models import check_db
from gratipay.exceptions import NegativeBalance
from gratipay.models import check_db
from psycopg2 import IntegrityError
@ -32,7 +32,7 @@ class NoPayday(Exception):
class Payday(object):
"""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
want to use their balance at the start of Payday. Balance changes should be
atomic globally per-Payday.

View File

@ -1,6 +1,6 @@
"""This is installed as `payday`.
"""
from gittip import wireup
from gratipay import wireup
def payday():
@ -18,10 +18,10 @@ def payday():
# Lazily import the billing module.
# =================================
# 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 gittip.billing.payday import Payday
from gratipay.billing.exchanges import sync_with_balanced
from gratipay.billing.payday import Payday
try:
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 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'}
@ -24,7 +24,7 @@ class UnknownAccountElsewhere(Exception): pass
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):
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 gittip.elsewhere import PlatformOAuth1
from gittip.elsewhere._extractors import any_key, key, not_available
from gittip.elsewhere._paginators import keys_paginator
from gratipay.elsewhere import PlatformOAuth1
from gratipay.elsewhere._extractors import any_key, key, not_available
from gratipay.elsewhere._paginators import keys_paginator
class Bitbucket(PlatformOAuth1):

View File

@ -10,8 +10,8 @@ from urlparse import parse_qs, urlparse
import requests
from aspen import Response
from gittip.elsewhere import Platform
from gittip.elsewhere._extractors import key, not_available
from gratipay.elsewhere import Platform
from gratipay.elsewhere._extractors import key, not_available
class Bountysource(Platform):
@ -48,7 +48,7 @@ class Bountysource(Platform):
redirect_url=self.callback_url+'?query_id='+query_id,
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, ''
def get_query_id(self, querystring):

View File

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

View File

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

View File

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

View File

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

View File

@ -30,7 +30,7 @@ class ProblemChangingNumber(Exception):
return self.msg
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

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
the most important two. Participant, in particular, is at the center of
everything on Gittip.
everything on Gratipay.
"""
from postgres import Postgres
import psycopg2.extras
class GittipDB(Postgres):
class GratipayDB(Postgres):
def self_check(self):
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).
https://github.com/gittip/www.gittip.com/issues/1704
https://github.com/gratipay/www.gratipay.com/issues/1704
"""
conflicting_tips = cursor.one("""
SELECT count(*)
@ -52,7 +52,7 @@ def _check_balances(cursor):
"""
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("""
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
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("""
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 decimal import Decimal
@ -13,7 +13,7 @@ class StubParticipantAdded(Exception): pass
class MixinTeam(object):
"""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
# lazy import to avoid circular import
from gittip.security.user import User
from gittip.models.participant import Participant
from gratipay.security.user import User
from gratipay.models.participant import Participant
typecheck( member, Participant
, take, Decimal

View File

@ -8,8 +8,8 @@ import xml.etree.ElementTree as ET
import xmltodict
from aspen import Response
from gittip.exceptions import ProblemChangingUsername
from gittip.utils.username import safely_reserve_a_username
from gratipay.exceptions import ProblemChangingUsername
from gratipay.utils.username import safely_reserve_a_username
class UnknownAccountElsewhere(Exception): pass
@ -140,7 +140,7 @@ class AccountElsewhere(Model):
def opt_in(self, desired_username):
"""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)
user = User.from_username(self.participant.username)
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)
class Community(Model):
"""Model a community on Gittip.
"""Model a community on Gratipay.
"""
typname = "community_summary"

View File

@ -1,5 +1,5 @@
"""*Participant* is the name Gittip gives to people and groups that are known
to Gittip. We've got a ``participants`` table in the database, and a
"""*Participant* is the name Gratipay gives to people and groups that are known
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
of participant, based on certain properties.
@ -18,9 +18,9 @@ from aspen.utils import typecheck, utcnow
from postgres.orm import Model
from psycopg2 import IntegrityError
import gittip
from gittip import NotSane
from gittip.exceptions import (
import gratipay
from gratipay import NotSane
from gratipay.exceptions import (
HasBigTips,
UsernameIsEmpty,
UsernameTooLong,
@ -33,12 +33,12 @@ from gittip.exceptions import (
UserDoesntAcceptTips,
)
from gittip.models import add_event
from gittip.models._mixin_team import MixinTeam
from gittip.models.account_elsewhere import AccountElsewhere
from gittip.utils.username import safely_reserve_a_username
from gittip import billing
from gittip.utils import is_card_expiring
from gratipay.models import add_event
from gratipay.models._mixin_team import MixinTeam
from gratipay.models.account_elsewhere import AccountElsewhere
from gratipay.utils.username import safely_reserve_a_username
from gratipay import billing
from gratipay.utils import is_card_expiring
ASCII_ALLOWED_IN_USERNAME = set("0123456789"
@ -52,7 +52,7 @@ NANSWERS_THRESHOLD = 0 # configured in wireup.py
NOTIFIED_ABOUT_EXPIRATION = b'notifiedAboutExpiration'
class Participant(Model, MixinTeam):
"""Represent a Gittip participant.
"""Represent a Gratipay participant.
"""
typname = 'participants'
@ -182,7 +182,7 @@ class Participant(Model, MixinTeam):
if number == 'singular':
nbigtips = self.db.one("""\
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:
raise HasBigTips
with self.db.get_cursor() as c:
@ -252,7 +252,7 @@ class Participant(Model, MixinTeam):
# Claiming
# ========
# 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):
"""Given a username, return an URL path.
@ -308,7 +308,7 @@ class Participant(Model, MixinTeam):
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
, self
, Decimal('0.00') # don't withhold anything
@ -506,7 +506,7 @@ class Participant(Model, MixinTeam):
lowercased = suggested.lower()
if lowercased in gittip.RESTRICTED_USERNAMES:
if lowercased in gratipay.RESTRICTED_USERNAMES:
raise UsernameIsRestricted(suggested)
if suggested != self.username:
@ -692,8 +692,8 @@ class Participant(Model, MixinTeam):
raise NoSelfTipping
amount = Decimal(amount) # May raise InvalidOperation
max_tip = gittip.MAX_TIP_PLURAL if tippee.IS_PLURAL else gittip.MAX_TIP_SINGULAR
if (amount < gittip.MIN_TIP) or (amount > max_tip):
max_tip = gratipay.MAX_TIP_PLURAL if tippee.IS_PLURAL else gratipay.MAX_TIP_SINGULAR
if (amount < gratipay.MIN_TIP) or (amount > max_tip):
raise BadAmount
if not tippee.accepts_tips and amount != 0:
@ -727,8 +727,8 @@ class Participant(Model, MixinTeam):
if update_tippee:
# Update receiving amount of tippee
tippee.update_receiving(cursor)
if tippee.username == 'Gittip':
# Update whether the tipper is using Gittip for free
if tippee.username == 'Gratipay':
# Update whether the tipper is using Gratipay for free
self.update_is_free_rider(None if amount == 0 else False, cursor)
return amount, first_time_tipper
@ -871,7 +871,7 @@ class Participant(Model, MixinTeam):
# Compute the total.
# ==================
# 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
# when someone *does* start accepting tips and all of a sudden they're
# hit with bigger charges.
@ -921,7 +921,7 @@ class Participant(Model, MixinTeam):
out += " receives $%.2f/wk" % receiving
else:
out += " is"
return out + " on Gittip"
return out + " on Gratipay"
def get_age_in_seconds(self):
@ -1016,16 +1016,16 @@ class Participant(Model, MixinTeam):
Returns None or raises NeedConfirmation.
This method associates an account on another platform (GitHub, Twitter,
etc.) with the given Gittip participant. Every account elsewhere has an
associated Gittip participant account, even if its only a stub
etc.) with the given Gratipay participant. Every account elsewhere has an
associated Gratipay participant account, even if its only a stub
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
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
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.
Here's what absorbing means:
@ -1167,7 +1167,7 @@ class Participant(Model, MixinTeam):
# Load the existing connection.
# =============================
# Every account elsewhere has at least a stub participant account
# on Gittip.
# on Gratipay.
elsewhere = cursor.one("""
@ -1191,11 +1191,11 @@ class Participant(Model, MixinTeam):
# three cases:
#
# - 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
#
# - 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
# archived and its tips absorbed by us
#
@ -1368,7 +1368,7 @@ class Participant(Model, MixinTeam):
, 'username': self.username
, 'avatar': self.avatar_url
, 'number': self.number
, 'on': 'gittip'
, 'on': 'gratipay'
}
if not details:

View File

@ -3,8 +3,8 @@
from datetime import datetime
from aspen.utils import to_rfc822
from gittip.security import csrf
from gittip.security.user import User, SESSION
from gratipay.security import csrf
from gratipay.security.user import User, SESSION
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://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
def _is_secure(request):
import gittip
return gittip.canonical_scheme == 'https'
import gratipay
return gratipay.canonical_scheme == 'https'
def _get_host(request):
"""Returns the HTTP host using the request headers.

View File

@ -3,8 +3,8 @@ from datetime import timedelta
import uuid
from aspen.utils import utcnow
from gittip.models.participant import Participant
from gittip.utils import set_cookie
from gratipay.models.participant import Participant
from gratipay.utils import set_cookie
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
@ -9,12 +9,12 @@ from os.path import join, dirname, realpath
from aspen import resources
from aspen.utils import utcnow
from aspen.testing.client import Client
from gittip.billing.exchanges import record_exchange, record_exchange_result
from gittip.elsewhere import UserInfo
from gittip.models.account_elsewhere import AccountElsewhere
from gittip.security.user import User, SESSION
from gittip.testing.vcr import use_cassette
from gittip import wireup
from gratipay.billing.exchanges import record_exchange, record_exchange_result
from gratipay.elsewhere import UserInfo
from gratipay.models.account_elsewhere import AccountElsewhere
from gratipay.security.user import User, SESSION
from gratipay.testing.vcr import use_cassette
from gratipay import wireup
from psycopg2 import IntegrityError, InternalError

View File

@ -2,8 +2,8 @@ from __future__ import absolute_import, division, print_function, unicode_litera
import balanced
from gittip.testing import Harness
from gittip.testing.vcr import use_cassette
from gratipay.testing import Harness
from gratipay.testing.vcr import use_cassette
class BalancedHarness(Harness):
@ -42,7 +42,7 @@ with use_cassette('BalancedHarness'):
'state': 'Confusion',
'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
meta={
'address_2': 'Box 2',

View File

@ -130,7 +130,7 @@ bountysource = lambda: {
"login": "corytheboyd",
"id": 2103
},
"gittip_account": {
"gratipay_account": {
"uid": 17306,
"followers": 0,
"following": 0,
@ -175,7 +175,7 @@ github = lambda: {
"email": "chad@zetaweb.com",
"public_repos": 25,
"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}",
"html_url": "https://github.com/whit537",
"subscriptions_url": "https://api.github.com/users/whit537/subscriptions",

View File

@ -5,7 +5,7 @@ import re
from aspen import Response
from aspen.utils import typecheck, to_rfc822, utcnow
import gittip
import gratipay
from postgres.cursors import SimpleCursorBase
from jinja2 import escape
@ -358,7 +358,7 @@ def get_participant(request, restrict=True):
if participant.claimed_time is None:
# 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.
to = participant.resolve_unclaimed()
@ -386,7 +386,7 @@ def update_global_stats(website):
nbackers = website.db.one("""
SELECT npatrons
FROM participants
WHERE username = 'Gittip'
WHERE username = 'Gratipay'
""", default=0)
website.support_current = cur = int(round(nbackers / stats[0] * 100)) if stats[0] else 0
if cur < 10: goal = 20
@ -472,5 +472,5 @@ def set_cookie(cookies, key, value, expires=None, httponly=True, path='/'):
cookie['httponly'] = True
if path:
cookie['path'] = path
if gittip.canonical_scheme == 'https':
if gratipay.canonical_scheme == 'https':
cookie['secure'] = True

View File

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

View File

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

View File

@ -5,40 +5,40 @@ import os
import aspen
import balanced
import gittip
import gittip.billing.payday
import gratipay
import gratipay.billing.payday
import raven
import mandrill
from environment import Environment, is_yesish
from gittip.elsewhere import PlatformRegistry
from gittip.elsewhere.bitbucket import Bitbucket
from gittip.elsewhere.bountysource import Bountysource
from gittip.elsewhere.github import GitHub
from gittip.elsewhere.openstreetmap import OpenStreetMap
from gittip.elsewhere.twitter import Twitter
from gittip.elsewhere.venmo import Venmo
from gittip.models.account_elsewhere import AccountElsewhere
from gittip.models.community import Community
from gittip.models.participant import Participant
from gittip.models.email_address_with_confirmation import EmailAddressWithConfirmation
from gittip.models import GittipDB
from gratipay.elsewhere import PlatformRegistry
from gratipay.elsewhere.bitbucket import Bitbucket
from gratipay.elsewhere.bountysource import Bountysource
from gratipay.elsewhere.github import GitHub
from gratipay.elsewhere.openstreetmap import OpenStreetMap
from gratipay.elsewhere.twitter import Twitter
from gratipay.elsewhere.venmo import Venmo
from gratipay.models.account_elsewhere import AccountElsewhere
from gratipay.models.community import Community
from gratipay.models.participant import Participant
from gratipay.models.email_address_with_confirmation import EmailAddressWithConfirmation
from gratipay.models import GratipayDB
def canonical(env):
gittip.canonical_scheme = env.canonical_scheme
gittip.canonical_host = env.canonical_host
gratipay.canonical_scheme = env.canonical_scheme
gratipay.canonical_host = env.canonical_host
def db(env):
dburl = env.database_url
maxconn = env.database_maxconn
db = GittipDB(dburl, maxconn=maxconn)
db = GratipayDB(dburl, maxconn=maxconn)
db.register_model(Community)
db.register_model(AccountElsewhere)
db.register_model(Participant)
db.register_model(EmailAddressWithConfirmation)
gittip.billing.payday.Payday.db = db
gratipay.billing.payday.Payday.db = db
return db
@ -52,8 +52,8 @@ def billing(env):
def username_restrictions(website):
if not hasattr(gittip, 'RESTRICTED_USERNAMES'):
gittip.RESTRICTED_USERNAMES = os.listdir(website.www_root)
if not hasattr(gratipay, 'RESTRICTED_USERNAMES'):
gratipay.RESTRICTED_USERNAMES = os.listdir(website.www_root)
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
# 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
@ -117,7 +117,7 @@ def make_sentry_teller(env):
, 'is_admin': user.participant.is_admin
, 'is_suspicious': user.participant.is_suspicious
, '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):
from gittip.models import participant
from gratipay.models import participant
participant.NANSWERS_THRESHOLD = env.nanswers_threshold
@ -207,9 +207,9 @@ def accounts_elsewhere(website, env):
def other_stuff(website, env):
website.asset_url = env.gittip_asset_url.replace('%version', website.version)
website.cache_static = env.gittip_cache_static
website.compress_assets = env.gittip_compress_assets
website.asset_url = env.gratipay_asset_url.replace('%version', website.version)
website.cache_static = env.gratipay_cache_static
website.compress_assets = env.gratipay_compress_assets
website.segment_key = env.segment_key
website.sentry_dsn = env.sentry_dsn
@ -271,7 +271,7 @@ def env():
these = len(env.malformed) != 1 and 'these' or 'this'
plural = len(env.malformed) != 1 and 's' or ''
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
)
aspen.log_dammit(" ")
@ -288,7 +288,7 @@ def env():
these = len(env.missing) != 1 and 'these' or 'this'
plural = len(env.missing) != 1 and 's' or ''
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
)
aspen.log_dammit(" ")
@ -296,10 +296,10 @@ def env():
aspen.log_dammit(" " + key)
aspen.log_dammit(" ")
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("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(" ")
aspen.log_dammit("See ./default_local.env for hints.")

View File

@ -1,6 +1,6 @@
msgid ""
msgstr ""
"Project-Id-Version: Gittip\n"
"Project-Id-Version: Gratipay\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2014-08-21 15:17+0200\n"
"PO-Revision-Date: 2014-08-25 23:46-0500\n"
@ -237,16 +237,16 @@ msgstr ""
"{bottomstart}por semajno{bottomend}"
#: templates/participant.html:53
msgid "{0} just joined Gittip! :D"
msgstr "{0} ĵus membriĝis Gittip! :D"
msgid "{0} just joined Gratipay! :D"
msgstr "{0} ĵus membriĝis Gratipay! :D"
#: templates/participant.html:55
msgid "{0} joined recently"
msgstr "{0} membriĝis lastatempe"
#: templates/participant.html:57
msgid "{0} is quietly watching the Gittip world"
msgstr "{0} rigardas trankvile la Gittip mondo"
msgid "{0} is quietly watching the Gratipay world"
msgstr "{0} rigardas trankvile la Gratipay mondo"
#: templates/participant.tip.html:5
msgid "This account has been locked by its owner."
@ -334,37 +334,37 @@ msgstr "{0} doni al {1}"
msgid "Sign in"
msgstr "Ensaluti"
#: templates/support-gittip.html:5
#: templates/support-gratipay.html:5
#, python-format
msgid "Only {0}% of active users also {1}support Gittip{2}."
msgstr "Sole {0}% de aktivaj uzantoj ankaŭ {1}subtenas Gittip{2}."
msgid "Only {0}% of active users also {1}support Gratipay{2}."
msgstr "Sole {0}% de aktivaj uzantoj ankaŭ {1}subtenas Gratipay{2}."
#: templates/support-gittip.html:7
#: templates/support-gratipay.html:7
#, python-format
msgid "{0}% of active users also {1}support Gittip{2}."
msgstr "{0}% de aktivaj uzantoj ankaŭ {1}subtenas Gittip{2}."
msgid "{0}% of active users also {1}support Gratipay{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}%?"
msgstr "Ĉu vi helpos nin atingi {0}%?"
#: templates/support-gittip.html:13
#: templates/support-gratipay.html:13
msgid "Will you join them?"
msgstr "Ĉu vi aliĝos ilin?"
#: templates/support-gittip.html:19
#: templates/support-gratipay.html:19
msgid "Other"
msgstr "Alia"
#: templates/support-gittip.html:19
#: templates/support-gratipay.html:19
msgid "No thanks"
msgstr "Ne dankon"
#: templates/support-gittip.html:22
msgid "We fund Gittip solely through your voluntary payments!"
msgstr "Ni fondusas Gittip sole tra via libervolaj pagoj!"
#: templates/support-gratipay.html:22
msgid "We fund Gratipay solely through your voluntary payments!"
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"
msgstr "Lernu pli"
@ -382,18 +382,18 @@ msgstr "Bankokonto"
#: www/bank-account.html.spt:37
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."
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."
#: www/bank-account.html.spt:38
msgid ""
"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 ""
"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."
#: www/bank-account.html.spt:61
@ -494,10 +494,10 @@ msgstr "Kreditkarto"
#: www/credit-card.html.spt:42
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."
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."
#: 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}."
#: www/index.html.spt:87
msgid "Want to work for Gittip? We are an {0}open company{1}."
msgstr "Ĉu vi volas labori por Gittip? Ni estas {0}malferma firmo{1}."
msgid "Want to work for Gratipay? We are an {0}open company{1}."
msgstr "Ĉu vi volas labori por Gratipay? Ni estas {0}malferma firmo{1}."
#: www/index.html.spt:93
msgid "Welcome, {0}!"
msgstr "Bonvenon, {0}!"
#: www/index.html.spt:94
msgid "Thanks for joining Gittip!"
msgstr "Dankon pro via aliĝado Gittip!"
msgid "Thanks for joining Gratipay!"
msgstr "Dankon pro via aliĝado Gratipay!"
#: www/index.html.spt:95
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."
#: www/%username/index.html.spt:41
msgid "My goal is to receive {0} per week on Gittip."
msgstr "Mia celo estas ricevi {0} ĉiusemajne tra Gittip."
msgid "My goal is to receive {0} per week on Gratipay."
msgstr "Mia celo estas ricevi {0} ĉiusemajne tra Gratipay."
#: www/%username/index.html.spt:45
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."
#: www/%username/index.html.spt:48
msgid "Our goal is to receive {0} per week on Gittip."
msgstr "Nia celo estas ricevi {0} ĉiusemajne tra Gittip."
msgid "Our goal is to receive {0} per week on Gratipay."
msgstr "Nia celo estas ricevi {0} ĉiusemajne tra Gratipay."
#: www/%username/index.html.spt:55
msgid "with {n} other"
@ -714,10 +714,10 @@ msgstr "Vi estas {0}"
#: www/%username/account/index.html.spt:39
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!"
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!"
#: www/%username/account/index.html.spt:46
@ -821,8 +821,8 @@ msgid "Outside"
msgstr "Ekstere"
#: www/%username/history/index.html.spt:65
msgid "Inside Gittip"
msgstr "Interne Gittip"
msgid "Inside Gratipay"
msgstr "Interne Gratipay"
#: www/%username/history/index.html.spt:68
msgid "Bank"
@ -870,20 +870,20 @@ msgid "Widget #{0}"
msgstr "Umaĵo #{0}"
#: www/%username/widgets/index.html.spt:104
msgid "Use this code to embed a Gittip button on your website:"
msgstr "Uzu tiun kodon por enkorpigi Gittip butonon sur vian retejon:"
msgid "Use this code to embed a Gratipay button on your website:"
msgstr "Uzu tiun kodon por enkorpigi Gratipay butonon sur vian retejon:"
#: www/%username/widgets/index.html.spt:110
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:"
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:"
#: www/%username/widgets/index.html.spt:115
msgid "person is not logged into Gittip or doesn't tip you"
msgstr "persono ne estas ensalutinta en Gittip aŭ ne doni al vin"
msgid "person is not logged into Gratipay or doesn't tip you"
msgstr "persono ne estas ensalutinta en Gratipay aŭ ne doni al vin"
#: www/%username/widgets/index.html.spt:118
msgid "person tips you; shows current gift amount"
@ -898,8 +898,8 @@ msgid "Here's an example using {0}:"
msgstr "Jen ekzemplo uzanta {0}:"
#: www/%username/widgets/index.html.spt:134
msgid "Use this code to add a Gittip \"receiving\" widget on your website:"
msgstr "Uzu tiun kodon por aldoni Gittip \"ricevado\" ilon en via retejo:"
msgid "Use this code to add a Gratipay \"receiving\" widget on your website:"
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:150
@ -918,8 +918,8 @@ msgid "Browse Communities"
msgstr "Foliumu komunumojn"
#: www/for/index.html.spt:24
msgid "{0}There are{1} {2} {3}communities on Gittip.{4}"
msgstr "{0}Ekzistas{1} {2} {3}komunumoj sur Gittip.{4}"
msgid "{0}There are{1} {2} {3}communities on Gratipay.{4}"
msgstr "{0}Ekzistas{1} {2} {3}komunumoj sur Gratipay.{4}"
#: www/for/index.html.spt:75
msgid "Large Communities"
@ -953,8 +953,8 @@ msgid "Browse {0}All Communities{1}"
msgstr "Foliumu {0}Ĉiujn Komunumojn{1}"
#: www/for/%slug/index.html.spt:163
msgid "{0} to join the {1} community on Gittip."
msgstr "{0} por kuniĝi la {1}-an komunumon sur Gittip."
msgid "{0} to join the {1} community on Gratipay."
msgstr "{0} por kuniĝi la {1}-an komunumon sur Gratipay."
#: www/for/%slug/index.html.spt:170
msgid "Leave"
@ -970,8 +970,8 @@ msgstr "Vi estas la unua ĉi tie!"
#: www/for/%slug/index.html.spt:184
msgid ""
"Bring the {0} community to Gittip to find like-minded people to give to."
msgstr "Alportu la {0} komunumon al Gittip trovi samideanojn homojn doni."
"Bring the {0} community to Gratipay to find like-minded people to give to."
msgstr "Alportu la {0} komunumon al Gratipay trovi samideanojn homojn doni."
#: www/for/%slug/index.html.spt:193
msgid "New Members"

View File

@ -235,16 +235,16 @@ msgstr ""
"{bottomstart}par semaine{bottomend}"
#: templates/participant.html:53
msgid "{0} just joined Gittip! :D"
msgstr "{0} vient juste de créer son compte Gittip! :D"
msgid "{0} just joined Gratipay! :D"
msgstr "{0} vient juste de créer son compte Gratipay! :D"
#: templates/participant.html:55
msgid "{0} joined recently"
msgstr "{0} a créé son compte récemment"
#: templates/participant.html:57
msgid "{0} is quietly watching the Gittip world"
msgstr "{0} observe silencieusement la planète Gittip"
msgid "{0} is quietly watching the Gratipay world"
msgstr "{0} observe silencieusement la planète Gratipay"
#: templates/participant.tip.html:5
msgid "This account has been locked by its owner."
@ -331,37 +331,37 @@ msgstr "{0} pour donner à {1}"
msgid "Sign in"
msgstr "Connectez vous"
#: templates/support-gittip.html:5
#: templates/support-gratipay.html:5
#, python-format
msgid "Only {0}% of active users also {1}support Gittip{2}."
msgstr "Seulement {0}% des utilisateurs actifs {1}supportent Gittip{2}."
msgid "Only {0}% of active users also {1}support Gratipay{2}."
msgstr "Seulement {0}% des utilisateurs actifs {1}supportent Gratipay{2}."
#: templates/support-gittip.html:7
#: templates/support-gratipay.html:7
#, python-format
msgid "{0}% of active users also {1}support Gittip{2}."
msgstr "{0}% des utilisateurs actifs {1}supportent Gittip{2}."
msgid "{0}% of active users also {1}support Gratipay{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}%?"
msgstr "Voulez-vous nous aider à atteindre {0}% ?"
#: templates/support-gittip.html:13
#: templates/support-gratipay.html:13
msgid "Will you join them?"
msgstr "Voulez-vous en faire de même ?"
#: templates/support-gittip.html:19
#: templates/support-gratipay.html:19
msgid "Other"
msgstr "Autre"
#: templates/support-gittip.html:19
#: templates/support-gratipay.html:19
msgid "No thanks"
msgstr "Non merci"
#: templates/support-gittip.html:22
msgid "We fund Gittip solely through your voluntary payments!"
msgstr "Gittip n'est financé que par vos dons!"
#: templates/support-gratipay.html:22
msgid "We fund Gratipay solely through your voluntary payments!"
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"
msgstr "En savoir plus"
@ -379,7 +379,7 @@ msgstr "Compte Bancaire"
#: www/bank-account.html.spt:37
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."
msgstr ""
"Quand vous recevez des dons nous les déposerons automatiquement sur votre"
@ -388,7 +388,7 @@ msgstr ""
#: www/bank-account.html.spt:38
msgid ""
"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 ""
"Si vous ne connectez pas de compte bancaire alors votre argent "
"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
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."
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"
" crédit."
@ -602,9 +602,9 @@ msgstr ""
"utilisateurs."
#: 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 ""
"Vous voulez travaillez pour Gittip ? Nous sommes une {0}entreprise "
"Vous voulez travaillez pour Gratipay ? Nous sommes une {0}entreprise "
"ouverte{1}."
#: www/index.html.spt:93
@ -612,8 +612,8 @@ msgid "Welcome, {0}!"
msgstr "Bienvenue, {0}!"
#: www/index.html.spt:94
msgid "Thanks for joining Gittip!"
msgstr "Merci d'avoir rejoint Gittip!"
msgid "Thanks for joining Gratipay!"
msgstr "Merci d'avoir rejoint Gratipay!"
#: www/index.html.spt:95
msgid "Next steps:"
@ -643,7 +643,7 @@ msgstr "Bonjour, {0}!"
#: www/index.html.spt:107 www/%username/history/index.html.spt:20
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
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."
#: www/%username/index.html.spt:41
msgid "My goal is to receive {0} per week on Gittip."
msgstr "Mon objectif est de recevoir {0} par semaine sur Gittip."
msgid "My goal is to receive {0} per week on Gratipay."
msgstr "Mon objectif est de recevoir {0} par semaine sur Gratipay."
#: www/%username/index.html.spt:45
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."
#: www/%username/index.html.spt:48
msgid "Our goal is to receive {0} per week on Gittip."
msgstr "Notre objectif est de recevoir {0} par semaine sur Gittip."
msgid "Our goal is to receive {0} per week on Gratipay."
msgstr "Notre objectif est de recevoir {0} par semaine sur Gratipay."
#: www/%username/index.html.spt:55
msgid "with {n} other"
@ -721,10 +721,10 @@ msgstr "Vous êtes {0}"
#: www/%username/account/index.html.spt:39
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!"
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!"
#: 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
msgid "You joined {0}."
msgstr "Vous avez rejoint Gittip {0}."
msgstr "Vous avez rejoint Gratipay {0}."
#: www/%username/history/index.html.spt:17
msgid "{0} joined {1}."
msgstr "{0} a rejoint Gittip {1}."
msgstr "{0} a rejoint Gratipay {1}."
#: www/%username/history/index.html.spt:22
msgid "Their balance is {0}."
@ -828,8 +828,8 @@ msgid "Outside"
msgstr "À l'extérieur"
#: www/%username/history/index.html.spt:65
msgid "Inside Gittip"
msgstr "À l'intérieur de Gittip"
msgid "Inside Gratipay"
msgstr "À l'intérieur de Gratipay"
#: www/%username/history/index.html.spt:68
msgid "Bank"
@ -877,19 +877,19 @@ msgid "Widget #{0}"
msgstr "Widget #{0}"
#: www/%username/widgets/index.html.spt:104
msgid "Use this code to embed a Gittip button on your website:"
msgstr "Utilisez ce code pour intégrer un bouton Gittip à votre site web:"
msgid "Use this code to embed a Gratipay button on your website:"
msgstr "Utilisez ce code pour intégrer un bouton Gratipay à votre site web:"
#: www/%username/widgets/index.html.spt:110
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:"
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:"
#: 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"
#: www/%username/widgets/index.html.spt:118
@ -905,9 +905,9 @@ msgid "Here's an example using {0}:"
msgstr "Voilà un exemple utilisant {0}:"
#: 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 ""
"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:"
#: www/%username/widgets/index.html.spt:139
@ -928,8 +928,8 @@ msgid "Browse Communities"
msgstr "Explorer les communautés"
#: www/for/index.html.spt:24
msgid "{0}There are{1} {2} {3}communities on Gittip.{4}"
msgstr "{0}Il y a{1} {2} {3}communautés sur Gittip.{4}"
msgid "{0}There are{1} {2} {3}communities on Gratipay.{4}"
msgstr "{0}Il y a{1} {2} {3}communautés sur Gratipay.{4}"
#: www/for/index.html.spt:75
msgid "Large Communities"
@ -963,8 +963,8 @@ msgid "Browse {0}All Communities{1}"
msgstr "Explorer {0}toutes les communautés{1}"
#: www/for/%slug/index.html.spt:163
msgid "{0} to join the {1} community on Gittip."
msgstr "{0} pour rejoindre la communauté {1} sur Gittip."
msgid "{0} to join the {1} community on Gratipay."
msgstr "{0} pour rejoindre la communauté {1} sur Gratipay."
#: www/for/%slug/index.html.spt:170
msgid "Leave"
@ -979,9 +979,9 @@ msgid "You're the first one here!"
msgstr "Vous êtes le premier ici!"
#: 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 ""
"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."
#: www/for/%slug/index.html.spt:193

View File

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

View File

@ -223,16 +223,16 @@ msgid ""
msgstr ""
#: templates/participant.html:53
msgid "{0} just joined Gittip! :D"
msgstr "{0} 刚刚加入了 Gittip! :D"
msgid "{0} just joined Gratipay! :D"
msgstr "{0} 刚刚加入了 Gratipay! :D"
#: templates/participant.html:55
msgid "{0} joined recently"
msgstr "{0} 最近加入了"
#: templates/participant.html:57
msgid "{0} is quietly watching the Gittip world"
msgstr "{0} 正在安静地看着Gittip的世界"
msgid "{0} is quietly watching the Gratipay world"
msgstr "{0} 正在安静地看着Gratipay的世界"
#: templates/participant.tip.html:5
msgid "This account has been locked by its owner."
@ -319,37 +319,37 @@ msgstr ""
msgid "Sign in"
msgstr "登录"
#: templates/support-gittip.html:5
#: templates/support-gratipay.html:5
#, 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 ""
#: templates/support-gittip.html:7
#: templates/support-gratipay.html:7
#, python-format
msgid "{0}% of active users also {1}support Gittip{2}."
msgid "{0}% of active users also {1}support Gratipay{2}."
msgstr ""
#: templates/support-gittip.html:11
#: templates/support-gratipay.html:11
msgid "Will you help us reach {0}%?"
msgstr ""
#: templates/support-gittip.html:13
#: templates/support-gratipay.html:13
msgid "Will you join them?"
msgstr ""
#: templates/support-gittip.html:19
#: templates/support-gratipay.html:19
msgid "Other"
msgstr ""
#: templates/support-gittip.html:19
#: templates/support-gratipay.html:19
msgid "No thanks"
msgstr ""
#: templates/support-gittip.html:22
msgid "We fund Gittip solely through your voluntary payments!"
#: templates/support-gratipay.html:22
msgid "We fund Gratipay solely through your voluntary payments!"
msgstr ""
#: templates/support-gittip.html:23 www/index.html.spt:56
#: templates/support-gratipay.html:23 www/index.html.spt:56
msgid "Learn more"
msgstr ""
@ -367,14 +367,14 @@ msgstr ""
#: www/bank-account.html.spt:37
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."
msgstr ""
#: www/bank-account.html.spt:38
msgid ""
"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 ""
#: www/bank-account.html.spt:61
@ -475,7 +475,7 @@ msgstr ""
#: www/credit-card.html.spt:42
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."
msgstr ""
@ -570,7 +570,7 @@ msgid "Want to see who they are? Browse {0}our communities{1}."
msgstr ""
#: 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 ""
#: www/index.html.spt:93
@ -578,7 +578,7 @@ msgid "Welcome, {0}!"
msgstr ""
#: www/index.html.spt:94
msgid "Thanks for joining Gittip!"
msgid "Thanks for joining Gratipay!"
msgstr ""
#: www/index.html.spt:95
@ -650,7 +650,7 @@ msgid "I'm here as a patron, and politely decline to receive gifts."
msgstr ""
#: 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 ""
#: www/%username/index.html.spt:45
@ -666,7 +666,7 @@ msgid "We're here as a patron, and politely decline to receive gifts."
msgstr ""
#: 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 ""
#: www/%username/index.html.spt:55
@ -681,7 +681,7 @@ msgstr ""
#: www/%username/account/index.html.spt:39
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!"
msgstr ""
@ -786,7 +786,7 @@ msgid "Outside"
msgstr ""
#: www/%username/history/index.html.spt:65
msgid "Inside Gittip"
msgid "Inside Gratipay"
msgstr ""
#: www/%username/history/index.html.spt:68
@ -835,17 +835,17 @@ msgid "Widget #{0}"
msgstr ""
#: 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 ""
#: www/%username/widgets/index.html.spt:110
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:"
msgstr ""
#: 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 ""
#: www/%username/widgets/index.html.spt:118
@ -861,7 +861,7 @@ msgid "Here's an example using {0}:"
msgstr ""
#: 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 ""
#: www/%username/widgets/index.html.spt:139
@ -880,7 +880,7 @@ msgid "Browse Communities"
msgstr ""
#: 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 ""
#: www/for/index.html.spt:75
@ -915,7 +915,7 @@ msgid "Browse {0}All Communities{1}"
msgstr ""
#: 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 ""
#: www/for/%slug/index.html.spt:170
@ -931,7 +931,7 @@ msgid "You're the first one here!"
msgstr ""
#: 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 ""
#: 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.
* ===============
* 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);
return o && unescape(o[1]);
}
Gittip.init = function() {
Gittip.forms.initCSRF();
Gittip.signIn();
Gittip.signOut();
Gittip.tips.initSupportGittip();
Gratipay.init = function() {
Gratipay.forms.initCSRF();
Gratipay.signIn();
Gratipay.signOut();
Gratipay.tips.initSupportGratipay();
};
@ -22,12 +22,12 @@ Gittip.init = function() {
// ===================
// 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++)
fn(a[i], i, length);
};
Gittip.jsoncss = function(jsoncss) {
Gratipay.jsoncss = function(jsoncss) {
var out = '';
this.each(jsoncss, function(selector) {
@ -47,7 +47,7 @@ Gittip.jsoncss = function(jsoncss) {
return this.jsonml(['style', out]);
};
Gittip.jsonml = function(jsonml) {
Gratipay.jsonml = function(jsonml) {
var node = document.createElement(jsonml[0]),
_ = this;
@ -73,7 +73,7 @@ Gittip.jsonml = function(jsonml) {
return node;
};
Gittip.signIn = function() {
Gratipay.signIn = function() {
$('.sign-in > .dropdown').mouseenter(function(e) {
clearTimeout($(this).data('timeoutId'));
$(this).addClass('open');
@ -101,7 +101,7 @@ Gittip.signIn = function() {
});
};
Gittip.signOut = function() {
Gratipay.signOut = function() {
$('a#sign-out').click(function(e) {
e.preventDefault();
@ -112,7 +112,7 @@ Gittip.signOut = function() {
window.location.href = window.location.href;
},
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.
// ======================
@ -26,7 +26,7 @@ Gittip.account.init = function() {
}
function error(e) {
$('#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(
{ url: "../username.json"
@ -67,7 +67,7 @@ Gittip.account.init = function() {
$('.anonymous-giving input').attr('checked', data.giving);
}
, 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);
}
, 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,
error: function (data) {
$this.css('opacity', 1);
Gittip.notification('Failed to save your email address. '
Gratipay.notification('Failed to save your email address. '
+ 'Please try again.', 'error');
},
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.
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
// =============
Gittip.forms = {};
Gratipay.forms = {};
Gittip.forms.clearFeedback = function() {
Gratipay.forms.clearFeedback = function() {
$('#feedback').empty();
};
Gittip.forms.showFeedback = function(msg, details) {
Gratipay.forms.showFeedback = function(msg, details) {
if (msg === null)
msg = "Failure";
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>');
};
Gittip.forms.submit = function(url, data, success, error) {
Gratipay.forms.submit = function(url, data, success, error) {
if (success === undefined) {
success = function() {
Gittip.forms.showFeedback("Success!");
Gratipay.forms.showFeedback("Success!");
};
}
if (error === undefined) {
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) {
Gittip.forms.showFeedback( "So sorry!!"
Gratipay.forms.showFeedback( "So sorry!!"
, ["There was a fairly drastic error with your request."]
);
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) {
function sameOrigin(url) {
// 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)) {
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?"
Gittip.jump = {};
Gratipay.jump = {};
Gittip.jump.init = function() {
Gratipay.jump.init = function() {
function jump(e) {
e.preventDefault();
e.stopPropagation();
var platform = Gittip.trim($('#jump select').val()),
val = Gittip.trim($('#jump input').val());
var platform = Gratipay.trim($('#jump select').val()),
val = Gratipay.trim($('#jump input').val());
if (val)
window.location = '/on/' + platform + '/' + val + '/';
}

View File

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

View File

@ -3,14 +3,14 @@
* @param {string} text Notification text
* @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 timeout = timeout || (type == 'error' ? 10000 : 5000);
var dialog = ['div', { 'class': 'notification notification-' + type }, [ 'div', text ]];
var $dialog = $([
Gittip.jsonml(dialog),
Gittip.jsonml(dialog)
Gratipay.jsonml(dialog),
Gratipay.jsonml(dialog)
]);
if (!$('#notification-area').length)

View File

@ -1,23 +1,23 @@
/* Bank Account and Credit Card forms
*
* These two forms share some common wiring under the Gittip.payments
* namespace, and each has unique code under the Gittip.payments.{cc,ba}
* These two forms share some common wiring under the Gratipay.payments
* 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
* at a time.
*
*/
Gittip.payments = {};
Gratipay.payments = {};
// 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 slug = $("#payout").length ? "bank-account" : "credit-card";
var msg = "Really disconnect your " + item + "?";
@ -36,7 +36,7 @@ Gittip.payments.submitDeleteForm = function(e) {
}
, error: function(x,y,z) {
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);
}
}
@ -44,24 +44,24 @@ Gittip.payments.submitDeleteForm = function(e) {
return false;
};
Gittip.payments.onError = function(response) {
Gratipay.payments.onError = function(response) {
$('button#save').css('opacity', 1);
var msg = response.status_code + ": " +
$.map(response.errors, function(obj) { return obj.description }).join(', ');
Gittip.forms.showFeedback(null, [msg]);
Gratipay.forms.showFeedback(null, [msg]);
return msg;
};
Gittip.payments.onSuccess = function(data) {
Gratipay.payments.onSuccess = function(data) {
$('#status').text('working').addClass('highlight');
setTimeout(function() {
$('#status').removeClass('highlight');
}, 8000);
$('#delete').show();
Gittip.forms.clearFeedback();
Gratipay.forms.clearFeedback();
$('button#save').css('opacity', 1);
setTimeout(function() {
window.location.href = '/' + Gittip.participantId + '/';
window.location.href = '/' + Gratipay.participantId + '/';
}, 1000);
};
@ -69,26 +69,26 @@ Gittip.payments.onSuccess = function(data) {
// Bank Accounts
// =============
Gittip.payments.ba = {};
Gratipay.payments.ba = {};
Gittip.payments.ba.init = function(balanced_uri, participantId) {
Gittip.participantId = participantId;
$('#delete form').submit(Gittip.payments.submitDeleteForm);
$('#payout').submit(Gittip.payments.ba.submit);
Gratipay.payments.ba.init = function(balanced_uri, participantId) {
Gratipay.participantId = participantId;
$('#delete form').submit(Gratipay.payments.submitDeleteForm);
$('#payout').submit(Gratipay.payments.ba.submit);
// Lazily depend on Balanced.
var balanced_js = "https://js.balancedpayments.com/1.1/balanced.min.js";
jQuery.getScript(balanced_js, function() {
Gittip.havePayouts = true;
Gratipay.havePayouts = true;
$('input[type!="hidden"]').eq(0).focus();
});
};
Gittip.payments.ba.submit = function (e) {
Gratipay.payments.ba.submit = function (e) {
e.preventDefault();
$('button#save').css('opacity', 0.5);
Gittip.forms.clearFeedback();
Gratipay.forms.clearFeedback();
var bankAccount = {
name: $('#account_name').val(),
@ -96,7 +96,7 @@ Gittip.payments.ba.submit = function (e) {
routing_number: $('#routing_number').val()
};
Gittip.payments.ba.merchantData = {
Gratipay.payments.ba.merchantData = {
//type: 'person', // Oooh, may need to vary this some day?
street_address: $('#address_1').val(),
postal_code: $('#zip').val(),
@ -156,17 +156,17 @@ Gittip.payments.ba.submit = function (e) {
if (errors.length) {
$('button#save').css('opacity', 1);
Gittip.forms.showFeedback(null, errors);
Gratipay.forms.showFeedback(null, errors);
} else {
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) {
var msg = Gittip.payments.onError(response);
var msg = Gratipay.payments.onError(response);
$.post('/bank-account.json', {action: 'store-error', msg: msg});
return;
}
@ -186,16 +186,16 @@ Gittip.payments.ba.handleResponse = function (response) {
+ "check, correct, and resubmit your details."
];
}
Gittip.forms.showFeedback(data.problem, messages);
Gratipay.forms.showFeedback(data.problem, messages);
$('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;
Gittip.forms.submit( "/bank-account.json"
Gratipay.forms.submit( "/bank-account.json"
, detailsToSubmit
, Gittip.payments.onSuccess
, Gratipay.payments.onSuccess
, detailedFeedback
);
};
@ -204,36 +204,36 @@ Gittip.payments.ba.handleResponse = function (response) {
// Credit Cards
// ============
Gittip.payments.cc = {};
Gratipay.payments.cc = {};
Gittip.payments.cc.init = function(balanced_uri, participantId) {
Gittip.participantId = participantId;
$('#delete form').submit(Gittip.payments.submitDeleteForm);
$('form#payment').submit(Gittip.payments.cc.submit);
Gratipay.payments.cc.init = function(balanced_uri, participantId) {
Gratipay.participantId = participantId;
$('#delete form').submit(Gratipay.payments.submitDeleteForm);
$('form#payment').submit(Gratipay.payments.cc.submit);
// Lazily depend on Balanced.
var balanced_js = "https://js.balancedpayments.com/1.1/balanced.min.js";
jQuery.getScript(balanced_js, function() {
Gittip.havePayments = true;
Gratipay.havePayments = true;
$('input[type!="hidden"]').eq(0).focus();
});
};
Gittip.payments.cc.submit = function(e) {
Gratipay.payments.cc.submit = function(e) {
e.stopPropagation();
e.preventDefault();
$('button#save').css('opacity', 0.5);
Gittip.forms.clearFeedback();
Gratipay.forms.clearFeedback();
if (!Gittip.havePayments) {
if (Gittip.paymentProcessorAttempts++ === 50)
Gittip.notification( "Gah! Apparently we suck. If you're really motivated, call "
if (!Gratipay.havePayments) {
if (Gratipay.paymentProcessorAttempts++ === 50)
Gratipay.notification( "Gah! Apparently we suck. If you're really motivated, call "
+ "me (Chad) at 412-925-4220 and we'll figure this out. "
+ "Sorry. :-("
);
else
setTimeout(Gittip.submitPaymentForm, 200);
setTimeout(Gratipay.submitPaymentForm, 200);
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
// 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.
credit_card.address = { 'line1': val('address_1')
, 'line2': val('address_2')
@ -275,27 +275,27 @@ Gittip.payments.cc.submit = function(e) {
if (!balanced.card.isCardNumberValid(credit_card.number)) {
$('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
, credit_card.expiration_year
)) {
$('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
, credit_card.cvv
)) {
$('button#save').css('opacity', 1);
Gittip.forms.showFeedback(null, ["Your CVV is bad."]);
Gratipay.forms.showFeedback(null, ["Your CVV is bad."]);
} else {
balanced.card.create(credit_card, Gittip.payments.cc.handleResponse);
balanced.card.create(credit_card, Gratipay.payments.cc.handleResponse);
}
return false;
};
Gittip.payments.cc.handleResponse = function(response) {
Gratipay.payments.cc.handleResponse = function(response) {
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});
return;
}
@ -312,13 +312,13 @@ Gittip.payments.cc.handleResponse = function(response) {
$('#status').text('failing');
$('#delete').show();
var details = [];
Gittip.forms.showFeedback(data.problem, [data.error]);
Gratipay.forms.showFeedback(data.problem, [data.error]);
$('button#save').css('opacity', 1);
}
Gittip.forms.submit( "/credit-card.json"
Gratipay.forms.submit( "/credit-card.json"
, {card_uri: response.cards[0].href}
, Gittip.payments.onSuccess
, Gratipay.payments.onSuccess
, detailedFeedback
);
};

View File

@ -1,25 +1,25 @@
Gittip.profile = {};
Gratipay.profile = {};
Gittip.profile.toNumber = function(number) {
Gratipay.profile.toNumber = function(number) {
if (number == 'plural')
Gittip.profile.toPlural();
Gratipay.profile.toPlural();
else if (number == 'singular')
Gittip.profile.toSingular();
Gratipay.profile.toSingular();
};
Gittip.profile.toPlural = function() {
Gratipay.profile.toPlural = function() {
$('.i-am').text('We are');
$('.i-m').text("We're");
$('.my').text("Our");
};
Gittip.profile.toSingular = function() {
Gratipay.profile.toSingular = function() {
$('.i-am').text('I am');
$('.i-m').text("I'm");
$('.my').text("My");
};
Gittip.profile.init = function() {
Gratipay.profile.init = function() {
////////////////////////////////////////////////////////////
// /
// XXX This is ripe for refactoring. I ran out of steam. :-/
@ -70,13 +70,13 @@ Gittip.profile.init = function() {
function success(d) {
$('.statement .view span').html(d.statement);
var number = $('.statement select').val();
Gittip.profile.toNumber(number);
Gratipay.profile.toNumber(number);
finish_editing_statement();
update_members_button(is_plural);
}
function error(e) {
$('.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(
{ url: "statement.json"
@ -161,7 +161,7 @@ Gittip.profile.init = function() {
, success: success
, error: function() {
$('.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,
error: function () {
$this.css('opacity', 1);
Gittip.notification("Invalid Bitcoin address. Please try again.", 'error');
Gratipay.notification("Invalid Bitcoin address. Please try again.", 'error');
},
data: {
bitcoin_address: $('input.bitcoin').val()
@ -245,9 +245,9 @@ Gittip.profile.init = function() {
},
error: function (e) {
try {
Gittip.notification(JSON.parse(e.responseText).error_message_long, 'error');
Gratipay.notification(JSON.parse(e.responseText).error_message_long, 'error');
} 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 }

View File

@ -1,4 +1,4 @@
Gittip.team = (function() {
Gratipay.team = (function() {
function init() {
var $team = $('#team');
@ -50,7 +50,7 @@ Gittip.team = (function() {
var rows = [];
if (nmembers === 0) {
rows.push(Gittip.jsonml(
rows.push(Gratipay.jsonml(
[ 'tr'
, ['td', {'colspan': '6', 'class': 'no-members'}, "No members"]
]
@ -69,7 +69,7 @@ Gittip.team = (function() {
increase = 'max';
if (i < nmembers)
rows.push(Gittip.jsonml(
rows.push(Gratipay.jsonml(
[ 'tr'
, ['td', {'class': 'n'}, (i === nmembers ? '' : nmembers - i)]
, ['td', ['a', {'href': '/'+member.username+'/'}, member.username]]
@ -80,7 +80,7 @@ Gittip.team = (function() {
]
));
else if (nmembers > 0)
rows.push(Gittip.jsonml(
rows.push(Gratipay.jsonml(
[ 'tr'
, ['td']
, ['td']
@ -113,7 +113,7 @@ Gittip.team = (function() {
var items = [];
for (var i=0, len=results.length; i<len; i++) {
var result = results[i];
items.push(Gittip.jsonml(
items.push(Gratipay.jsonml(
['li', {"data-id": result.id}, result.username]
));
}
@ -124,7 +124,7 @@ Gittip.team = (function() {
e.preventDefault();
e.stopPropagation();
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();
$('#query').val('').focus();
return false;
@ -135,7 +135,7 @@ Gittip.team = (function() {
e.stopPropagation();
var membername = $(e.target).attr('data-username');
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;
}
@ -161,21 +161,21 @@ Gittip.team = (function() {
var username = _.attr('data-username'),
take = _.val();
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
{
var callback = function(d) {
var newTake = $.grep(d, function(row) { return row.username == username })[0].take;
if ( take == newTake)
Gittip.notification('Updated your take!', 'success');
Gratipay.notification('Updated your take!', 'success');
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
// equaling $0.01 or $1.00
var balance = $('.figure.balance').last().text();
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;
}
};
@ -184,7 +184,7 @@ Gittip.team = (function() {
resetTake();
return false;
}
callback = function() { Gittip.notification('Removed!'); };
callback = function() { Gratipay.notification('Removed!'); };
}
setTake(username, take, callback);
}
@ -205,8 +205,8 @@ Gittip.team = (function() {
, success: function(d) { drawRows(d); callback(d); }
, error: function(xhr) {
switch (xhr.status) {
case 404: Gittip.notification("Unknown user!", 'error'); break;
default: Gittip.notification("Problem! " + xhr.status, 'error');
case 404: Gratipay.notification("Unknown user!", 'error'); break;
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.
// If the user presses enter, the browser should natively submit the form.
@ -105,9 +105,9 @@ Gittip.tips.init = function() {
return;
if(isAnon)
Gittip.notification("Please sign in first", 'error');
Gratipay.notification("Please sign in first", 'error');
else
Gittip.tips.set(tippee, amount, function() {
Gratipay.tips.set(tippee, amount, function() {
// lock-in changes
$myTip[0].defaultValue = amount;
$myTip.change();
@ -119,43 +119,43 @@ Gittip.tips.init = function() {
parseInt($('.on-elsewhere .ready .number').text(),10) + 1);
// 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() {
$('.support-gittip button').click(function() {
Gratipay.tips.initSupportGratipay = function() {
$('.support-gratipay button').click(function() {
var amount = parseFloat($(this).attr('data-amount'), 10);
Gittip.tips.set('Gittip', amount, function() {
Gittip.notification("Thank you so much for supporting Gittip! :D", 'success');
$('.support-gittip').slideUp();
Gratipay.tips.set('Gratipay', amount, function() {
Gratipay.notification("Thank you so much for supporting Gratipay! :D", 'success');
$('.support-gratipay').slideUp();
// 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) {
tip_on_giving[0].defaultValue = amount;
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
// 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();
jQuery.post('/ride-free.json')
.success(function() { $('.support-gittip').slideUp(); })
.fail(function() { Gittip.notification("Sorry, there was an error.", "failure"); })
.success(function() { $('.support-gratipay').slideUp(); })
.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
$.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');
})
.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);
});
};

View File

@ -1,4 +1,4 @@
// 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, '');
}

View File

@ -1,6 +1,6 @@
Gittip.upgrade = {};
Gratipay.upgrade = {};
Gittip.upgrade.init = function () {
Gratipay.upgrade.init = function () {
var userAgent = navigator.userAgent.toLowerCase();
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",
"private": true,
"dependencies": {},

View File

@ -19,9 +19,9 @@ if [ $# = 0 -o "$1" = "" ]; then
echo
echo "Usage: $0 <number> [\"for_real_please\"]"
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 " 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 " try to run against the production database. Without that string we run using "
echo " your local.env configuration."
@ -67,7 +67,7 @@ start () {
# ====
if [ "$2" == "for_real_please" ]; then
LOG="../paydays/gittip-$1.log"
LOG="../paydays/gratipay-$1.log"
else
LOG="../paydays/test-$1.log"
fi

View File

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

View File

@ -19,7 +19,7 @@ if [ $# = 0 ]; then
echo
echo "Usage: $0 <version>"
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
exit
@ -83,8 +83,8 @@ if [ $1 ]; then
# Check that the environment contains all required variables.
# ===========================================================
heroku config -sa gittip | ./env/bin/honcho run -e /dev/stdin \
./env/bin/python gittip/wireup.py
heroku config -sa gratipay | ./env/bin/honcho run -e /dev/stdin \
./env/bin/python gratipay/wireup.py
# 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.
-- 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');
-- 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
(
address text,
@ -55,7 +55,7 @@ CREATE TABLE participants
, 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)
WHERE is_suspicious IS NOT TRUE
AND claimed_time IS NOT null;
@ -82,7 +82,7 @@ CREATE TABLE elsewhere
, 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);
@ -104,7 +104,7 @@ CREATE VIEW current_tips AS
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
('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');
-- 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
( id serial PRIMARY KEY
, 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
( id serial PRIMARY KEY
, 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/gittip/www.gittip.com/issues/778
-- https://github.com/gratipay/www.gratipay.com/issues/545
-- https://github.com/gratipay/www.gratipay.com/issues/778
CREATE VIEW goal_summary AS
SELECT tippee as id
, goal
@ -196,7 +196,7 @@ CREATE VIEW goal_summary AS
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
( id bigserial PRIMARY KEY
, ctime timestamp with time zone NOT NULL
@ -208,7 +208,7 @@ CREATE TABLE communities
, 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 OR REPLACE VIEW current_communities AS
@ -231,7 +231,7 @@ CREATE VIEW community_summary AS
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
( id serial PRIMARY KEY
, ctime timestamp with time zone NOT NULL
@ -268,7 +268,7 @@ CREATE VIEW current_takes AS
) 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
-- participant data dereferenced and returned in a composite type along with
-- the elsewhere data.
@ -309,7 +309,7 @@ CREATE CAST (elsewhere AS elsewhere_with_participant)
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
( id serial PRIMARY KEY
, 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);
-- 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
ON transfers
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;

View File

@ -1,2 +1,2 @@
CREATE ROLE gittip LOGIN PASSWORD 'gittip' SUPERUSER;
CREATE DATABASE gittip WITH OWNER = gittip;
CREATE ROLE gratipay LOGIN PASSWORD 'gratipay' SUPERUSER;
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
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
# Output helper text
cat <<EOF
Gittip installed! To run,
Gratipay installed! To run,
$ vagrant ssh --command "make run"
EOF

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