Lesmianator
[wolnelektury.git] / apps / lesmianator / views.py
diff --git a/apps/lesmianator/views.py b/apps/lesmianator/views.py
new file mode 100644 (file)
index 0000000..231ab5c
--- /dev/null
@@ -0,0 +1,52 @@
+# Create your views here.
+
+import pickle
+from django.shortcuts import render_to_response
+from django.template import RequestContext
+from random import randint
+
+import os.path
+
+
+def _choose_word(word):
+    try:
+        choices = sum((_dictionary[word][post] for post in _dictionary[word]))
+        r = randint(0, choices - 1)
+
+        for post in _dictionary[word]:
+            r -= _dictionary[word][post]
+            if r < 0:
+                return post
+    except KeyError:
+        return ''
+
+# load dictionary on start, it won't change
+try:
+    f = open(os.path.join(os.path.dirname(__file__), 'dictionary.p'))
+    _dictionary = pickle.load(f)
+except:
+    _dictionary = {}
+
+
+def poem(request):
+    letters = []
+    word = u''
+    empty = -10
+    left = 1000
+    if not _dictionary:
+        left = 0
+    while empty != 3 and left:
+        letter = _choose_word(word)
+        letters.append(letter)
+        word = word[-2:] + letter
+        if letter == u'\n':
+            empty += 1
+        else:
+            empty = 0
+        left -= 1
+
+    poem = ''.join(letters).strip()
+
+    return render_to_response('lesmianator/poem.html', 
+                {"object": poem},
+                context_instance=RequestContext(request))