@@ -89,6 +89,45 @@ def generate_warnings_and_blockers(
8989 return {"warnings" : warnings , "blockers" : blockers }
9090
9191
92+ def generate_enhanced_pr_description (
93+ pull_request : PullRequest ,
94+ target_repo : Repo ,
95+ request : WSGIRequest = None ,
96+ template : str = "pr_description.md" ,
97+ ) -> str :
98+ context = {}
99+ if request :
100+ context .update (
101+ generate_warnings_and_blockers (target_repo , pull_request , request )
102+ )
103+
104+ context ["landing_status" ] = str (
105+ get_pull_request_last_landing_job_status (target_repo .name , pull_request .number )
106+ ).lower ()
107+
108+ path = reverse (
109+ "pull-request" ,
110+ kwargs = {
111+ "repo_name" : target_repo .name ,
112+ "number" : pull_request .number ,
113+ },
114+ )
115+
116+ context ["lando_url" ] = f"{ settings .SITE_URL } { path } "
117+ context ["special_delimiter" ] = SPECIAL_DELIMITER
118+ bugs = parse_bugs (pull_request .title )
119+ context ["bugs" ] = []
120+
121+ for bug in bugs :
122+ context ["bugs" ].append ((bug , f"{ settings .BUGZILLA_URL } /{ bug } " ))
123+
124+ context ["title" ] = pull_request .title
125+ context ["body" ] = pull_request .parsed_body
126+
127+ rendered = render_to_string (template , context )
128+ return rendered
129+
130+
92131@method_decorator (csrf_exempt , name = "dispatch" )
93132class LegacyDiffWarningView (View ):
94133 """
@@ -223,10 +262,10 @@ def get(
223262 self , request : WSGIRequest , repo_name : int , pull_number : int
224263 ) -> JsonResponse :
225264 """Return the status of a pull request based on landing job counts."""
226- status = str (
265+ landing_status = str (
227266 get_pull_request_last_landing_job_status (repo_name , pull_number )
228267 ).lower ()
229- return JsonResponse ({"status" : status }, status = 200 )
268+ return JsonResponse ({"status" : landing_status }, status = 200 )
230269
231270 @method_decorator (require_authenticated_user )
232271 def post (
@@ -292,6 +331,14 @@ class Form(forms.Form):
292331 job .status = JobStatus .SUBMITTED
293332 job .save ()
294333
334+ description = generate_enhanced_pr_description (
335+ self .pull_request ,
336+ self .target_repo ,
337+ request ,
338+ template = "pr_description_landing.md" ,
339+ )
340+ self .client .update_pull_request_body (pull_number , description )
341+
295342 return JsonResponse ({"id" : job .id }, status = 201 )
296343
297344
@@ -368,30 +415,10 @@ def get(
368415 if not request .user .has_perm ("main.can_change_landing_job" ):
369416 raise PermissionError ()
370417
371- context = {}
372- context .update (
373- generate_warnings_and_blockers (self .target_repo , self .pull_request , request )
418+ description = generate_enhanced_pr_description (
419+ self .pull_request , self .target_repo , request
374420 )
375-
376- path = reverse (
377- "pull-request" ,
378- kwargs = {
379- "repo_name" : self .target_repo .name ,
380- "number" : self .pull_request .number ,
381- },
421+ self .client .update_pull_request_body (pull_number , description )
422+ return JsonResponse (
423+ {"status" : f"Pull request { pull_number } description updated." }
382424 )
383-
384- context ["lando_url" ] = f"{ settings .SITE_URL } { path } "
385- context ["special_delimiter" ] = SPECIAL_DELIMITER
386- bugs = parse_bugs (self .pull_request .title )
387- context ["bugs" ] = []
388-
389- for bug in bugs :
390- context ["bugs" ].append ((bug , f"{ settings .BUGZILLA_URL } /{ bug } " ))
391-
392- context ["title" ] = self .pull_request .title
393- context ["body" ] = self .pull_request .parsed_body
394-
395- rendered = render_to_string ("pr_description.md" , context )
396- self .client .update_pull_request_body (pull_number , rendered )
397- return JsonResponse ({"context" : context , "md" : rendered })
0 commit comments