Source code for django_test_tools.doc_utils.folder_structure

import os

from django.template.loader import render_to_string

from ..app_manager import DjangoAppManager


[docs]def create_folder_structure(doc_base_folder, project_name): # print('**** APP_DIR {} ****'.format(settings.APPS_DIR)) app_manager = DjangoAppManager() project_apps = app_manager.get_project_apps(project_name) project_folder = os.path.join(doc_base_folder, project_name) for app_name, app in project_apps.items(): folder = os.path.join(project_folder, app.label) if not os.path.exists(folder): os.makedirs(folder) data = { 'verbose_name': str(app.verbose_name), 'app_package': app_name } template = 'django_test_tools/app_index.rst.j2' write_template(data, folder, 'index.rst', template) data = { 'verbose_name': str(app.verbose_name), 'module_name': '{}.models'.format(app_name) } template = 'django_test_tools/app_module.rst.j2' write_template(data, folder, '{}.models.rst'.format(app_name), template)
[docs]def get_module_files(folder): file_black_list = ['__init__.py', 'urls.py'] folder_black_list = ['tests', 'migrations'] file_list = list() package_name = '' for root, dirs, files in os.walk(folder): base_folder_name = os.path.split(root)[1] if base_folder_name not in folder_black_list: if '__init__.py' in files: package_name = package_name + '.' + base_folder_name for file in files: if file.endswith('.py'): module_name = file.split('.')[0] if file not in file_black_list: module_dict = dict() module_dict['filename'] = os.path.join(root, file) module_dict['package_name'] = (package_name + '.{}'.format(module_name))[1:] file_list.append(module_dict) else: del dirs[:] return file_list
[docs]def write_template(data, folder, output_file, template): rendered = render_to_string(template, data) index_filename = os.path.join(folder, output_file) with open(index_filename, 'w', encoding='utf-8') as index_file: index_file.write(rendered)