Ticket #36: 0002-Add-id-to-non-unique-slugs-add-unit-test-for-unicode.patch

File 0002-Add-id-to-non-unique-slugs-add-unit-test-for-unicode.patch, 3.0 KB (added by Aaron Williamson, 13 years ago)

0002-Add-id-to-non-unique-slugs-add-unit-test-for-unicode.patch

  • mediagoblin/models.py

    From e7413b8319a0057ac3067bea152bed87c485a671 Mon Sep 17 00:00:00 2001
    From: Aaron Williamson <aaron@copiesofcopies.org>
    Date: Thu, 12 May 2011 16:34:16 -0400
    Subject: [PATCH 2/3] Add id to non-unique slugs, add unit test for unicode
     characters.
    
    ---
     mediagoblin/models.py          |    7 ++++---
     mediagoblin/submit/views.py    |    6 +++---
     mediagoblin/tests/test_util.py |    1 +
     mediagoblin/views.py           |    1 +
     4 files changed, 9 insertions(+), 6 deletions(-)
    
    diff --git a/mediagoblin/models.py b/mediagoblin/models.py
    index dd5ea5b..a858ffe 100644
    a b from mongokit import Document, Set  
    2020
    2121from mediagoblin import util
    2222from mediagoblin.auth import lib as auth_lib
    23 
     23from mediagoblin import globals as mediagoblin_globals
    2424
    2525###################
    2626# Custom validators
    class MediaEntry(Document):  
    104104        """ Generate a unique slug based on the image's title """
    105105
    106106        self['slug'] = util.slugify(self['title'])
    107         media = MediaEntry.find_one({'slug': self['slug']})
     107
     108        duplicate = mediagoblin_globals.database.media_entries.find_one({'slug': self['slug']})
    108109       
    109         if media:
     110        if duplicate:
    110111            self['slug'] = "%s-%s" % (self['_id'], self['slug'])
    111112
    112113REGISTER_MODELS = [MediaEntry, User]
  • mediagoblin/submit/views.py

    diff --git a/mediagoblin/submit/views.py b/mediagoblin/submit/views.py
    index 4e20cc6..eda77b0 100644
    a b def submit_start(request):  
    4646            entry['media_type'] = u'image' # heh
    4747            entry['uploader'] = request.user
    4848
    49             # Generate a slug from the title
    50             entry.generate_slug()
    51 
    5249            # Save, just so we can get the entry id for the sake of using
    5350            # it to generate the file path
    5451            entry.save(validate=False)
    5552
     53            # Generate a slug from the title
     54            entry.generate_slug()
     55
    5656            # Now store generate the queueing related filename
    5757            queue_filepath = request.app.queue_store.get_unique_filepath(
    5858                ['media_entries',
  • mediagoblin/tests/test_util.py

    diff --git a/mediagoblin/tests/test_util.py b/mediagoblin/tests/test_util.py
    index 861e8b6..db74956 100644
    a b def test_slugify():  
    7676    assert util.slugify('a  walk in the park') == 'a-walk-in-the-park'
    7777    assert util.slugify('a walk in-the-park') == 'a-walk-in-the-park'
    7878    assert util.slugify('a w@lk in the park?') == 'a-w-lk-in-the-park'
     79    assert util.slugify(u'a walk in the par\u0107') == 'a-walk-in-the-parc'
  • mediagoblin/views.py

    diff --git a/mediagoblin/views.py b/mediagoblin/views.py
    index 95d0be7..7f925bb 100644
    a b from webob import Response, exc  
    2020import wtforms
    2121from mongokit import ObjectId
    2222from mediagoblin import models
     23import gettext
    2324
    2425def root_view(request):
    2526    media_entries = request.db.MediaEntry.find(