@@ -99,6 +99,45 @@ def generate_warnings_and_blockers(
9999 return {"warnings" : warnings , "blockers" : blockers }
100100
101101
102+ def generate_enhanced_pr_description (
103+ pull_request : PullRequest ,
104+ target_repo : Repo ,
105+ request : WSGIRequest = None ,
106+ template : str = "pr_description.md" ,
107+ ) -> str :
108+ context = {}
109+ if request :
110+ context .update (
111+ generate_warnings_and_blockers (target_repo , pull_request , request )
112+ )
113+
114+ context ["landing_status" ] = str (
115+ get_pull_request_last_landing_job_status (target_repo .name , pull_request .number )
116+ ).lower ()
117+
118+ path = reverse (
119+ "pull-request" ,
120+ kwargs = {
121+ "repo_name" : target_repo .name ,
122+ "number" : pull_request .number ,
123+ },
124+ )
125+
126+ context ["lando_url" ] = f"{ settings .SITE_URL } { path } "
127+ context ["special_delimiter" ] = SPECIAL_DELIMITER
128+ bugs = parse_bugs (pull_request .title )
129+ context ["bugs" ] = []
130+
131+ for bug in bugs :
132+ context ["bugs" ].append ((bug , f"{ settings .BUGZILLA_URL } /{ bug } " ))
133+
134+ context ["title" ] = pull_request .title
135+ context ["body" ] = pull_request .parsed_body
136+
137+ rendered = render_to_string (template , context )
138+ return rendered
139+
140+
102141@method_decorator (csrf_exempt , name = "dispatch" )
103142class LegacyDiffWarningView (View ):
104143 """
@@ -233,10 +272,10 @@ def get(
233272 self , request : WSGIRequest , repo_name : int , pull_number : int
234273 ) -> JsonResponse :
235274 """Return the status of a pull request based on landing job counts."""
236- status = str (
275+ landing_status = str (
237276 get_pull_request_last_landing_job_status (repo_name , pull_number )
238277 ).lower ()
239- return JsonResponse ({"status" : status }, status = 200 )
278+ return JsonResponse ({"status" : landing_status }, status = 200 )
240279
241280 @method_decorator (require_authenticated_user )
242281 def post (
@@ -302,6 +341,14 @@ class Form(forms.Form):
302341 job .status = JobStatus .SUBMITTED
303342 job .save ()
304343
344+ description = generate_enhanced_pr_description (
345+ self .pull_request ,
346+ self .target_repo ,
347+ request ,
348+ template = "pr_description_landing.md" ,
349+ )
350+ self .client .update_pull_request_body (pull_number , description )
351+
305352 return JsonResponse ({"id" : job .id }, status = 201 )
306353
307354
@@ -378,30 +425,10 @@ def get(
378425 if not request .user .has_perm ("main.can_change_landing_job" ):
379426 raise PermissionError ()
380427
381- context = {}
382- context .update (
383- generate_warnings_and_blockers (self .target_repo , self .pull_request , request )
428+ description = generate_enhanced_pr_description (
429+ self .pull_request , self .target_repo , request
384430 )
385-
386- path = reverse (
387- "pull-request" ,
388- kwargs = {
389- "repo_name" : self .target_repo .name ,
390- "number" : self .pull_request .number ,
391- },
431+ self .client .update_pull_request_body (pull_number , description )
432+ return JsonResponse (
433+ {"status" : f"Pull request { pull_number } description updated." }
392434 )
393-
394- context ["lando_url" ] = f"{ settings .SITE_URL } { path } "
395- context ["special_delimiter" ] = SPECIAL_DELIMITER
396- bugs = parse_bugs (self .pull_request .title )
397- context ["bugs" ] = []
398-
399- for bug in bugs :
400- context ["bugs" ].append ((bug , f"{ settings .BUGZILLA_URL } /{ bug } " ))
401-
402- context ["title" ] = self .pull_request .title
403- context ["body" ] = self .pull_request .parsed_body
404-
405- rendered = render_to_string ("pr_description.md" , context )
406- self .client .update_pull_request_body (pull_number , rendered )
407- return JsonResponse ({"context" : context , "md" : rendered })
0 commit comments