Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'master' into 1792-filterable-resource-views
- Loading branch information
Showing
32 changed files
with
1,068 additions
and
632 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
'''Shared utility functions for any Python code to use. | ||
Unlike :py:mod:`ckan.lib.helpers`, the functions in this module are not | ||
available to templates. | ||
''' | ||
import subprocess | ||
|
||
|
||
# We implement our own check_output() function because | ||
# subprocess.check_output() isn't in Python 2.6. | ||
# This code is copy-pasted from Python 2.7 and adapted to make it work with | ||
# Python 2.6. | ||
# http://hg.python.org/cpython/file/d37f963394aa/Lib/subprocess.py#l544 | ||
def check_output(*popenargs, **kwargs): | ||
r"""Run command with arguments and return its output as a byte string. | ||
If the exit code was non-zero it raises a CalledProcessError. The | ||
CalledProcessError object will have the return code in the returncode | ||
attribute and output in the output attribute. | ||
The arguments are the same as for the Popen constructor. Example: | ||
>>> check_output(["ls", "-l", "/dev/null"]) | ||
'crw-rw-rw- 1 root root 1, 3 Oct 18 2007 /dev/null\n' | ||
The stdout argument is not allowed as it is used internally. | ||
To capture standard error in the result, use stderr=STDOUT. | ||
>>> check_output(["/bin/sh", "-c", | ||
... "ls -l non_existent_file ; exit 0"], | ||
... stderr=STDOUT) | ||
'ls: non_existent_file: No such file or directory\n' | ||
""" | ||
if 'stdout' in kwargs: | ||
raise ValueError('stdout argument not allowed, it will be overridden.') | ||
process = subprocess.Popen(stdout=subprocess.PIPE, *popenargs, **kwargs) | ||
output, unused_err = process.communicate() | ||
retcode = process.poll() | ||
if retcode: | ||
cmd = kwargs.get("args") | ||
if cmd is None: | ||
cmd = popenargs[0] | ||
raise subprocess.CalledProcessError(retcode, cmd) | ||
return output |
Oops, something went wrong.