diff --git a/.gitignore b/.gitignore index 99f91b0..dc8d18f 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,4 @@ nosetests.xml SITE/cache/ SITE/output/ SITE/.doit.db +SITE/comet.log diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..e44d1db --- /dev/null +++ b/LICENSE @@ -0,0 +1,23 @@ +Copyright © 2014-2015 Chris Warrick, Roberto Alsina et al. + +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. diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..0045c3b --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,3 @@ +graft comet +include README.rst LICENSE CHANGELOG.rst setup.py setup.cfg setup_virtualenv.sh requirements.txt +global-exclude __pycache__ *.pyc diff --git a/SITE/comet.log b/SITE/comet.log deleted file mode 100644 index eed5b39..0000000 --- a/SITE/comet.log +++ /dev/null @@ -1,147 +0,0 @@ -[2015-01-10T14:34:12Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T14:34:13Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T14:34:13Z] CometHTTP [200] 127.0.0.1 GET http://localhost:8001/ -[2015-01-10T14:37:38Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T14:37:39Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T14:38:01Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T14:38:02Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T14:38:03Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T14:38:48Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T14:38:49Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T14:38:52Z] CometHTTP [200] 127.0.0.1 GET http://localhost:8001/ -[2015-01-10T14:38:57Z] CometHTTP [200] 127.0.0.1 GET http://localhost:8001/ -[2015-01-10T14:44:10Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T14:44:53Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T14:45:03Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T14:45:12Z] CometHTTP [200] 127.0.0.1 GET http://localhost:8001/ -[2015-01-10T14:45:12Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/assets/css/all-nocdn.css -[2015-01-10T14:45:12Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/comet_assets/css/comet.css -[2015-01-10T14:45:12Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/assets/js/all-nocdn.js -[2015-01-10T14:45:12Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/comet_assets/js/comet.js -[2015-01-10T14:45:27Z] CometHTTP [200] 127.0.0.1 GET http://localhost:8001/assets/css/all-nocdn.css -[2015-01-10T14:45:31Z] CometHTTP [200] 127.0.0.1 GET http://localhost:8001/assets/css/all-nocdn.css -[2015-01-10T14:45:38Z] CometHTTP [200] 127.0.0.1 GET http://localhost:8001/comet_assets/js/comet.js -[2015-01-10T14:47:42Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T14:47:43Z] CometHTTP [200] 127.0.0.1 GET http://localhost:8001/ -[2015-01-10T14:47:43Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/assets/css/all-nocdn.css -[2015-01-10T14:47:43Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/comet_assets/css/comet.css -[2015-01-10T14:47:43Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/assets/js/all-nocdn.js -[2015-01-10T14:47:43Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/comet_assets/js/comet.js -[2015-01-10T14:47:56Z] CometHTTP [200] 127.0.0.1 GET http://localhost:8001/ -[2015-01-10T14:47:56Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/assets/css/all-nocdn.css -[2015-01-10T14:47:56Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/comet_assets/css/comet.css -[2015-01-10T14:47:56Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/assets/js/all-nocdn.js -[2015-01-10T14:47:56Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/comet_assets/js/comet.js -[2015-01-10T14:48:12Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T14:48:13Z] CometHTTP [200] 127.0.0.1 GET http://localhost:8001/ -[2015-01-10T14:48:13Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/assets/css/all-nocdn.css -[2015-01-10T14:48:13Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/comet_assets/css/comet.css -[2015-01-10T14:48:13Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/assets/js/all-nocdn.js -[2015-01-10T14:48:13Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/comet_assets/js/comet.js -[2015-01-10T14:48:29Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T14:48:30Z] CometHTTP [200] 127.0.0.1 GET http://localhost:8001/ -[2015-01-10T14:48:30Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/assets/css/all-nocdn.css -[2015-01-10T14:48:30Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/comet_assets/css/comet.css -[2015-01-10T14:48:30Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/assets/js/all-nocdn.js -[2015-01-10T14:48:30Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/comet_assets/js/comet.js -[2015-01-10T14:48:31Z] CometHTTP [200] 127.0.0.1 GET http://localhost:8001/ -[2015-01-10T14:48:31Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/assets/css/all-nocdn.css -[2015-01-10T14:48:31Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/comet_assets/css/comet.css -[2015-01-10T14:48:31Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/assets/js/all-nocdn.js -[2015-01-10T14:48:31Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/comet_assets/js/comet.js -[2015-01-10T14:48:34Z] CometHTTP [200] 127.0.0.1 GET http://localhost:8001/ -[2015-01-10T14:48:34Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/assets/css/all-nocdn.css -[2015-01-10T14:48:34Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/comet_assets/css/comet.css -[2015-01-10T14:48:34Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/assets/js/all-nocdn.js -[2015-01-10T14:48:34Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/comet_assets/js/comet.js -[2015-01-10T14:48:38Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T14:53:57Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T14:54:13Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T14:54:55Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T14:55:00Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T14:55:38Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T14:55:50Z] CometHTTP [200] 127.0.0.1 GET http://localhost:8001/ -[2015-01-10T14:55:50Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/assets/css/all-nocdn.css -[2015-01-10T14:55:50Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/comet_assets/css/comet.css -[2015-01-10T14:55:50Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/assets/js/all-nocdn.js -[2015-01-10T14:55:50Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/comet_assets/js/comet.js -[2015-01-10T14:57:16Z] CometHTTP [200] 127.0.0.1 GET http://localhost:8001/ -[2015-01-10T14:57:16Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/assets/css/all-nocdn.css -[2015-01-10T14:57:16Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/comet_assets/css/comet.css -[2015-01-10T14:57:16Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/assets/js/all-nocdn.js -[2015-01-10T14:57:16Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/comet_assets/js/comet.js -[2015-01-10T14:57:45Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T15:00:02Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T15:04:33Z] INFO: Nikola: Scanning posts. -[2015-01-10T15:04:33Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T15:04:34Z] INFO: Nikola: Scanning posts. -[2015-01-10T15:04:34Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T15:04:47Z] INFO: Nikola: Scanning posts... -[2015-01-10T15:04:47Z] INFO: Nikola: Posts scanned. -[2015-01-10T15:04:47Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T15:05:10Z] INFO: Nikola: Scanning posts... -[2015-01-10T15:05:10Z] INFO: Nikola: Posts scanned. -[2015-01-10T15:05:10Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T15:05:13Z] CometHTTP [500] 127.0.0.1 POST http://localhost:8001/new/post -[2015-01-10T15:05:18Z] INFO: Nikola: Scanning posts... -[2015-01-10T15:05:18Z] INFO: Nikola: Posts scanned. -[2015-01-10T15:05:18Z] CometHTTP [302] 127.0.0.1 POST http://localhost:8001/new/post -[2015-01-10T15:05:18Z] CometHTTP [200] 127.0.0.1 GET http://localhost:8001/ -[2015-01-10T15:06:17Z] INFO: Nikola: Scanning posts... -[2015-01-10T15:06:17Z] INFO: Nikola: Posts scanned. -[2015-01-10T15:06:17Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T15:16:50Z] INFO: Nikola: Scanning posts... -[2015-01-10T15:16:50Z] INFO: Nikola: Posts scanned. -[2015-01-10T15:16:50Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T15:18:20Z] INFO: Nikola: Scanning posts... -[2015-01-10T15:18:20Z] INFO: Nikola: Posts scanned. -[2015-01-10T15:18:20Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T15:18:29Z] CometHTTP [200] 127.0.0.1 GET http://localhost:8001/ -[2015-01-10T15:18:29Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/assets/css/all-nocdn.css -[2015-01-10T15:18:29Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/comet_assets/css/comet.css -[2015-01-10T15:18:29Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/assets/js/all-nocdn.js -[2015-01-10T15:18:29Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/comet_assets/js/comet.js -[2015-01-10T15:18:51Z] INFO: Nikola: Scanning posts... -[2015-01-10T15:18:51Z] INFO: Nikola: Posts scanned. -[2015-01-10T15:18:51Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T15:19:02Z] INFO: Nikola: Scanning posts... -[2015-01-10T15:19:02Z] INFO: Nikola: Posts scanned. -[2015-01-10T15:19:02Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T15:19:34Z] INFO: Nikola: Scanning posts... -[2015-01-10T15:19:34Z] INFO: Nikola: Posts scanned. -[2015-01-10T15:19:34Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T15:19:39Z] CometHTTP [200] 127.0.0.1 GET http://localhost:8001/ -[2015-01-10T15:19:39Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/assets/css/all-nocdn.css -[2015-01-10T15:19:39Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/comet_assets/css/comet.css -[2015-01-10T15:19:39Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/assets/js/all-nocdn.js -[2015-01-10T15:19:39Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/comet_assets/js/comet.js -[2015-01-10T15:19:41Z] CometHTTP [500] 127.0.0.1 GET http://localhost:8001/rebuild -[2015-01-10T15:19:50Z] INFO: Nikola: Scanning posts... -[2015-01-10T15:19:50Z] INFO: Nikola: Posts scanned. -[2015-01-10T15:19:50Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T15:20:03Z] INFO: Nikola: Scanning posts... -[2015-01-10T15:20:03Z] INFO: Nikola: Posts scanned. -[2015-01-10T15:20:03Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T15:21:20Z] CometHTTP [200] 127.0.0.1 GET http://localhost:8001/ -[2015-01-10T15:21:20Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/assets/css/all-nocdn.css -[2015-01-10T15:21:20Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/comet_assets/css/comet.css -[2015-01-10T15:21:21Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/assets/js/all-nocdn.js -[2015-01-10T15:21:21Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/comet_assets/js/comet.js -[2015-01-10T15:21:25Z] INFO: Nikola: Scanning posts... -[2015-01-10T15:21:25Z] INFO: Nikola: Posts scanned. -[2015-01-10T15:21:25Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T15:21:26Z] INFO: Nikola: Scanning posts... -[2015-01-10T15:21:26Z] INFO: Nikola: Posts scanned. -[2015-01-10T15:21:26Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T15:21:26Z] CometHTTP [200] 127.0.0.1 GET http://localhost:8001/ -[2015-01-10T15:21:26Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/assets/css/all-nocdn.css -[2015-01-10T15:21:26Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/comet_assets/css/comet.css -[2015-01-10T15:21:26Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/assets/js/all-nocdn.js -[2015-01-10T15:21:26Z] CometHTTP [304] 127.0.0.1 GET http://localhost:8001/comet_assets/js/comet.js -[2015-01-10T15:22:18Z] INFO: Nikola: Scanning posts... -[2015-01-10T15:22:18Z] INFO: Nikola: Posts scanned. -[2015-01-10T15:22:18Z] INFO: Comet: COMET CMS running @ http://localhost:8001/ -[2015-01-10T15:22:23Z] INFO: Nikola: Scanning posts... -[2015-01-10T15:22:23Z] INFO: Nikola: Posts scanned. -[2015-01-10T15:22:23Z] CometHTTP [302] 127.0.0.1 GET http://localhost:8001/rescan -[2015-01-10T15:22:23Z] CometHTTP [200] 127.0.0.1 GET http://localhost:8001/ diff --git a/comet/__init__.py b/comet/__init__.py index 16ee6e4..9b2b71f 100644 --- a/comet/__init__.py +++ b/comet/__init__.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- +# Comet CMS v0.6.0 # Copyright © 2014-2015 Chris Warrick, Roberto Alsina et al. # Permission is hereby granted, free of charge, to any @@ -24,830 +25,6 @@ # 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, unicode_literals -import json -import os -import sys -import webbrowser -import io -import pkg_resources -import nikola.__main__ -import logbook -from nikola.utils import unicode_str, get_logger, ColorfulStderrHandler -import nikola.plugins.command.new_post -from flask import Flask, request, redirect, send_from_directory, g, session -from flask.ext.login import (LoginManager, login_required, login_user, - logout_user, current_user, make_secure_token) -from flask.ext.bcrypt import Bcrypt +from __future__ import unicode_literals -__version__ = '0.5.0' - - -site = None -app = None - - -def scan_site(): - """Rescan the site.""" - nikola.utils.LOGGER.info("Scanning posts...") - site.scan_posts(really=True, quiet=True) - nikola.utils.LOGGER.info("Posts scanned.") - - -def configure_site(url=None): - """Configure the site for Comet.""" - global site - - nikola.__main__._RETURN_DOITNIKOLA = True - _dn = nikola.__main__.main([]) - _dn.sub_cmds = _dn.get_commands() - site = _dn.nikola - app.config['NIKOLA_ROOT'] = os.getcwd() - app.config['DEBUG'] = False - app.config['USERS'] = {} - app.config['USERS_PATH'] = os.path.join(app.config['NIKOLA_ROOT'], - 'comet_users.json') - - logf = (u'[{record.time:%Y-%m-%dT%H:%M:%SZ}] {record.level_name}: ' - u'{record.channel}: {record.message}') - logh = (u'[{record.time:%Y-%m-%dT%H:%M:%SZ}] {record.channel} ' - u'{record.message}') - - loghandlers = [ - ColorfulStderrHandler(level=logbook.DEBUG, format_string=logf, - bubble=True), - logbook.FileHandler('comet.log', 'a', 'utf-8', logbook.DEBUG, logf, - bubble=True) - ] - - hloghandlers = [ - ColorfulStderrHandler(level=logbook.DEBUG, format_string=logh, - bubble=True), - logbook.FileHandler('comet.log', 'a', 'utf-8', logbook.DEBUG, logh, - bubble=True) - ] - - site.loghandlers = loghandlers - nikola.utils.LOGGER.handlers = loghandlers - - nikola.plugins.command.new_post.POSTLOGGER.handlers = loghandlers - nikola.plugins.command.new_post.PAGELOGGER.handlers = loghandlers - - app.config['LOGGER_NAME'] = 'Comet' - app._logger = get_logger('Comet', loghandlers) - app.http_logger = get_logger('CometHTTP', hloghandlers) - - if site.configured: - scan_site() - else: - raise Exception("Not a Nikola site.") - - app.secret_key = site.config['COMET_SECRET_KEY'] - app.config['COMET_URL'] = url or site.config['COMET_URL'] - - read_users() - - site.template_hooks['menu_alt'].append(generate_menu_alt) - - app.config['NIKOLA_URL'] = site.config['SITE_URL'] - site.config['SITE_URL'] = site.config['BASE_URL'] =\ - site.GLOBAL_CONTEXT['blog_url'] = app.config['COMET_URL'] - site.config['NAVIGATION_LINKS'] = { - 'en': ( - (app.config['NIKOLA_URL'], ' Back to website'), - ('/rebuild', ' Rebuild'), - ) - } - site.GLOBAL_CONTEXT['navigation_links'] = site.config['NAVIGATION_LINKS'] - TITLE = site.GLOBAL_CONTEXT['blog_title']('en') + ' Administration' - site.config['BLOG_TITLE'] = lambda _: TITLE - site.GLOBAL_CONTEXT['blog_title'] = lambda _: TITLE - site.GLOBAL_CONTEXT['lang'] = 'en' - site.GLOBAL_CONTEXT['extra_head_data'] = lambda _: ( - """ - """) - # HACK: body_end appears after extra_js from templates, so we must use - # social_buttons_code instead - site.GLOBAL_CONTEXT['social_buttons_code'] = lambda _: """ -