[Checkins] SVN: zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/ bfg code

Andreas Jung andreas at andreas-jung.com
Mon Jul 6 12:30:55 EDT 2009


Log message for revision 101636:
  bfg code
  

Changed:
  U   zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/__init__.py
  A   zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/models.py
  A   zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/run.py
  A   zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/
  A   zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/mytemplate.pt
  A   zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/mytemplate.pt.py
  A   zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/mytemplate2.pt
  A   zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/mytemplate2.pt.py
  A   zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/static/
  A   zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/static/default.css
  A   zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/static/images/
  A   zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/static/images/img01.gif
  A   zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/static/images/img02.gif
  A   zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/static/images/img03.gif
  A   zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/static/images/img04.gif
  A   zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/static/images/spacer.gif
  A   zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/static/templatelicense.txt
  A   zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/tests.py
  A   zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/views.py

-=-
Modified: zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/__init__.py
===================================================================
--- zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/__init__.py	2009-07-06 16:27:56 UTC (rev 101635)
+++ zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/__init__.py	2009-07-06 16:30:55 UTC (rev 101636)
@@ -1,4 +1,2 @@
-##########################################################################
-# zopyx.smartprintng.server
-# (C) 2008, 2009, ZOPYX Ltd & Co. KG, Tuebingen, Germany
-##########################################################################
+# A package
+

Added: zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/models.py
===================================================================
--- zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/models.py	                        (rev 0)
+++ zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/models.py	2009-07-06 16:30:55 UTC (rev 101636)
@@ -0,0 +1,7 @@
+class MyModel(object):
+    pass
+
+root = MyModel()
+
+def get_root(environ):
+    return root

Added: zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/run.py
===================================================================
--- zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/run.py	                        (rev 0)
+++ zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/run.py	2009-07-06 16:30:55 UTC (rev 101636)
@@ -0,0 +1,11 @@
+from repoze.bfg.router import make_app
+
+def app(global_config, **kw):
+    """ This function returns a repoze.bfg.router.Router object.  It
+    is usually called by the PasteDeploy framework during ``paster
+    serve``"""
+    # paster app config callback
+    from zopyx.smartprintng.server.models import get_root
+    import zopyx.smartprintng.server
+    return make_app(get_root, zopyx.smartprintng.server, options=kw)
+

Added: zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/mytemplate.pt
===================================================================
--- zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/mytemplate.pt	                        (rev 0)
+++ zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/mytemplate.pt	2009-07-06 16:30:55 UTC (rev 101636)
@@ -0,0 +1,99 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:tal="http://xml.zope.org/namespaces/tal">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<title>${project} Application</title>
+<meta name="keywords" content="python web application" />
+<meta name="description" content="repoze.bfg web application" />
+<link href="${request.application_url}/static/default.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<!-- start header -->
+<div id="logo">
+  <h2><code>${project}</code>, a <code>repoze.bfg</code> application</h2>
+</div>
+<div id="header">
+  <div id="menu">
+  </div>
+</div>
+<!-- end header -->
+<div id="wrapper">
+  <!-- start page -->
+  <div id="page">
+    <!-- start content -->
+    <div id="content">
+      <div class="post">
+	<h1 class="title">Welcome to <code>${project}</code>, an
+	application generated by the <a
+	href="http://bfg.repoze.org">repoze.bfg</a> web
+	application framework.</h1>
+      </div>
+    </div>
+    <!-- end content -->
+    <!-- start sidebar -->
+    <div id="sidebar">
+      <ul>
+	<li id="search">
+	  <h2>Search<br/> <code>repoze.bfg</code> Documentation</h2>
+	  <form method="get" 
+                action="http://bfg.repoze.org/searchresults">
+	    <fieldset>
+	      <input type="text" id="q" name="text" value="" />
+	      <input type="submit" id="x" value="Search" />
+	    </fieldset>
+	  </form>
+	</li>
+	<li>
+	  <h2><code>repoze.bfg</code> links</h2>
+	  <ul>
+	    <li><a
+	    href="http://docs.repoze.org/bfg/#narrative-documentation">Narrative
+	    Documentation</a>
+            </li>
+	    <li>
+              <a
+              href="http://docs.repoze.org/bfg/#api-documentation">API
+              Documentation</a>
+            </li>
+	    <li>
+              <a
+              href="http://docs.repoze.org/bfg/#tutorials">Tutorials</a>
+            </li>
+	    <li>
+              <a
+              href="http://docs.repoze.org/bfg/#change-history">Change
+              History</a>
+            </li>
+	    <li>
+              <a
+              href="http://docs.repoze.org/bfg/#sample-applications">Sample
+              Applications</a>
+            </li>
+	    <li>
+              <a
+              href="http://docs.repoze.org/bfg/#support-and-development">Support
+              and Development</a>
+            </li>
+	    <li>
+              <a
+              href="irc://irc.freenode.net#repoze">IRC Channel</a>
+            </li>
+	  </ul>
+	</li>
+      </ul>
+    </div>
+    <!-- end sidebar -->
+    <div style="clear: both;">&nbsp;</div>
+  </div>
+</div>
+<!-- end page -->
+<!-- start footer -->
+<div id="footer">
+  <p id="legal">( c ) 2008. All Rights Reserved. Template design
+  by <a href="http://www.freecsstemplates.org/">Free CSS
+  Templates</a>.</p>
+</div>
+<!-- end footer -->
+</body>
+</html>

Added: zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/mytemplate.pt.py
===================================================================
--- zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/mytemplate.pt.py	                        (rev 0)
+++ zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/mytemplate.pt.py	2009-07-06 16:30:55 UTC (rev 101636)
@@ -0,0 +1,110 @@
+registry = dict(version='3.7')
+def bind():
+	from cPickle import loads as _loads
+	_init_stream = _loads('cchameleon.core.generation\ninitialize_stream\np1\n.')
+	_lookup_attr = _loads('cchameleon.core.codegen\nlookup_attr\np1\n.')
+	_init_scope = _loads('cchameleon.core.utils\necontext\np1\n.')
+	_re_amp = _loads("cre\n_compile\np1\n(S'&(?!([A-Za-z]+|#[0-9]+);)'\np2\nI0\ntRp3\n.")
+	_init_default = _loads('cchameleon.core.generation\ninitialize_default\np1\n.')
+	_lookup_name = _loads('cchameleon.core.codegen\nlookup_name\np1\n.')
+	_init_tal = _loads('cchameleon.core.generation\ninitialize_tal\np1\n.')
+	def render(econtext, rcontext=None):
+		macros = econtext.get('macros')
+		_slots = econtext.get('_slots')
+		target_language = econtext.get('target_language')
+		u'_init_stream()'
+		(_out, _write) = _init_stream()
+		u'_init_tal()'
+		(_attributes, repeat) = _init_tal()
+		u'_init_default()'
+		_default = _init_default()
+		u'None'
+		default = None
+		u'None'
+		_domain = None
+		u'project'
+		_write(u'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\n<html xmlns="http://www.w3.org/1999/xhtml">\n<head><title>')
+		_tmp1 = econtext['project']
+		_tmp = _tmp1
+		if (_tmp.__class__ not in (str, unicode) and hasattr(_tmp, '__html__')):
+			_write(_tmp.__html__())
+		elif _tmp is not None:
+			if not (isinstance(_tmp, unicode)):
+				_tmp = str(_tmp)
+			if '&' in _tmp:
+				if ';' in _tmp:
+					_tmp = _re_amp.sub('&amp;', _tmp)
+				else:
+					_tmp = _tmp.replace('&', '&amp;')
+			if '<' in _tmp:
+				_tmp = _tmp.replace('<', '&lt;')
+			if '>' in _tmp:
+				_tmp = _tmp.replace('>', '&gt;')
+			_write(_tmp)
+		_write(u' Application</title>\n<meta name="keywords" content="python web application" />\n<meta name="description" content="repoze.bfg web application" />\n<link')
+		default = u'${request.application_url}/static/default.css'
+		"join(value('request.application_url'), u'/static/default.css')"
+		_tmp1 = ('%s%s' % (_lookup_attr(econtext['request'], 'application_url'), u'/static/default.css'))
+		default = None
+		if _tmp1 is _default:
+			_tmp1 = u'${request.application_url}/static/default.css'
+		if (_tmp1 is None or _tmp1 is False):
+			pass
+		else:
+			if not (isinstance(_tmp1, unicode)):
+				_tmp1 = str(_tmp1)
+			if '&' in _tmp1:
+				if ';' in _tmp1:
+					_tmp1 = _re_amp.sub('&amp;', _tmp1)
+				else:
+					_tmp1 = _tmp1.replace('&', '&amp;')
+			if '<' in _tmp1:
+				_tmp1 = _tmp1.replace('<', '&lt;')
+			if '>' in _tmp1:
+				_tmp1 = _tmp1.replace('>', '&gt;')
+			if '"' in _tmp1:
+				_tmp1 = _tmp1.replace('"', '&quot;')
+			_write((' href="' + _tmp1) + '"')
+		u'project'
+		_write(u' rel="stylesheet" type="text/css" />\n</head>\n<body>\n<!-- start header -->\n<div id="logo">\n  <h2><code>')
+		_tmp1 = econtext['project']
+		_tmp = _tmp1
+		if (_tmp.__class__ not in (str, unicode) and hasattr(_tmp, '__html__')):
+			_write(_tmp.__html__())
+		elif _tmp is not None:
+			if not (isinstance(_tmp, unicode)):
+				_tmp = str(_tmp)
+			if '&' in _tmp:
+				if ';' in _tmp:
+					_tmp = _re_amp.sub('&amp;', _tmp)
+				else:
+					_tmp = _tmp.replace('&', '&amp;')
+			if '<' in _tmp:
+				_tmp = _tmp.replace('<', '&lt;')
+			if '>' in _tmp:
+				_tmp = _tmp.replace('>', '&gt;')
+			_write(_tmp)
+		u'project'
+		_write(u'</code>, a <code>repoze.bfg</code> application</h2>\n</div>\n<div id="header">\n  <div id="menu">\n  </div>\n</div>\n<!-- end header -->\n<div id="wrapper">\n  <!-- start page -->\n  <div id="page">\n    <!-- start content -->\n    <div id="content">\n      <div class="post">\n\t<h1 class="title">Welcome to <code>')
+		_tmp1 = econtext['project']
+		_tmp = _tmp1
+		if (_tmp.__class__ not in (str, unicode) and hasattr(_tmp, '__html__')):
+			_write(_tmp.__html__())
+		elif _tmp is not None:
+			if not (isinstance(_tmp, unicode)):
+				_tmp = str(_tmp)
+			if '&' in _tmp:
+				if ';' in _tmp:
+					_tmp = _re_amp.sub('&amp;', _tmp)
+				else:
+					_tmp = _tmp.replace('&', '&amp;')
+			if '<' in _tmp:
+				_tmp = _tmp.replace('<', '&lt;')
+			if '>' in _tmp:
+				_tmp = _tmp.replace('>', '&gt;')
+			_write(_tmp)
+		_write(u'</code>, an\n\tapplication generated by the <a href="http://bfg.repoze.org">repoze.bfg</a> web\n\tapplication framework.</h1>\n      </div>\n    </div>\n    <!-- end content -->\n    <!-- start sidebar -->\n    <div id="sidebar">\n      <ul>\n\t<li id="search">\n\t  <h2>Search<br /> <code>repoze.bfg</code> Documentation</h2>\n\t  <form method="get" action="http://bfg.repoze.org/searchresults">\n\t    <fieldset>\n\t      <input type="text" id="q" name="text" value="" />\n\t      <input type="submit" id="x" value="Search" />\n\t    </fieldset>\n\t  </form>\n\t</li>\n\t<li>\n\t  <h2><code>repoze.bfg</code> links</h2>\n\t  <ul>\n\t    <li><a href="http://docs.repoze.org/bfg/#narrative-documentation">Narrative\n\t    Documentation</a>\n            </li>\n\t    <li>\n              <a href="http://docs.repoze.org/bfg/#api-documentation">API\n              Documentation</a>\n            </li>\n\t    <li>\n              <a href="http://docs.repoze.org/bfg/#tutorials">Tutor
 ials</a>\n            </li>\n\t    <li>\n              <a href="http://docs.repoze.org/bfg/#change-history">Change\n              History</a>\n            </li>\n\t    <li>\n              <a href="http://docs.repoze.org/bfg/#sample-applications">Sample\n              Applications</a>\n            </li>\n\t    <li>\n              <a href="http://docs.repoze.org/bfg/#support-and-development">Support\n              and Development</a>\n            </li>\n\t    <li>\n              <a href="irc://irc.freenode.net#repoze">IRC Channel</a>\n            </li>\n\t  </ul>\n\t</li>\n      </ul>\n    </div>\n    <!-- end sidebar -->\n    <div style="clear: both;">&nbsp;</div>\n  </div>\n</div>\n<!-- end page -->\n<!-- start footer -->\n<div id="footer">\n  <p id="legal">( c ) 2008. All Rights Reserved. Template design\n  by <a href="http://www.freecsstemplates.org/">Free CSS\n  Templates</a>.</p>\n</div>\n<!-- end footer -->\n</body>\n</html>')
+		return _out.getvalue()
+	return render
+
+registry[(None, True, '1488bdb950901f8f258549439ef6661a49aae984')] = bind()

Added: zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/mytemplate2.pt
===================================================================
--- zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/mytemplate2.pt	                        (rev 0)
+++ zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/mytemplate2.pt	2009-07-06 16:30:55 UTC (rev 101636)
@@ -0,0 +1 @@
+<h1>hello world</h1>

Added: zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/mytemplate2.pt.py
===================================================================
--- zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/mytemplate2.pt.py	                        (rev 0)
+++ zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/mytemplate2.pt.py	2009-07-06 16:30:55 UTC (rev 101636)
@@ -0,0 +1,28 @@
+registry = dict(version='3.7')
+def bind():
+	from cPickle import loads as _loads
+	_init_stream = _loads('cchameleon.core.generation\ninitialize_stream\np1\n.')
+	_lookup_attr = _loads('cchameleon.core.codegen\nlookup_attr\np1\n.')
+	_init_scope = _loads('cchameleon.core.utils\necontext\np1\n.')
+	_init_default = _loads('cchameleon.core.generation\ninitialize_default\np1\n.')
+	_lookup_name = _loads('cchameleon.core.codegen\nlookup_name\np1\n.')
+	_init_tal = _loads('cchameleon.core.generation\ninitialize_tal\np1\n.')
+	def render(econtext, rcontext=None):
+		macros = econtext.get('macros')
+		_slots = econtext.get('_slots')
+		target_language = econtext.get('target_language')
+		u'_init_stream()'
+		(_out, _write) = _init_stream()
+		u'_init_tal()'
+		(_attributes, repeat) = _init_tal()
+		u'_init_default()'
+		_default = _init_default()
+		u'None'
+		default = None
+		u'None'
+		_domain = None
+		_write(u'<h1>hello world</h1>')
+		return _out.getvalue()
+	return render
+
+registry[(None, True, '1488bdb950901f8f258549439ef6661a49aae984')] = bind()

Added: zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/static/default.css
===================================================================
--- zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/static/default.css	                        (rev 0)
+++ zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/static/default.css	2009-07-06 16:30:55 UTC (rev 101636)
@@ -0,0 +1,380 @@
+/*
+Design by Free CSS Templates
+http://www.freecsstemplates.org
+Released for free under a Creative Commons Attribution 2.5 License
+*/
+
+body {
+	margin: 0;
+	padding: 0;
+	background: url(images/img01.gif) repeat-x left top;
+	font-size: 13px;
+	font-family: "Trebuchet MS", Georgia, "Times New Roman", Times, serif;
+	text-align: justify;
+	color: #FFFFFF;
+}
+
+h1, h2, h3 {
+	margin: 0;
+	text-transform: lowercase;
+	font-weight: normal;
+	color: #FFFFFF;
+}
+
+h1 {
+	letter-spacing: -1px;
+	font-size: 32px;
+}
+
+h2 {
+	font-size: 23px;
+}
+
+p, ul, ol {
+	margin: 0 0 2em 0;
+	text-align: justify;
+	line-height: 26px;
+}
+
+a:link {
+	color: #8BD80E;
+}
+
+a:hover, a:active {
+	text-decoration: none;
+	color: #8BD80E;
+}
+
+a:visited {
+	color: #8BD80E;
+}
+
+img {
+	border: none;
+}
+
+img.left {
+	float: left;
+	margin-right: 15px;
+}
+
+img.right {
+	float: right;
+	margin-left: 15px;
+}
+
+/* Form */
+
+form {
+	margin: 0;
+	padding: 0;
+}
+
+fieldset {
+	margin: 0;
+	padding: 0;
+	border: none;
+}
+
+legend {
+	display: none;
+}
+
+input, textarea, select {
+	font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+	font-size: 13px;
+	color: #333333;
+}
+
+#wrapper {
+	margin: 0;
+	padding: 0;
+	background: #000000;
+}
+
+/* Header */
+
+#header {
+	width: 713px;
+	margin: 0 auto;
+	height: 42px;
+}
+
+/* Menu */
+
+#menu {
+	float: left;
+	width: 713px;
+	height: 50px;
+	background: url(images/img02.gif) no-repeat left top;
+}
+
+#menu ul {
+	margin: 0;
+	padding: 0px 0 0 10px;
+	list-style: none;
+	line-height: normal;
+}
+
+#menu li {
+	display: block;
+	float: left;
+}
+
+#menu a {
+	display: block;
+	float: left;
+	background: url(images/img04.gif) no-repeat right 55%;
+	margin-top: 5px;
+	margin-right: 3px;
+	padding: 8px 17px;
+	text-decoration: none;
+	font-size: 13px;
+	color: #000000;
+}
+
+#menu a:hover { 
+	color: #000000;
+}
+
+#menu .current_page_item a {
+	color: #000000;
+}
+
+/** LOGO */
+
+#logo {
+	width: 713px;
+	height: 80px;
+	margin: 0 auto;
+}
+
+#logo h1, #logo h2 {
+	float: left;
+	margin: 0;
+	padding: 30px 0 0 0px;
+	line-height: normal;
+}
+
+#logo h1 { 
+	font-family: Georgia, "Times New Roman", Times, serif;
+	font-size:40px;
+}
+
+#logo h1 a {
+	text-decoration: none;
+	color: #4C4C4C; 
+}
+
+#logo h1 a:hover { text-decoration: underline; }
+
+#logo h2 {
+	float: left;
+	padding: 45px 0 0 18px;
+	font: 18px Georgia, "Times New Roman", Times, serif;
+	color: #8BD80E; 
+}
+
+#logo p a {
+	text-decoration: none;
+	color: #8BD80E;
+}
+
+#logo p a:hover { text-decoration: underline; }
+
+
+
+/* Page */
+
+#page {
+	width: 663px;
+	margin: 0 auto;
+	background: #4C4C4C url(images/img03.gif) no-repeat left bottom;
+	padding: 0 25px;
+}
+
+/* Content */
+
+#content {
+	float: left;
+	width: 410px;
+	
+}
+
+/* Post */
+
+.post {
+	padding: 15px 0px;
+	margin-bottom: 20px;
+}
+
+.post .title {
+	margin-bottom: 20px;
+	padding-bottom: 5px;
+}
+
+.post h1 {
+	padding: 0px 0 0 0px;
+	background: url(images/img08.jpg) no-repeat left top;
+	font-size: 24px;
+	color: #FFFFFF;
+}
+
+.post h2 {
+	padding: 0px 0 0 0px;
+	font-size: 22px;
+	color: #FFFFFF;
+}
+
+.post .entry {
+}
+
+.post .meta {
+	padding: 15px 15px 30px 0px;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 11px;
+}
+
+.post .meta p {
+	margin: 0;
+	padding-top: 15px;
+	line-height: normal;
+	color: #FFFFFF;
+}
+
+.post .meta .byline {
+	float: left;
+}
+
+.post .meta .links {
+	float: right;
+}
+
+.post .meta .more {
+	padding: 0 10px 0 18px;
+}
+
+.post .meta .comments {
+}
+
+.post .meta b {
+	display: none;
+}
+
+
+/* Sidebar */
+
+#sidebar {
+	width: 210px;
+	float: right;
+	margin: 0;
+	padding: 0;
+}
+
+#sidebar ul {
+	margin: 0;
+	padding: 0;
+	list-style: none;
+}
+
+#sidebar li {
+	margin-bottom: 40px;
+}
+
+#sidebar li ul {
+}
+
+#sidebar li li {
+	margin: 0;
+}
+
+#sidebar h2 {
+	width: 250px;
+	padding: 8px 0 0 0px;
+	margin-bottom: 10px;
+	background: url(images/img07.jpg) no-repeat left top;
+	font-size: 20px;
+	color: #FFFFFF;
+}
+
+/* Search */
+
+#search {
+
+}
+
+#search h2 {
+	margin-bottom: 20px;
+}
+
+#s {
+	width: 140px;
+	margin-right: 5px;
+	padding: 3px;
+	border: 1px solid #BED99C;
+}
+
+#x {
+	padding: 3px;
+	border: none;
+	background: #8BD80E;
+	text-transform: lowercase;
+	font-size: 11px;
+	color: #FFFFFF;
+}
+
+/* Boxes */
+
+.box1 {
+	padding: 20px;
+}
+
+.box2 {
+	color: #BABABA;
+}
+
+.box2 h2 {
+	margin-bottom: 15px;
+	font-size: 16px;
+	color: #FFFFFF;
+}
+
+.box2 ul {
+	margin: 0;
+	padding: 0;
+	list-style: none;
+}
+
+.box2 a:link, .box2 a:hover, .box2 a:active, .box2 a:visited  {
+	color: #EDEDED;
+}
+
+/* Footer */
+#footer-wrap {
+}
+
+#footer {
+	margin: 0 auto;
+	padding: 20px 0 10px 0;
+	background: #000000;
+}
+
+html>body #footer {
+	height: auto;
+}
+
+#footer p {
+	font-size: 11px;
+}
+
+#legal {
+	clear: both;
+	padding-top: 17px;
+	text-align: center;
+	color: #FFFFFF;
+}
+
+#legal a {
+	font-weight: normal;
+	color: #FFFFFF;
+}

Added: zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/static/images/img01.gif
===================================================================
(Binary files differ)


Property changes on: zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/static/images/img01.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/static/images/img02.gif
===================================================================
(Binary files differ)


Property changes on: zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/static/images/img02.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/static/images/img03.gif
===================================================================
(Binary files differ)


Property changes on: zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/static/images/img03.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/static/images/img04.gif
===================================================================
(Binary files differ)


Property changes on: zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/static/images/img04.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/static/images/spacer.gif
===================================================================
(Binary files differ)


Property changes on: zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/static/images/spacer.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/static/templatelicense.txt
===================================================================
--- zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/static/templatelicense.txt	                        (rev 0)
+++ zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/templates/static/templatelicense.txt	2009-07-06 16:30:55 UTC (rev 101636)
@@ -0,0 +1,243 @@
+Creative Commons </>
+
+Creative Commons Legal Code
+
+*Attribution 2.5*
+
+CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
+LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
+ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION
+ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE
+INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
+ITS USE.
+
+/License/
+
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
+COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
+COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
+AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
+
+BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE
+TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE
+RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS
+AND CONDITIONS.
+
+*1. Definitions*
+
+   1. *"Collective Work"* means a work, such as a periodical issue,
+      anthology or encyclopedia, in which the Work in its entirety in
+      unmodified form, along with a number of other contributions,
+      constituting separate and independent works in themselves, are
+      assembled into a collective whole. A work that constitutes a
+      Collective Work will not be considered a Derivative Work (as
+      defined below) for the purposes of this License.
+   2. *"Derivative Work"* means a work based upon the Work or upon the
+      Work and other pre-existing works, such as a translation, musical
+      arrangement, dramatization, fictionalization, motion picture
+      version, sound recording, art reproduction, abridgment,
+      condensation, or any other form in which the Work may be recast,
+      transformed, or adapted, except that a work that constitutes a
+      Collective Work will not be considered a Derivative Work for the
+      purpose of this License. For the avoidance of doubt, where the
+      Work is a musical composition or sound recording, the
+      synchronization of the Work in timed-relation with a moving image
+      ("synching") will be considered a Derivative Work for the purpose
+      of this License.
+   3. *"Licensor"* means the individual or entity that offers the Work
+      under the terms of this License.
+   4. *"Original Author"* means the individual or entity who created the
+      Work.
+   5. *"Work"* means the copyrightable work of authorship offered under
+      the terms of this License.
+   6. *"You"* means an individual or entity exercising rights under this
+      License who has not previously violated the terms of this License
+      with respect to the Work, or who has received express permission
+      from the Licensor to exercise rights under this License despite a
+      previous violation.
+
+*2. Fair Use Rights.* Nothing in this license is intended to reduce,
+limit, or restrict any rights arising from fair use, first sale or other
+limitations on the exclusive rights of the copyright owner under
+copyright law or other applicable laws.
+
+*3. License Grant.* Subject to the terms and conditions of this License,
+Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
+perpetual (for the duration of the applicable copyright) license to
+exercise the rights in the Work as stated below:
+
+   1. to reproduce the Work, to incorporate the Work into one or more
+      Collective Works, and to reproduce the Work as incorporated in the
+      Collective Works;
+   2. to create and reproduce Derivative Works;
+   3. to distribute copies or phonorecords of, display publicly, perform
+      publicly, and perform publicly by means of a digital audio
+      transmission the Work including as incorporated in Collective Works;
+   4. to distribute copies or phonorecords of, display publicly, perform
+      publicly, and perform publicly by means of a digital audio
+      transmission Derivative Works.
+   5.
+
+      For the avoidance of doubt, where the work is a musical composition:
+
+         1. *Performance Royalties Under Blanket Licenses*. Licensor
+            waives the exclusive right to collect, whether individually
+            or via a performance rights society (e.g. ASCAP, BMI,
+            SESAC), royalties for the public performance or public
+            digital performance (e.g. webcast) of the Work.
+         2. *Mechanical Rights and Statutory Royalties*. Licensor waives
+            the exclusive right to collect, whether individually or via
+            a music rights agency or designated agent (e.g. Harry Fox
+            Agency), royalties for any phonorecord You create from the
+            Work ("cover version") and distribute, subject to the
+            compulsory license created by 17 USC Section 115 of the US
+            Copyright Act (or the equivalent in other jurisdictions).
+   6. *Webcasting Rights and Statutory Royalties*. For the avoidance of
+      doubt, where the Work is a sound recording, Licensor waives the
+      exclusive right to collect, whether individually or via a
+      performance-rights society (e.g. SoundExchange), royalties for the
+      public digital performance (e.g. webcast) of the Work, subject to
+      the compulsory license created by 17 USC Section 114 of the US
+      Copyright Act (or the equivalent in other jurisdictions).
+
+The above rights may be exercised in all media and formats whether now
+known or hereafter devised. The above rights include the right to make
+such modifications as are technically necessary to exercise the rights
+in other media and formats. All rights not expressly granted by Licensor
+are hereby reserved.
+
+*4. Restrictions.*The license granted in Section 3 above is expressly
+made subject to and limited by the following restrictions:
+
+   1. You may distribute, publicly display, publicly perform, or
+      publicly digitally perform the Work only under the terms of this
+      License, and You must include a copy of, or the Uniform Resource
+      Identifier for, this License with every copy or phonorecord of the
+      Work You distribute, publicly display, publicly perform, or
+      publicly digitally perform. You may not offer or impose any terms
+      on the Work that alter or restrict the terms of this License or
+      the recipients' exercise of the rights granted hereunder. You may
+      not sublicense the Work. You must keep intact all notices that
+      refer to this License and to the disclaimer of warranties. You may
+      not distribute, publicly display, publicly perform, or publicly
+      digitally perform the Work with any technological measures that
+      control access or use of the Work in a manner inconsistent with
+      the terms of this License Agreement. The above applies to the Work
+      as incorporated in a Collective Work, but this does not require
+      the Collective Work apart from the Work itself to be made subject
+      to the terms of this License. If You create a Collective Work,
+      upon notice from any Licensor You must, to the extent practicable,
+      remove from the Collective Work any credit as required by clause
+      4(b), as requested. If You create a Derivative Work, upon notice
+      from any Licensor You must, to the extent practicable, remove from
+      the Derivative Work any credit as required by clause 4(b), as
+      requested.
+   2. If you distribute, publicly display, publicly perform, or publicly
+      digitally perform the Work or any Derivative Works or Collective
+      Works, You must keep intact all copyright notices for the Work and
+      provide, reasonable to the medium or means You are utilizing: (i)
+      the name of the Original Author (or pseudonym, if applicable) if
+      supplied, and/or (ii) if the Original Author and/or Licensor
+      designate another party or parties (e.g. a sponsor institute,
+      publishing entity, journal) for attribution in Licensor's
+      copyright notice, terms of service or by other reasonable means,
+      the name of such party or parties; the title of the Work if
+      supplied; to the extent reasonably practicable, the Uniform
+      Resource Identifier, if any, that Licensor specifies to be
+      associated with the Work, unless such URI does not refer to the
+      copyright notice or licensing information for the Work; and in the
+      case of a Derivative Work, a credit identifying the use of the
+      Work in the Derivative Work (e.g., "French translation of the Work
+      by Original Author," or "Screenplay based on original Work by
+      Original Author"). Such credit may be implemented in any
+      reasonable manner; provided, however, that in the case of a
+      Derivative Work or Collective Work, at a minimum such credit will
+      appear where any other comparable authorship credit appears and in
+      a manner at least as prominent as such other comparable authorship
+      credit.
+
+*5. Representations, Warranties and Disclaimer*
+
+UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR
+OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY
+KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,
+INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,
+FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
+LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS,
+WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE
+EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
+
+*6. Limitation on Liability.* EXCEPT TO THE EXTENT REQUIRED BY
+APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL
+THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY
+DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF
+LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+*7. Termination*
+
+   1. This License and the rights granted hereunder will terminate
+      automatically upon any breach by You of the terms of this License.
+      Individuals or entities who have received Derivative Works or
+      Collective Works from You under this License, however, will not
+      have their licenses terminated provided such individuals or
+      entities remain in full compliance with those licenses. Sections
+      1, 2, 5, 6, 7, and 8 will survive any termination of this License.
+   2. Subject to the above terms and conditions, the license granted
+      here is perpetual (for the duration of the applicable copyright in
+      the Work). Notwithstanding the above, Licensor reserves the right
+      to release the Work under different license terms or to stop
+      distributing the Work at any time; provided, however that any such
+      election will not serve to withdraw this License (or any other
+      license that has been, or is required to be, granted under the
+      terms of this License), and this License will continue in full
+      force and effect unless terminated as stated above.
+
+*8. Miscellaneous*
+
+   1. Each time You distribute or publicly digitally perform the Work or
+      a Collective Work, the Licensor offers to the recipient a license
+      to the Work on the same terms and conditions as the license
+      granted to You under this License.
+   2. Each time You distribute or publicly digitally perform a
+      Derivative Work, Licensor offers to the recipient a license to the
+      original Work on the same terms and conditions as the license
+      granted to You under this License.
+   3. If any provision of this License is invalid or unenforceable under
+      applicable law, it shall not affect the validity or enforceability
+      of the remainder of the terms of this License, and without further
+      action by the parties to this agreement, such provision shall be
+      reformed to the minimum extent necessary to make such provision
+      valid and enforceable.
+   4. No term or provision of this License shall be deemed waived and no
+      breach consented to unless such waiver or consent shall be in
+      writing and signed by the party to be charged with such waiver or
+      consent.
+   5. This License constitutes the entire agreement between the parties
+      with respect to the Work licensed here. There are no
+      understandings, agreements or representations with respect to the
+      Work not specified here. Licensor shall not be bound by any
+      additional provisions that may appear in any communication from
+      You. This License may not be modified without the mutual written
+      agreement of the Licensor and You.
+
+Creative Commons is not a party to this License, and makes no warranty
+whatsoever in connection with the Work. Creative Commons will not be
+liable to You or any party on any legal theory for any damages
+whatsoever, including without limitation any general, special,
+incidental or consequential damages arising in connection to this
+license. Notwithstanding the foregoing two (2) sentences, if Creative
+Commons has expressly identified itself as the Licensor hereunder, it
+shall have all rights and obligations of Licensor.
+
+Except for the limited purpose of indicating to the public that the Work
+is licensed under the CCPL, neither party will use the trademark
+"Creative Commons" or any related trademark or logo of Creative Commons
+without the prior written consent of Creative Commons. Any permitted use
+will be in compliance with Creative Commons' then-current trademark
+usage guidelines, as may be published on its website or otherwise made
+available upon request from time to time.
+
+Creative Commons may be contacted at http://creativecommons.org/
+<http://creativecommons.org>.
+
+« Back to Commons Deed <./>

Added: zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/tests.py
===================================================================
--- zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/tests.py	                        (rev 0)
+++ zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/tests.py	2009-07-06 16:30:55 UTC (rev 101636)
@@ -0,0 +1,73 @@
+import unittest
+
+from repoze.bfg import testing
+
+class ViewTests(unittest.TestCase):
+
+    """ These tests are unit tests for the view.  They test the
+    functionality of *only* the view.  They register and use dummy
+    implementations of repoze.bfg functionality to allow you to avoid
+    testing 'too much'"""
+
+    def setUp(self):
+        """ cleanUp() is required to clear out the application registry
+        between tests (done in setUp for good measure too)
+        """
+        testing.cleanUp()
+        
+    def tearDown(self):
+        """ cleanUp() is required to clear out the application registry
+        between tests
+        """
+        testing.cleanUp()
+
+    def test_my_view(self):
+        from my_server.views import my_view
+        context = testing.DummyModel()
+        request = testing.DummyRequest()
+        renderer = testing.registerDummyRenderer('templates/mytemplate.pt')
+        response = my_view(context, request)
+        renderer.assert_(project='my_server')
+
+class ViewIntegrationTests(unittest.TestCase):
+    """ These tests are integration tests for the view.  These test
+    the functionality the view *and* its integration with the rest of
+    the repoze.bfg framework.  They cause the entire environment to be
+    set up and torn down as if your application was running 'for
+    real'.  This is a heavy-hammer way of making sure that your tests
+    have enough context to run properly, and it tests your view's
+    integration with the rest of BFG.  You should not use this style
+    of test to perform 'true' unit testing as tests will run faster
+    and will be easier to write if you use the testing facilities
+    provided by bfg and only the registrations you need, as in the
+    above ViewTests.
+    """
+    def setUp(self):
+        """ This sets up the application registry with the
+        registrations your application declares in its configure.zcml
+        (including dependent registrations for repoze.bfg itself).
+        """
+        testing.cleanUp()
+        import my_server
+        import zope.configuration.xmlconfig
+        zope.configuration.xmlconfig.file('configure.zcml',
+                                          package=my_server)
+
+    def tearDown(self):
+        """ Clear out the application registry """
+        testing.cleanUp()
+
+    def test_my_view(self):
+        from my_server.views import my_view
+        context = testing.DummyModel()
+        request = testing.DummyRequest()
+        result = my_view(context, request)
+        self.assertEqual(result.status, '200 OK')
+        body = result.app_iter[0]
+        self.failUnless('Welcome to' in body)
+        self.assertEqual(len(result.headerlist), 2)
+        self.assertEqual(result.headerlist[0],
+                         ('Content-Type', 'text/html; charset=UTF-8'))
+        self.assertEqual(result.headerlist[1], ('Content-Length',
+                                                str(len(body))))
+

Added: zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/views.py
===================================================================
--- zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/views.py	                        (rev 0)
+++ zopyx.smartprintng.server/branches/bfg/zopyx/smartprintng/server/views.py	2009-07-06 16:30:55 UTC (rev 101636)
@@ -0,0 +1,18 @@
+from repoze.bfg.chameleon_zpt import render_template_to_response
+from repoze.bfg.view import static
+
+static_view = static('templates/static')
+
+def my_view(context, request):
+    return render_template_to_response('templates/mytemplate.pt',
+                                       request = request,
+                                       project = 'zopyx.smartprintng.server')
+def my_view2(context, request):
+    return render_template_to_response('templates/mytemplate2.pt',
+                                       request = request,
+                                       project = 'zopyx.smartprintng.server')
+from repoze.bfg.xmlrpc import xmlrpc_view
+
+ at xmlrpc_view
+def hello(context, request):
+    return 'it"me'



More information about the Checkins mailing list