Get language name from file form field name.

This commit is contained in:
Julien Palard 2018-05-13 12:28:32 +02:00
parent c9e406573f
commit 63fe8deaa9
4 changed files with 14 additions and 4 deletions

View File

@ -23,6 +23,14 @@ class Language(models.Model):
name = models.CharField(max_length=200, unique=True)
slug = models.SlugField(max_length=200, unique=True)
@classmethod
def by_name(cls, name):
language = cls.objects.filter(name__icontains=name).first()
if not language:
language = cls.objects.filter(
name__iexact=settings.PASTE['default_language']).first()
return language
def __unicode__(self):
"""String representation."""
return _(self.name)

View File

@ -71,7 +71,7 @@
<button class="btn" type="submit">{% trans 'Paste' %}</button>
<input type="hidden" id="max_characters" value="{{ max_characters }}">
</form>
<div class="alert alert-info" role="alert">You can also use: <pre>curl {{ absolute_index_url }} -Ffile=@hello.py</pre></div>
<div class="alert alert-info" role="alert">You can also use: <pre>curl {{ absolute_index_url }} -Fpython=@hello.py</pre></div>
{% endblock %}
{% block javascript %}
{% if PASTE.show_char_left %}

View File

@ -3,7 +3,7 @@ from django.urls import reverse
from django.shortcuts import render, get_object_or_404
from django.http import HttpResponseRedirect
from django.views.decorators.csrf import csrf_exempt
from .models import Paste
from .models import Paste, Language
from .forms import PasteForm
from .tools import random_id
from webtools import settings
@ -19,9 +19,10 @@ def index(request):
paste_ip=request.META['REMOTE_ADDR'],
paste_agent=request.META['HTTP_USER_AGENT'])
if request.FILES:
for any_file in request.FILES.values():
for language_name, any_file in request.FILES.items():
break
form = PasteForm({'language': 14,
language = Language.by_name(language_name)
form = PasteForm({'language': language.id,
'title': any_file.name,
'private': settings.PASTE['private_by_default'],
'lifetime': settings.PASTE['default_lifetime'],

View File

@ -104,6 +104,7 @@ PASTE = {
'default_renderer': 'pygments',
'max_characters': 100000,
'default_lifetime': 60 * 24 * 7 * 365,
'default_language': 'Python',
}
LOGGING = {