diff --git a/.travis.yml b/.travis.yml index f735eff..cb32e94 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,8 +5,10 @@ python: - "3.3" env: - DJANGO=1.5.5 - - DJANGO=1.6.1 + - DJANGO=1.6.2 install: - pip install -q Django==$DJANGO --use-mirrors - pip install -q -r requirements.txt --use-mirrors + - pip install pep8 --use-mirrors + - pip install -q -e . --use-mirrors script: python manage.py test diff --git a/pep8.sh b/pep8.sh index 276f602..4ace0ea 100755 --- a/pep8.sh +++ b/pep8.sh @@ -1,5 +1,11 @@ #!/bin/bash -echo -e "\nRunning: (pep8 --show-source --show-pep8 --select=errors --testsuite=.)\n\n" -pep8 --show-source --show-pep8 --select=errors --testsuite=./ -echo -e "\n\n" +# Ignoring autogenerated files +# -- Migration directories +# Ignoring error codes +# -- E128 continuation line under-indented for visual indent +# -- E225 missing whitespace around operator +# -- E501 line too long + +pep8 --exclude=migrations --ignore=E128,E225,E501 . + diff --git a/setup.py b/setup.py index e4b437d..7b106c2 100755 --- a/setup.py +++ b/setup.py @@ -25,6 +25,7 @@ classifiers = [ 'Topic :: Utilities' ] + def get_version(package): """ Return package version as listed in `__version__` in `init.py`. diff --git a/uuslug/__init__.py b/uuslug/__init__.py index 3194046..654efd6 100644 --- a/uuslug/__init__.py +++ b/uuslug/__init__.py @@ -7,6 +7,7 @@ from slugify import slugify as pyslugify __all__ = ['slugify', 'uuslug'] + def slugify(text, entities=True, decimal=True, hexadecimal=True, max_length=0, word_boundary=False, separator='-'): """ Make a slug from a given text """ @@ -14,7 +15,8 @@ def slugify(text, entities=True, decimal=True, hexadecimal=True, max_length=0, w def uuslug(s, instance, entities=True, decimal=True, hexadecimal=True, - slug_field='slug', filter_dict=None, start_no=1, max_length=0, word_boundary=False, separator='-'): + slug_field='slug', filter_dict=None, start_no=1, max_length=0, + word_boundary=False, separator='-'): """ This method tries a little harder than django's django.template.defaultfilters.slugify. """ @@ -35,13 +37,8 @@ def uuslug(s, instance, entities=True, decimal=True, hexadecimal=True, while queryset.filter(**{slug_field: new_slug}).exists(): if max_length > 0: if len(slug) + len(separator) + len(str(counter)) > max_length: - slug = slug[:max_length-len(slug)-len(separator)-len(str(counter))] # make room for the "-1, -2 ... etc" + slug = slug[:max_length-len(slug)-len(separator)-len(str(counter))] new_slug = "%s%s%s" % (slug, separator, counter) counter += 1 return new_slug - - - - - diff --git a/uuslug/models.py b/uuslug/models.py index cdf1808..52351b5 100644 --- a/uuslug/models.py +++ b/uuslug/models.py @@ -1,5 +1,6 @@ import os + # create a database table only in unit test mode if 'testsettings' in os.environ['DJANGO_SETTINGS_MODULE']: from django.db import models @@ -16,7 +17,6 @@ if 'testsettings' in os.environ['DJANGO_SETTINGS_MODULE']: self.slug = uuslug(self.name, instance=self) super(CoolSlug, self).save(*args, **kwargs) - class AnotherSlug(models.Model): name = models.CharField(max_length=100) slug = models.CharField(max_length=200) @@ -28,7 +28,6 @@ if 'testsettings' in os.environ['DJANGO_SETTINGS_MODULE']: self.slug = uuslug(self.name, instance=self, start_no=2) super(AnotherSlug, self).save(*args, **kwargs) - class TruncatedSlug(models.Model): name = models.CharField(max_length=15) slug = models.CharField(max_length=17) @@ -40,7 +39,6 @@ if 'testsettings' in os.environ['DJANGO_SETTINGS_MODULE']: self.slug = uuslug(self.name, instance=self, start_no=2, max_length=17, word_boundary=False) super(TruncatedSlug, self).save(*args, **kwargs) - class SmartTruncatedSlug(models.Model): name = models.CharField(max_length=17) slug = models.CharField(max_length=17) @@ -52,7 +50,6 @@ if 'testsettings' in os.environ['DJANGO_SETTINGS_MODULE']: self.slug = uuslug(self.name, instance=self, start_no=2, max_length=17, word_boundary=True) super(SmartTruncatedSlug, self).save(*args, **kwargs) - class SmartTruncatedExactWordBoundrySlug(models.Model): name = models.CharField(max_length=19) slug = models.CharField(max_length=19) @@ -64,7 +61,6 @@ if 'testsettings' in os.environ['DJANGO_SETTINGS_MODULE']: self.slug = uuslug(self.name, instance=self, start_no=9, max_length=19, word_boundary=True) super(SmartTruncatedExactWordBoundrySlug, self).save(*args, **kwargs) - class CoolSlugDifferentSeparator(models.Model): name = models.CharField(max_length=100) slug = models.CharField(max_length=200) @@ -86,6 +82,3 @@ if 'testsettings' in os.environ['DJANGO_SETTINGS_MODULE']: def save(self, *args, **kwargs): self.slug = uuslug(self.name, instance=self, start_no=2, max_length=17, word_boundary=False, separator='_') super(TruncatedSlugDifferentSeparator, self).save(*args, **kwargs) - - - diff --git a/uuslug/tests.py b/uuslug/tests.py index fdbea2d..cb567c2 100644 --- a/uuslug/tests.py +++ b/uuslug/tests.py @@ -10,6 +10,7 @@ from uuslug.models import (CoolSlug, AnotherSlug, TruncatedSlug, SmartTruncatedSlug, SmartTruncatedExactWordBoundrySlug, CoolSlugDifferentSeparator, TruncatedSlugDifferentSeparator) + class SlugUnicodeTestCase(TestCase): """Tests for Slug - Unicode""" @@ -18,11 +19,11 @@ class SlugUnicodeTestCase(TestCase): txt = "This is a test ---" r = slugify(txt) self.assertEquals(r, "this-is-a-test") - + txt = "This -- is a ## test ---" r = slugify(txt) self.assertEquals(r, "this-is-a-test") - + txt = 'C\'est déjà l\'été.' r = slugify(txt) self.assertEquals(r, "cest-deja-lete") @@ -71,9 +72,10 @@ class SlugUnicodeTestCase(TestCase): r = slugify(txt, max_length=20, word_boundary=True, separator="ZZZZZZ") self.assertEquals(r, "jajaZZZZZZlolZZZZZZmememeooZZZZZZa") + class SlugUniqueTestCase(TestCase): """Tests for Slug - Unique""" - + def test_manager(self): name = "john" @@ -119,31 +121,30 @@ class SlugUniqueTestCase(TestCase): obj = AnotherSlug.objects.create(name=name) self.assertEquals(obj.slug, "foo-bar-3") - def test_max_length(self): name = 'jaja---lol-méméméoo--a' obj = TruncatedSlug.objects.create(name=name) - self.assertEquals(obj.slug, "jaja-lol-mememeoo") # 17 is max_length + self.assertEquals(obj.slug, "jaja-lol-mememeoo") # 17 is max_length obj = TruncatedSlug.objects.create(name=name) - self.assertEquals(obj.slug, "jaja-lol-mememe-2") # 17 is max_length + self.assertEquals(obj.slug, "jaja-lol-mememe-2") # 17 is max_length obj = TruncatedSlug.objects.create(name=name) - self.assertEquals(obj.slug, "jaja-lol-mememe-3") # 17 is max_length - + self.assertEquals(obj.slug, "jaja-lol-mememe-3") # 17 is max_length def test_max_length_exact_word_boundry(self): name = 'jaja---lol-méméméoo--a' obj = SmartTruncatedExactWordBoundrySlug.objects.create(name=name) - self.assertEquals(obj.slug, "jaja-lol-mememeoo") # 19 is max_length + self.assertEquals(obj.slug, "jaja-lol-mememeoo") # 19 is max_length obj = SmartTruncatedExactWordBoundrySlug.objects.create(name=name) - self.assertEquals(obj.slug, "jaja-lol-mememeoo-9") # 19 is max_length, start_no = 9 + self.assertEquals(obj.slug, "jaja-lol-mememeoo-9") # 19 is max_length, start_no = 9 obj = SmartTruncatedExactWordBoundrySlug.objects.create(name=name) - self.assertEquals(obj.slug, "jaja-lol-mememeo-10") # 19 is max_length, readjust for "-10" + self.assertEquals(obj.slug, "jaja-lol-mememeo-10") # 19 is max_length, readjust for "-10" + class SlugUniqueDifferentSeparatorTestCase(TestCase): """Tests for Slug - Unique with different separator """ @@ -178,13 +179,10 @@ class SlugUniqueDifferentSeparatorTestCase(TestCase): name = 'jaja---lol-méméméoo--a' obj = TruncatedSlugDifferentSeparator.objects.create(name=name) - self.assertEquals(obj.slug, "jaja_lol_mememeoo") # 17 is max_length + self.assertEquals(obj.slug, "jaja_lol_mememeoo") # 17 is max_length obj = TruncatedSlugDifferentSeparator.objects.create(name=name) - self.assertEquals(obj.slug, "jaja_lol_mememe_2") # 17 is max_length + self.assertEquals(obj.slug, "jaja_lol_mememe_2") # 17 is max_length obj = TruncatedSlugDifferentSeparator.objects.create(name=name) - self.assertEquals(obj.slug, "jaja_lol_mememe_3") # 17 is max_length - - - + self.assertEquals(obj.slug, "jaja_lol_mememe_3") # 17 is max_length