drf-to-mkdoc 0.1.9__py3-none-any.whl → 0.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of drf-to-mkdoc might be problematic. Click here for more details.
- drf_to_mkdoc/management/commands/generate_docs.py +46 -71
- drf_to_mkdoc/management/commands/generate_model_docs.py +4 -5
- drf_to_mkdoc/static/drf-to-mkdoc/javascripts/try-out-sidebar.js +879 -0
- drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/try-out-sidebar.css +728 -0
- drf_to_mkdoc/utils/endpoint_detail_generator.py +9 -1
- drf_to_mkdoc/utils/model_detail_generator.py +23 -25
- {drf_to_mkdoc-0.1.9.dist-info → drf_to_mkdoc-0.2.0.dist-info}/METADATA +1 -1
- {drf_to_mkdoc-0.1.9.dist-info → drf_to_mkdoc-0.2.0.dist-info}/RECORD +11 -9
- {drf_to_mkdoc-0.1.9.dist-info → drf_to_mkdoc-0.2.0.dist-info}/WHEEL +0 -0
- {drf_to_mkdoc-0.1.9.dist-info → drf_to_mkdoc-0.2.0.dist-info}/licenses/LICENSE +0 -0
- {drf_to_mkdoc-0.1.9.dist-info → drf_to_mkdoc-0.2.0.dist-info}/top_level.txt +0 -0
|
@@ -572,14 +572,22 @@ def _create_endpoint_header(
|
|
|
572
572
|
"stylesheets/endpoints/animations.css",
|
|
573
573
|
"stylesheets/endpoints/accessibility.css",
|
|
574
574
|
"stylesheets/endpoints/loading.css",
|
|
575
|
+
"stylesheets/endpoints/try-out-sidebar.css",
|
|
576
|
+
]
|
|
577
|
+
scripts = [
|
|
578
|
+
"javascripts/try-out-sidebar.js",
|
|
575
579
|
]
|
|
576
580
|
prefix_path = f"{drf_to_mkdoc_settings.PROJECT_NAME}/"
|
|
577
581
|
css_links = "\n".join(
|
|
578
582
|
f'<link rel="stylesheet" href="{static(prefix_path + path)}">' for path in stylesheets
|
|
579
583
|
)
|
|
584
|
+
js_scripts = "\n".join(
|
|
585
|
+
f'<script src="{static(prefix_path + path)}" defer></script>' for path in scripts
|
|
586
|
+
)
|
|
580
587
|
content = f"""
|
|
581
|
-
<!-- inject CSS directly -->
|
|
588
|
+
<!-- inject CSS and JS directly -->
|
|
582
589
|
{css_links}
|
|
590
|
+
{js_scripts}
|
|
583
591
|
"""
|
|
584
592
|
content += f"# {method.upper()} {path}\n\n"
|
|
585
593
|
content += f"{format_method_badge(method)} `{path}`\n\n"
|
|
@@ -20,7 +20,7 @@ def generate_model_docs(models_data: dict[str, Any]) -> None:
|
|
|
20
20
|
write_file(file_path, content)
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
def
|
|
23
|
+
def render_column_fields_table(fields: dict[str, Any]) -> str:
|
|
24
24
|
"""Render the fields table for a model."""
|
|
25
25
|
content = "## Fields\n\n"
|
|
26
26
|
content += "| Field | Type | Description | Extra |\n"
|
|
@@ -31,6 +31,10 @@ def render_fields_table(fields: dict[str, Any]) -> str:
|
|
|
31
31
|
verbose_name = field_info.get("verbose_name", field_name)
|
|
32
32
|
help_text = field_info.get("help_text", "")
|
|
33
33
|
|
|
34
|
+
display_name = field_name
|
|
35
|
+
if field_type in ["ForeignKey", "OneToOneField"]:
|
|
36
|
+
display_name = f"{field_name}_id"
|
|
37
|
+
|
|
34
38
|
extra_info = []
|
|
35
39
|
if field_info.get("null"):
|
|
36
40
|
extra_info.append("null=True")
|
|
@@ -51,7 +55,7 @@ def render_fields_table(fields: dict[str, Any]) -> str:
|
|
|
51
55
|
extra_str = ", ".join(extra_info) if extra_info else ""
|
|
52
56
|
description_str = help_text or verbose_name
|
|
53
57
|
|
|
54
|
-
content += f"| `{
|
|
58
|
+
content += f"| `{display_name}` | {field_type} | {description_str} | {extra_str} |\n"
|
|
55
59
|
|
|
56
60
|
return content
|
|
57
61
|
|
|
@@ -121,35 +125,29 @@ def _create_model_header(name: str, app_label: str, table_name: str, description
|
|
|
121
125
|
|
|
122
126
|
def _add_fields_section(model_info: dict[str, Any]) -> str:
|
|
123
127
|
"""Add the fields section to the model documentation."""
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
name: info
|
|
127
|
-
for name, info in fields.items()
|
|
128
|
-
if info.get("type", "") not in ["ForeignKey", "OneToOneField", "ManyToManyField"]
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
if not non_relationship_fields:
|
|
128
|
+
column_fields = model_info.get("column_fields", {})
|
|
129
|
+
if not column_fields:
|
|
132
130
|
return ""
|
|
133
131
|
|
|
134
|
-
content =
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
132
|
+
content = ""
|
|
133
|
+
|
|
134
|
+
column_fields_content = render_column_fields_table(column_fields)
|
|
135
|
+
if column_fields_content:
|
|
136
|
+
content += column_fields_content
|
|
137
|
+
content += "\n"
|
|
138
|
+
|
|
139
|
+
choices_content = render_choices_tables(column_fields)
|
|
140
|
+
if choices_content:
|
|
141
|
+
content += choices_content
|
|
142
|
+
content += "\n"
|
|
143
|
+
|
|
138
144
|
return content
|
|
139
145
|
|
|
140
146
|
|
|
141
147
|
def _add_relationships_section(model_info: dict[str, Any]) -> str:
|
|
142
148
|
"""Add the relationships section to the model documentation."""
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
relationship_fields = {
|
|
147
|
-
name: info
|
|
148
|
-
for name, info in fields.items()
|
|
149
|
-
if info.get("type", "") in ["ForeignKey", "OneToOneField", "ManyToManyField"]
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
if not (relationships or relationship_fields):
|
|
149
|
+
relationship_fields = model_info.get("relationships", {})
|
|
150
|
+
if not relationship_fields:
|
|
153
151
|
return ""
|
|
154
152
|
|
|
155
153
|
content = "## Relationships\n\n"
|
|
@@ -157,7 +155,7 @@ def _add_relationships_section(model_info: dict[str, Any]) -> str:
|
|
|
157
155
|
content += "|-------|------|---------------|\n"
|
|
158
156
|
|
|
159
157
|
content += _render_relationship_fields(relationship_fields)
|
|
160
|
-
content += _render_relationships_from_section(
|
|
158
|
+
content += _render_relationships_from_section(relationship_fields)
|
|
161
159
|
content += "\n"
|
|
162
160
|
|
|
163
161
|
return content
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: drf-to-mkdoc
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: Generate Markdown API docs from Django/DRF OpenAPI schema for MkDocs
|
|
5
5
|
Author-email: Hossein Shayesteh <shayestehhs1@gmail.com>
|
|
6
6
|
Maintainer-email: Hossein Shayesteh <shayestehhs1@gmail.com>
|
|
@@ -7,10 +7,11 @@ drf_to_mkdoc/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
|
|
|
7
7
|
drf_to_mkdoc/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
8
|
drf_to_mkdoc/management/commands/build_docs.py,sha256=71dDDbb-qjRZr0kugviHtf3W_MSPFVjxkJ0tlLn97zM,4037
|
|
9
9
|
drf_to_mkdoc/management/commands/generate_doc_json.py,sha256=mWdYgMbSeLP4iQZeUm2DxwYQmdGy8w05XTEfbT_nOJo,19833
|
|
10
|
-
drf_to_mkdoc/management/commands/generate_docs.py,sha256=
|
|
11
|
-
drf_to_mkdoc/management/commands/generate_model_docs.py,sha256=
|
|
10
|
+
drf_to_mkdoc/management/commands/generate_docs.py,sha256=yxCuU5gXqpHEyL-U-li-s7X1Hae86Cb-Q2z3xlonw0k,4346
|
|
11
|
+
drf_to_mkdoc/management/commands/generate_model_docs.py,sha256=_A-C7gIZhCzFN4g9D8uwrd2yQW-HzgibCu4z_vx0QLM,13477
|
|
12
12
|
drf_to_mkdoc/management/commands/update_doc_schema.py,sha256=TtHVQxnVpB_VELRkVcdsDXDU5zXdguFleB1mXCDMAbg,2009
|
|
13
13
|
drf_to_mkdoc/static/drf-to-mkdoc/javascripts/endpoints-filter.js,sha256=KtfWroqsXg-wwmk36hpoH--M9WIW85EFNGeswMjFu4g,6138
|
|
14
|
+
drf_to_mkdoc/static/drf-to-mkdoc/javascripts/try-out-sidebar.js,sha256=zvEIm5rxTdMdmzElmmAqniIrI4ms2vsqGOMI0VFb_RQ,38953
|
|
14
15
|
drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/accessibility.css,sha256=DwCGPoaxaUvyifryrKqmkFDH06XBNf65kYsflMTbi0M,494
|
|
15
16
|
drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/animations.css,sha256=61m9SLAbatVUNuFeTUTxktoMu9SskYcwFjTsHYbsCRo,393
|
|
16
17
|
drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/badges.css,sha256=kUlUcf72uRw6x6Gn7cUq_aTuSGBbhumZ4Us-eBDM7DM,1251
|
|
@@ -26,6 +27,7 @@ drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/sections.css,sha256=xdrO6
|
|
|
26
27
|
drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/stats.css,sha256=0cDD8s63r6zQid_O1schNvfIwys1Y526xO6-B6s4Lxc,667
|
|
27
28
|
drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/tags.css,sha256=dOw13qsvVjx9cibzgzXlOutXVosNp6LzFfEFKvumG8w,1785
|
|
28
29
|
drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/theme-toggle.css,sha256=j1P5xDQDfos8jeVYz5s1jjEeujMlZtLi39OC6VeuMcA,1034
|
|
30
|
+
drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/try-out-sidebar.css,sha256=tkfQRpX0HTe09dqdjA4GxG5lOCLpw3Mp7VuxkFQtCvI,15829
|
|
29
31
|
drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/variables.css,sha256=Sg2vcQOHdpmEFDn43OeZcMIKxtr5EOEI_wISkCmtcSU,1895
|
|
30
32
|
drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/models/animations.css,sha256=IrqN9vJKgaHAWk2PBRKKmFHgH-lQlw5YZvEOGDqYk_g,656
|
|
31
33
|
drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/models/base.css,sha256=qdXDVScWoEvFbSRfjDlnxvQZBy2JFX9yXPngMWNSZ7o,1849
|
|
@@ -35,16 +37,16 @@ drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/models/responsive.css,sha256=ygqyUt
|
|
|
35
37
|
drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/models/variables.css,sha256=2HvyjnJrygSzdzpE-FYpo6FGhrYhmZ7NwDFAkADXQNg,1094
|
|
36
38
|
drf_to_mkdoc/utils/__init__.py,sha256=6dFTb07S6yIf-INMy0Mlgf5purNir687ZU9WZtITh4k,68
|
|
37
39
|
drf_to_mkdoc/utils/common.py,sha256=SxjGe9MtyxTyroXP7QdUiW9QqZ1N7xPjHHaAI-hqYxc,12077
|
|
38
|
-
drf_to_mkdoc/utils/endpoint_detail_generator.py,sha256=
|
|
40
|
+
drf_to_mkdoc/utils/endpoint_detail_generator.py,sha256=vAGQz_DV5wS47hfZNWgI_1oKarLdV5TJ6nwv47uMWw0,27911
|
|
39
41
|
drf_to_mkdoc/utils/endpoint_list_generator.py,sha256=P7pEHscHNHpjDuTXmAUPYV3_t8uGSdaYOgiDGGoCwYc,9705
|
|
40
|
-
drf_to_mkdoc/utils/model_detail_generator.py,sha256=
|
|
42
|
+
drf_to_mkdoc/utils/model_detail_generator.py,sha256=IHxgEW87Z-kxcFVVWqwdc7k7PsZAwXwixddt-tCvLKg,7961
|
|
41
43
|
drf_to_mkdoc/utils/model_list_generator.py,sha256=7gTPwxOxlvvCfDgVPTbGPsLi1gnI47UjMqKc57qRmks,2409
|
|
42
44
|
drf_to_mkdoc/utils/extractors/__init__.py,sha256=BvC8gKOPVI9gU1Piw0jRhKQ2ER5s1moAxgq7ZYkJWNI,86
|
|
43
45
|
drf_to_mkdoc/utils/extractors/query_parameter_extractors.py,sha256=gnDlvF-bxkTp2NcEQf0EZZAfmdQzUpedhZ7N1LAYQzU,8432
|
|
44
46
|
drf_to_mkdoc/utils/md_generators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
45
47
|
drf_to_mkdoc/utils/md_generators/query_parameters_generators.py,sha256=N-XqZ_FUODSR5V4xM9oEA3aaIiNGNmNwpvrWbQTx6RI,2566
|
|
46
|
-
drf_to_mkdoc-0.
|
|
47
|
-
drf_to_mkdoc-0.
|
|
48
|
-
drf_to_mkdoc-0.
|
|
49
|
-
drf_to_mkdoc-0.
|
|
50
|
-
drf_to_mkdoc-0.
|
|
48
|
+
drf_to_mkdoc-0.2.0.dist-info/licenses/LICENSE,sha256=3n9_ckIREsH8ogCxWW6dFsw_WfGcluG2mHcgl9i_UU0,1068
|
|
49
|
+
drf_to_mkdoc-0.2.0.dist-info/METADATA,sha256=UL7fU0BVLOoteGIHaJJxpNj2rHw9KXG1-l1xtKXJRno,7037
|
|
50
|
+
drf_to_mkdoc-0.2.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
51
|
+
drf_to_mkdoc-0.2.0.dist-info/top_level.txt,sha256=ZzJecR6j_tvLZiubUBEgawHflozC4DQy9ooNf1yDJ3Q,13
|
|
52
|
+
drf_to_mkdoc-0.2.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|