paperless-ngx/src/documents/views.py

73 lines
1.8 KiB
Python
Raw Normal View History

2016-01-01 16:13:59 +00:00
from django.http import HttpResponse
from django.template.defaultfilters import slugify
2016-02-08 23:46:16 +00:00
from django.views.decorators.csrf import csrf_exempt
from django.views.generic import FormView, DetailView
2016-01-01 16:13:59 +00:00
2016-02-16 09:28:34 +00:00
from rest_framework.viewsets import ModelViewSet
from paperless.db import GnuPG
2016-02-08 23:46:16 +00:00
from .forms import UploadForm
2016-02-16 09:28:34 +00:00
from .models import Sender, Tag, Document
from .serialisers import SenderSerializer, TagSerializer, DocumentSerializer
2016-01-01 16:13:59 +00:00
class PdfView(DetailView):
model = Document
def render_to_response(self, context, **response_kwargs):
"""
Override the default to return the unencrypted PDF as raw data.
"""
2016-01-29 23:18:03 +00:00
content_types = {
Document.TYPE_PDF: "application/pdf",
Document.TYPE_PNG: "image/png",
Document.TYPE_JPG: "image/jpeg",
Document.TYPE_GIF: "image/gif",
Document.TYPE_TIF: "image/tiff",
}
response = HttpResponse(
2016-01-29 23:18:03 +00:00
GnuPG.decrypted(self.object.source_file),
content_type=content_types[self.object.file_type]
)
2016-01-01 16:13:59 +00:00
response["Content-Disposition"] = 'attachment; filename="{}"'.format(
2016-01-29 23:18:03 +00:00
slugify(str(self.object)) + "." + self.object.file_type)
2016-01-01 16:13:59 +00:00
return response
2016-02-08 23:46:16 +00:00
class PushView(FormView):
"""
A crude REST API for creating documents.
"""
form_class = UploadForm
@classmethod
def as_view(cls, **kwargs):
return csrf_exempt(FormView.as_view(**kwargs))
def form_valid(self, form):
return HttpResponse("1")
def form_invalid(self, form):
return HttpResponse("0")
2016-02-16 09:28:34 +00:00
class SenderViewSet(ModelViewSet):
model = Sender
serializer_class = SenderSerializer
class TagViewSet(ModelViewSet):
model = Tag
serializer_class = TagSerializer
class DocumentViewSet(ModelViewSet):
model = Document
serializer_class = DocumentSerializer