@@ 311-331 (lines=21) @@ | ||
308 | return "<Placeholder Node: %s>" % self.name |
|
309 | ||
310 | ||
311 | def get_filename(page, content_type, data): |
|
312 | """ |
|
313 | Generate a stable filename using the original filename of the type. |
|
314 | ||
315 | ||
316 | """ |
|
317 | avoid_collision = uuid.uuid4().hex[:8] |
|
318 | ||
319 | name_parts = data.name.split('.') |
|
320 | if len(name_parts) > 1: |
|
321 | name = slugify('.'.join(name_parts[:-1]), allow_unicode=True) |
|
322 | ext = slugify(name_parts[-1]) |
|
323 | name = name + '.' + ext |
|
324 | else: |
|
325 | name = slugify(data.name) |
|
326 | filename = os.path.join( |
|
327 | settings.PAGE_UPLOAD_ROOT, |
|
328 | 'page_' + str(page.id), |
|
329 | content_type + '-' + avoid_collision + '-' + name |
|
330 | ) |
|
331 | return filename |
|
332 | ||
333 | ||
334 | class FilePlaceholderNode(PlaceholderNode): |
@@ 556-570 (lines=15) @@ | ||
553 | ||
554 | ||
555 | def media_filename(instance, filename): |
|
556 | avoid_collision = uuid.uuid4().hex[:8] |
|
557 | name_parts = filename.split('.') |
|
558 | if len(name_parts) > 1: |
|
559 | name = slugify('.'.join(name_parts[:-1]), allow_unicode=True) |
|
560 | ext = slugify(name_parts[-1]) |
|
561 | name = name + '.' + ext |
|
562 | else: |
|
563 | name = slugify(data.name) |
|
564 | filename = os.path.join( |
|
565 | settings.PAGE_UPLOAD_ROOT, |
|
566 | 'medias', |
|
567 | name |
|
568 | ) |
|
569 | return filename |
|
570 | ||
571 | ||
572 | @python_2_unicode_compatible |
|
573 | class Media(models.Model): |