slugify moved to lib
This commit is contained in:
+1
-27
@@ -1,9 +1,6 @@
|
|||||||
# coding=UTF-8
|
# coding=UTF-8
|
||||||
import json
|
import json
|
||||||
from flask import request, current_app, Response
|
from flask import request, current_app, Response
|
||||||
import unidecode
|
|
||||||
import re
|
|
||||||
|
|
||||||
|
|
||||||
def check_api_key():
|
def check_api_key():
|
||||||
api_keys = current_app.config.get("API_KEYS")
|
api_keys = current_app.config.get("API_KEYS")
|
||||||
@@ -16,27 +13,4 @@ def check_api_key():
|
|||||||
return Response(
|
return Response(
|
||||||
response, 401,
|
response, 401,
|
||||||
{'WWW-Authenticate': 'Basic realm="Login Required"'}
|
{'WWW-Authenticate': 'Basic realm="Login Required"'}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def slugify(text):
|
|
||||||
"""Converts a string to a human-readable url"""
|
|
||||||
|
|
||||||
# translate
|
|
||||||
text = unidecode.unidecode(text)
|
|
||||||
|
|
||||||
# lowercase
|
|
||||||
text = text.lower()
|
|
||||||
|
|
||||||
# replace unwanted chars
|
|
||||||
numbers = re.compile('(?<=\d),(?=\d)')
|
|
||||||
text = numbers.sub('', text)
|
|
||||||
unwanted_chars = re.compile(r'[^_a-z0-9/]+')
|
|
||||||
text = unwanted_chars.sub('_', text)
|
|
||||||
|
|
||||||
# remove redundant _
|
|
||||||
duplicated_underscores = re.compile('_{2,}')
|
|
||||||
text = duplicated_underscores.sub('_', text)
|
|
||||||
text = text.strip('_')
|
|
||||||
|
|
||||||
return text
|
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
# coding=UTF-8
|
||||||
|
import unidecode
|
||||||
|
import re
|
||||||
|
|
||||||
|
|
||||||
|
def slugify(text):
|
||||||
|
"""Converts a string to a human-readable url"""
|
||||||
|
|
||||||
|
# translate
|
||||||
|
text = unidecode.unidecode(text)
|
||||||
|
|
||||||
|
# lowercase
|
||||||
|
text = text.lower()
|
||||||
|
|
||||||
|
# replace unwanted chars
|
||||||
|
numbers = re.compile('(?<=\d),(?=\d)')
|
||||||
|
text = numbers.sub('', text)
|
||||||
|
unwanted_chars = re.compile(r'[^_a-z0-9/]+')
|
||||||
|
text = unwanted_chars.sub('_', text)
|
||||||
|
|
||||||
|
# remove redundant _
|
||||||
|
duplicated_underscores = re.compile('_{2,}')
|
||||||
|
text = duplicated_underscores.sub('_', text)
|
||||||
|
text = text.strip('_')
|
||||||
|
|
||||||
|
return text
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
from api import db
|
from api import db
|
||||||
from api.helpers import slugify
|
from api.lib.slugify import slugify
|
||||||
from api.models.locale import Locale
|
from api.models.locale import Locale
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
from api import db
|
from api import db
|
||||||
from api.helpers import slugify
|
from api.lib.slugify import slugify
|
||||||
|
|
||||||
|
|
||||||
class Designer(db.Model):
|
class Designer(db.Model):
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# coding=UTF-8
|
||||||
|
|
||||||
|
import unittest2
|
||||||
|
from api.lib.slugify import slugify
|
||||||
|
|
||||||
|
|
||||||
|
class TestHelpers(unittest2.TestCase):
|
||||||
|
|
||||||
|
def test_slugify(self):
|
||||||
|
self.assertEqual(slugify('HELLO'), 'hello')
|
||||||
|
self.assertEqual(slugify('this is a test'), 'this_is_a_test')
|
||||||
|
self.assertEqual(slugify('___This is a test___'), 'this_is_a_test')
|
||||||
|
self.assertEqual(slugify('this-is-a-test'), 'this_is_a_test')
|
||||||
|
self.assertEqual(slugify('this_is_a__test'), 'this_is_a_test')
|
||||||
|
self.assertEqual(slugify('404'), '404')
|
||||||
|
self.assertEqual(slugify('1,000 reasons you are #1'),
|
||||||
|
'1000_reasons_you_are_1')
|
||||||
|
self.assertEqual(slugify('Nín hǎo'), 'nin_hao')
|
||||||
|
self.assertEqual(slugify('räksmörgås'), 'raksmorgas')
|
||||||
|
self.assertEqual(slugify('RÄKSMÖRGÅS'), 'raksmorgas')
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
# coding=UTF-8
|
|
||||||
|
|
||||||
import unittest2
|
|
||||||
from api.helpers import slugify
|
|
||||||
|
|
||||||
|
|
||||||
class TestHelpers(unittest2.TestCase):
|
|
||||||
|
|
||||||
def test_slugify(self):
|
|
||||||
self.assertEqual(slugify('HELLO'), 'hello')
|
|
||||||
self.assertEqual(slugify('this is a test'), 'this_is_a_test')
|
|
||||||
self.assertEqual(slugify('___This is a test___'), 'this_is_a_test')
|
|
||||||
self.assertEqual(slugify('this-is-a-test'), 'this_is_a_test')
|
|
||||||
self.assertEqual(slugify('this_is_a__test'), 'this_is_a_test')
|
|
||||||
self.assertEqual(slugify('404'), '404')
|
|
||||||
self.assertEqual(slugify('1,000 reasons you are #1'),
|
|
||||||
'1000_reasons_you_are_1')
|
|
||||||
self.assertEqual(slugify('Nín hǎo'), 'nin_hao')
|
|
||||||
self.assertEqual(slugify('räksmörgås'), 'raksmorgas')
|
|
||||||
self.assertEqual(slugify('RÄKSMÖRGÅS'), 'raksmorgas')
|
|
||||||
|
|||||||
Reference in New Issue
Block a user