import re from django.conf import settings from django.core.management.base import BaseCommand from django.test import Client from django.urls import URLPattern, URLResolver from jumpserver.urls import api_v1 path_uuid_pattern = re.compile(r'<\w+:\w+>', re.IGNORECASE) uuid_pattern = re.compile(r'\(\(\?P<.*>[^)]+\)/\)\?', re.IGNORECASE) uuid2_pattern = re.compile(r'\(\?P<.*>\[\/\.\]\+\)', re.IGNORECASE) uuid3_pattern = re.compile(r'\(\?P<.*>\[/\.]\+\)') def list_urls(patterns, path=None): """ recursive """ if not path: path = [] result = [] for pattern in patterns: if isinstance(pattern, URLPattern): result.append(''.join(path) + str(pattern.pattern)) elif isinstance(pattern, URLResolver): result += list_urls(pattern.url_patterns, path + [str(pattern.pattern)]) return result def parse_to_url(url): uid = '00000000-0000-0000-0000-000000000000' url = url.replace('^', '') url = url.replace('?$', '') url = url.replace('(?P[a-z0-9]+)', '') url = url.replace('((?P[/.]{36})/)?', uid + '/') url = url.replace('(?P[/.]+)', uid) url = url.replace('(?P