35 lines
1,020 B
Python
35 lines
1,020 B
Python
|
from werkzeug.routing import BaseConverter
|
||
|
|
||
|
import features
|
||
|
|
||
|
|
||
|
class APIRepositoryPathConverter(BaseConverter):
|
||
|
""" Converter for handling repository paths. Does not handle library paths.
|
||
|
"""
|
||
|
def __init__(self, url_map):
|
||
|
super(APIRepositoryPathConverter, self).__init__(url_map)
|
||
|
self.weight = 200
|
||
|
self.regex = r'([^/]+/[^/]+)'
|
||
|
|
||
|
|
||
|
class RepositoryPathConverter(BaseConverter):
|
||
|
""" Converter for handling repository paths. Handles both library and non-library paths (if
|
||
|
configured).
|
||
|
"""
|
||
|
def __init__(self, url_map):
|
||
|
super(RepositoryPathConverter, self).__init__(url_map)
|
||
|
self.weight = 200
|
||
|
|
||
|
if features.LIBRARY_SUPPORT:
|
||
|
# Allow names without namespaces.
|
||
|
self.regex = r'[^/]+(/[^/]+)?'
|
||
|
else:
|
||
|
self.regex = r'([^/]+/[^/]+)'
|
||
|
|
||
|
|
||
|
class RegexConverter(BaseConverter):
|
||
|
""" Converter for handling custom regular expression patterns in paths. """
|
||
|
def __init__(self, url_map, regex_value):
|
||
|
super(RegexConverter, self).__init__(url_map)
|
||
|
self.regex = regex_value
|