0001-url-encode-filenames-12793.patch
fargo/fargo/models.py | ||
---|---|---|
3 | 3 |
import subprocess |
4 | 4 |
import os |
5 | 5 |
import threading |
6 |
import urllib |
|
6 | 7 | |
7 | 8 |
from django.conf import settings |
8 | 9 |
from django.core.urlresolvers import reverse |
... | ... | |
60 | 61 |
verbose_name_plural = _('user documents') |
61 | 62 |
ordering = ('-created', 'user') |
62 | 63 | |
64 |
@property |
|
65 |
def filename_encoded(self): |
|
66 |
return urllib.quote(self.filename, safe='') |
|
67 | ||
63 | 68 |
def get_download_url(self): |
64 |
return reverse('download', kwargs={'pk': self.id, 'filename': self.filename}) |
|
69 |
return reverse('download', kwargs={'pk': self.id, 'filename': self.filename_encoded})
|
|
65 | 70 | |
66 | 71 |
def get_thumbnail_url(self): |
67 | 72 |
if self.document.thumbnail: |
68 |
return reverse('thumbnail', kwargs={'pk': self.id, 'filename': self.filename}) |
|
73 |
return reverse('thumbnail', kwargs={'pk': self.id, 'filename': self.filename_encoded})
|
|
69 | 74 |
return '' |
70 | 75 | |
71 | 76 |
tests/test_api.py | ||
---|---|---|
132 | 132 |
assert response.json['errors'].keys() == ['__all__'] |
133 | 133 |
assert response.json['errors']['__all__'][0]['code'] == 'box-is-full' |
134 | 134 |
assert response.json['errors']['__all__'][0]['limit'] == 4 |
135 | ||
136 | ||
137 |
def test_push_document_slashed_name(app, admin_user, john_doe): |
|
138 |
login(app) |
|
139 |
url = reverse('fargo-api-push-document') |
|
140 |
data = { |
|
141 |
'user_email': john_doe.email, |
|
142 |
'origin': 'wcs', |
|
143 |
'file_b64_content': base64.b64encode('coin'), |
|
144 |
'file_name': 'monfichier 18/06/2017.pdf', |
|
145 |
} |
|
146 |
response = app.post_json(url, data, status=200) |
|
147 |
assert response.json['result'] == 1 |
|
148 |
assert models.Document.objects.count() == 1 |
|
149 |
slashed = models.UserDocument.objects.first() |
|
150 |
assert slashed.filename == 'monfichier 18/06/2017.pdf' |
|
151 |
assert slashed.get_download_url() == '/1/download/monfichier%252018%252F06%252F2017.pdf' |
|
135 |
- |