1717 ActionsManager ,
1818 send_notification ,
1919)
20- from libraries .forms import CreateReportForm
21- from libraries .tasks import update_commits
20+ from libraries .tasks import update_commits , generate_release_report
2221from reports .models import WebsiteStatReport
2322from slack .management .commands .fetch_slack_activity import get_my_channels , locked
24- from versions .models import Version
23+ from versions .models import Version , ReportConfiguration
2524
2625User = get_user_model ()
2726
@@ -30,8 +29,12 @@ class ReleaseTasksManager(ActionsManager):
3029 latest_version : Version | None = None
3130 handled_commits : dict [str , int ] = {}
3231
33- def __init__ (self , should_generate_report : bool = False ):
32+ def __init__ (
33+ self , base_uri : str , user_id : int , should_generate_report : bool = False
34+ ):
35+ self .base_uri = base_uri
3436 self .should_generate_report = should_generate_report
37+ self .user_id = user_id
3538 super ().__init__ ()
3639
3740 def set_tasks (self ):
@@ -80,20 +83,32 @@ def import_ml_counts(self):
8083 """
8184 start_date = timezone .now () - timedelta (days = 120 )
8285 date_string = start_date .strftime ("%Y-%m-%d" )
83- print (f"{ date_string = } " )
8486 call_command ("import_ml_counts" , start_date = date_string )
8587
8688 def generate_report (self ):
8789 if not self .should_generate_report :
8890 self .add_progress_message ("Skipped - report generation not requested" )
8991 return
90- form = CreateReportForm ({"version" : self .latest_version .id })
91- form .cache_html ()
92+
93+ report_configuration = ReportConfiguration .objects .get (
94+ version = self .latest_version .name
95+ )
96+ generate_release_report .delay (
97+ user_id = self .user_id ,
98+ params = {"report_configuration" : report_configuration .id , "publish" : True },
99+ base_uri = self .base_uri ,
100+ )
92101
93102
94103@locked (1138692 )
95- def run_commands (progress : list [str ], generate_report : bool = False ):
96- manager = ReleaseTasksManager (should_generate_report = generate_report )
104+ def run_commands (
105+ progress : list [str ], base_uri : str , user_id : int , generate_report : bool = False
106+ ):
107+ manager = ReleaseTasksManager (
108+ base_uri = base_uri ,
109+ should_generate_report = generate_report ,
110+ user_id = user_id ,
111+ )
97112 manager .run_tasks ()
98113 progress .extend (manager .progress_messages )
99114 return manager .handled_commits
@@ -125,23 +140,28 @@ def bad_credentials() -> list[str]:
125140
126141
127142@click .command ()
143+ @click .option (
144+ "--base_uri" ,
145+ is_flag = False ,
146+ help = "The URI to which paths should be relative" ,
147+ default = None ,
148+ )
128149@click .option (
129150 "--user_id" ,
130151 is_flag = False ,
131152 help = "The ID of the user that started this task (For notification purposes)" ,
132- default = None ,
133153)
134154@click .option (
135155 "--generate_report" ,
136156 is_flag = True ,
137157 help = "Generate a report at the end of the command" ,
138158 default = False ,
139159)
140- def command (user_id = None , generate_report = False ):
160+ def command (user_id , base_uri = None , generate_report = False ):
141161 """A long running chain of tasks to import and update library data."""
142162 start = timezone .now ()
143163
144- user = User .objects .filter (id = user_id ).first () if user_id else None
164+ user = User .objects .filter (id = user_id ).first ()
145165
146166 progress = ["___Progress Messages___" ]
147167 if missing_creds := bad_credentials ():
@@ -162,7 +182,7 @@ def command(user_id=None, generate_report=False):
162182 )
163183
164184 try :
165- handled_commits = run_commands (progress , generate_report )
185+ handled_commits = run_commands (progress , base_uri , generate_report , user_id )
166186 end = timezone .now ()
167187 except Exception :
168188 error = traceback .format_exc ()
0 commit comments