mirror of
https://expo.survex.com/repositories/expoweb/.git/
synced 2024-11-30 22:01:58 +00:00
33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
import troggle.settings as settings
|
|
from django import forms
|
|
from troggle.expo.models import LogbookEntry
|
|
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={}
|
|
|
|
# needs to handle empty logbooks without crashing
|
|
|
|
#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
|