mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-04-02 13:45:10 -05:00
Merge pull request #62 from danielquinn/issue/53
Compensate for case and format of jpg vs. jpeg
This commit is contained in:
commit
966d5cdd08
@ -264,6 +264,12 @@ class Consumer(object):
|
||||
Tag.objects.get_or_create(slug=t, defaults={"name": t})[0])
|
||||
return tuple(r)
|
||||
|
||||
def get_suffix(suffix):
|
||||
suffix = suffix.lower()
|
||||
if suffix == "jpeg":
|
||||
return "jpg"
|
||||
return suffix
|
||||
|
||||
# First attempt: "<sender> - <title> - <tags>.<suffix>"
|
||||
m = re.match(self.REGEX_SENDER_TITLE_TAGS, parseable)
|
||||
if m:
|
||||
@ -271,17 +277,22 @@ class Consumer(object):
|
||||
get_sender(m.group(1)),
|
||||
m.group(2),
|
||||
get_tags(m.group(3)),
|
||||
m.group(4)
|
||||
get_suffix(m.group(4))
|
||||
)
|
||||
|
||||
# Second attempt: "<sender> - <title>.<suffix>"
|
||||
m = re.match(self.REGEX_SENDER_TITLE, parseable)
|
||||
if m:
|
||||
return get_sender(m.group(1)), m.group(2), (), m.group(3)
|
||||
return (
|
||||
get_sender(m.group(1)),
|
||||
m.group(2),
|
||||
(),
|
||||
get_suffix(m.group(3))
|
||||
)
|
||||
|
||||
# That didn't work, so we assume sender and tags are None
|
||||
m = re.match(self.REGEX_TITLE, parseable)
|
||||
return None, m.group(1), (), m.group(2)
|
||||
return None, m.group(1), (), get_suffix(m.group(2))
|
||||
|
||||
def _store(self, text, doc):
|
||||
|
||||
|
@ -7,15 +7,23 @@ class TestAttachment(TestCase):
|
||||
|
||||
TAGS = ("tag1", "tag2", "tag3")
|
||||
CONSUMER = Consumer()
|
||||
SUFFIXES = (
|
||||
"pdf", "png", "jpg", "jpeg", "gif",
|
||||
"PDF", "PNG", "JPG", "JPEG", "GIF",
|
||||
"PdF", "PnG", "JpG", "JPeG", "GiF",
|
||||
)
|
||||
|
||||
def _test_guess_attributes_from_name(self, path, sender, title, tags):
|
||||
for suffix in ("pdf", "png", "jpg", "jpeg", "gif"):
|
||||
for suffix in self.SUFFIXES:
|
||||
f = path.format(suffix)
|
||||
results = self.CONSUMER._guess_attributes_from_name(f)
|
||||
self.assertEqual(results[0].name, sender, f)
|
||||
self.assertEqual(results[1], title, f)
|
||||
self.assertEqual(tuple([t.slug for t in results[2]]), tags, f)
|
||||
self.assertEqual(results[3], suffix, f)
|
||||
if suffix.lower() == "jpeg":
|
||||
self.assertEqual(results[3], "jpg", f)
|
||||
else:
|
||||
self.assertEqual(results[3], suffix.lower(), f)
|
||||
|
||||
def test_guess_attributes_from_name0(self):
|
||||
self._test_guess_attributes_from_name(
|
||||
|
@ -13,7 +13,7 @@ from .models import Sender, Tag, Document
|
||||
from .serialisers import SenderSerializer, TagSerializer, DocumentSerializer
|
||||
|
||||
|
||||
class PdfView(DetailView):
|
||||
class FetchView(DetailView):
|
||||
|
||||
model = Document
|
||||
|
||||
|
@ -21,7 +21,7 @@ from django.contrib import admin
|
||||
from rest_framework.routers import DefaultRouter
|
||||
|
||||
from documents.views import (
|
||||
PdfView, PushView, SenderViewSet, TagViewSet, DocumentViewSet)
|
||||
FetchView, PushView, SenderViewSet, TagViewSet, DocumentViewSet)
|
||||
|
||||
router = DefaultRouter()
|
||||
router.register(r'senders', SenderViewSet)
|
||||
@ -38,7 +38,7 @@ urlpatterns = [
|
||||
url(r"^api/", include(router.urls, namespace="drf")),
|
||||
|
||||
# File downloads
|
||||
url(r"^fetch/(?P<pk>\d+)$", PdfView.as_view(), name="fetch"),
|
||||
url(r"^fetch/(?P<pk>\d+)$", FetchView.as_view(), name="fetch"),
|
||||
|
||||
# The Django admin
|
||||
url(r"", admin.site.urls),
|
||||
|
Loading…
x
Reference in New Issue
Block a user