diff options
| author | 2013-01-02 08:35:03 -0300 | |
|---|---|---|
| committer | 2013-01-02 08:35:03 -0300 | |
| commit | 9c5708cc92af894e414bc76ee35ec2230de5d288 (patch) | |
| tree | 61bd56b5517a4713626c254981143e008c719469 /nikola/plugins/command_install_theme.py | |
| parent | 0f2c04e70a0ffdd0892d6970cafbcd952d221db5 (diff) | |
Imported Upstream version 5.1upstream/5.1
Diffstat (limited to 'nikola/plugins/command_install_theme.py')
| -rw-r--r-- | nikola/plugins/command_install_theme.py | 53 |
1 files changed, 42 insertions, 11 deletions
diff --git a/nikola/plugins/command_install_theme.py b/nikola/plugins/command_install_theme.py index 293ce97..b9ca634 100644 --- a/nikola/plugins/command_install_theme.py +++ b/nikola/plugins/command_install_theme.py @@ -1,9 +1,38 @@ +# Copyright (c) 2012 Roberto Alsina y otros. + +# Permission is hereby granted, free of charge, to any +# person obtaining a copy of this software and associated +# documentation files (the "Software"), to deal in the +# Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the +# Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice +# shall be included in all copies or substantial portions of +# the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +# PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +# OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR +# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +from __future__ import print_function from optparse import OptionParser import os -import urllib2 import json from io import StringIO +try: + import requests +except ImportError: + requests = None + from nikola.plugin_categories import Command from nikola import utils @@ -15,7 +44,9 @@ class CommandInstallTheme(Command): def run(self, *args): """Install theme into current site.""" - + if requests is None: + print('To use the install_theme command, you need to install the "requests" package.') + return parser = OptionParser(usage="nikola %s [options]" % self.name) parser.add_option("-l", "--list", dest="list", action="store_true", @@ -33,15 +64,15 @@ class CommandInstallTheme(Command): url = options.url if name is None and not listing: - print "This command needs either the -n or the -l option." + print("This command needs either the -n or the -l option.") return False - data = urllib2.urlopen(url).read() + data = requests.get(url).text data = json.loads(data) if listing: - print "Themes:" - print "-------" + print("Themes:") + print("-------") for theme in sorted(data.keys()): - print theme + print(theme) return True else: if name in data: @@ -52,11 +83,11 @@ class CommandInstallTheme(Command): os.makedirs("themes") except: raise OSError("mkdir 'theme' error!") - print 'Downloading: %s' % data[name] + print('Downloading: %s' % data[name]) zip_file = StringIO() - zip_file.write(urllib2.urlopen(data[name]).read()) - print 'Extracting: %s into themes' % name + zip_file.write(requests.get(data[name]).content) + print('Extracting: %s into themes' % name) utils.extract_all(zip_file) else: - print "Can't find theme %s" % name + print("Can't find theme %s" % name) return False |
