rename Gittip to Gratipay
@ -1,5 +1,5 @@
|
||||
[extractors]
|
||||
spt = gittip.utils.i18n:extract_spt
|
||||
spt = gratipay.utils.i18n:extract_spt
|
||||
|
||||
[jinja2: **.html]
|
||||
[spt: **.spt]
|
||||
|
8
.gitignore
vendored
@ -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
|
||||
|
@ -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:
|
||||
|
@ -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/
|
||||
|
2
COPYING
@ -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.
|
||||
|
||||
|
||||
|
20
Dockerfile
@ -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"]
|
||||
|
||||
|
@ -43,7 +43,7 @@ module.exports = function(grunt) {
|
||||
jshintrc: '.jshintrc',
|
||||
|
||||
globals: {
|
||||
Gittip: true,
|
||||
Gratipay: true,
|
||||
_gttp: true,
|
||||
gttpURI: true,
|
||||
alert: true
|
||||
|
10
Makefile
@ -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
@ -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/)
|
||||
|
||||
[](https://travis-ci.org/gittip/www.gittip.com)
|
||||
[](https://coveralls.io/r/gittip/www.gittip.com?branch=master)
|
||||
[](https://huboard.com/gittip/www.gittip.com)
|
||||
[](https://www.bountysource.com/teams/gittip/issues)
|
||||
[](https://travis-ci.org/gratipay/www.gratipay.com)
|
||||
[](https://coveralls.io/r/gratipay/www.gratipay.com?branch=master)
|
||||
[](https://huboard.com/gratipay/www.gratipay.com)
|
||||
[](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/):
|
||||
|
||||

|
||||

|
||||
|
||||
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 [](https://travis-ci.org/gittip/www.gittip.com)
|
||||
Testing [](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))—<i>public</i>—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))—<i>public</i>—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))—<i>public</i>—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))—<i>public</i>—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))—<i>public</i>—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))—<i>public</i>—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))—<i>public</i>—Returns
|
||||
([example](https://www.gratipay.com/Gratipay/charts.json),
|
||||
[source](https://github.com/gratipay/www.gratipay.com/tree/master/www/%25username/charts.json.spt))—<i>public</i>—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))—<i>public</i>—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))—<i>public</i>—Returns an object with these keys:
|
||||
|
||||
- "receiving"—an estimate of the amount the given participant will
|
||||
receive this week
|
||||
|
||||
- "my_tip"—logged-in user's tip to the Gittip participant in
|
||||
- "my_tip"—logged-in user's tip to the Gratipay participant in
|
||||
question; possible values are:
|
||||
|
||||
- `undefined` (key not present)—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))—<i>private</i>—Responds
|
||||
([source](https://github.com/gratipay/www.gratipay.com/tree/master/www/%25username/tips.json.spt))—<i>private</i>—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
@ -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"
|
||||
|
@ -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
|
||||
|
@ -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"
|
||||
|
@ -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__':
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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
|
||||
|
@ -1,4 +1,4 @@
|
||||
DATABASE_URL="dbname=gittip"
|
||||
DATABASE_URL="dbname=gratipay"
|
||||
|
||||
PYTHONDONTWRITEBYTECODE=true
|
||||
PORT=8537
|
||||
|
@ -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
|
||||
|
22
docs/conf.py
@ -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'),
|
||||
]
|
||||
|
||||
|
@ -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>
|
||||
|
@ -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
|
||||
)
|
||||
|
||||
|
@ -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',
|
@ -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'
|
@ -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',
|
@ -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.
|
||||
|
@ -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.
|
@ -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:
|
@ -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)
|
@ -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):
|
@ -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):
|
@ -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):
|
@ -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):
|
@ -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):
|
@ -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):
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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"
|
@ -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:
|
@ -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))
|
||||
|
@ -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.
|
@ -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'
|
@ -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
|
||||
|
||||
|
@ -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',
|
@ -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",
|
@ -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
|
@ -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
|
@ -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'^\(? *(.+?) *\? *(.+?) *: *(.+?) *\)?$')
|
@ -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.")
|
102
i18n/eo.po
@ -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"
|
||||
|
100
i18n/fr.po
@ -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
|
||||
|
88
i18n/ko.po
@ -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
|
||||
|
62
i18n/zh.po
@ -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
|
||||
|
Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 9.9 KiB |
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.0 KiB |
@ -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);
|
||||
|
||||
};
|
@ -1,2 +0,0 @@
|
||||
// Localize gittipURI for gttp.co widgets
|
||||
gittipURI = '/';
|
@ -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');
|
||||
}
|
||||
});
|
||||
});
|
@ -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()}
|
@ -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) {
|
26
js/gratipay/communities.js
Normal 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);
|
||||
|
||||
};
|
@ -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
@ -0,0 +1,2 @@
|
||||
// Localize gratipayURI for gttp.co widgets
|
||||
gratipayURI = '/';
|
@ -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 + '/';
|
||||
}
|
@ -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' },
|
@ -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)
|
@ -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
|
||||
);
|
||||
};
|
@ -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 }
|
@ -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');
|
||||
}
|
||||
}
|
||||
});
|
@ -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);
|
||||
});
|
||||
};
|
@ -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, '');
|
||||
}
|
@ -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);
|
@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "gittip",
|
||||
"name": "gratipay",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"dependencies": {},
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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.
|
||||
|
34
schema.sql
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -1 +1 @@
|
||||
CREATE DATABASE "gittip-test" WITH OWNER = gittip;
|
||||
CREATE DATABASE "gratipay-test" WITH OWNER = gratipay;
|
||||
|
@ -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
|
||||
|