Permalink
Browse files

new skel

  • Loading branch information...
1 parent 340ff4d commit 7895b154b9bda35440789687685929639b5b6481 @fiorix committed Dec 11, 2012
View
@@ -1,3 +0,0 @@
-*.swp
-*.pyc
-dropin.cache
View
@@ -1,115 +0,0 @@
-# cyclone-based project
-
- This is the source code of $project_name
- $name <$email>
-
-## About
-
-This file has been created automatically by cyclone-tool for $project_name.
-It contains the following files:
-
-- ``start.sh``: simple shell script to start the server
-- ``$modname.conf``: configuration file for the web server
-- ``$modname/__init__.py``: information such as author and version of this package
-- ``$modname/web.py``: map of url handlers and main class of the web server
-- ``$modname/config.py``: configuration parser for ``$modname.conf``
-- ``$modname/views.py``: code of url handlers for the web server
-- ``scripts/debian-init.d``: generic debian start/stop init script
-- ``scripts/debian-multicore-init.d``: run one instance per core on debian
-- ``scripts/localefix.py``: script to fix html text before running ``xgettext``
-- ``scripts/cookie_secret.py``: script for generating new secret key for the web server
-
-### Running
-
-For development and testing:
-
- twistd -n cyclone --help
- twistd -n cyclone -r $modname.web.Application [--help]
-
-For production:
-
- twistd cyclone \
- --logfile=/var/log/$project.log \
- --pidfile=/var/run/$project.pid \
- -r $modname.web.Application
-
-
-### Convert this document to HTML
-
-Well, since this is a web server, it might be a good idea to convert this document
-to HTML before getting into customization details.
-
-This can be done using [markdown](http://daringfireball.net/projects/markdown/).
-
- brew install markdown
- markdown README.md > frontend/static/readme.html
-
-And point your browser to <http://localhost:8888/static/readme.html> after this server
-is running.
-
-## Customization
-
-This section is dedicated to explaining how to customize your brand new package.
-
-### Databases
-
-cyclone provides built-in support for SQLite and Redis databases.
-It also supports any RDBM supported by the ``twisted.enterprise.adbapi`` module,
-like MySQL or PostgreSQL.
-
-The default configuration file ``$modname.conf`` ships with pre-configured
-settings for SQLite, Redis and MySQL.
-
-The code for loading all the database settings is in ``$modname/config.py``.
-Feel free to comment or even remove such code, and configuration entries. It
-shouldn't break the web server.
-
-Take a look at ``$modname/utils.py``, which is where persistent database
-connections are initialized.
-
-
-### Internationalization
-
-cyclone uses the standard ``gettext`` library for dealing with string
-translation.
-
-Make sure you have the ``gettext`` package installed. If you don't, you won't
-be able to translate your software.
-
-For installing the ``gettext`` package on Debian and Ubuntu systems, do this:
-
- apt-get install gettext
-
-For Mac OS X, I'd suggest using [HomeBrew](http://mxcl.github.com/homebrew>).
-If you already use HomeBrew, run:
-
- brew install gettext
- brew link gettext
-
-For generating translatable files for HTML and Python code of your software,
-run this:
-
- cat frontend/template/*.html $modname/*.py | python scripts/localefix.py | \
- xgettext - --language=Python --from-code=utf-8 --keyword=_:1,2 -d $modname
-
-Then translate $modname.po, compile and copy to the appropriate locale
-directory:
-
- (pt_BR is used as example here)
- vi $modname.po
- mkdir -p frontend/locale/pt_BR/LC_MESSAGES/
- msgfmt $modname.po -o frontend/locale/pt_BR/LC_MESSAGES/$modname.mo
-
-There are sample translations for both Spanish and Portuguese in this package,
-already compiled.
-
-
-### Cookie Secret
-
-The current cookie secret key in ``$modname.conf`` was generated during the
-creation of this package. However, if you need a new one, you may run the
-``scripts/cookie_secret.py`` script to generate a random key.
-
-## Credits
-
-- [cyclone](http://github.com/fiorix/cyclone) web server.
Binary file not shown.
@@ -1,25 +0,0 @@
-# cyclone-tools sample translation.
-# Copyright (C) 2011 Alexandre Fiori
-# This file is distributed under the same license as the cyclone package.
-# Alexandre Fiori <fiorix@gmail.com>, 2011.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: 0.1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-02-24 15:36-0300\n"
-"PO-Revision-Date: 2011-02-28 15:44+-0300\n"
-"Last-Translator: Alexandre Fiori <fiorix@gmail.com>\n"
-"Language-Team: Alexandre Fiori <fiorix@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: standard input:5
-msgid "cyclone web server"
-msgstr "servidor web cyclone"
-
-#: standard input:8
-msgid "It works!"
-msgstr "¡Funciona!"
Binary file not shown.
@@ -1,25 +0,0 @@
-# cyclone-tools sample translation.
-# Copyright (C) 2011 Alexandre Fiori
-# This file is distributed under the same license as the cyclone package.
-# Alexandre Fiori <fiorix@gmail.com>, 2011.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: 0.1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-02-24 15:36-0300\n"
-"PO-Revision-Date: 2011-02-28 15:44+-0300\n"
-"Last-Translator: Alexandre Fiori <fiorix@gmail.com>\n"
-"Language-Team: Alexandre Fiori <fiorix@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: standard input:5
-msgid "cyclone web server"
-msgstr "servidor web cyclone"
-
-#: standard input:8
-msgid "It works!"
-msgstr "Funciona!"
Binary file not shown.
@@ -1,26 +0,0 @@
-<!doctype html>
-<html lang="en">
- <head>
- <meta charset="utf-8">
- <title>{{_("cyclone web server")}}</title>
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
- <link href="http://twitter.github.com/bootstrap/assets/css/bootstrap.css" rel="stylesheet">
- <link href="http://twitter.github.com/bootstrap/assets/css/bootstrap-responsive.css" rel="stylesheet">
- <link rel="shortcut icon" type="image/ico" href="{{ static_url('favicon.ico') }}">
- <style>
- body {padding-top: 60px;}
- </style>
-
- </head>
-
- <body>
- <div class="container">
- <!--
- you can create multiple block entries per template
- ex: sidebar, menu, footer
- -->
- {% block page %}{% end %}
- </div> <!-- /container -->
- </body>
-</html>
@@ -1,14 +0,0 @@
-{% extends 'base.html' %}
-{% block page %}
-<h1>{{_("It works!")}}</h1>
-<p><small>
- <a href="/lang/en_US">English</a>&nbsp;
- <a href="/lang/es_ES">Español</a>&nbsp;
- <a href="/lang/pt_BR">Português</a>
-</small></p>
-<p>hello = {{hello}}</p>
-<p>awesome = {{awesome}}</p>
-<form class="well" method="post">
- <button type="submit" class="btn">Post example</button>
-</form>
-{% end %}
@@ -1,7 +0,0 @@
-{% extends 'base.html' %}
-{% block page %}
-<h1>POST example</h1>
-<p>This variable exists = {{fields.ip}}</p>
-<p>This variable does not exist = {{fields.something}}</p>
-<p>This one comes from .conf = {{fields.mysql_host}}</p>
-{% end %}
View
@@ -1,31 +0,0 @@
-[server]
-debug = true
-xheaders = false
-xsrf_cookies = false
-cookie_secret = $cookie_secret
-
-[frontend]
-locale_path = frontend/locale
-static_path = frontend/static
-template_path = frontend/template
-
-[sqlite]
-enabled = yes
-database = :memory:
-
-[redis]
-enabled = no
-host = 127.0.0.1
-port = 6379
-dbid = 0
-poolsize = 10
-
-[mysql]
-enabled = no
-host = 127.0.0.1
-port = 3306
-username = foo
-password = bar
-database = dummy
-poolsize = 10
-debug = no
@@ -1,6 +0,0 @@
-# coding: utf-8
-#
-$license
-
-__author__ = "$name <$email>"
-__version__ = "$version"
View
@@ -1,71 +0,0 @@
-# coding: utf-8
-#
-$license
-
-import os
-import ConfigParser
-from cyclone.util import ObjectDict
-
-
-def xget(func, section, option, default=None):
- try:
- return func(section, option)
- except:
- return default
-
-
-def parse_config(filename):
- cfg = ConfigParser.RawConfigParser()
- with open(filename) as fp:
- cfg.readfp(fp)
- fp.close()
-
- settings = {'raw': cfg}
-
- # web server settings
- settings["debug"] = xget(cfg.getboolean, "server", "debug", False)
- settings["xheaders"] = xget(cfg.getboolean, "server", "xheaders", False)
- settings["cookie_secret"] = cfg.get("server", "cookie_secret")
- settings["xsrf_cookies"] = xget(cfg.getboolean, "server", "xsrf_cookies",
- False)
-
- # get project's absolute path
- root = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
- getpath = lambda k, v: os.path.join(root, xget(cfg.get, k, v))
-
- # locale, template and static directories' path
- settings["locale_path"] = getpath("frontend", "locale_path")
- settings["static_path"] = getpath("frontend", "static_path")
- settings["template_path"] = getpath("frontend", "template_path")
-
- # sqlite support
- if xget(cfg.getboolean, "sqlite", "enabled", False):
- settings["sqlite_settings"] = ObjectDict(database=cfg.get("sqlite",
- "database"))
- else:
- settings["sqlite_settings"] = None
-
- # redis support
- if xget(cfg.getboolean, "redis", "enabled", False):
- settings["redis_settings"] = ObjectDict(
- host=cfg.get("redis", "host"),
- port=cfg.getint("redis", "port"),
- dbid=cfg.getint("redis", "dbid"),
- poolsize=cfg.getint("redis", "poolsize"))
- else:
- settings["redis_settings"] = None
-
- # mysql support
- if xget(cfg.getboolean, "mysql", "enabled", False):
- settings["mysql_settings"] = ObjectDict(
- host=cfg.get("mysql", "host"),
- port=cfg.getint("mysql", "port"),
- username=xget(cfg.get, "mysql", "username"),
- password=xget(cfg.get, "mysql", "password"),
- database=xget(cfg.get, "mysql", "database"),
- poolsize=xget(cfg.getint, "mysql", "poolsize", 10),
- debug=xget(cfg.getboolean, "mysql", "debug", False))
- else:
- settings["mysql_settings"] = None
-
- return settings
View
@@ -1,60 +0,0 @@
-# coding: utf-8
-#
-$license
-
-import cyclone.escape
-import cyclone.redis
-import cyclone.sqlite
-import cyclone.web
-
-from twisted.enterprise import adbapi
-
-
-class TemplateFields(dict):
- """Helper class to make sure our
- template doesn't fail due to an invalid key"""
- def __getattr__(self, name):
- try:
- return self[name]
- except KeyError:
- return None
-
- def __setattr__(self, name, value):
- self[name] = value
-
-
-class BaseHandler(cyclone.web.RequestHandler):
- #def get_current_user(self):
- # user_json = self.get_secure_cookie("user")
- # if user_json:
- # return cyclone.escape.json_decode(user_json)
-
- def get_user_locale(self):
- lang = self.get_secure_cookie("lang")
- if lang:
- return cyclone.locale.get(lang)
-
-
-class DatabaseMixin(object):
- mysql = None
- redis = None
- sqlite = None
-
- @classmethod
- def setup(self, settings):
- conf = settings.get("sqlite_settings")
- if conf:
- DatabaseMixin.sqlite = cyclone.sqlite.InlineSQLite(conf.database)
-
- conf = settings.get("redis_settings")
- if conf:
- DatabaseMixin.redis = cyclone.redis.lazyConnectionPool(
- conf.host, conf.port, conf.dbid, conf.poolsize)
-
- conf = settings.get("mysql_settings")
- if conf:
- DatabaseMixin.mysql = adbapi.ConnectionPool("MySQLdb",
- host=conf.host, port=conf.port, db=conf.database,
- user=conf.username, passwd=conf.password,
- cp_min=1, cp_max=conf.poolsize,
- cp_reconnect=True, cp_noisy=conf.debug)
Oops, something went wrong.

0 comments on commit 7895b15

Please sign in to comment.