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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user