Esempio n. 1
0
    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)
Esempio n. 2
0
 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)
Esempio n. 3
0
    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)
Esempio n. 4
0
 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()
Esempio n. 5
0
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)
Esempio n. 6
0
    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)