Skip to content

Commit 2cee6e9

Browse files
authored
Merge pull request #61 from skni-kod/fix/filenames-handling
Fix/filenames handling
2 parents fe3a543 + acb30a5 commit 2cee6e9

File tree

2 files changed

+24
-21
lines changed

2 files changed

+24
-21
lines changed

papers/models.py

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import os
2-
import re
32
from django.contrib.auth.models import User
43
from django.db import models
54
from django.db.models.signals import pre_delete
@@ -65,16 +64,24 @@ class CoAuthor(models.Model):
6564
paper = models.ForeignKey(Paper, on_delete=models.CASCADE)
6665

6766

67+
def remove_polish_chars(text):
68+
polish_chars = {
69+
'ą': 'a', 'ć': 'c', 'ę': 'e', 'ł': 'l', 'ń': 'n', 'ó': 'o', 'ś': 's', 'ź': 'z', 'ż': 'z',
70+
'Ą': 'A', 'Ć': 'C', 'Ę': 'E', 'Ł': 'L', 'Ń': 'N', 'Ó': 'O', 'Ś': 'S', 'Ź': 'Z', 'Ż': 'Z'
71+
}
72+
73+
for polish_char, ascii_char in polish_chars.items():
74+
text = text.replace(polish_char, ascii_char)
75+
76+
return text
77+
6878
def paper_directory_path(instance, filename):
69-
name, ext = os.path.splitext(filename)
70-
safe_name = slugify(name)
71-
safe_name = textwrap.shorten(safe_name, width=100, placeholder='')
72-
# _filename = filename.split('.')
73-
# filename = re.sub(r'\W+', '', _filename[0])
74-
# filename = filename.replace(' ','_')
75-
# filename = textwrap.shorten(filename,width=100,placeholder='')
76-
# filename += f'.{_filename[-1]}'
77-
return f'paper_files/paperNo.{instance.paper.pk}/{safe_name}{ext.lower()}'
79+
_filename = filename.split('.')
80+
filename = re.sub(r'\W+', '', _filename[0])
81+
filename = filename.replace(' ','_')
82+
filename = textwrap.shorten(filename,width=100,placeholder='')
83+
filename += f'.{_filename[-1]}'
84+
return f'paper_files/paperNo.{instance.paper.pk}/{filename}'
7885

7986

8087
class UploadedFile(models.Model):

papers/views.py

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
from email.utils import unquote
2-
31
from braces.views import CsrfExemptMixin
42
from django.contrib import messages
3+
from urllib.parse import unquote
54
from django.contrib.auth.decorators import login_required
65
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
76
from django.contrib.messages.views import SuccessMessageMixin
@@ -123,19 +122,16 @@ def paper_file_download(request, pk, item):
123122
:param item: integer (id of a file user wants to download)
124123
:return:
125124
"""
125+
print("request", request, "pk", pk, "item", item)
126126
paper = Paper.objects.get(pk=pk)
127+
print("paper", paper)
127128
if request.user == paper.author or request.user.groups.filter(
128129
name='reviewer').exists() or request.user.is_staff:
129130
document = UploadedFile.objects.get(pk=item)
130-
131-
file_path = document.file.name
132-
133-
if not os.path.exists(file_path):
134-
unquoted_path = unquote(file_path)
135-
if os.path.exists(unquoted_path):
136-
file_path = unquoted_path
137-
138-
return serve(request, os.path.basename(file_path), os.path.dirname(file_path))
131+
print("document", document)
132+
filepath = str(BASE_DIR)+document.file.url
133+
print("filepath", unquote(filepath))
134+
return serve(request, os.path.basename(unquote(filepath)), os.path.dirname(unquote(filepath)))
139135
else:
140136
return redirect('paper-list')
141137

0 commit comments

Comments
 (0)