##// END OF EJS Templates
utils: move repo_name_slug to utils2 to prevent import cycle on setup_db...
Thomas De Schampheleire -
r7251:401fe08b default
parent child Browse files
Show More
@@ -34,7 +34,6 b' import beaker'
34
34
35 from tg import request, response
35 from tg import request, response
36 from tg.i18n import ugettext as _
36 from tg.i18n import ugettext as _
37 from webhelpers.text import collapse, remove_formatting, strip_tags
38 from beaker.cache import _cache_decorate
37 from beaker.cache import _cache_decorate
39
38
40 from kallithea.lib.vcs.utils.hgcompat import ui, config
39 from kallithea.lib.vcs.utils.hgcompat import ui, config
@@ -54,42 +53,6 b' log = logging.getLogger(__name__)'
54 REMOVED_REPO_PAT = re.compile(r'rm__\d{8}_\d{6}_\d{6}_.*')
53 REMOVED_REPO_PAT = re.compile(r'rm__\d{8}_\d{6}_\d{6}_.*')
55
54
56
55
57 def recursive_replace(str_, replace=' '):
58 """
59 Recursive replace of given sign to just one instance
60
61 :param str_: given string
62 :param replace: char to find and replace multiple instances
63
64 Examples::
65 >>> recursive_replace("Mighty---Mighty-Bo--sstones",'-')
66 'Mighty-Mighty-Bo-sstones'
67 """
68
69 if str_.find(replace * 2) == -1:
70 return str_
71 else:
72 str_ = str_.replace(replace * 2, replace)
73 return recursive_replace(str_, replace)
74
75
76 def repo_name_slug(value):
77 """
78 Return slug of name of repository
79 This function is called on each creation/modification
80 of repository to prevent bad names in repo
81 """
82
83 slug = remove_formatting(value)
84 slug = strip_tags(slug)
85
86 for c in """`?=[]\;'"<>,/~!@#$%^&*()+{}|: """:
87 slug = slug.replace(c, '-')
88 slug = recursive_replace(slug, '-')
89 slug = collapse(slug, '-')
90 return slug
91
92
93 #==============================================================================
56 #==============================================================================
94 # PERM DECORATOR HELPERS FOR EXTRACTING NAMES FOR PERM CHECKS
57 # PERM DECORATOR HELPERS FOR EXTRACTING NAMES FOR PERM CHECKS
95 #==============================================================================
58 #==============================================================================
@@ -15,7 +15,9 b''
15 kallithea.lib.utils2
15 kallithea.lib.utils2
16 ~~~~~~~~~~~~~~~~~~~~
16 ~~~~~~~~~~~~~~~~~~~~
17
17
18 Some simple helper functions
18 Some simple helper functions.
19 Note: all these functions should be independent of Kallithea classes, i.e.
20 models, controllers, etc. to prevent import cycles.
19
21
20 This file was forked by the Kallithea project in July 2014.
22 This file was forked by the Kallithea project in July 2014.
21 Original author and date, and relevant copyright and licensing information is below:
23 Original author and date, and relevant copyright and licensing information is below:
@@ -37,6 +39,7 b' import binascii'
37
39
38 import webob
40 import webob
39 import urlobject
41 import urlobject
42 from webhelpers.text import collapse, remove_formatting, strip_tags
40
43
41 from tg.i18n import ugettext as _, ungettext
44 from tg.i18n import ugettext as _, ungettext
42 from kallithea.lib.vcs.utils.lazy import LazyProperty
45 from kallithea.lib.vcs.utils.lazy import LazyProperty
@@ -646,3 +649,39 b' class Optional(object):'
646
649
647 def urlreadable(s, _cleanstringsub=re.compile('[^-a-zA-Z0-9./]+').sub):
650 def urlreadable(s, _cleanstringsub=re.compile('[^-a-zA-Z0-9./]+').sub):
648 return _cleanstringsub('_', safe_str(s)).rstrip('_')
651 return _cleanstringsub('_', safe_str(s)).rstrip('_')
652
653
654 def recursive_replace(str_, replace=' '):
655 """
656 Recursive replace of given sign to just one instance
657
658 :param str_: given string
659 :param replace: char to find and replace multiple instances
660
661 Examples::
662 >>> recursive_replace("Mighty---Mighty-Bo--sstones",'-')
663 'Mighty-Mighty-Bo-sstones'
664 """
665
666 if str_.find(replace * 2) == -1:
667 return str_
668 else:
669 str_ = str_.replace(replace * 2, replace)
670 return recursive_replace(str_, replace)
671
672
673 def repo_name_slug(value):
674 """
675 Return slug of name of repository
676 This function is called on each creation/modification
677 of repository to prevent bad names in repo
678 """
679
680 slug = remove_formatting(value)
681 slug = strip_tags(slug)
682
683 for c in """`?=[]\;'"<>,/~!@#$%^&*()+{}|: """:
684 slug = slug.replace(c, '-')
685 slug = recursive_replace(slug, '-')
686 slug = collapse(slug, '-')
687 return slug
@@ -33,7 +33,7 b' import traceback'
33 from datetime import datetime
33 from datetime import datetime
34 from sqlalchemy.orm import subqueryload
34 from sqlalchemy.orm import subqueryload
35
35
36 import kallithea.lib.utils
36 import kallithea.lib.utils2
37 from kallithea.lib.utils import make_ui, is_valid_repo_uri
37 from kallithea.lib.utils import make_ui, is_valid_repo_uri
38 from kallithea.lib.vcs.backends import get_backend
38 from kallithea.lib.vcs.backends import get_backend
39 from kallithea.lib.utils2 import LazyProperty, safe_str, safe_unicode, \
39 from kallithea.lib.utils2 import LazyProperty, safe_str, safe_unicode, \
@@ -316,7 +316,7 b' class RepoModel(object):'
316
316
317 if 'repo_name' in kwargs:
317 if 'repo_name' in kwargs:
318 repo_name = kwargs['repo_name']
318 repo_name = kwargs['repo_name']
319 if kallithea.lib.utils.repo_name_slug(repo_name) != repo_name:
319 if kallithea.lib.utils2.repo_name_slug(repo_name) != repo_name:
320 raise Exception('invalid repo name %s' % repo_name)
320 raise Exception('invalid repo name %s' % repo_name)
321 cur_repo.repo_name = cur_repo.get_new_name(repo_name)
321 cur_repo.repo_name = cur_repo.get_new_name(repo_name)
322
322
@@ -367,7 +367,7 b' class RepoModel(object):'
367 # with name and path of group
367 # with name and path of group
368 repo_name_full = repo_name
368 repo_name_full = repo_name
369 repo_name = repo_name.split(self.URL_SEPARATOR)[-1]
369 repo_name = repo_name.split(self.URL_SEPARATOR)[-1]
370 if kallithea.lib.utils.repo_name_slug(repo_name) != repo_name:
370 if kallithea.lib.utils2.repo_name_slug(repo_name) != repo_name:
371 raise Exception('invalid repo name %s' % repo_name)
371 raise Exception('invalid repo name %s' % repo_name)
372
372
373 new_repo = Repository()
373 new_repo = Repository()
@@ -32,7 +32,7 b' import traceback'
32 import shutil
32 import shutil
33 import datetime
33 import datetime
34
34
35 import kallithea.lib.utils
35 import kallithea.lib.utils2
36 from kallithea.lib.utils2 import LazyProperty
36 from kallithea.lib.utils2 import LazyProperty
37
37
38 from kallithea.model.db import RepoGroup, Session, Ui, UserRepoGroupToPerm, \
38 from kallithea.model.db import RepoGroup, Session, Ui, UserRepoGroupToPerm, \
@@ -136,7 +136,7 b' class RepoGroupModel(object):'
136 def create(self, group_name, group_description, owner, parent=None,
136 def create(self, group_name, group_description, owner, parent=None,
137 just_db=False, copy_permissions=False):
137 just_db=False, copy_permissions=False):
138 try:
138 try:
139 if kallithea.lib.utils.repo_name_slug(group_name) != group_name:
139 if kallithea.lib.utils2.repo_name_slug(group_name) != group_name:
140 raise Exception('invalid repo group name %s' % group_name)
140 raise Exception('invalid repo group name %s' % group_name)
141
141
142 owner = User.guess_instance(owner)
142 owner = User.guess_instance(owner)
@@ -295,7 +295,7 b' class RepoGroupModel(object):'
295 repo_group.parent_group = RepoGroup.get(kwargs['parent_group_id'])
295 repo_group.parent_group = RepoGroup.get(kwargs['parent_group_id'])
296 if 'group_name' in kwargs:
296 if 'group_name' in kwargs:
297 group_name = kwargs['group_name']
297 group_name = kwargs['group_name']
298 if kallithea.lib.utils.repo_name_slug(group_name) != group_name:
298 if kallithea.lib.utils2.repo_name_slug(group_name) != group_name:
299 raise Exception('invalid repo group name %s' % group_name)
299 raise Exception('invalid repo group name %s' % group_name)
300 repo_group.group_name = repo_group.get_new_name(group_name)
300 repo_group.group_name = repo_group.get_new_name(group_name)
301 new_path = repo_group.full_path
301 new_path = repo_group.full_path
@@ -31,8 +31,8 b' from formencode.validators import ('
31 )
31 )
32 from kallithea.lib.compat import OrderedSet
32 from kallithea.lib.compat import OrderedSet
33 from kallithea.lib import ipaddr
33 from kallithea.lib import ipaddr
34 from kallithea.lib.utils import repo_name_slug, is_valid_repo_uri
34 from kallithea.lib.utils import is_valid_repo_uri
35 from kallithea.lib.utils2 import str2bool, aslist
35 from kallithea.lib.utils2 import str2bool, aslist, repo_name_slug
36 from kallithea.model.db import RepoGroup, Repository, UserGroup, User
36 from kallithea.model.db import RepoGroup, Repository, UserGroup, User
37 from kallithea.lib.exceptions import LdapImportError
37 from kallithea.lib.exceptions import LdapImportError
38 from kallithea.config.routing import ADMIN_PREFIX
38 from kallithea.config.routing import ADMIN_PREFIX
General Comments 0
You need to be logged in to leave comments. Login now