Drop now unused Language model.
This commit is contained in:
parent
bc75975da3
commit
27b9221859
|
@ -1 +0,0 @@
|
||||||
[{"model": "paste.language", "pk": 1, "fields": {"name": "Bash (shell)", "slug": "bash"}}, {"model": "paste.language", "pk": 2, "fields": {"name": "C#", "slug": "csharp"}}, {"model": "paste.language", "pk": 3, "fields": {"name": "C", "slug": "c"}}, {"model": "paste.language", "pk": 4, "fields": {"name": "C++", "slug": "cpp"}}, {"model": "paste.language", "pk": 5, "fields": {"name": "CSS", "slug": "css"}}, {"model": "paste.language", "pk": 6, "fields": {"name": "Diff", "slug": "diff"}}, {"model": "paste.language", "pk": 7, "fields": {"name": "Go", "slug": "go"}}, {"model": "paste.language", "pk": 8, "fields": {"name": "HTML", "slug": "html"}}, {"model": "paste.language", "pk": 9, "fields": {"name": "Java", "slug": "java"}}, {"model": "paste.language", "pk": 10, "fields": {"name": "Javascript", "slug": "javascript"}}, {"model": "paste.language", "pk": 11, "fields": {"name": "Perl", "slug": "perl"}}, {"model": "paste.language", "pk": 12, "fields": {"name": "PHP", "slug": "php"}}, {"model": "paste.language", "pk": 13, "fields": {"name": "Plain text", "slug": "text"}}, {"model": "paste.language", "pk": 14, "fields": {"name": "Python", "slug": "python"}}, {"model": "paste.language", "pk": 15, "fields": {"name": "Ruby", "slug": "ruby"}}, {"model": "paste.language", "pk": 16, "fields": {"name": "SQL", "slug": "sql"}}, {"model": "paste.language", "pk": 17, "fields": {"name": "XML", "slug": "xml"}}, {"model": "paste.language", "pk": 18, "fields": {"name": "YAML", "slug": "yaml"}}]
|
|
|
@ -1,7 +1,7 @@
|
||||||
from webtools import settings
|
from webtools import settings
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.forms import ModelForm, CharField
|
from django.forms import ModelForm, CharField
|
||||||
from .models import Paste, Language
|
from .models import Paste
|
||||||
|
|
||||||
|
|
||||||
class PasteForm(ModelForm):
|
class PasteForm(ModelForm):
|
||||||
|
@ -14,7 +14,7 @@ class PasteForm(ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Paste
|
model = Paste
|
||||||
fields = [
|
fields = [
|
||||||
"language",
|
"filename",
|
||||||
"content",
|
"content",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
# Generated by Django 4.2 on 2023-04-21 09:18
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("paste", "0006_remove_paste_title"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name="paste",
|
||||||
|
name="language",
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="paste",
|
||||||
|
name="filename",
|
||||||
|
field=models.CharField(default="", max_length=255),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="paste",
|
||||||
|
name="paste_time",
|
||||||
|
field=models.DateTimeField(auto_now_add=True),
|
||||||
|
),
|
||||||
|
migrations.DeleteModel(
|
||||||
|
name="Language",
|
||||||
|
),
|
||||||
|
]
|
|
@ -7,42 +7,16 @@ from django.utils.translation import gettext_lazy as _
|
||||||
import shortuuid
|
import shortuuid
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Language(models.Model):
|
|
||||||
"""Language object."""
|
|
||||||
|
|
||||||
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)
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return str(_(self.name))
|
|
||||||
|
|
||||||
|
|
||||||
class Paste(models.Model):
|
class Paste(models.Model):
|
||||||
"""Paste object."""
|
"""Paste object."""
|
||||||
|
|
||||||
language = models.ForeignKey(
|
filename = models.CharField(max_length=255, default="")
|
||||||
Language, default=14, on_delete=models.SET_NULL, null=True
|
|
||||||
)
|
|
||||||
slug = models.SlugField(unique=True, editable=False)
|
slug = models.SlugField(unique=True, editable=False)
|
||||||
content = models.TextField(
|
content = models.TextField(
|
||||||
validators=[MaxLengthValidator(settings.PASTE["max_characters"])]
|
validators=[MaxLengthValidator(settings.PASTE["max_characters"])]
|
||||||
)
|
)
|
||||||
size = models.IntegerField(default=0, editable=False)
|
size = models.IntegerField(default=0, editable=False)
|
||||||
paste_time = models.DateTimeField(default=datetime.now, editable=False)
|
paste_time = models.DateTimeField(auto_now_add=True)
|
||||||
viewcount = models.IntegerField(default=0, editable=False)
|
viewcount = models.IntegerField(default=0, editable=False)
|
||||||
|
|
||||||
def compute_size(self):
|
def compute_size(self):
|
||||||
|
|
|
@ -3,18 +3,16 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
{% compress css %}
|
{% compress css %}
|
||||||
<link href="/static/css/font-awesome.min.css" rel="stylesheet">
|
<link href="/static/css/font-awesome.min.css" rel="stylesheet">
|
||||||
<link href="/static/css/pygments-highlight.css" rel="stylesheet">
|
<link href="/static/css/pygments-highlight.css" rel="stylesheet">
|
||||||
{% endcompress %}
|
{% endcompress %}
|
||||||
{% block extrastyle %}{% endblock %}
|
{% block extrastyle %}{% endblock %}
|
||||||
<title>{% block title %}{% endblock %} - {{ DISPLAY_NAME }}</title>
|
<title>{% block title %}{{ DISPLAY_NAME }}{% endblock %}</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div>
|
<div>
|
||||||
{% block content %}{% endblock %}
|
{% block content %}{% endblock %}
|
||||||
</div>
|
</div>
|
||||||
{% block javascript %}{% endblock %}
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -1,23 +1,21 @@
|
||||||
{% extends "base.html" %}{% load filters %}
|
{% extends "base.html" %}
|
||||||
|
{% load filters %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
{% load compress %}
|
{% load compress %}
|
||||||
{% block title %}{% trans 'Paste something' %}{% endblock %}
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h1>Paf'Py</h1>
|
<h1>Paf'Py</h1>
|
||||||
Et Paf.
|
<p>Et Paf.</p>
|
||||||
|
|
||||||
Ce « pastebin-like » ne peut être utilisé qu'en ligne de commande, soit avec <tt>curl</tt> :
|
<p>Ce « pastebin-like » s’utilise en ligne de commande, soit avec <tt>curl</tt> :</p>
|
||||||
|
|
||||||
<div class="highlight"><pre><span></span>curl {{ request.build_absolute_uri }} <span class="o">-F</span>python<span class="o">=</span>@hello.py
|
<div class="highlight"><pre><span></span>curl {{ request.build_absolute_uri }} <span class="o">-F</span>hello.py<span class="o">=</span>@hello.py
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
<p>Le nom, entre <tt>-F</tt> et <tt>=</tt> sert à choisir la coloration syntaxique.</p>
|
<p>Mais le mieux est de l'utiliser avec une fonction <tt>bash</tt> :</p>
|
||||||
|
|
||||||
<p>Le mieux est de l'utiliser avec une fonction <tt>bash</tt> :</p>
|
|
||||||
|
|
||||||
<div class="highlight"><pre><span></span>pafpy<span class="o">()</span>
|
<div class="highlight"><pre><span></span>pafpy<span class="o">()</span>
|
||||||
<span class="o">{</span>
|
<span class="o">{</span>
|
||||||
curl {{request.build_absolute_uri}} -F<span class="s2">"</span><span class="si">${</span><span class="nv">1</span><span class="p">##*.</span><span class="si">}</span><span class="s2">=@</span><span class="nv">$1</span><span class="s2">"</span>
|
curl {{request.build_absolute_uri}} -F<span class="s2">"</span><span class="nv">$1</span><span class="s2">=@</span><span class="nv">$1</span><span class="s2">"</span>
|
||||||
<span class="o">}</span>
|
<span class="o">}</span>
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
|
|
|
@ -2,9 +2,7 @@
|
||||||
{% block extrastyle %}
|
{% block extrastyle %}
|
||||||
<link href="/static/css/pasteque.css" rel="stylesheet">
|
<link href="/static/css/pasteque.css" rel="stylesheet">
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
{% block title %}{{ filename }}{% endblock %}
|
||||||
{% block title %}{{ slug }}{% endblock %}
|
|
||||||
{% block nav %}{% endblock %}
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{{ highlighted|safe }}
|
{{ highlighted|safe }}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -1,18 +1,19 @@
|
||||||
import json
|
import json
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
from django.http import HttpResponse, HttpResponseRedirect
|
from django.http import HttpResponse, HttpResponseRedirect
|
||||||
from django.shortcuts import get_object_or_404, render
|
from django.shortcuts import get_object_or_404, render
|
||||||
from django.template import RequestContext, loader
|
from django.template import RequestContext, loader
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.views.decorators.csrf import csrf_exempt
|
from django.views.decorators.csrf import csrf_exempt
|
||||||
from pygments import highlight
|
import pygments
|
||||||
from pygments.formatters import HtmlFormatter
|
from pygments.formatters import HtmlFormatter
|
||||||
from pygments.lexers import get_lexer_by_name
|
from pygments.lexers import get_lexer_by_name
|
||||||
|
|
||||||
from webtools import settings
|
from webtools import settings
|
||||||
|
|
||||||
from paste.forms import PasteForm
|
from paste.forms import PasteForm
|
||||||
from paste.models import Language, Paste
|
from paste.models import Paste
|
||||||
|
|
||||||
|
|
||||||
@csrf_exempt
|
@csrf_exempt
|
||||||
|
@ -22,16 +23,16 @@ def index(request):
|
||||||
return render(request, "paste/index.html")
|
return render(request, "paste/index.html")
|
||||||
paste = Paste()
|
paste = Paste()
|
||||||
paste.choose_slug()
|
paste.choose_slug()
|
||||||
if request.FILES:
|
if not request.FILES:
|
||||||
(language_name, the_file), *_ = request.FILES.items()
|
return HttpResponse(json.dumps({"error": "Please provide a file."}, indent=4))
|
||||||
language = Language.by_name(language_name)
|
(filename, the_file), *_ = request.FILES.items()
|
||||||
form = PasteForm(
|
form = PasteForm(
|
||||||
{
|
{
|
||||||
"language": language.id,
|
"filename": filename,
|
||||||
"content": the_file.read().decode(),
|
"content": the_file.read().decode(),
|
||||||
},
|
},
|
||||||
instance=paste,
|
instance=paste,
|
||||||
)
|
)
|
||||||
if not form.is_valid():
|
if not form.is_valid():
|
||||||
return HttpResponse(json.dumps(form.errors, indent=4))
|
return HttpResponse(json.dumps(form.errors, indent=4))
|
||||||
form.save()
|
form.save()
|
||||||
|
@ -58,11 +59,14 @@ def show(request, slug):
|
||||||
|
|
||||||
def render_pygments(request, paste, data):
|
def render_pygments(request, paste, data):
|
||||||
"""Renders Pygments template."""
|
"""Renders Pygments template."""
|
||||||
lexer = get_lexer_by_name(paste.language.slug)
|
try:
|
||||||
|
lexer = get_lexer_by_name(Path(paste.filename).suffix.strip("."))
|
||||||
|
except pygments.util.ClassNotFound:
|
||||||
|
lexer = get_lexer_by_name(settings.PASTE["default_language"])
|
||||||
formatter = HtmlFormatter(style="emacs")
|
formatter = HtmlFormatter(style="emacs")
|
||||||
highlighted_content = highlight(paste.content, lexer, formatter)
|
|
||||||
data["paste"] = paste
|
data["paste"] = paste
|
||||||
data["highlighted"] = highlighted_content
|
data["filename"] = paste.filename
|
||||||
|
data["highlighted"] = pygments.highlight(paste.content, lexer, formatter)
|
||||||
rendered = loader.render_to_string("paste/show-pygments.html", data, request)
|
rendered = loader.render_to_string("paste/show-pygments.html", data, request)
|
||||||
return HttpResponse(rendered)
|
return HttpResponse(rendered)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue