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 django import forms
|
||||
from django.forms import ModelForm, CharField
|
||||
from .models import Paste, Language
|
||||
from .models import Paste
|
||||
|
||||
|
||||
class PasteForm(ModelForm):
|
||||
|
@ -14,7 +14,7 @@ class PasteForm(ModelForm):
|
|||
class Meta:
|
||||
model = Paste
|
||||
fields = [
|
||||
"language",
|
||||
"filename",
|
||||
"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
|
||||
|
||||
|
||||
|
||||
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):
|
||||
"""Paste object."""
|
||||
|
||||
language = models.ForeignKey(
|
||||
Language, default=14, on_delete=models.SET_NULL, null=True
|
||||
)
|
||||
filename = models.CharField(max_length=255, default="")
|
||||
slug = models.SlugField(unique=True, editable=False)
|
||||
content = models.TextField(
|
||||
validators=[MaxLengthValidator(settings.PASTE["max_characters"])]
|
||||
)
|
||||
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)
|
||||
|
||||
def compute_size(self):
|
||||
|
|
|
@ -3,18 +3,16 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
{% compress css %}
|
||||
<link href="/static/css/font-awesome.min.css" rel="stylesheet">
|
||||
<link href="/static/css/pygments-highlight.css" rel="stylesheet">
|
||||
{% endcompress %}
|
||||
{% block extrastyle %}{% endblock %}
|
||||
<title>{% block title %}{% endblock %} - {{ DISPLAY_NAME }}</title>
|
||||
<title>{% block title %}{{ DISPLAY_NAME }}{% endblock %}</title>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
{% block content %}{% endblock %}
|
||||
</div>
|
||||
{% block javascript %}{% endblock %}
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,23 +1,21 @@
|
|||
{% extends "base.html" %}{% load filters %}
|
||||
{% extends "base.html" %}
|
||||
{% load filters %}
|
||||
{% load i18n %}
|
||||
{% load compress %}
|
||||
{% block title %}{% trans 'Paste something' %}{% endblock %}
|
||||
{% block content %}
|
||||
<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>
|
||||
|
||||
<p>Le nom, entre <tt>-F</tt> et <tt>=</tt> sert à choisir la coloration syntaxique.</p>
|
||||
|
||||
<p>Le mieux est de l'utiliser avec une fonction <tt>bash</tt> :</p>
|
||||
<p>Mais le mieux est de l'utiliser avec une fonction <tt>bash</tt> :</p>
|
||||
|
||||
<div class="highlight"><pre><span></span>pafpy<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>
|
||||
</pre></div>
|
||||
|
||||
|
|
|
@ -2,9 +2,7 @@
|
|||
{% block extrastyle %}
|
||||
<link href="/static/css/pasteque.css" rel="stylesheet">
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}{{ slug }}{% endblock %}
|
||||
{% block nav %}{% endblock %}
|
||||
{% block title %}{{ filename }}{% endblock %}
|
||||
{% block content %}
|
||||
{{ highlighted|safe }}
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
import json
|
||||
from pathlib import Path
|
||||
|
||||
from django.http import HttpResponse, HttpResponseRedirect
|
||||
from django.shortcuts import get_object_or_404, render
|
||||
from django.template import RequestContext, loader
|
||||
from django.urls import reverse
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
from pygments import highlight
|
||||
import pygments
|
||||
from pygments.formatters import HtmlFormatter
|
||||
from pygments.lexers import get_lexer_by_name
|
||||
|
||||
from webtools import settings
|
||||
|
||||
from paste.forms import PasteForm
|
||||
from paste.models import Language, Paste
|
||||
from paste.models import Paste
|
||||
|
||||
|
||||
@csrf_exempt
|
||||
|
@ -22,16 +23,16 @@ def index(request):
|
|||
return render(request, "paste/index.html")
|
||||
paste = Paste()
|
||||
paste.choose_slug()
|
||||
if request.FILES:
|
||||
(language_name, the_file), *_ = request.FILES.items()
|
||||
language = Language.by_name(language_name)
|
||||
form = PasteForm(
|
||||
{
|
||||
"language": language.id,
|
||||
"content": the_file.read().decode(),
|
||||
},
|
||||
instance=paste,
|
||||
)
|
||||
if not request.FILES:
|
||||
return HttpResponse(json.dumps({"error": "Please provide a file."}, indent=4))
|
||||
(filename, the_file), *_ = request.FILES.items()
|
||||
form = PasteForm(
|
||||
{
|
||||
"filename": filename,
|
||||
"content": the_file.read().decode(),
|
||||
},
|
||||
instance=paste,
|
||||
)
|
||||
if not form.is_valid():
|
||||
return HttpResponse(json.dumps(form.errors, indent=4))
|
||||
form.save()
|
||||
|
@ -58,11 +59,14 @@ def show(request, slug):
|
|||
|
||||
def render_pygments(request, paste, data):
|
||||
"""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")
|
||||
highlighted_content = highlight(paste.content, lexer, formatter)
|
||||
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)
|
||||
return HttpResponse(rendered)
|
||||
|
||||
|
|
Loading…
Reference in New Issue