Drop now unused Language model.

This commit is contained in:
Julien Palard 2023-04-21 14:32:45 +02:00
parent bc75975da3
commit 27b9221859
Signed by: mdk
GPG Key ID: 0EFC1AC1006886F8
8 changed files with 61 additions and 61 deletions

View File

@ -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"}}]

View File

@ -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",
]

View File

@ -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",
),
]

View File

@ -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):

View File

@ -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>

View File

@ -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 » sutilise 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">&quot;</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">&quot;</span>
curl {{request.build_absolute_uri}} -F<span class="s2">&quot;</span><span class="nv">$1</span><span class="s2">=@</span><span class="nv">$1</span><span class="s2">&quot;</span>
<span class="o">}</span>
</pre></div>

View File

@ -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 %}

View File

@ -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)