1
+ import os
2
+ import re
1
3
from django .contrib .auth .models import User
2
4
from django .db import models
3
5
from django .db .models .signals import pre_delete
4
6
from django .utils import timezone
5
7
import textwrap
6
- import unicodedata
7
- import os
8
- import re
8
+
9
+ from django .utils .text import slugify
9
10
10
11
11
12
class NotificationPeriod (models .Model ):
@@ -66,11 +67,15 @@ class CoAuthor(models.Model):
66
67
67
68
def paper_directory_path (instance , filename ):
68
69
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 } '
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 ()} '
78
+
74
79
75
80
class UploadedFile (models .Model ):
76
81
paper = models .ForeignKey (Paper , on_delete = models .CASCADE )
@@ -183,4 +188,4 @@ def delete_file_with_object(instance, **kwargs):
183
188
instance .file .delete ()
184
189
185
190
186
- pre_delete .connect (delete_file_with_object , sender = UploadedFile )
191
+ pre_delete .connect (delete_file_with_object , sender = UploadedFile )
0 commit comments