|
1 |
| -import os |
2 |
| -import re |
3 |
| -import textwrap |
4 |
| - |
5 | 1 | from django.contrib.auth.models import User
|
6 | 2 | from django.db import models
|
7 | 3 | from django.db.models.signals import pre_delete
|
8 | 4 | from django.utils import timezone
|
9 | 5 | import textwrap
|
| 6 | +import unicodedata |
| 7 | +import os |
| 8 | +import re |
10 | 9 |
|
11 | 10 |
|
12 | 11 | class NotificationPeriod(models.Model):
|
@@ -66,12 +65,12 @@ class CoAuthor(models.Model):
|
66 | 65 |
|
67 | 66 |
|
68 | 67 | def paper_directory_path(instance, filename):
|
69 |
| - _filename = filename.split('.') |
70 |
| - filename = re.sub(r'[^\w\-]', '', _filename[0]) |
71 |
| - filename = filename.replace(' ', '_') |
72 |
| - filename = textwrap.shorten(filename, width=100, placeholder='') |
73 |
| - filename += f'.{_filename[-1]}' |
74 |
| - return f'paper_files/paperNo.{instance.paper.pk}/{filename}' |
| 68 | + name, ext = os.path.splitext(filename) |
| 69 | + name = unicodedata.normalize('NFD', name) |
| 70 | + name = re.sub(r'[^\w\s-]', '', name, flags=re.ASCII) |
| 71 | + name = re.sub(r'\s+', '_', name).strip('_') |
| 72 | + name = textwrap.shorten(name, width=100, placeholder='') or 'file' |
| 73 | + return f'paper_files/paperNo.{instance.paper.pk}/{name}{ext}' |
75 | 74 |
|
76 | 75 | class UploadedFile(models.Model):
|
77 | 76 | paper = models.ForeignKey(Paper, on_delete=models.CASCADE)
|
|
0 commit comments