From 9ca7f7c092919ad1890f0a8c7db5327ede9a46d7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Stefan=20K=C3=B6gl?= Date: Sat, 18 May 2013 10:30:46 +0200 Subject: [PATCH] fix creation of test CouchDB databases --- .../management/commands/sync-design-docs.py | 30 ++++++++-------------- mygpo/db/couchdb/utils.py | 23 +++++++++++++++++ mygpo/test.py | 12 ++------- 3 files changed, 35 insertions(+), 30 deletions(-) rewrite mygpo/db/couchdb/management/commands/sync-design-docs.py (73%) diff --git a/mygpo/db/couchdb/management/commands/sync-design-docs.py b/mygpo/db/couchdb/management/commands/sync-design-docs.py dissimilarity index 73% index e82a6b71..ddd03b7f 100755 --- a/mygpo/db/couchdb/management/commands/sync-design-docs.py +++ b/mygpo/db/couchdb/management/commands/sync-design-docs.py @@ -1,20 +1,10 @@ -import os.path - -from django.conf import settings -from django.core.management.base import BaseCommand -from couchdbkit.loaders import FileSystemDocsLoader -from couchdbkit.ext.django import loading - - -class Command(BaseCommand): - """ Sync design docs from filesystem """ - - def handle(self, *args, **options): - - base_dir = settings.BASE_DIR - - for part, label in settings.COUCHDB_DDOC_MAPPING.items(): - path = os.path.join(base_dir, '..', 'couchdb', part, '_design') - db = loading.get_db(label) - loader = FileSystemDocsLoader(path) - loader.sync(db, verbose=True) +from django.core.management.base import BaseCommand +from mygpo.db.couchdb.utils import sync_design_docs + + +class Command(BaseCommand): + """ Sync design docs from filesystem """ + + def handle(self, *args, **options): + + sync_design_docs() diff --git a/mygpo/db/couchdb/utils.py b/mygpo/db/couchdb/utils.py index 42e1d605..1e8f13b0 100644 --- a/mygpo/db/couchdb/utils.py +++ b/mygpo/db/couchdb/utils.py @@ -15,12 +15,20 @@ # along with my.gpodder.org. If not, see . # +import os.path import operator import string import functools +from couchdbkit.loaders import FileSystemDocsLoader +from couchdbkit.ext.django import loading + +from django.conf import settings + from mygpo.db.couchdb import get_main_database +import logging +logger = logging.getLogger(__name__) def multi_request_view(cls, view, wrap=True, auto_advance=True, @@ -79,3 +87,18 @@ def multi_request_view(cls, view, wrap=True, auto_advance=True, def is_couchdb_id(id_str): f = functools.partial(operator.contains, string.hexdigits) return len(id_str) == 32 and all(map(f, id_str)) + + +def sync_design_docs(): + """ synchronize the design docs for all databases """ + + base_dir = settings.BASE_DIR + + for part, label in settings.COUCHDB_DDOC_MAPPING.items(): + path = os.path.join(base_dir, '..', 'couchdb', part, '_design') + + logger.info('syncing ddocs for "%s" from "%s"', label, path) + + db = loading.get_db(label) + loader = FileSystemDocsLoader(path) + loader.sync(db, verbose=True) diff --git a/mygpo/test.py b/mygpo/test.py index 62785177..c807a163 100644 --- a/mygpo/test.py +++ b/mygpo/test.py @@ -1,13 +1,12 @@ import os.path from django.conf import settings -from django.core.management.base import BaseCommand from couchdbkit import Database from couchdbkit.loaders import FileSystemDocsLoader from couchdbkit.ext.django.testrunner import CouchDbKitTestSuiteRunner -from django.conf import settings +from mygpo.db.couchdb.utils import sync_design_docs # inspired by @@ -26,14 +25,7 @@ class MygpoTestSuiteRunner(CouchDbKitTestSuiteRunner): def setup_databases(self, **kwargs): ret = super(MygpoTestSuiteRunner, self).setup_databases(**kwargs) - path = os.path.join(settings.BASE_DIR, '..', 'couchdb', '_design') - loader = FileSystemDocsLoader(path) - - db_urls = set(db_url for pkg, db_url in self.dbs) - for db_url in db_urls: - db = Database(db_url) - loader.sync(db, verbose=True) - + sync_design_docs() return ret -- 2.11.4.GIT