use adminplus to add admin views
move the markov learning views into the admin
This commit is contained in:
parent
6eb589d2d6
commit
65a03ced03
@ -29,13 +29,14 @@ ALLOWED_HOSTS = []
|
|||||||
# Application definition
|
# Application definition
|
||||||
|
|
||||||
INSTALLED_APPS = (
|
INSTALLED_APPS = (
|
||||||
'django.contrib.admin',
|
'django.contrib.admin.apps.SimpleAdminConfig',
|
||||||
'django.contrib.auth',
|
'django.contrib.auth',
|
||||||
'django.contrib.contenttypes',
|
'django.contrib.contenttypes',
|
||||||
'django.contrib.sessions',
|
'django.contrib.sessions',
|
||||||
'django.contrib.messages',
|
'django.contrib.messages',
|
||||||
'django.contrib.staticfiles',
|
'django.contrib.staticfiles',
|
||||||
'django_extensions',
|
'django_extensions',
|
||||||
|
'adminplus',
|
||||||
'facts',
|
'facts',
|
||||||
'ircbot',
|
'ircbot',
|
||||||
'karma',
|
'karma',
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
from django.conf.urls import patterns, include, url
|
from django.conf.urls import patterns, include, url
|
||||||
|
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
|
||||||
|
from adminplus.sites import AdminSitePlus
|
||||||
|
|
||||||
|
admin.site = AdminSitePlus()
|
||||||
admin.autodiscover()
|
admin.autodiscover()
|
||||||
|
|
||||||
urlpatterns = patterns('',
|
urlpatterns = patterns('',
|
||||||
|
@ -1,7 +1,83 @@
|
|||||||
from django.contrib import admin
|
"""Manage Markov models and administrative commands."""
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
|
from django.contrib import admin
|
||||||
|
from django.contrib.auth.decorators import permission_required
|
||||||
|
from django.shortcuts import render
|
||||||
|
|
||||||
|
from markov.forms import LogUploadForm, TeachLineForm
|
||||||
|
import markov.lib as markovlib
|
||||||
from markov.models import MarkovContext, MarkovTarget, MarkovState
|
from markov.models import MarkovContext, MarkovTarget, MarkovState
|
||||||
|
|
||||||
|
|
||||||
|
log = logging.getLogger('markov.admin')
|
||||||
|
|
||||||
|
|
||||||
admin.site.register(MarkovContext)
|
admin.site.register(MarkovContext)
|
||||||
admin.site.register(MarkovTarget)
|
admin.site.register(MarkovTarget)
|
||||||
admin.site.register(MarkovState)
|
admin.site.register(MarkovState)
|
||||||
|
|
||||||
|
|
||||||
|
@permission_required('import_log_file', raise_exception=True)
|
||||||
|
def import_file(request):
|
||||||
|
"""Accept a file upload and turn it into markov stuff.
|
||||||
|
|
||||||
|
Current file formats supported:
|
||||||
|
* weechat
|
||||||
|
"""
|
||||||
|
|
||||||
|
if request.method == 'POST':
|
||||||
|
form = LogUploadForm(request.POST, request.FILES)
|
||||||
|
if form.is_valid():
|
||||||
|
log_file = request.FILES['log_file']
|
||||||
|
context = form.cleaned_data['context']
|
||||||
|
ignores = form.cleaned_data['ignore_nicks'].split(',')
|
||||||
|
strips = form.cleaned_data['strip_prefixes'].split(' ')
|
||||||
|
|
||||||
|
whos = []
|
||||||
|
for line in log_file:
|
||||||
|
(timestamp, who, what) = line.decode('utf-8').split('\t', 2)
|
||||||
|
|
||||||
|
if who in ('-->', '<--', '--', ' *'):
|
||||||
|
continue
|
||||||
|
|
||||||
|
if who in ignores:
|
||||||
|
continue
|
||||||
|
|
||||||
|
whos.append(who)
|
||||||
|
|
||||||
|
# this is a line we probably care about now
|
||||||
|
what = [x for x in what.rstrip().split(' ') if x not in strips]
|
||||||
|
markovlib.learn_line(' '.join(what), context)
|
||||||
|
|
||||||
|
log.debug(set(whos))
|
||||||
|
form = LogUploadForm()
|
||||||
|
else:
|
||||||
|
form = LogUploadForm()
|
||||||
|
|
||||||
|
return render(request, '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']
|
||||||
|
strips = form.cleaned_data['strip_prefixes'].split(' ')
|
||||||
|
what = [x for x in line.rstrip().split(' ') if x not in strips]
|
||||||
|
markovlib.learn_line(' '.join(what), context)
|
||||||
|
form = TeachLineForm()
|
||||||
|
else:
|
||||||
|
form = TeachLineForm()
|
||||||
|
|
||||||
|
return render(request, 'teach_line.html', {'form': form})
|
||||||
|
|
||||||
|
|
||||||
|
admin.site.register_view('markovimportfile/', "Markov - Import log file", view=import_file,
|
||||||
|
urlname='markov_import_file')
|
||||||
|
admin.site.register_view('markovteach/', "Markov - Teach line", view=teach_line, urlname='markov_teach_line')
|
||||||
|
@ -6,6 +6,3 @@
|
|||||||
<p>{{ chain }}</p>
|
<p>{{ chain }}</p>
|
||||||
<p>in: {{ elapsed }}s</p>
|
<p>in: {{ elapsed }}s</p>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
<!--
|
|
||||||
vi:tabstop=4:expandtab:autoindent
|
|
||||||
-->
|
|
||||||
|
@ -1,16 +1,15 @@
|
|||||||
{% extends 'base.html' %}
|
{% extends 'adminplus/index.html' %}
|
||||||
|
|
||||||
{% block title %}markov import{% endblock %}
|
{% block title %}Markov - Import log file{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<form id="markov_import_file_form" enctype="multipart/form-data" action="{% url 'markov_import_file' %}" method="post">
|
<div id="content-main">
|
||||||
{% csrf_token %}
|
<form id="markov_import_file_form" enctype="multipart/form-data" action="{% url 'admin:markov_import_file' %}" method="post">
|
||||||
<table>
|
{% csrf_token %}
|
||||||
{{ form }}
|
<table>
|
||||||
</table>
|
{{ form }}
|
||||||
<input class="submit-button" type="submit" value="Import"/>
|
</table>
|
||||||
</form>
|
<input class="submit-button" type="submit" value="Import"/>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
<!--
|
|
||||||
vi:tabstop=4:expandtab:autoindent
|
|
||||||
-->
|
|
||||||
|
@ -1,16 +1,15 @@
|
|||||||
{% extends 'base.html' %}
|
{% extends 'adminplus/index.html' %}
|
||||||
|
|
||||||
{% block title %}markov teach{% endblock %}
|
{% block title %}Markov - Teach line{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<form id="markov_teach_line_form" action="{% url 'markov_teach_line' %}" method="post">
|
<div id="content-main">
|
||||||
{% csrf_token %}
|
<form id="markov_teach_line_form" action="{% url 'admin:markov_teach_line' %}" method="post">
|
||||||
<table>
|
{% csrf_token %}
|
||||||
{{ form }}
|
<table>
|
||||||
</table>
|
{{ form }}
|
||||||
<input class="submit-button" type="submit" value="Teach"/>
|
</table>
|
||||||
</form>
|
<input class="submit-button" type="submit" value="Teach"/>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
<!--
|
|
||||||
vi:tabstop=4:expandtab:autoindent
|
|
||||||
-->
|
|
||||||
|
@ -5,6 +5,4 @@ from django.conf.urls import patterns, url
|
|||||||
urlpatterns = patterns('markov.views',
|
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'^teach/$', 'teach_line', name='markov_teach_line'),
|
|
||||||
)
|
)
|
||||||
|
@ -3,11 +3,9 @@
|
|||||||
import logging
|
import logging
|
||||||
import time
|
import time
|
||||||
|
|
||||||
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, TeachLineForm
|
|
||||||
import markov.lib as markovlib
|
import markov.lib as markovlib
|
||||||
from markov.models import MarkovContext
|
from markov.models import MarkovContext
|
||||||
|
|
||||||
@ -32,61 +30,3 @@ def context_index(request, context_id):
|
|||||||
return render(request, 'context.html', {'chain': chain,
|
return render(request, 'context.html', {'chain': chain,
|
||||||
'context': context,
|
'context': context,
|
||||||
'elapsed': end_t - start_t})
|
'elapsed': end_t - start_t})
|
||||||
|
|
||||||
|
|
||||||
@permission_required('import_log_file', raise_exception=True)
|
|
||||||
def import_file(request):
|
|
||||||
"""Accept a file upload and turn it into markov stuff.
|
|
||||||
|
|
||||||
Current file formats supported:
|
|
||||||
* weechat
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
if request.method == 'POST':
|
|
||||||
form = LogUploadForm(request.POST, request.FILES)
|
|
||||||
if form.is_valid():
|
|
||||||
log_file = request.FILES['log_file']
|
|
||||||
context = form.cleaned_data['context']
|
|
||||||
ignores = form.cleaned_data['ignore_nicks'].split(',')
|
|
||||||
strips = form.cleaned_data['strip_prefixes'].split(' ')
|
|
||||||
|
|
||||||
whos = []
|
|
||||||
for line in log_file:
|
|
||||||
(timestamp, who, what) = line.decode('utf-8').split('\t', 2)
|
|
||||||
|
|
||||||
if who in ('-->', '<--', '--', ' *'):
|
|
||||||
continue
|
|
||||||
|
|
||||||
if who in ignores:
|
|
||||||
continue
|
|
||||||
|
|
||||||
whos.append(who)
|
|
||||||
|
|
||||||
# this is a line we probably care about now
|
|
||||||
what = [x for x in what.rstrip().split(' ') if x not in strips]
|
|
||||||
markovlib.learn_line(' '.join(what), context)
|
|
||||||
|
|
||||||
log.debug(set(whos))
|
|
||||||
else:
|
|
||||||
form = LogUploadForm()
|
|
||||||
|
|
||||||
return render(request, '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']
|
|
||||||
strips = form.cleaned_data['strip_prefixes'].split(' ')
|
|
||||||
what = [x for x in line.rstrip().split(' ') if x not in strips]
|
|
||||||
markovlib.learn_line(' '.join(what), context)
|
|
||||||
else:
|
|
||||||
form = TeachLineForm()
|
|
||||||
|
|
||||||
return render(request, 'teach_line.html', {'form': form})
|
|
||||||
|
@ -29,3 +29,4 @@ tempora==1.3
|
|||||||
twython==3.0.0
|
twython==3.0.0
|
||||||
yg.lockfile==2.0
|
yg.lockfile==2.0
|
||||||
zc.lockfile==1.1.0
|
zc.lockfile==1.1.0
|
||||||
|
django-adminplus==0.3
|
||||||
|
Loading…
Reference in New Issue
Block a user