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.",
|
ignore = CharField(help_text="Comma-separated list of nicks to ignore.",
|
||||||
required=False)
|
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
|
# vi:tabstop=4:expandtab:autoindent
|
||||||
|
|
|
@ -51,6 +51,7 @@ class MarkovState(models.Model):
|
||||||
class Meta:
|
class Meta:
|
||||||
permissions = {
|
permissions = {
|
||||||
('import_log_file', "Can import states from a log file"),
|
('import_log_file', "Can import states from a log file"),
|
||||||
|
('teach_line', "Can teach lines"),
|
||||||
}
|
}
|
||||||
unique_together = ('context', 'k1', 'k2', 'v')
|
unique_together = ('context', 'k1', 'k2', 'v')
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ urlpatterns = patterns('markov.views',
|
||||||
url(r'^$', 'index', name='markov_index'),
|
url(r'^$', 'index', name='markov_index'),
|
||||||
url(r'^context/(?P<context_id>\d+)/$', 'context_index', name='markov_context_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'^import/$', 'import_file', name='markov_import_file'),
|
||||||
|
url(r'^teach/$', 'teach_line', name='markov_teach_line'),
|
||||||
)
|
)
|
||||||
|
|
||||||
# vi:tabstop=4:expandtab:autoindent
|
# vi:tabstop=4:expandtab:autoindent
|
||||||
|
|
|
@ -11,7 +11,7 @@ from django.contrib.auth.decorators import permission_required
|
||||||
from django.http import HttpResponse
|
from django.http import HttpResponse
|
||||||
from django.shortcuts import get_object_or_404, render
|
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
|
from markov.models import MarkovContext, MarkovTarget, MarkovState
|
||||||
|
|
||||||
|
|
||||||
|
@ -75,6 +75,22 @@ def import_file(request):
|
||||||
return render(request, 'markov/import_file.html', {'form': form})
|
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):
|
def _generate_line(context, topics=None, max_words=30):
|
||||||
"""Generate a Markov chain."""
|
"""Generate a Markov chain."""
|
||||||
|
|
||||||
|
|
|
@ -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