Repository: gratipay/gratipay.com

Issue:
remove bitcoin part in "Other Giving Options" from user profile
Discussed [here](https://github.com/gratipay/gratipay.com/issues/3924#issuecomment-258261908). 


Discussion:
There are two other giving options, Bitcoin and Venmo. Are we talking about removing the whole section, or just the Bitcoin option?

I'm not sure about Venmo. Is it dropped as well?

The point of the section is to list other ways besides Gratipay to give. They're just links. Gratipay is not directly involved in the flow of funds for either of those methods.

Before I check the source code, I suppose users can add giving option by 
themselves. IIUC, Gratipay no longer allows giving Bitcoin, then we just 
need to remove the Bitcoin option in there?

I think we should either remove it, or move the whole section to Teams rather than users

I vote to remove Bitcoin and Venmo. This sort of thing can be included in the ~user or team profile.

Having those fields seems like we're specifically endorsing those services and/or getting some part of the transaction, and neither is true.

Their also definitely not "other receiving options" because we don't pay out through them. 

Additionally (and finally), it's weird that they're listed under the "social profiles" section of the profile anyway.

ETA: Here is some history of the Venmo button: https://github.com/gratipay/gratipay.com/issues/1839


Resolving patch:
diff --git a/gratipay/main.py b/gratipay/main.py
--- a/gratipay/main.py
+++ b/gratipay/main.py
@@ -74,7 +74,6 @@
 gratipay.wireup.load_i18n(website.project_root, tell_sentry)
 gratipay.wireup.other_stuff(website, env)
 gratipay.wireup.accounts_elsewhere(website, env)
-gratipay.wireup.cryptocoin_networks(website)
 
 if exc:
     tell_sentry(exc, {})
diff --git a/gratipay/models/participant/__init__.py b/gratipay/models/participant/__init__.py
--- a/gratipay/models/participant/__init__.py
+++ b/gratipay/models/participant/__init__.py
@@ -673,16 +673,6 @@ def get_paypal_error(self):
     def get_credit_card_error(self):
         return getattr(ExchangeRoute.from_network(self, 'braintree-cc'), 'error', None)
 
-    def get_cryptocoin_addresses(self):
-        routes = self.db.all("""
-            SELECT network, address
-              FROM current_exchange_routes r
-             WHERE participant = %s
-               AND network = 'bitcoin'
-               AND error <> 'invalidated'
-        """, (self.id,))
-        return {r.network: r.address for r in routes}
-
     @property
     def has_payout_route(self):
         for network in ('paypal',):
@@ -1621,9 +1611,6 @@ def to_dict(self, details=False, inquirer=None):
             fields = ['id', 'user_id', 'user_name']
             elsewhere[platform] = {k: getattr(account, k, None) for k in fields}
 
-        # Key: cryptocoins
-        output['cryptocoins'] = self.get_cryptocoin_addresses()
-
         return output
 
 
diff --git a/gratipay/wireup.py b/gratipay/wireup.py
--- a/gratipay/wireup.py
+++ b/gratipay/wireup.py
@@ -265,16 +265,6 @@ def accounts_elsewhere(website, env):
         platform.logo = website.asset('platforms/%s.png' % platform.name)
 
 
-def cryptocoin_networks(website):
-    website.cryptocoin_networks = [
-        {
-            'name': 'bitcoin',
-            'display_name': 'Bitcoin',
-            'logo': website.asset('cryptocoins/bitcoin.png'),
-        },
-    ]
-
-
 def find_files(directory, pattern):
     for root, dirs, files in os.walk(directory):
         for filename in fnmatch.filter(files, pattern):


Test patch:
diff --git a/tests/py/test_public_json.py b/tests/py/test_public_json.py
--- a/tests/py/test_public_json.py
+++ b/tests/py/test_public_json.py
@@ -51,7 +51,6 @@ def test_jsonp_works(self):
         assert raw == '''\
 foo({
     "avatar": null,
-    "cryptocoins": {},
     "elsewhere": {
         "github": {
             "id": %(elsewhere_id)s,
diff --git a/tests/py/test_routes.py b/tests/py/test_routes.py
--- a/tests/py/test_routes.py
+++ b/tests/py/test_routes.py
@@ -54,17 +54,6 @@ def test_associate_paypal_invalid(self):
         assert not self.roman.has_payout_route
         assert "Only verified email addresses allowed." in r.body
 
-    def test_associate_bitcoin(self):
-        addr = '17NdbrSGoUotzeGCcMMCqnFkEvLymoou9j'
-        self.hit('roman', 'associate', 'bitcoin', addr)
-        route = ExchangeRoute.from_network(self.roman, 'bitcoin')
-        assert route.address == addr
-        assert route.error == ''
-
-    def test_associate_bitcoin_invalid(self):
-        self.hit('roman', 'associate', 'bitcoin', '12345', expected=400)
-        assert not ExchangeRoute.from_network(self.roman, 'bitcoin')
-
     def test_credit_card_page(self):
         self.make_participant('alice', claimed_time='now')
         actual = self.client.GET('/~alice/routes/credit-card', auth_as='alice').body