Permalink
Browse files

Initial commit

  • Loading branch information...
Brian C Hamrick
Brian C Hamrick committed Dec 2, 2012
0 parents commit d59afff1bd47b77fba2cca371d6114edac3f27f8
@@ -0,0 +1,14 @@
from pyramid.config import Configurator
from sqlalchemy import engine_from_config
from .config import routes
def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
engine = engine_from_config(settings, 'sqlalchemy.')
globals()['DBEngine'] = engine
config = Configurator(settings=settings)
config.include(routes)
return config.make_wsgi_app()
@@ -0,0 +1,17 @@
from APPNAME.views.web import WebView
from APPNAME.views.split import SplitView
def routes(config):
config.add_static_view('static', 'static', cache_max_age=3600)
config.add_route('root', '')
config.add_view(WebView.home, route_name='root')
config.add_route('home', '/home')
config.add_view(WebView.home, route_name='home')
config.add_route('ajax_test', '/ajax_test')
config.add_view(WebView.ajax_test, route_name='ajax_test')
config.add_route('split_test', '/split_test')
config.add_view(SplitView.test, route_name='split_test')
@@ -0,0 +1 @@
# Nothing for now...
No changes.
@@ -0,0 +1,43 @@
from pyramid.response import Response
import jinja2
import simplejson as json
env = jinja2.Environment(loader=jinja2.FileSystemLoader('APPNAME/templates'))
def web(template=None, content_type='text/html', *args, **kwargs):
"""
Decorator for web routes
TODO - permissions
"""
def decorator(f):
def wrapper(request):
body = ''
data = f(request)
if template is not None:
tmpl = env.get_template(template)
body = tmpl.render(data)
else:
body = data
return Response(body, content_type=content_type)
return staticmethod(wrapper)
return decorator
def ajax(*args, **kwargs):
"""
Decorator for ajax routes
Returns a response with a JSON version of the return value of f
TODO - permissions
"""
def decorator(f):
def wrapper(request):
retval = f(request)
return Response(
body=json.dumps(retval),
content_type='application/json'
)
return staticmethod(wrapper)
return decorator
No changes.
No changes.
@@ -0,0 +1 @@
# package
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,8 @@
* html img,
* html .png{position:relative;behavior:expression((this.runtimeStyle.behavior="none")&&(this.pngSet?this.pngSet=true:(this.nodeName == "IMG" && this.src.toLowerCase().indexOf('.png')>-1?(this.runtimeStyle.backgroundImage = "none",
this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.src + "',sizingMethod='image')",
this.src = "static/transparent.gif"):(this.origBg = this.origBg? this.origBg :this.currentStyle.backgroundImage.toString().replace('url("','').replace('")',''),
this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.origBg + "',sizingMethod='crop')",
this.runtimeStyle.backgroundImage = "none")),this.pngSet=true)
);}
#wrap{display:table;height:100%}

Large diffs are not rendered by default.

Oops, something went wrong.
@@ -0,0 +1,9 @@
var root_frame = null;
$(document).ready(function() {
root_frame = new Frame(null);
root_frame.split_direction="v";
root_frame.children.push(new Frame(root_frame));
root_frame.children.push(new Frame(root_frame));
Resize(root_frame, $(window).width(), $(window).height());
});
@@ -0,0 +1,36 @@
function Frame(parent_frame) {
this.width = 0;
this.height = 0;
this.parent_frame = parent_frame;
this.children = new Array();
this.split_direction = "";
if (parent_frame != null) {
this.content_node = document.createElement('div');
parent_frame.content_node.appendChild(this.content_node)
} else {
this.content_node = document.getElementById('root_content_node');
}
}
function Resize(frame, width, height) {
alert("" + frame + " " + width + " " + height);
frame.width = width;
frame.height = height;
// Update actual DOM dimensions too
frame.content_node.style.width = width + "px";
frame.content_node.style.height = height + "px";
alert(frame.split_direction);
if(frame.split_direction == "h") {
alert("horizontal");
// Horizontal splits divide the height evenly
for(var i = 0; i < frame.children.length; i++) {
Resize(frame.children[i], width, height/frame.children.length);
}
} else if(frame.split_direction == "v") {
alert("vertical");
// Vertical splits divide the width evenly
for(var i = 0; i < frame.children.length; i++) {
Resize(frame.children[i], width/frame.children.length, height);
}
}
}
Binary file not shown.
@@ -0,0 +1,65 @@
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;outline:0;font-size:100%;/* 16px */
vertical-align:baseline;background:transparent;}
body{line-height:1;}
ol,ul{list-style:none;}
blockquote,q{quotes:none;}
blockquote:before,blockquote:after,q:before,q:after{content:'';content:none;}
:focus{outline:0;}
ins{text-decoration:none;}
del{text-decoration:line-through;}
table{border-collapse:collapse;border-spacing:0;}
sub{vertical-align:sub;font-size:smaller;line-height:normal;}
sup{vertical-align:super;font-size:smaller;line-height:normal;}
ul,menu,dir{display:block;list-style-type:disc;margin:1em 0;padding-left:40px;}
ol{display:block;list-style-type:decimal-leading-zero;margin:1em 0;padding-left:40px;}
li{display:list-item;}
ul ul,ul ol,ul dir,ul menu,ul dl,ol ul,ol ol,ol dir,ol menu,ol dl,dir ul,dir ol,dir dir,dir menu,dir dl,menu ul,menu ol,menu dir,menu menu,menu dl,dl ul,dl ol,dl dir,dl menu,dl dl{margin-top:0;margin-bottom:0;}
ol ul,ul ul,menu ul,dir ul,ol menu,ul menu,menu menu,dir menu,ol dir,ul dir,menu dir,dir dir{list-style-type:circle;}
ol ol ul,ol ul ul,ol menu ul,ol dir ul,ol ol menu,ol ul menu,ol menu menu,ol dir menu,ol ol dir,ol ul dir,ol menu dir,ol dir dir,ul ol ul,ul ul ul,ul menu ul,ul dir ul,ul ol menu,ul ul menu,ul menu menu,ul dir menu,ul ol dir,ul ul dir,ul menu dir,ul dir dir,menu ol ul,menu ul ul,menu menu ul,menu dir ul,menu ol menu,menu ul menu,menu menu menu,menu dir menu,menu ol dir,menu ul dir,menu menu dir,menu dir dir,dir ol ul,dir ul ul,dir menu ul,dir dir ul,dir ol menu,dir ul menu,dir menu menu,dir dir menu,dir ol dir,dir ul dir,dir menu dir,dir dir dir{list-style-type:square;}
.hidden{display:none;}
p{line-height:1.5em;}
h1{font-size:1.75em;line-height:1.7em;font-family:helvetica,verdana;}
h2{font-size:1.5em;line-height:1.7em;font-family:helvetica,verdana;}
h3{font-size:1.25em;line-height:1.7em;font-family:helvetica,verdana;}
h4{font-size:1em;line-height:1.7em;font-family:helvetica,verdana;}
html,body{width:100%;height:100%;}
body{margin:0;padding:0;background-color:#ffffff;position:relative;font:16px/24px "NobileRegular","Lucida Grande",Lucida,Verdana,sans-serif;}
a{color:#1b61d6;text-decoration:none;}
a:hover{color:#e88f00;text-decoration:underline;}
body h1,
body h2,
body h3,
body h4,
body h5,
body h6{font-family:"NeutonRegular","Lucida Grande",Lucida,Verdana,sans-serif;font-weight:normal;color:#373839;font-style:normal;}
#wrap{min-height:100%;}
#header,#footer{width:100%;color:#ffffff;height:40px;position:absolute;text-align:center;line-height:40px;overflow:hidden;font-size:12px;vertical-align:middle;}
#header{background:#000000;top:0;font-size:14px;}
#footer{bottom:0;background:#000000 url(footerbg.png) repeat-x 0 top;position:relative;margin-top:-40px;clear:both;}
.header,.footer{width:750px;margin-right:auto;margin-left:auto;}
.wrapper{width:100%}
#top,#top-small,#bottom{width:100%;}
#top{color:#000000;height:230px;background:#ffffff url(headerbg.png) repeat-x 0 top;position:relative;}
#top-small{color:#000000;height:60px;background:#ffffff url(headerbg.png) repeat-x 0 top;position:relative;}
#bottom{color:#222;background-color:#ffffff;}
.top,.top-small,.middle,.bottom{width:750px;margin-right:auto;margin-left:auto;}
.top{padding-top:40px;}
.top-small{padding-top:10px;}
#middle{width:100%;height:100px;background:url(middlebg.png) repeat-x;border-top:2px solid #ffffff;border-bottom:2px solid #b2b2b2;}
.app-welcome{margin-top:25px;}
.app-name{color:#000000;font-weight:bold;}
.bottom{padding-top:50px;}
#left{width:350px;float:left;padding-right:25px;}
#right{width:350px;float:right;padding-left:25px;}
.align-left{text-align:left;}
.align-right{text-align:right;}
.align-center{text-align:center;}
ul.links{margin:0;padding:0;}
ul.links li{list-style-type:none;font-size:14px;}
form{border-style:none;}
fieldset{border-style:none;}
input{color:#222;border:1px solid #ccc;font-family:sans-serif;font-size:12px;line-height:16px;}
input[type=text],input[type=password]{width:205px;}
input[type=submit]{background-color:#ddd;font-weight:bold;}
/*Opera Fix*/
body:before{content:"";height:100%;float:left;width:0;margin-top:-32767px;}
Binary file not shown.
Binary file not shown.
Binary file not shown.
No changes.
@@ -0,0 +1,9 @@
<!DOCTYPE HTML>
<html>
<head>
<title>{{ project }}</title>
</head>
<body>
This is just a test homepage. The name of this project is {{ project }}
</body>
</html>
No changes.
@@ -0,0 +1,10 @@
from APPNAME.lib.session import web, ajax
class WebView:
@web(template="web/home.tmpl")
def home(request):
return {'project' : 'WebSplit'}
@ajax()
def ajax_test(request):
return [1, {'a' : 2, 'b' : 4}, 3]
@@ -0,0 +1,4 @@
0.0
---
- Initial version
@@ -0,0 +1,2 @@
include *.txt *.ini *.cfg *.rst
recursive-include websplit *.ico *.png *.css *.gif *.jpg *.pt *.txt *.mak *.mako *.js *.html *.xml
@@ -0,0 +1 @@
web: ./run
@@ -0,0 +1,14 @@
websplit README
==================
Getting Started
---------------
- cd <directory containing this file>
- $venv/bin/python setup.py develop
- $venv/bin/populate_websplit development.ini
- $venv/bin/pserve development.ini
@@ -0,0 +1,57 @@
[app:main]
use = egg:websplit
pyramid.reload_templates = true
pyramid.debug_authorization = false
pyramid.debug_notfound = false
pyramid.debug_routematch = false
pyramid.default_locale_name = en
pyramid.includes =
pyramid_debugtoolbar
pyramid_tm
sqlalchemy.url = postgres:///%(here)s/websplit.db
[server:main]
use = egg:waitress#main
host = 0.0.0.0
port = 6543
# Begin logging configuration
[loggers]
keys = root, websplit, sqlalchemy
[handlers]
keys = console
[formatters]
keys = generic
[logger_root]
level = INFO
handlers = console
[logger_websplit]
level = DEBUG
handlers =
qualname = websplit
[logger_sqlalchemy]
level = INFO
handlers =
qualname = sqlalchemy.engine
# "level = INFO" logs SQL queries.
# "level = DEBUG" logs SQL queries and results.
# "level = WARN" logs neither. (Recommended for production systems.)
[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic
[formatter_generic]
format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s
# End logging configuration
@@ -0,0 +1,56 @@
[app:main]
use = egg:websplit
pyramid.reload_templates = false
pyramid.debug_authorization = false
pyramid.debug_notfound = false
pyramid.debug_routematch = false
pyramid.default_locale_name = en
pyramid.includes =
pyramid_tm
sqlalchemy.url = postgres://zjghhnzmowsewh:2KqGgMsxy8Kfl4ai7wMREVDdK1@ec2-23-23-92-180.compute-1.amazonaws.com:5432/db9i0cua7nuf86
[server:main]
use = egg:waitress#main
host = 0.0.0.0
port = 6543
# Begin logging configuration
[loggers]
keys = root, websplit, sqlalchemy
[handlers]
keys = console
[formatters]
keys = generic
[logger_root]
level = WARN
handlers = console
[logger_websplit]
level = WARN
handlers =
qualname = websplit
[logger_sqlalchemy]
level = WARN
handlers =
qualname = sqlalchemy.engine
# "level = INFO" logs SQL queries.
# "level = DEBUG" logs SQL queries and results.
# "level = WARN" logs neither. (Recommended for production systems.)
[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic
[formatter_generic]
format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s
# End logging configuration
@@ -0,0 +1,24 @@
Chameleon==2.9.2
Jinja2==2.6
Mako==0.7.2
MarkupSafe==0.15
MySQL-python==1.2.3
PasteDeploy==1.5.0
Pygments==1.5
SQLAlchemy==0.7.8
WebOb==1.2.2
psycopg2==2.4.5
pyramid==1.3.3
pyramid-debugtoolbar==1.0.2
pyramid-tm==0.5
repoze.lru==0.6
simplejson==2.6.1
transaction==1.3.0
translationstring==1.1
venusian==1.0a6
virtualenv==1.7.2
waitress==0.8.1
wsgiref==0.1.2
zope.deprecation==4.0.0
zope.interface==4.0.1
zope.sqlalchemy==0.7.1
3 run
@@ -0,0 +1,3 @@
#!/bin/bash
python setup.py develop
python runapp.py
Oops, something went wrong.

0 comments on commit d59afff

Please sign in to comment.