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 execute(self): file_name = get_save_file_name(_('Save As IOF xml'), _('IOF xml (*.xml)'), '{}_resultList'.format(race().data.get_start_datetime().strftime("%Y%m%d"))) if file_name is not '': try: iof_xml.export_result_list(file_name) except Exception as e: logging.error(str(e)) QMessageBox.warning(self.app, _('Error'), _('Export error') + ': ' + file_name)
def execute(self): file_name = get_save_file_name(_('Save As WDB file'), _("WDB file (*.wdb)"), '{}_sportorg_export'.format(race().data.get_start_datetime().strftime("%Y%m%d"))) if file_name is not '': try: wb = WinOrientBinary() self.app.clear_filters(False) wdb_object = wb.export() self.app.apply_filters() write_wdb(wdb_object, file_name) except Exception as e: logging.exception(str(e)) QMessageBox.warning(self.app, _('Error'), _('Export error') + ': ' + file_name)
def create_file(self, *args, update_data=True): file_name = get_save_file_name(_('Create SportOrg file'), _('SportOrg file (*.json)'), time.strftime("%Y%m%d")) if file_name is not '': try: if update_data: new_event([Race()]) set_current_race_index(0) self.clear_filters(remove_condition=False) File(file_name, logging.root, File.JSON).create() self.apply_filters() self.last_update = time.time() self.file = file_name self.add_recent_file(self.file) self.set_title() self.init_model() except Exception as e: logging.error(str(e)) QMessageBox.warning(self, _('Error'), _('Cannot create file') + ': ' + file_name) self.refresh()
from sportorg.language import _ from sportorg.libs.winorient.wdb import WDB, write_wdb def set_numbers(wdb_target, wdb_source): """ :type wdb_target: WDB :type wdb_source: WDB """ changed = False for i in wdb_target.man: name = i.name source = wdb_source.find_man_by_name(name) if source and source.qualification: i.qualification = source.qualification changed = True return changed if __name__ == '__main__': app = QApplication(sys.argv) file1 = get_open_file_name(_('Open target WDB file'), _("WDB file (*.wdb)")) file2 = get_open_file_name(_('Open source WDB file'), _("WDB file (*.wdb)")) wb1 = WinOrientBinary(file1).wdb_object wb2 = WinOrientBinary(file2).wdb_object if set_numbers(wb1, wb2): file3 = get_save_file_name(_('Save WDB file'), _("WDB file (*.wdb)")) write_wdb(wb1, file3)
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)