renamed directory
This commit is contained in:
commit
830b64f0e1
6 changed files with 269 additions and 0 deletions
133
tycker.py
Normal file
133
tycker.py
Normal file
|
@ -0,0 +1,133 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import os
|
||||
# the basedir is the parent dir of the location of this script
|
||||
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
# Somehow "/usr/lib/python2.X/dist-packages" is missing from sys.path - thus bobo is not found.
|
||||
# This applies to libapache2-mod-wsgi (3.3-2).
|
||||
import sys
|
||||
for path in list(sys.path):
|
||||
options = []
|
||||
parent_dir, last_dir = os.path.split(path)
|
||||
options.append(os.path.join(path, "dist-packages"))
|
||||
options.append(os.path.join(parent_dir, "pymodules", last_dir))
|
||||
for option in options:
|
||||
if os.path.isdir(option):
|
||||
sys.path.append(option)
|
||||
|
||||
DATE_FORMAT = "%H:%M %d.%m.%Y"
|
||||
PAGE_SIZE = 4
|
||||
FILENAME_TEMPLATE = "ticker%d.html"
|
||||
FULL_PATH_FILENAME_TEMPLATE = os.path.join(BASE_DIR, os.path.pardir, FILENAME_TEMPLATE)
|
||||
BASE_URL = "./"
|
||||
|
||||
import datetime
|
||||
import bobo
|
||||
import sqlobject
|
||||
import genshi.template
|
||||
|
||||
|
||||
db_uri = "sqlite:///%s/tycker.sqlite" % BASE_DIR
|
||||
sqlobject.sqlhub.processConnection = sqlobject.connectionForURI(db_uri)
|
||||
|
||||
loader = genshi.template.TemplateLoader(os.path.join(BASE_DIR, 'templates'), auto_reload=True)
|
||||
|
||||
|
||||
class Entry(sqlobject.SQLObject):
|
||||
timestamp = sqlobject.DateTimeCol()
|
||||
title = sqlobject.UnicodeCol()
|
||||
content = sqlobject.UnicodeCol()
|
||||
|
||||
|
||||
def render(filename, **values):
|
||||
stream = loader.load(filename).generate(**values)
|
||||
return stream.render("html", doctype="html")
|
||||
|
||||
def get_filename(index):
|
||||
return FULL_PATH_FILENAME_TEMPLATE % index
|
||||
|
||||
def get_link(index):
|
||||
return FILENAME_TEMPLATE % index
|
||||
|
||||
def update_static_html():
|
||||
entries = list(Entry.select().orderBy("-timestamp"))
|
||||
file_index = 1
|
||||
while entries:
|
||||
current = entries[:PAGE_SIZE]
|
||||
entries = entries[PAGE_SIZE:]
|
||||
current_filename = get_filename(file_index)
|
||||
if file_index > 1:
|
||||
previous_link = get_link(file_index - 1)
|
||||
else:
|
||||
previous_link = None
|
||||
if entries:
|
||||
next_link = get_link(file_index + 1)
|
||||
else:
|
||||
next_link = None
|
||||
values = { "entries": current,
|
||||
"prev_link": previous_link,
|
||||
"next_link": next_link,
|
||||
}
|
||||
rendered = render("display.html", **values)
|
||||
open(current_filename, "w").write(rendered)
|
||||
file_index += 1
|
||||
|
||||
@bobo.query('/submit')
|
||||
def submit_entry(entry_id=None, title=None, content=None, date=None):
|
||||
title = title.strip()
|
||||
content = content.strip()
|
||||
if not all((title, content, date)):
|
||||
return bobo.redirect(BASE_URL)
|
||||
try:
|
||||
date = datetime.datetime.strptime(date, DATE_FORMAT)
|
||||
except ValueError:
|
||||
bobo.redirect(BASE_URL)
|
||||
if entry_id is None:
|
||||
Entry(title=title, content=content, timestamp=date)
|
||||
else:
|
||||
try:
|
||||
entry = Entry.get(entry_id)
|
||||
except sqlobject.SQLObjectNotFound:
|
||||
bobo.redirect(BASE_URL)
|
||||
entry.title = title
|
||||
entry.content = content
|
||||
entry.date = date
|
||||
update_static_html()
|
||||
return bobo.redirect(BASE_URL)
|
||||
|
||||
@bobo.query('/delete')
|
||||
def delete_entry(entry_id):
|
||||
try:
|
||||
Entry.delete(entry_id)
|
||||
except sqlobject.SQLObjectNotFound:
|
||||
bobo.redirect(BASE_URL)
|
||||
update_static_html()
|
||||
return bobo.redirect(BASE_URL)
|
||||
|
||||
@bobo.query('/generate')
|
||||
def generate_static():
|
||||
update_static_html()
|
||||
return bobo.redirect(BASE_URL)
|
||||
|
||||
@bobo.query('/')
|
||||
def show_entries():
|
||||
values = {}
|
||||
values["entries"] = Entry.select().orderBy("-timestamp")
|
||||
values["date_format"] = DATE_FORMAT
|
||||
values["static_url"] = get_link(1)
|
||||
return render("admin_show_entries.html", **values)
|
||||
|
||||
@bobo.query('')
|
||||
def redirect_base():
|
||||
return bobo.redirect(os.path.split(__file__)[1] + "/")
|
||||
|
||||
|
||||
for table in (Entry, ):
|
||||
#table.dropTable()
|
||||
if not table.tableExists():
|
||||
table.createTable()
|
||||
|
||||
application = bobo.Application(bobo_resources=__name__)
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue