aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bn_django/git_wiki/models.py12
-rw-r--r--bn_django/git_wiki/settings.py11
-rw-r--r--bn_django/git_wiki/templates/git_wiki/item.html26
-rw-r--r--bn_django/git_wiki/views.py15
-rw-r--r--bn_django/photos/templates/photos/photo_detail.html20
-rw-r--r--bn_django/settings.py12
-rw-r--r--bn_django/templates/base.html7
-rw-r--r--bn_django/templates/comment_list16
-rw-r--r--bn_django/templates/comments/form.html36
-rw-r--r--bn_django/templates/comments/freeform.html11
-rw-r--r--bn_django/templates/frontpage.html1
-rw-r--r--bn_django/templates/newknowldge_table13
-rw-r--r--bn_django/urls.py29
-rw-r--r--static/style/default.css17
-rw-r--r--static/style/docutils.css279
15 files changed, 460 insertions, 45 deletions
diff --git a/bn_django/git_wiki/models.py b/bn_django/git_wiki/models.py
index ae9ef79..060e9d5 100644
--- a/bn_django/git_wiki/models.py
+++ b/bn_django/git_wiki/models.py
@@ -150,10 +150,10 @@ def fromslug(reqslug):
import commands
if reqslug == '' or reqslug == '/':
- f = open(GITWIKI_BASE + '/HEAD','r')
+ f = open(GITWIKI_DIR + '/HEAD','r')
head = f.readline().strip().split()[1]
f.close()
- f = open(GITWIKI_BASE + '/'+head,'r')
+ f = open(GITWIKI_DIR + '/'+head,'r')
hash = f.readline().strip()
f.close()
ret = Tree(id=hash)
@@ -198,13 +198,13 @@ def fromslug(reqslug):
def reposcan():
import os
heads = dict()
- for h in os.listdir(GITWIKI_BASE + '/refs/heads/'):
- f = open(GITWIKI_BASE + '/refs/heads/' + h,'r')
+ for h in os.listdir(GITWIKI_DIR + '/refs/heads/'):
+ f = open(GITWIKI_DIR + '/refs/heads/' + h,'r')
heads[h.strip()] = f.readline().strip()
f.close()
tags = dict()
- for t in os.listdir(GITWIKI_BASE + '/refs/tags/'):
- f = open(GITWIKI_BASE + '/refs/tags/' + t,'r')
+ for t in os.listdir(GITWIKI_DIR + '/refs/tags/'):
+ f = open(GITWIKI_DIR + '/refs/tags/' + t,'r')
tags[t.strip()] = f.readline().strip()
f.close()
return (heads, tags)
diff --git a/bn_django/git_wiki/settings.py b/bn_django/git_wiki/settings.py
index 882dd30..965ac26 100644
--- a/bn_django/git_wiki/settings.py
+++ b/bn_django/git_wiki/settings.py
@@ -1,13 +1,14 @@
# full path to directory holding the wiki repository (or sys links to
# the repositories)
-GITWIKI_BASE = '/srv/git/knowledge.git'
+GITWIKI_BASE = '/home/bnewbold/knowledge/'
# leave this blank (NO WHITE SPACE) unless you're using a bare repo
-GITWIKI_NAME = 'knowledge'
+GITWIKI_NAME = ''
# fill path to the git command
-GITCOMMAND = '/usr/bin/git'
+GITCOMMAND = '/usr/local/bin/git'
-GITPREFIX = 'cd ' +str(GITWIKI_BASE) + '/.. ; ' + str(GITCOMMAND) + ' --git-dir=' \
- + str(GITWIKI_BASE)
+GITWIKI_DIR = str(GITWIKI_BASE) + '/' + str(GITWIKI_NAME) + '.git'
+GITPREFIX = 'cd ' +str(GITWIKI_BASE) + '; ' + str(GITCOMMAND) + ' --git-dir=' \
+ + str(GITWIKI_DIR)
diff --git a/bn_django/git_wiki/templates/git_wiki/item.html b/bn_django/git_wiki/templates/git_wiki/item.html
index 7562fc6..16d3518 100644
--- a/bn_django/git_wiki/templates/git_wiki/item.html
+++ b/bn_django/git_wiki/templates/git_wiki/item.html
@@ -1,25 +1,29 @@
{% extends "git_wiki/base.html" %}
-{% load markup %}
+{% block stylesheets %}
+{{ block.super }}
+<link rel="STYLESHEET" type="text/css" href="/style/docutils.css" />
+{% endblock %}
{% block path %}{{ block.super }} &raquo; <a href="/k/{{ item.slug }}/">
{{ item.path }}</a>{% endblock %}
-{% block title %}Knowledge Item: {{ item.path }}{% endblock %}
+{% block title %}{% endblock %}
{% block gitwiki %}
- {{ item.contents|restructuredtext }}
+&nbsp;
+{{ doc.html_body }}
<br /><hr />
- <h3>Item name:</h3>
- <span class="hash">{{ item.name }}</span>
- <h3>Item sha1 hash:</h3>
- <span class="hash">{{ item.id }}</span>
- <h3>Raw Contents:</h3>
- <pre class="large">{{ item.contents|escape|wordwrap:80 }}</pre>
-
+ <h3>Meta</h3>
+ <b>Item name:</b>
+ <span class="hash">{{ item.name }}</span><br />
+ <b>Item sha1 hash:</b>
+ <span class="hash">{{ item.id }}</span><br />
<br />
<span class="righty">
- <a href="/k/{{ item.slug }}/pdf/">pdf</a> - <a href="/k/{{ item.slug }}/log">log</a>
+ <a href="/k/{{ item.slug }}/raw/">raw</a> -
+ <a href="/k/{{ item.slug }}/pdf/">pdf</a> -
+ <a href="/k/{{ item.slug }}/log">log</a>
</span>
<br />
{% endblock %}
diff --git a/bn_django/git_wiki/views.py b/bn_django/git_wiki/views.py
index 2e66061..c0681c7 100644
--- a/bn_django/git_wiki/views.py
+++ b/bn_django/git_wiki/views.py
@@ -1,7 +1,7 @@
from django import forms, http, template
from django.contrib.auth.decorators import login_required
from django.shortcuts import get_object_or_404, render_to_response
-from django.http import HttpResponse, Http404
+from django.http import HttpResponse, Http404, HttpResponseServerError
import os, commands
@@ -42,8 +42,17 @@ def item(request, reqslug, blob=None):
else:
i = blob
i.update()
- return render_to_response('git_wiki/item.html',
- dict(item=i))
+
+ try:
+ from docutils.core import publish_parts
+ except ImportError:
+ if settings.DEBUG:
+ raise HttpResponseServerError(request)
+ else:
+ docutils_settings = getattr(settings, "GITWIKI_REST_SETTINGS", {})
+ parts = publish_parts(source=i.contents, writer_name="html4css1", settings_overrides=docutils_settings)
+ return render_to_response('git_wiki/item.html',
+ dict(item=i,doc=parts))
def olditem(request, hash):
i = get_object_or_404(Item, id=hash)
diff --git a/bn_django/photos/templates/photos/photo_detail.html b/bn_django/photos/templates/photos/photo_detail.html
index 10bf8ba..0d5398d 100644
--- a/bn_django/photos/templates/photos/photo_detail.html
+++ b/bn_django/photos/templates/photos/photo_detail.html
@@ -1,5 +1,6 @@
{% extends "photos/base.html" %}
{# {% load markup %} #}
+{% load comments %}
{% block path %}
{{ block.super }}
@@ -94,6 +95,25 @@
{% else %}
<p>This is not the photo you are looking for.</p>
{% endif %}
+{% endblock %}
+{% block commentary %}
+<div class="content" id="commentary">
+{% load comments %}
+{% if user.is_authenticated %}
+{% comment_form for photos.photo photo.id with is_public yes %}
+comment form:<br />
+{% include "comments/form.html" %}
+{% else %}
+{% free_comment_form for photos.photo photo.id with is_public yes %}
+free comment form:<br />
+{% include "comments/freeform.html" %}
+{% endif %}
+
+comment list:<br />
+{% get_comment_list for photos.photo photo.id as comments %}
+{% get_free_comment_list for photos.photo photo.id as free_comments %}
+{% include "comment_list" %}
+</div>
{% endblock %}
diff --git a/bn_django/settings.py b/bn_django/settings.py
index d04cbe7..3183cdc 100644
--- a/bn_django/settings.py
+++ b/bn_django/settings.py
@@ -11,7 +11,7 @@ ADMINS = (
MANAGERS = ADMINS
DATABASE_ENGINE = 'sqlite3' # 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'.
-DATABASE_NAME = '/srv/django/bn_django.db' # Or path to database file if using sqlite3.
+DATABASE_NAME = '/home/bnewbold/bn-project/bn_django/bn_django.db' # Or path to database file if using sqlite3.
DATABASE_USER = '' # Not used with sqlite3.
DATABASE_PASSWORD = '' # Not used with sqlite3.
DATABASE_HOST = '' # Set to empty string for localhost. Not used with sqlite3.
@@ -19,7 +19,7 @@ DATABASE_PORT = '' # Set to empty string for default. Not used with
# Local time zone for this installation. All choices can be found here:
# http://www.postgresql.org/docs/8.1/static/datetime-keywords.html#DATETIME-TIMEZONE-SET-TABLE
-TIME_ZONE = 'America/Seattle'
+TIME_ZONE = 'America/Boston'
# Language code for this installation. All choices can be found here:
# http://www.w3.org/TR/REC-html40/struct/dirlang.html#langcodes
@@ -34,16 +34,16 @@ USE_I18N = True
# Absolute path to the directory that holds media.
# Example: "/home/media/media.lawrence.com/"
-MEDIA_ROOT = '/srv/http/bryannewbold/static/'
+MEDIA_ROOT = '/home/bnewbold/bn-project/media/'
# URL that handles the media served from MEDIA_ROOT.
# Example: "http://media.lawrence.com"
-MEDIA_URL = 'http://static.bryannewbold.com/'
+MEDIA_URL = '/media/'
# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
# trailing slash.
# Examples: "http://foo.com/media/", "/media/".
-ADMIN_MEDIA_PREFIX = 'http://static.bryannewbold.com/django-admin/'
+ADMIN_MEDIA_PREFIX = '/style/django-admin/'
# Make this unique, and don't share it with anybody.
SECRET_KEY = 'jdsgk29845ldsfg0090204tv(GFD8g0(%$)*@$#R%U)#*ifd;/q'
@@ -70,7 +70,7 @@ TEMPLATE_DIRS = (
# Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
- '/srv/django/bn-project/bn_django/templates',
+ '/home/bnewbold/bn-project/bn_django/templates',
)
INSTALLED_APPS = (
diff --git a/bn_django/templates/base.html b/bn_django/templates/base.html
index dd66c97..402a959 100644
--- a/bn_django/templates/base.html
+++ b/bn_django/templates/base.html
@@ -3,9 +3,9 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
{% block stylesheets %}
-<!--<link rel="STYLESHEET" type="text/css" href="style/default.css" />
-<link rel="STYLESHEET" type="text/css" href="/style/default.css" />-->
-<link rel="STYLESHEET" type="text/css" href="http://static.bryannewbold.com/style/default.css" />
+<link rel="STYLESHEET" type="text/css" href="style/default.css" />
+<link rel="STYLESHEET" type="text/css" href="/style/default.css" />
+<!--<link rel="STYLESHEET" type="text/css" href="http://static.bryannewbold.com/style/default.css" /> -->
{% endblock %}
{% block externaljs %} {% endblock %}
<title>{% block windowtitle %}bryannewbold.com{% endblock %}</title>
@@ -55,6 +55,7 @@
Here lies content!
{% endblock %}
</div>
+{% block commentary %} {% endblock %}
<div class="content_footer" id="footer" name="footer">
<b>
&nbsp;
diff --git a/bn_django/templates/comment_list b/bn_django/templates/comment_list
new file mode 100644
index 0000000..8ed411d
--- /dev/null
+++ b/bn_django/templates/comment_list
@@ -0,0 +1,16 @@
+
+{% if comments %}
+<table class="comments">
+{% for c in comments %}
+<tr><td class="comment_info">
+ <span class="comment_user">{{ c.user }}</span>
+ <span class="comment_date">{{ c.submit_date }}</span>
+ </td><td class="comment_content">
+ <span class="comment_headline">{{ c.headline|escape|wordwrap:80 }}</span>
+ <span class="comment_content">{{ c.content|escape|wordwrap:80 }}</span>
+</td</tr>
+{% endfor %}
+</table>
+{% else %}
+<h3>No comments yet!</h3>
+{% endif %}
diff --git a/bn_django/templates/comments/form.html b/bn_django/templates/comments/form.html
new file mode 100644
index 0000000..316d6a1
--- /dev/null
+++ b/bn_django/templates/comments/form.html
@@ -0,0 +1,36 @@
+{% load i18n %}
+<form {% if photos_optional or photos_required %}enctype="multipart/form-data" {% endif %}action="/comments/post/" method="post">
+
+{% if user.is_authenticated %}
+<p>{% trans "Username:" %} <strong>{{ user.username }}</strong> (<a href="/accounts/logout/">{% trans "Log out" %}</a>)</p>
+{% else %}
+<p><label for="id_username">{% trans "Username:" %}</label> <input type="text" name="username" id="id_username" /><br />{% trans "Password:" %} <input type="password" name="password" id="id_password" /> (<a href="/accounts/password_reset/">{% trans "Forgotten your password?" %}</a>)</p>
+{% endif %}
+
+{% if ratings_optional or ratings_required %}
+<p>{% trans "Ratings" %} ({% if ratings_required %}{% trans "Required" %}{% else %}{% trans "Optional" %}{% endif %}):</p>
+<table>
+<tr><th>&nbsp;</th>{% for value in rating_range %}<th>{{ value }}</th>{% endfor %}</tr>
+{% for rating in rating_choices %}
+<tr><th>{{ rating }}</th>{% for value in rating_range %}<th><input type="radio" name="rating{{ forloop.parentloop.counter }}" value="{{ value }}" /></th>{% endfor %}</tr>
+{% endfor %}
+</table>
+<input type="hidden" name="rating_options" value="{{ rating_options }}" />
+{% endif %}
+
+{% if photos_optional or photos_required %}
+<p><label for="id_photo">{% trans "Post a photo" %}</label> ({% if photos_required %}{% trans "Required" %}{% else %}{% trans "Optional" %}{% endif %}):
+<input type="file" name="photo" id="id_photo" /></p>
+<input type="hidden" name="photo_options" value="{{ photo_options }}" />
+{% endif %}
+
+<p><label for="id_comment">{% trans "Comment:" %}</label><br />
+<textarea name="comment" id="id_comment" rows="10" cols="60"></textarea></p>
+
+<p>
+<input type="hidden" name="options" value="{{ options }}" />
+<input type="hidden" name="target" value="{{ target }}" />
+<input type="hidden" name="gonzo" value="{{ hash }}" />
+<input type="submit" name="preview" value="{% trans "Preview comment" %}" />
+</p>
+</form>
diff --git a/bn_django/templates/comments/freeform.html b/bn_django/templates/comments/freeform.html
new file mode 100644
index 0000000..95e5153
--- /dev/null
+++ b/bn_django/templates/comments/freeform.html
@@ -0,0 +1,11 @@
+{% load i18n %}
+<form action="/comments/postfree/" method="post">
+<p><label for="id_person_name">{% trans "Your name:" %}</label> <input type="text" id="id_person_name" name="person_name" /></p>
+<p><label for="id_comment">{% trans "Comment:" %}</label><br /><textarea name="comment" id="id_comment" rows="10" cols="60"></textarea></p>
+<p>
+<input type="hidden" name="options" value="{{ options }}" />
+<input type="hidden" name="target" value="{{ target }}" />
+<input type="hidden" name="gonzo" value="{{ hash }}" />
+<input type="submit" name="preview" value="{% trans "Preview comment" %}" />
+</p>
+</form>
diff --git a/bn_django/templates/frontpage.html b/bn_django/templates/frontpage.html
index 52db15e..1a7acc2 100644
--- a/bn_django/templates/frontpage.html
+++ b/bn_django/templates/frontpage.html
@@ -37,6 +37,7 @@ For more recent content see the <a href="/timeline/">timeline</a>
<div class="col_right">
<div class="col_title">Latest knowledge</div>
{% if latest_knowledge %}
+{% include "newknowldge_table" %}
{% else %}
None yet!
{% endif %}
diff --git a/bn_django/templates/newknowldge_table b/bn_django/templates/newknowldge_table
new file mode 100644
index 0000000..686a12f
--- /dev/null
+++ b/bn_django/templates/newknowldge_table
@@ -0,0 +1,13 @@
+{% if latest_knowledge %}
+<table class="listing">
+{% for l in latest_knowledge %}
+<tr>
+ <td class="date">
+ {{ l.date }}</td>
+ <td class="description">
+ <a href="/k/commit/{{ l.hash }}/" class="description">
+ {{ l.description|truncatewords:6 }}</a></td>
+ </tr>
+{% endfor %}
+</table>
+{% else %}No shortlog!{% endif %}
diff --git a/bn_django/urls.py b/bn_django/urls.py
index 9ccf0a3..425066b 100644
--- a/bn_django/urls.py
+++ b/bn_django/urls.py
@@ -1,18 +1,22 @@
from django.conf.urls.defaults import *
from photos.models import Photo
+import git_wiki.models
urlpatterns = patterns('',
# Example:
# (r'^bn_django/', include('bn_django.foo.urls')),
- (r'^$', 'django.views.generic.simple.direct_to_template', {'template': 'frontpage.html','extra_context':dict({ \
- 'latest_photos':Photo.objects.order_by('date')[:2] \
+ (r'^$', 'django.views.generic.simple.direct_to_template',
+ {'template': 'frontpage.html','extra_context':dict({ \
+ 'latest_photos':Photo.objects.order_by('date')[:2], \
#'latest_comments':Photo.objects.order_by('date')[:4] \
- #'latest_knowledge':Photo.objects.order_by('date')[:4] \
+ 'latest_knowledge':git_wiki.models.shortlog() \
})}),
- (r'^about/$', 'django.views.generic.simple.direct_to_template', {'template': 'about.html'}),
- (r'^credits/$', 'django.views.generic.simple.direct_to_template', {'template': 'credits.html'}),
- (r'^copyright/$', 'django.views.generic.simple.direct_to_template', {'template': 'copyright.html'}),
-
+ (r'^about/$', 'django.views.generic.simple.direct_to_template',
+ {'template': 'about.html'}),
+ (r'^credits/$', 'django.views.generic.simple.direct_to_template',
+ {'template': 'credits.html'}),
+ (r'^copyright/$', 'django.views.generic.simple.direct_to_template',
+ {'template': 'copyright.html'}),
(r'^knowledge/$', 'bn_django.git_wiki.views.frontpage',),
(r'^k/', include('bn_django.git_wiki.urls')),
@@ -23,8 +27,13 @@ urlpatterns = patterns('',
# Uncomment this for admin:
(r'^admin/', include('django.contrib.admin.urls')),
+ (r'^comments/', include('django.contrib.comments.urls.comments')),
- (r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/home/bnewbold/bn-project/static', 'show_indexes': True}),
- (r'^style/(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/home/bnewbold/bn-project/static/style'}),
- (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/home/bnewbold/bn-project/media'}),
+ (r'^static/(?P<path>.*)$', 'django.views.static.serve',
+ {'document_root': '/home/bnewbold/bn-project/static',
+ 'show_indexes': True}),
+ (r'^style/(?P<path>.*)$', 'django.views.static.serve',
+ {'document_root': '/home/bnewbold/bn-project/static/style'}),
+ (r'^media/(?P<path>.*)$', 'django.views.static.serve',
+ {'document_root': '/home/bnewbold/bn-project/media'}),
)
diff --git a/static/style/default.css b/static/style/default.css
index e3827dc..1a3a938 100644
--- a/static/style/default.css
+++ b/static/style/default.css
@@ -159,7 +159,6 @@ pre.large {
border: 1px solid black; }
.content_footer {
margin-left: 4%;
- width: 685px;
font-size: 10px;
font-style: italic;
font-family: sans-serif;
@@ -193,7 +192,23 @@ pre.large {
.photo_thumb {
width: 160px;
height: 180px; }
+table.listing {
+ width: 100%;
+ border-spacing: 0px;
+ font-size: 11px; }
+table.listing tr {
+ width: 100%; }
+table.listing td.date {
+ font-style: italic;
+ width: 75px;
+ overflow: hidden; }
+table.listing td.description {
+ overflow: hidden; }
+#commentary {
+ background-color: #a9afdc;
+ background-color: #c7c6ff;
+ border-top: 2px solid #000000; }
#top_bar {
height: 22px;
background-color: #993333;
diff --git a/static/style/docutils.css b/static/style/docutils.css
new file mode 100644
index 0000000..3f75dc6
--- /dev/null
+++ b/static/style/docutils.css
@@ -0,0 +1,279 @@
+/*
+:Author: David Goodger
+:Contact: goodger@users.sourceforge.net
+:Date: $Date: 2005-12-18 01:56:14 +0100 (Sun, 18 Dec 2005) $
+:Revision: $Revision: 4224 $
+:Copyright: This stylesheet has been placed in the public domain.
+
+Default cascading style sheet for the HTML output of Docutils.
+
+See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
+customize this style sheet.
+*/
+
+/* used to remove borders from tables and images */
+.borderless, table.borderless td, table.borderless th {
+ border: 0 }
+
+table.borderless td, table.borderless th {
+ /* Override padding for "table.docutils td" with "! important".
+ The right padding separates the table cells. */
+ padding: 0 0.5em 0 0 ! important }
+
+.first {
+ /* Override more specific margin styles with "! important". */
+ margin-top: 0 ! important }
+
+.last, .with-subtitle {
+ margin-bottom: 0 ! important }
+
+.hidden {
+ display: none }
+
+a.toc-backref {
+ text-decoration: none ;
+ color: black }
+
+blockquote.epigraph {
+ margin: 2em 5em ; }
+
+dl.docutils dd {
+ margin-bottom: 0.5em }
+
+/* Uncomment (and remove this text!) to get bold-faced definition list terms
+dl.docutils dt {
+ font-weight: bold }
+*/
+
+div.abstract {
+ margin: 2em 5em }
+
+div.abstract p.topic-title {
+ font-weight: bold ;
+ text-align: center }
+
+div.admonition, div.attention, div.caution, div.danger, div.error,
+div.hint, div.important, div.note, div.tip, div.warning {
+ margin: 2em ;
+ border: medium outset ;
+ padding: 1em }
+
+div.admonition p.admonition-title, div.hint p.admonition-title,
+div.important p.admonition-title, div.note p.admonition-title,
+div.tip p.admonition-title {
+ font-weight: bold ;
+ font-family: sans-serif }
+
+div.attention p.admonition-title, div.caution p.admonition-title,
+div.danger p.admonition-title, div.error p.admonition-title,
+div.warning p.admonition-title {
+ color: red ;
+ font-weight: bold ;
+ font-family: sans-serif }
+
+/* Uncomment (and remove this text!) to get reduced vertical space in
+ compound paragraphs.
+div.compound .compound-first, div.compound .compound-middle {
+ margin-bottom: 0.5em }
+
+div.compound .compound-last, div.compound .compound-middle {
+ margin-top: 0.5em }
+*/
+
+div.dedication {
+ margin: 2em 5em ;
+ text-align: center ;
+ font-style: italic }
+
+div.dedication p.topic-title {
+ font-weight: bold ;
+ font-style: normal }
+
+div.figure {
+ margin-left: 2em ;
+ margin-right: 2em }
+
+div.footer, div.header {
+ clear: both;
+ font-size: smaller }
+
+div.line-block {
+ display: block ;
+ margin-top: 1em ;
+ margin-bottom: 1em }
+
+div.line-block div.line-block {
+ margin-top: 0 ;
+ margin-bottom: 0 ;
+ margin-left: 1.5em }
+
+div.sidebar {
+ margin-left: 1em ;
+ border: medium outset ;
+ padding: 1em ;
+ background-color: #ffffee ;
+ width: 40% ;
+ float: right ;
+ clear: right }
+
+div.sidebar p.rubric {
+ font-family: sans-serif ;
+ font-size: medium }
+
+div.system-messages {
+ margin: 5em }
+
+div.system-messages h1 {
+ color: red }
+
+div.system-message {
+ border: medium outset ;
+ padding: 1em }
+
+div.system-message p.system-message-title {
+ color: red ;
+ font-weight: bold }
+
+div.topic {
+ margin: 2em }
+
+h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
+h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
+ margin-top: 0.4em }
+
+h1.title {
+ text-align: center }
+
+h2.subtitle {
+ text-align: center }
+
+hr.docutils {
+ width: 75% }
+
+img.align-left {
+ clear: left }
+
+img.align-right {
+ clear: right }
+
+ol.simple, ul.simple {
+ margin-bottom: 1em }
+
+ol.arabic {
+ list-style: decimal }
+
+ol.loweralpha {
+ list-style: lower-alpha }
+
+ol.upperalpha {
+ list-style: upper-alpha }
+
+ol.lowerroman {
+ list-style: lower-roman }
+
+ol.upperroman {
+ list-style: upper-roman }
+
+p.attribution {
+ text-align: right ;
+ margin-left: 50% }
+
+p.caption {
+ font-style: italic }
+
+p.credits {
+ font-style: italic ;
+ font-size: smaller }
+
+p.label {
+ white-space: nowrap }
+
+p.rubric {
+ font-weight: bold ;
+ font-size: larger ;
+ color: maroon ;
+ text-align: center }
+
+p.sidebar-title {
+ font-family: sans-serif ;
+ font-weight: bold ;
+ font-size: larger }
+
+p.sidebar-subtitle {
+ font-family: sans-serif ;
+ font-weight: bold }
+
+p.topic-title {
+ font-weight: bold }
+
+pre.address {
+ margin-bottom: 0 ;
+ margin-top: 0 ;
+ font-family: serif ;
+ font-size: 100% }
+
+pre.literal-block, pre.doctest-block {
+ margin-left: 2em ;
+ margin-right: 2em ;
+ background-color: #ffffff; }
+
+span.classifier {
+ font-family: sans-serif ;
+ font-style: oblique }
+
+span.classifier-delimiter {
+ font-family: sans-serif ;
+ font-weight: bold }
+
+span.interpreted {
+ font-family: sans-serif }
+
+span.option {
+ white-space: nowrap }
+
+span.pre {
+ white-space: pre }
+
+span.problematic {
+ color: red }
+
+span.section-subtitle {
+ /* font-size relative to parent (h1..h6 element) */
+ font-size: 80% }
+
+table.citation {
+ border-left: solid 1px gray;
+ margin-left: 1px }
+
+table.docinfo {
+ margin: 2em 4em }
+
+table.docutils {
+ margin-top: 0.5em ;
+ margin-bottom: 0.5em }
+
+table.footnote {
+ border-left: solid 1px black;
+ margin-left: 1px }
+
+table.docutils td, table.docutils th,
+table.docinfo td, table.docinfo th {
+ padding-left: 0.5em ;
+ padding-right: 0.5em ;
+ vertical-align: top }
+
+table.docutils th.field-name, table.docinfo th.docinfo-name {
+ font-weight: bold ;
+ text-align: left ;
+ white-space: nowrap ;
+ padding-left: 0 }
+
+h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
+h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
+ font-size: 100% }
+
+tt.docutils {
+ background-color: #ffffff; }
+
+ul.auto-toc {
+ list-style-type: none }