Markov: view/form/etc for teaching lines

This commit is contained in:
Brian S. Stephan 2014-04-05 14:53:05 -05:00
parent 9c08a203c7
commit 169f73cb36
5 changed files with 43 additions and 1 deletions

View File

@ -21,4 +21,12 @@ class LogUploadForm(Form):
ignore = CharField(help_text="Comma-separated list of nicks to ignore.",
required=False)
class TeachLineForm(Form):
"""Accept a line that will be imported into Markov stuff."""
context = ModelChoiceField(queryset=MarkovContext.objects.all())
line = CharField()
# vi:tabstop=4:expandtab:autoindent

View File

@ -51,6 +51,7 @@ class MarkovState(models.Model):
class Meta:
permissions = {
('import_log_file', "Can import states from a log file"),
('teach_line', "Can teach lines"),
}
unique_together = ('context', 'k1', 'k2', 'v')

View File

@ -9,6 +9,7 @@ urlpatterns = patterns('markov.views',
url(r'^$', 'index', name='markov_index'),
url(r'^context/(?P<context_id>\d+)/$', 'context_index', name='markov_context_index'),
url(r'^import/$', 'import_file', name='markov_import_file'),
url(r'^teach/$', 'teach_line', name='markov_teach_line'),
)
# vi:tabstop=4:expandtab:autoindent

View File

@ -11,7 +11,7 @@ from django.contrib.auth.decorators import permission_required
from django.http import HttpResponse
from django.shortcuts import get_object_or_404, render
from markov.forms import LogUploadForm
from markov.forms import LogUploadForm, TeachLineForm
from markov.models import MarkovContext, MarkovTarget, MarkovState
@ -75,6 +75,22 @@ def import_file(request):
return render(request, 'markov/import_file.html', {'form': form})
@permission_required('teach_line', raise_exception=True)
def teach_line(request):
"""Teach one line directly."""
if request.method == 'POST':
form = TeachLineForm(request.POST)
if form.is_valid():
line = form.cleaned_data['line']
context = form.cleaned_data['context']
_learn_line(line.rstrip(), context)
else:
form = TeachLineForm()
return render(request, 'markov/teach_line.html', {'form': form})
def _generate_line(context, topics=None, max_words=30):
"""Generate a Markov chain."""

View File

@ -0,0 +1,16 @@
{% extends 'base.html' %}
{% block title %}markov teach{% endblock %}
{% block content %}
<form id="markov_teach_line_form" action="{% url 'markov_teach_line' %}" method="post">
{% csrf_token %}
<table>
{{ form }}
</table>
<input class="submit-button" type="submit" value="Teach"/>
</form>
{% endblock %}
<!--
vi:tabstop=4:expandtab:autoindent
-->