2009-05-13 05:30:04 +01:00
import troggle . settings as settings
from django import forms
2009-05-13 05:32:01 +01:00
from troggle . expo . models import LogbookEntry
2009-05-13 05:30:04 +01:00
import random
import re
def weighted_choice ( lst ) :
n = random . uniform ( 0 , 1 )
for item , weight in lst :
if n < weight :
break
n = n - weight
return item
def randomLogbookSentence ( ) :
randSent = { }
2009-05-13 05:35:59 +01:00
# needs to handle empty logbooks without crashing
2009-05-13 05:30:04 +01:00
#Choose a random logbook entry
randSent [ ' entry ' ] = LogbookEntry . objects . order_by ( ' ? ' ) [ 0 ]
#Choose again if there are no sentances (this happens if it is a placeholder entry)
while len ( re . findall ( ' [A-Z].*? \ . ' , randSent [ ' entry ' ] . text ) ) == 0 :
randSent [ ' entry ' ] = LogbookEntry . objects . order_by ( ' ? ' ) [ 0 ]
#Choose a random sentence from that entry. Store the sentence as randSent['sentence'], and the number of that sentence in the entry as randSent['number']
sentenceList = re . findall ( ' [A-Z].*? \ . ' , randSent [ ' entry ' ] . text )
randSent [ ' number ' ] = random . randrange ( 0 , len ( sentenceList ) )
randSent [ ' sentence ' ] = sentenceList [ randSent [ ' number ' ] ]
return randSent