from ckan import model |
from ckan import model |
from ckan.lib.cli import CkanCommand |
from ckan.lib.cli import CkanCommand |
from ckan.logic import get_action, NotFound |
from ckan.logic import get_action, NotFound |
import forms |
import forms |
|
|
import logging |
import logging |
log = logging.getLogger() |
log = logging.getLogger() |
|
|
|
|
class ExampleCommand(CkanCommand): |
class ExampleCommand(CkanCommand): |
''' |
''' |
CKAN Example Extension |
CKAN Example Extension |
|
|
Usage:: |
Usage:: |
|
|
paster example create-example-vocab -c <path to config file> |
paster example create-example-vocabs -c <path to config file> |
|
|
paster example clean -c <path to config file> |
paster example clean -c <path to config file> |
- Remove all data created by ckanext-example |
- Remove all data created by ckanext-example |
|
|
The commands should be run from the ckanext-example directory. |
The commands should be run from the ckanext-example directory. |
''' |
''' |
summary = __doc__.split('\n')[0] |
summary = __doc__.split('\n')[0] |
usage = __doc__ |
usage = __doc__ |
|
|
def command(self): |
def command(self): |
''' |
''' |
Parse command line arguments and call appropriate method. |
Parse command line arguments and call appropriate method. |
''' |
''' |
if not self.args or self.args[0] in ['--help', '-h', 'help']: |
if not self.args or self.args[0] in ['--help', '-h', 'help']: |
print ExampleCommand.__doc__ |
print ExampleCommand.__doc__ |
return |
return |
|
|
cmd = self.args[0] |
cmd = self.args[0] |
self._load_config() |
self._load_config() |
|
|
if cmd == 'create-example-vocab': |
if cmd == 'create-example-vocabs': |
self.create_example_vocab() |
self.create_example_vocabs() |
else: |
else: |
log.error('Command "%s" not recognized' % (cmd,)) |
log.error('Command "%s" not recognized' % (cmd,)) |
|
|
def create_example_vocab(self): |
def create_example_vocabs(self): |
''' |
''' |
Adds an example vocabulary to the database if it doesn't |
Adds example vocabularies to the database if they don't already exist. |
already exist. |
|
''' |
''' |
user = get_action('get_site_user')({'model': model, 'ignore_auth': True}, {}) |
user = get_action('get_site_user')({'model': model, 'ignore_auth': True}, {}) |
context = {'model': model, 'session': model.Session, 'user': user['name']} |
context = {'model': model, 'session': model.Session, 'user': user['name']} |
data = {'id': forms.EXAMPLE_VOCAB} |
|
|
|
try: |
try: |
|
data = {'id': forms.GENRE_VOCAB} |
get_action('vocabulary_show')(context, data) |
get_action('vocabulary_show')(context, data) |
log.info("Example tag vocabulary already exists, skipping.") |
log.info("Example genre vocabulary already exists, skipping.") |
except NotFound: |
except NotFound: |
log.info("Creating example vocab %s" % forms.EXAMPLE_VOCAB) |
log.info("Creating vocab %s" % forms.GENRE_VOCAB) |
data = {'name': forms.EXAMPLE_VOCAB} |
data = {'name': forms.GENRE_VOCAB} |
vocab = get_action('vocabulary_create')(context, data) |
vocab = get_action('vocabulary_create')(context, data) |
|
log.info("Adding tag %s to vocab %s" % ('jazz', forms.GENRE_VOCAB)) |
log.info("Adding tag %s to vocab %s" % ('vocab-tag-example-1', forms.EXAMPLE_VOCAB)) |
data = {'name': 'jazz', 'vocabulary_id': vocab['id']} |
data = {'name': 'vocab-tag-example-1', 'vocabulary_id': vocab['id']} |
get_action('tag_create')(context, data) |
|
log.info("Adding tag %s to vocab %s" % ('soul', forms.GENRE_VOCAB)) |
|
data = {'name': 'soul', 'vocabulary_id': vocab['id']} |
get_action('tag_create')(context, data) |
get_action('tag_create')(context, data) |
|
|
log.info("Adding tag %s to vocab %s" % ('vocab-tag-example-2', forms.EXAMPLE_VOCAB)) |
try: |
data = {'name': 'vocab-tag-example-2', 'vocabulary_id': vocab['id']} |
data = {'id': forms.COMPOSER_VOCAB} |
|
get_action('vocabulary_show')(context, data) |
|
log.info("Example composer vocabulary already exists, skipping.") |
|
except NotFound: |
|
log.info("Creating vocab %s" % forms.COMPOSER_VOCAB) |
|
data = {'name': forms.COMPOSER_VOCAB} |
|
vocab = get_action('vocabulary_create')(context, data) |
|
log.info("Adding tag %s to vocab %s" % ('Bob Mintzer', forms.COMPOSER_VOCAB)) |
|
data = {'name': 'Bob Mintzer', 'vocabulary_id': vocab['id']} |
|
get_action('tag_create')(context, data) |
|
log.info("Adding tag %s to vocab %s" % ('Steve Lewis', forms.COMPOSER_VOCAB)) |
|
data = {'name': 'Steve Lewis', 'vocabulary_id': vocab['id']} |
get_action('tag_create')(context, data) |
get_action('tag_create')(context, data) |
|
|