{"action":"created","issue":{"url":"https://api.github.com/repos/dimagi/commcare-hq/issues/11308","repository_url":"https://api.github.com/repos/dimagi/commcare-hq","labels_url":"https://api.github.com/repos/dimagi/commcare-hq/issues/11308/labels{/name}","comments_url":"https://api.github.com/repos/dimagi/commcare-hq/issues/11308/comments","events_url":"https://api.github.com/repos/dimagi/commcare-hq/issues/11308/events","html_url":"https://github.com/dimagi/commcare-hq/pull/11308","id":149277000,"number":11308,"title":"App attachments -> blobs","user":{"login":"millerdev","id":464726,"avatar_url":"https://avatars.githubusercontent.com/u/464726?v=3","gravatar_id":"","url":"https://api.github.com/users/millerdev","html_url":"https://github.com/millerdev","followers_url":"https://api.github.com/users/millerdev/followers","following_url":"https://api.github.com/users/millerdev/following{/other_user}","gists_url":"https://api.github.com/users/millerdev/gists{/gist_id}","starred_url":"https://api.github.com/users/millerdev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/millerdev/subscriptions","organizations_url":"https://api.github.com/users/millerdev/orgs","repos_url":"https://api.github.com/users/millerdev/repos","events_url":"https://api.github.com/users/millerdev/events{/privacy}","received_events_url":"https://api.github.com/users/millerdev/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/dimagi/commcare-hq/labels/Open%20for%20review:%20hold%20off%20on%20merge","name":"Open for review: hold off on merge","color":"5319e7"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2016-04-18T21:26:08Z","updated_at":"2016-04-19T07:35:57Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/dimagi/commcare-hq/pulls/11308","html_url":"https://github.com/dimagi/commcare-hq/pull/11308","diff_url":"https://github.com/dimagi/commcare-hq/pull/11308.diff","patch_url":"https://github.com/dimagi/commcare-hq/pull/11308.patch"},"body":"This was originally intended to move app multimedia to the blob db, but after partially implementing it I realized that app multimedia is not stored as an attachment of `Application`, but rather `CommCareMultimedia`. So I finished this first since it doesn't hurt to move form XML to the blob db too. A migration for `CommCareMultimedia` will be coming next.\r\n\r\n@snopoke @dannyroberts @czue cc @kaapstorm "},"comment":{"url":"https://api.github.com/repos/dimagi/commcare-hq/issues/comments/211774206","html_url":"https://github.com/dimagi/commcare-hq/pull/11308#issuecomment-211774206","issue_url":"https://api.github.com/repos/dimagi/commcare-hq/issues/11308","id":211774206,"user":{"login":"czue","id":66555,"avatar_url":"https://avatars.githubusercontent.com/u/66555?v=3","gravatar_id":"","url":"https://api.github.com/users/czue","html_url":"https://github.com/czue","followers_url":"https://api.github.com/users/czue/followers","following_url":"https://api.github.com/users/czue/following{/other_user}","gists_url":"https://api.github.com/users/czue/gists{/gist_id}","starred_url":"https://api.github.com/users/czue/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/czue/subscriptions","organizations_url":"https://api.github.com/users/czue/orgs","repos_url":"https://api.github.com/users/czue/repos","events_url":"https://api.github.com/users/czue/events{/privacy}","received_events_url":"https://api.github.com/users/czue/received_events","type":"User","site_admin":false},"created_at":"2016-04-19T07:35:57Z","updated_at":"2016-04-19T07:35:57Z","body":"nice!\r\n\r\nbuild fails look real. looks like it's not using the new apps DB so maybe a bad merge?\r\n\r\n```\r\n======================================================================\r\nFAIL: test_instantiate_all (testapps.test_pillowtop.tests.test_settings.PillowtopSettingsTest)\r\n----------------------------------------------------------------------\r\nTraceback (most recent call last):\r\n  File \"/mnt/testapps/test_pillowtop/tests/test_settings.py\", line 39, in test_instantiate_all\r\n    self.assertEqual(expected_meta[pillow_config.name], _pillow_meta_from_config(pillow_config))\r\nAssertionError: {u'es_type': u'app', u'name': u'AppPillow', u'advertised_name': u'corehq.pillows [truncated]... != {'es_type': 'app', 'name': 'AppPillow', 'advertised_name': 'corehq.pillows.appli [truncated]...\r\n\r\n-  u'couchdb_uri': u'http://couch:5984/test_commcarehq__apps',\r\n?  -               -                                  ------\r\n+  'couchdb_uri': 'http://couch:5984/test_commcarehq',\r\n```\r\n\r\n```\r\n======================================================================\r\nERROR: test_app_with_bad_form (corehq.apps.cleanup.tests.test_fix_forms_with_missing_xmlns.TestFixFormsWithMissingXmlns)\r\n----------------------------------------------------------------------\r\nTraceback (most recent call last):\r\n  File \"/mnt/corehq/apps/cleanup/tests/test_fix_forms_with_missing_xmlns.py\", line 136, in test_app_with_bad_form\r\n    good_form, bad_form, good_xform, bad_xforms = self.build_app_with_bad_form()\r\n  File \"/mnt/corehq/apps/cleanup/tests/test_fix_forms_with_missing_xmlns.py\", line 75, in build_app_with_bad_form\r\n    app.save()\r\n  File \"/mnt/corehq/apps/app_manager/models.py\", line 4738, in save\r\n    super(Application, self).save(*args, **kwargs)\r\n  File \"/mnt/corehq/apps/app_manager/models.py\", line 4610, in save\r\n    if not self._id and not domain_has_apps(self.domain):\r\n  File \"/mnt/corehq/util/quickcache.py\", line 308, in inner\r\n    return helper(*args, **kwargs)\r\n  File \"/mnt/corehq/util/quickcache.py\", line 97, in __call__\r\n    content = self.fn(*args, **kwargs)\r\n  File \"/mnt/corehq/apps/app_manager/dbaccessors.py\", line 20, in domain_has_apps\r\n    limit=1,\r\n  File \"/vendor/lib/python2.7/site-packages/couchdbkit/client.py\", line 1023, in all\r\n    return list(self.iterator())\r\n  File \"/vendor/lib/python2.7/site-packages/couchdbkit/client.py\", line 982, in iterator\r\n    self._fetch_if_needed()\r\n  File \"/vendor/lib/python2.7/site-packages/couchdbkit/client.py\", line 1061, in _fetch_if_needed\r\n    self.fetch()\r\n  File \"/vendor/lib/python2.7/site-packages/couchdbkit/client.py\", line 1040, in fetch\r\n    self._result_cache = self.fetch_raw().json_body\r\n  File \"/vendor/lib/python2.7/site-packages/couchdbkit/client.py\", line 1057, in fetch_raw\r\n    return self._fetch(self._arg, self.params)\r\n  File \"/vendor/lib/python2.7/site-packages/couchdbkit/client.py\", line 732, in raw_view\r\n    return self.res.get(view_path, **params)\r\n  File \"/vendor/lib/python2.7/site-packages/restkit/resource.py\", line 114, in get\r\n    params_dict=params_dict, **params)\r\n  File \"/vendor/lib/python2.7/site-packages/couchdbkit/resource.py\", line 136, in request\r\n    response=e.response)\r\nResourceNotFound: missing\r\n```"}}