def apply_changes_impl(self): obj = race() mw = GlobalAccess().get_main_window() map_items = [ obj.persons, obj.results, obj.groups, obj.courses, obj.organizations ] map_names = [ 'persons', 'results', 'groups', 'courses', 'organizations' ] selected_items = { 'persons': [], 'results': [], 'groups': [], 'courses': [], 'organizations': [], } template_path = self.item_template.currentText() _settings['last_template'] = template_path _settings['open_in_browser'] = self.item_open_in_browser.isChecked() _settings['save_to_last_file'] = self.item_save_to_last_file.isChecked( ) _settings['selected'] = self.item_selected.isChecked() if _settings['selected']: cur_items = map_items[mw.current_tab] for i in mw.get_selected_rows(): selected_items[map_names[mw.current_tab]].append( cur_items[i].to_dict()) races_dict = [r.to_dict() for r in races()] template = get_text_from_file( template_path, race=races_dict[get_current_race_index()], races=races_dict, current_race=get_current_race_index(), selected=selected_items) if _settings['save_to_last_file']: file_name = _settings['last_file'] else: file_name = get_save_file_name( _('Save As HTML file'), _("HTML file (*.html)"), '{}_start'.format( obj.data.get_start_datetime().strftime("%Y%m%d"))) if file_name: _settings['last_file'] = file_name with codecs.open(file_name, 'w', 'utf-8') as file: file.write(template) file.close() # Open file in your browser if _settings['open_in_browser']: webbrowser.open('file://' + file_name, new=2)
def apply_changes_impl(self): obj = race() mw = GlobalAccess().get_main_window() map_items = [obj.persons, obj.results, obj.groups, obj.courses, obj.organizations] map_names = ['persons', 'results', 'groups', 'courses', 'organizations'] selected_items = { 'persons': [], 'results': [], 'groups': [], 'courses': [], 'organizations': [], } template_path = self.item_template.currentText() _settings['last_template'] = template_path _settings['open_in_browser'] = self.item_open_in_browser.isChecked() _settings['save_to_last_file'] = self.item_save_to_last_file.isChecked() _settings['selected'] = self.item_selected.isChecked() if _settings['selected']: cur_items = map_items[mw.current_tab] for i in mw.get_selected_rows(): selected_items[map_names[mw.current_tab]].append(cur_items[i].to_dict()) ResultCalculation(obj).process_results() RaceSplits(obj).generate() ScoreCalculation(obj).calculate_scores() races_dict = [r.to_dict() for r in races()] if template_path.endswith('.docx'): # DOCX template processing full_path = config.template_dir() + template_path doc = DocxTemplate(full_path) context = {} context['race'] = races_dict[get_current_race_index()] context['name'] = config.NAME context['version'] = str(config.VERSION) doc.render(context) if _settings['save_to_last_file']: file_name = _settings['last_file'] else: file_name = get_save_file_name(_('Save As MS Word file'), _("MS Word file (*.docx)"), '{}_official'.format(obj.data.get_start_datetime().strftime("%Y%m%d"))) if file_name: doc.save(file_name) os.startfile(file_name) else: template = get_text_from_file( template_path, race=races_dict[get_current_race_index()], races=races_dict, rent_cards=list(RentCards().get()), current_race=get_current_race_index(), selected=selected_items ) if _settings['save_to_last_file']: file_name = _settings['last_file'] else: file_name = get_save_file_name(_('Save As HTML file'), _("HTML file (*.html)"), '{}_report'.format(obj.data.get_start_datetime().strftime("%Y%m%d"))) if len(file_name): _settings['last_file'] = file_name with codecs.open(file_name, 'w', 'utf-8') as file: file.write(template) file.close() # Open file in your browser if _settings['open_in_browser']: webbrowser.open('file://' + file_name, new=2)