Markov: view/form/etc for teaching lines
This commit is contained in:
parent
9c08a203c7
commit
169f73cb36
@ -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
|
||||
|
@ -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')
|
||||
|
||||
|
@ -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
|
||||
|
@ -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."""
|
||||
|
||||
|
16
templates/markov/teach_line.html
Normal file
16
templates/markov/teach_line.html
Normal 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
|
||||
-->
|
Loading…
Reference in New Issue
Block a user