#961: translator, infobox in online book view
[wolnelektury.git] / apps / lesmianator / views.py
index 231ab5c..2d6d53f 100644 (file)
@@ -1,12 +1,10 @@
 # Create your views here.
 
-import pickle
+import cPickle
 from django.shortcuts import render_to_response
 from django.template import RequestContext
 from random import randint
 
-import os.path
-
 
 def _choose_word(word):
     try:
@@ -21,9 +19,11 @@ def _choose_word(word):
         return ''
 
 # load dictionary on start, it won't change
+from django.conf import settings
+
 try:
-    f = open(os.path.join(os.path.dirname(__file__), 'dictionary.p'))
-    _dictionary = pickle.load(f)
+    f = open(settings.LESMIANATOR_PICKLE)
+    _dictionary = cPickle.load(f)
 except:
     _dictionary = {}
 
@@ -33,14 +33,22 @@ def poem(request):
     word = u''
     empty = -10
     left = 1000
+    lines = 0
     if not _dictionary:
         left = 0
-    while empty != 3 and left:
+    # want at least two lines, but let Lesmianator end his stanzas
+    while (empty < 2 or lines < 2) and left:
         letter = _choose_word(word)
         letters.append(letter)
         word = word[-2:] + letter
         if letter == u'\n':
-            empty += 1
+            # count non-empty lines
+            if empty == 0:
+                lines += 1
+            # 
+            if lines >= 2:
+                empty += 1
+            lines += 1
         else:
             empty = 0
         left -= 1