| @@ 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): |
|