Update app.py
Browse files
app.py
CHANGED
@@ -119,19 +119,19 @@ def update_summary_and_create_pr(repo_url, folder_location, start_date, end_date
|
|
119 |
summary_content = summary_file.decoded_content.decode()
|
120 |
except GithubException as e:
|
121 |
if e.status == 404:
|
122 |
-
summary_content = "
|
123 |
else:
|
124 |
raise
|
125 |
|
126 |
# Add new file link at the top of the Releases section
|
127 |
-
new_entry = f"{end_date}\n"
|
128 |
-
releases_index = summary_content.find("Releases")
|
129 |
if releases_index != -1:
|
130 |
insert_position = summary_content.find("\n", releases_index) + 1
|
131 |
updated_summary = (summary_content[:insert_position] + new_entry +
|
132 |
summary_content[insert_position:])
|
133 |
else:
|
134 |
-
updated_summary = summary_content + f"Releases\n{new_entry}"
|
135 |
|
136 |
# Create a new branch for the PR
|
137 |
base_branch = repo.default_branch
|
@@ -170,7 +170,7 @@ def update_summary_and_create_pr(repo_url, folder_location, start_date, end_date
|
|
170 |
except Exception as e:
|
171 |
print(f"Error: {str(e)}")
|
172 |
return f"Error creating PR: {str(e)}"
|
173 |
-
|
174 |
# App layout
|
175 |
app.layout = dbc.Container([
|
176 |
html.H1("Automated Release Notes Generator", className="mb-4"),
|
@@ -215,6 +215,10 @@ app.layout = dbc.Container([
|
|
215 |
dbc.Button("Generate Release Notes", id="generate-button", color="primary", className="mr-2"),
|
216 |
dbc.Button("Download Markdown", id="download-button", color="secondary", className="mr-2", disabled=True),
|
217 |
dbc.Button("Create PR", id="pr-button", color="info", disabled=True)
|
|
|
|
|
|
|
|
|
218 |
], width=12, className="mb-3"),
|
219 |
]),
|
220 |
]),
|
@@ -238,7 +242,8 @@ app.layout = dbc.Container([
|
|
238 |
Output("download-button", "disabled"),
|
239 |
Output("pr-button", "disabled"),
|
240 |
Output("download-markdown", "data"),
|
241 |
-
Output("pr-button", "children")
|
|
|
242 |
[Input("generate-button", "n_clicks"),
|
243 |
Input("download-button", "n_clicks"),
|
244 |
Input("pr-button", "n_clicks")],
|
@@ -254,35 +259,35 @@ def handle_all_actions(generate_clicks, download_clicks, pr_clicks,
|
|
254 |
ctx = dash.callback_context
|
255 |
|
256 |
if not ctx.triggered:
|
257 |
-
return "", True, True, None, "Create PR"
|
258 |
|
259 |
button_id = ctx.triggered[0]['prop_id'].split('.')[0]
|
260 |
|
261 |
if button_id == "generate-button":
|
262 |
notes, file_name = generate_release_notes(git_provider, repo_url, start_date, end_date, folder_location)
|
263 |
-
return notes, False, False, None, "Create PR"
|
264 |
|
265 |
elif button_id == "download-button":
|
266 |
if generated_file is None:
|
267 |
-
return dash.no_update, dash.no_update, dash.no_update, None, dash.no_update
|
268 |
return (dash.no_update, dash.no_update, dash.no_update,
|
269 |
dcc.send_bytes(generated_file.getvalue(), f"release_notes_{datetime.now().strftime('%Y%m%d%H%M%S')}.md"),
|
270 |
-
dash.no_update)
|
271 |
|
272 |
elif button_id == "pr-button":
|
273 |
if generated_file is None:
|
274 |
-
return dash.no_update, dash.no_update, dash.no_update, None, "Error: No file generated"
|
275 |
|
276 |
markdown_content = generated_file.getvalue().decode()
|
277 |
|
278 |
result = update_summary_and_create_pr(repo_url, folder_location, start_date, end_date, markdown_content)
|
279 |
|
280 |
if pr_url:
|
281 |
-
return dash.no_update, dash.no_update, True, None, f"PR Created: {pr_url}"
|
282 |
else:
|
283 |
-
return dash.no_update, dash.no_update, False, None, result
|
284 |
|
285 |
-
return dash.no_update, dash.no_update, dash.no_update, None, dash.no_update
|
286 |
|
287 |
if __name__ == '__main__':
|
288 |
print("Starting the Dash application...")
|
|
|
119 |
summary_content = summary_file.decoded_content.decode()
|
120 |
except GithubException as e:
|
121 |
if e.status == 404:
|
122 |
+
summary_content = "* [Releases](README.md)\n"
|
123 |
else:
|
124 |
raise
|
125 |
|
126 |
# Add new file link at the top of the Releases section
|
127 |
+
new_entry = f"* [{end_date}](rel/{file_name})\n"
|
128 |
+
releases_index = summary_content.find("* [Releases]")
|
129 |
if releases_index != -1:
|
130 |
insert_position = summary_content.find("\n", releases_index) + 1
|
131 |
updated_summary = (summary_content[:insert_position] + new_entry +
|
132 |
summary_content[insert_position:])
|
133 |
else:
|
134 |
+
updated_summary = summary_content + f"* [Releases](README.md)\n{new_entry}"
|
135 |
|
136 |
# Create a new branch for the PR
|
137 |
base_branch = repo.default_branch
|
|
|
170 |
except Exception as e:
|
171 |
print(f"Error: {str(e)}")
|
172 |
return f"Error creating PR: {str(e)}"
|
173 |
+
|
174 |
# App layout
|
175 |
app.layout = dbc.Container([
|
176 |
html.H1("Automated Release Notes Generator", className="mb-4"),
|
|
|
215 |
dbc.Button("Generate Release Notes", id="generate-button", color="primary", className="mr-2"),
|
216 |
dbc.Button("Download Markdown", id="download-button", color="secondary", className="mr-2", disabled=True),
|
217 |
dbc.Button("Create PR", id="pr-button", color="info", disabled=True)
|
218 |
+
dcc.Loading(
|
219 |
+
id="pr-loading",
|
220 |
+
type="circle",
|
221 |
+
children=[html.Div(id="pr-output")
|
222 |
], width=12, className="mb-3"),
|
223 |
]),
|
224 |
]),
|
|
|
242 |
Output("download-button", "disabled"),
|
243 |
Output("pr-button", "disabled"),
|
244 |
Output("download-markdown", "data"),
|
245 |
+
Output("pr-button", "children"),
|
246 |
+
Output("pr-output", "children")],
|
247 |
[Input("generate-button", "n_clicks"),
|
248 |
Input("download-button", "n_clicks"),
|
249 |
Input("pr-button", "n_clicks")],
|
|
|
259 |
ctx = dash.callback_context
|
260 |
|
261 |
if not ctx.triggered:
|
262 |
+
return "", True, True, None, "Create PR", ""
|
263 |
|
264 |
button_id = ctx.triggered[0]['prop_id'].split('.')[0]
|
265 |
|
266 |
if button_id == "generate-button":
|
267 |
notes, file_name = generate_release_notes(git_provider, repo_url, start_date, end_date, folder_location)
|
268 |
+
return notes, False, False, None, "Create PR", ""
|
269 |
|
270 |
elif button_id == "download-button":
|
271 |
if generated_file is None:
|
272 |
+
return dash.no_update, dash.no_update, dash.no_update, None, dash.no_update, ""
|
273 |
return (dash.no_update, dash.no_update, dash.no_update,
|
274 |
dcc.send_bytes(generated_file.getvalue(), f"release_notes_{datetime.now().strftime('%Y%m%d%H%M%S')}.md"),
|
275 |
+
dash.no_update, "")
|
276 |
|
277 |
elif button_id == "pr-button":
|
278 |
if generated_file is None:
|
279 |
+
return dash.no_update, dash.no_update, dash.no_update, None, "Error: No file generated", "No file generated"
|
280 |
|
281 |
markdown_content = generated_file.getvalue().decode()
|
282 |
|
283 |
result = update_summary_and_create_pr(repo_url, folder_location, start_date, end_date, markdown_content)
|
284 |
|
285 |
if pr_url:
|
286 |
+
return dash.no_update, dash.no_update, True, None, f"PR Created", f"PR Created: {pr_url}"
|
287 |
else:
|
288 |
+
return dash.no_update, dash.no_update, False, None, "PR Creation Failed", result
|
289 |
|
290 |
+
return dash.no_update, dash.no_update, dash.no_update, None, dash.no_update, ""
|
291 |
|
292 |
if __name__ == '__main__':
|
293 |
print("Starting the Dash application...")
|