Hello lru_cache.
This commit is contained in:
parent
27b9221859
commit
5fb85fb674
|
@ -1,6 +1,8 @@
|
|||
from webtools import settings
|
||||
from django import forms
|
||||
from django.forms import ModelForm, CharField
|
||||
from django.forms import CharField, ModelForm
|
||||
|
||||
from webtools import settings
|
||||
|
||||
from .models import Paste
|
||||
|
||||
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
from django.db import models
|
||||
from django.core.validators import MaxLengthValidator
|
||||
from django.utils import timezone
|
||||
from datetime import datetime, timedelta
|
||||
from webtools import settings
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
import shortuuid
|
||||
from django.core.validators import MaxLengthValidator
|
||||
from django.db import models
|
||||
from django.utils import timezone
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from webtools import settings
|
||||
|
||||
|
||||
class Paste(models.Model):
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
from django.urls import path
|
||||
from django.views.static import serve
|
||||
|
||||
from paste import views
|
||||
from webtools import settings
|
||||
|
||||
|
||||
urlpatterns = [
|
||||
path("", views.index, name="index"),
|
||||
path("static/<path>", serve, {"document_root": settings.STATIC_ROOT}),
|
||||
|
|
|
@ -1,19 +1,18 @@
|
|||
import json
|
||||
from pathlib import Path
|
||||
from functools import lru_cache
|
||||
|
||||
import pygments
|
||||
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
|
||||
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 Paste
|
||||
from webtools import settings
|
||||
|
||||
|
||||
@csrf_exempt
|
||||
|
@ -51,26 +50,19 @@ def show(request, slug):
|
|||
paste.incr_viewcount()
|
||||
|
||||
if "html" in request.headers["accept"]:
|
||||
render_method = render_pygments
|
||||
return HttpResponse(pygmentize(paste.filename, paste.content))
|
||||
else:
|
||||
render_method = render_raw
|
||||
return render_method(request, paste, {"slug": slug})
|
||||
return HttpResponse(paste.content, content_type="text/plain")
|
||||
|
||||
|
||||
def render_pygments(request, paste, data):
|
||||
"""Renders Pygments template."""
|
||||
@lru_cache(1024)
|
||||
def pygmentize(filename, filecontents):
|
||||
try:
|
||||
lexer = get_lexer_by_name(Path(paste.filename).suffix.strip("."))
|
||||
lexer = get_lexer_by_name(filename.split(".")[-1])
|
||||
except pygments.util.ClassNotFound:
|
||||
lexer = get_lexer_by_name(settings.PASTE["default_language"])
|
||||
formatter = HtmlFormatter(style="emacs")
|
||||
data["paste"] = paste
|
||||
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)
|
||||
|
||||
|
||||
def render_raw(request, paste, data):
|
||||
"""Renders RAW content."""
|
||||
return HttpResponse(paste.content, content_type="text/plain")
|
||||
data = {}
|
||||
data["filename"] = filename
|
||||
data["highlighted"] = pygments.highlight(filecontents, lexer, formatter)
|
||||
return loader.render_to_string("paste/show-pygments.html", data)
|
||||
|
|
Loading…
Reference in New Issue