The unified diff between revisions [8c5c8a3d..] and [e331aa42..] is displayed below. It can also be downloaded as a raw diff.
This diff has been restricted to the following files: 'poetweb.py'
#
#
# patch "poetweb.py"
# from [b7f62177c811a28243a96a0921525f950120e23c]
# to [4ead8fdbbb9b582210fe226b0fc04022284712b2]
#
============================================================
--- poetweb.py b7f62177c811a28243a96a0921525f950120e23c
+++ poetweb.py 4ead8fdbbb9b582210fe226b0fc04022284712b2
@@ -6,14 +6,13 @@
# All rights reserved.
#
-import datetime
-import urlparse
-import web
from poet3 import Poet3
from forms import haiku
-import cPickle
+
+import urlparse
import config
import syslog
+import web
import re
# for debugging, logging of referrers, etc.
@@ -32,6 +31,7 @@ class NewLivejournal:
return 'http://users.%s/%s/' % (site, username)
else:
return 'http://%s.%s/' % (username, site)
+
@classmethod
def rss_uri(self, site, username):
return NewLivejournal.user_uri(site, username) + 'data/rss'
@@ -39,6 +39,7 @@ rss_lookup = {
rss_lookup = {
'livejournal.com' : NewLivejournal,
'deadjournal.com' : NewLivejournal,
+ 'greatestjournal.com' : NewLivejournal,
}
urls = (
@@ -49,32 +50,6 @@ urls = (
'/robots.txt', 'RobotsView',
)
-def gen_haiku(rss_uri):
- poet = Poet3(rss_uri)
- last_update = poet.storage.mtime('last_update')
- if datetime.datetime.now() - last_update > config.update_interval:
- poet.update()
- # FIXME this doesn't work..
- poet.storage.open('last_update', 'w').write('')
- poet.build_state()
- if poet.symbol_state.forward_markov.total == 0:
- return -1, None
-
- # if there has been no upwriting yet, then let's do some now.
- # we save the resulting combined tokens, so the code uses those
- # when adding new tokens to the corpus from now on
- if not poet.upwritten_seqs:
- to_upwrite = poet.symbol_state.chunkable()
- cPickle.dump(to_upwrite, poet.storage.open('upwritten.txt', 'w'))
- poet.upwrite(to_upwrite)
-
- for attempt in xrange(config.haiku_attempts):
- poem = haiku(poet)
- if poem != None:
- break
-
- return attempt, poem
-
class Renderer:
def __init__(self):
# any templates that can be inherited from, should be added to the list here
@@ -107,14 +82,25 @@ class HaikuView:
haiku_base = '''<form action="%(dynamic_uri_path)spost/haiku" method="post"><table align="center" border="0" bgcolor="#DDDDFF" style="border: 1px solid black;"><tr><th>LJ-Haiku<sup>2</sup> for %(username)s</th></tr><tr><td><blockquote align="right" style="text-align:right;border-right:1px solid #808080; padding:5px;"> %(haiku)s</blockquote></td></tr><tr><td align="center"><input type="text" size=8 name="haiku_username" value="%(username)s" /> @ <select name="haiku_server"><option selected value="%(mysite)s">%(mysite)s</option><option value="x">Other...</option></select><input value="%(username)s" type="hidden" name="haiku_referrer" /></td></tr><tr><td align="center"><input type="submit" value="What's my Haiku?"></td></tr><tr><td align="center" bgcolor="#CCCCCC"><small><a href="http://www.livejournal.com/users/grahame/">Created by Grahame</a></small></td></tr></table></form>'''
class HaikuView:
+ def gen_haiku(self, site, rss_uri):
+ poet = Poet3(site, rss_uri)
+ if not poet.has_data():
+ return -1, None
+
+ for attempt in xrange(config.haiku_attempts):
+ poem = haiku(poet)
+ if poem != None:
+ break
+
+ return attempt, poem
+
def GET(self, site, username):
if not rss_lookup.has_key(site):
## fixme; this is a site we don't know about; let's return a friendly
## page suggesting the user might want to ask about adding it
return web.notfound()
- uri = rss_lookup[site].rss_uri(site, username)
- web.debug(uri)
- attempts, haiku = gen_haiku(uri)
+ rss_uri = rss_lookup[site].rss_uri(site, username)
+ attempts, haiku = self.gen_haiku(site, rss_uri)
if haiku == None:
haiku_code = None
else:
@@ -122,7 +108,6 @@ class HaikuView:
'dynamic_uri_path' : config.dynamic_uri_path,
'username' : username,
'haiku' : '<br />'.join(' '.join(t) for t in haiku) }
- web.debug("haiku_code=%s" % haiku_code)
renderer.render("haiku.html",
attempts=attempts,
page_title="your haiku",
@@ -132,6 +117,7 @@ class PostMemeView:
class PostMemeView:
def GET(self, meme_name):
web.seeother(config.dynamic_uri_path)
+
def POST(self, meme_name):
meme_name = meme_name.lower()
i = web.input()