예제 #1
0
    def exportFitting(self, event):
        sPort = Port.getInstance()
        fitID = self.mainFrame.getActiveFit()

        self.statusbar.SetStatusText("", 0)

        if fitID is None:
            self.statusbar.SetStatusText(
                "Please select an active fitting in the main window", 1)
            return

        self.statusbar.SetStatusText("Sending request and awaiting response",
                                     1)
        sCrest = Crest.getInstance()

        try:
            sFit = Fit.getInstance()
            data = sPort.exportCrest(sFit.getFit(fitID))
            res = sCrest.postFitting(self.getActiveCharacter(), data)

            self.statusbar.SetStatusText(
                "%d: %s" % (res.status_code, res.reason), 0)
            try:
                text = json.loads(res.text)
                self.statusbar.SetStatusText(text['message'], 1)
            except ValueError:
                pyfalog.warning("Value error on loading JSON.")
                self.statusbar.SetStatusText("", 1)
        except requests.exceptions.ConnectionError:
            msg = "Connection error, please check your internet connection"
            pyfalog.error(msg)
            self.statusbar.SetStatusText(msg)
예제 #2
0
    def exportFitting(self, event):
        sPort = Port.getInstance()
        fitID = self.mainFrame.getActiveFit()

        self.statusbar.SetStatusText("", 0)

        if fitID is None:
            self.statusbar.SetStatusText("Please select an active fitting in the main window", 1)
            return

        self.statusbar.SetStatusText("Sending request and awaiting response", 1)
        sCrest = Crest.getInstance()

        try:
            sFit = Fit.getInstance()
            data = sPort.exportCrest(sFit.getFit(fitID))
            res = sCrest.postFitting(self.getActiveCharacter(), data)

            self.statusbar.SetStatusText("%d: %s" % (res.status_code, res.reason), 0)
            try:
                text = json.loads(res.text)
                self.statusbar.SetStatusText(text['message'], 1)
            except ValueError:
                self.statusbar.SetStatusText("", 1)
        except requests.exceptions.ConnectionError:
            self.statusbar.SetStatusText("Connection error, please check your internet connection", 1)
예제 #3
0
 def fileImportDialog(self, event):
     """Handles importing single/multiple EVE XML / EFT cfg fit files"""
     sPort = Port.getInstance()
     dlg = wx.FileDialog(self,
                         "Open One Or More Fitting Files",
                         wildcard=("EVE XML fitting files (*.xml)|*.xml|"
                                   "EFT text fitting files (*.cfg)|*.cfg|"
                                   "All Files (*)|*"),
                         style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST
                         | wx.FD_MULTIPLE)
     if dlg.ShowModal() == wx.ID_OK:
         self.progressDialog = wx.ProgressDialog(
             "Importing fits",
             " " *
             100,  # set some arbitrary spacing to create width in window
             parent=self,
             style=wx.PD_APP_MODAL | wx.PD_ELAPSED_TIME)
         self.progressDialog.message = None
         sPort.importFitsThreaded(dlg.GetPaths(), self.fileImportCallback)
         self.progressDialog.ShowModal()
         try:
             dlg.Destroy()
         except PyDeadObjectError:
             pyfalog.error(
                 "Tried to destroy an object that doesn't exist in <fileImportDialog>."
             )
예제 #4
0
 def importFitting(self, event):
     selection = self.fitView.fitSelection
     if not selection:
         return
     data = self.fitTree.fittingsTreeCtrl.GetItemData(selection)
     sPort = Port.getInstance()
     import_type, fits = sPort.importFitFromBuffer(data)
     self.mainFrame._openAfterImport(fits)
예제 #5
0
 def importFitting(self, event):
     selection = self.fitView.fitSelection
     if not selection:
         return
     data = self.fitTree.fittingsTreeCtrl.GetItemData(selection)
     sPort = Port.getInstance()
     import_type, fits = sPort.importFitFromBuffer(data)
     self.mainFrame._openAfterImport(fits)
예제 #6
0
    def exportFitting(self, event):
        sPort = Port.getInstance()
        fitID = self.mainFrame.getActiveFit()

        self.statusbar.SetStatusText("", 0)

        if fitID is None:
            self.statusbar.SetStatusText(
                "Please select an active fitting in the main window", 1)
            return

        self.statusbar.SetStatusText("Sending request and awaiting response",
                                     1)
        sEsi = Esi.getInstance()

        sFit = Fit.getInstance()
        exportCharges = self.exportChargesCb.GetValue()
        try:
            data = sPort.exportESI(sFit.getFit(fitID), exportCharges)
        except ESIExportException as e:
            msg = str(e)
            if not msg:
                msg = "Failed to generate export data"
            pyfalog.warning(msg)
            self.statusbar.SetStatusText(msg, 1)
            return
        activeChar = self.getActiveCharacter()
        if activeChar is None:
            msg = "Need at least one ESI character to export"
            pyfalog.warning(msg)
            self.statusbar.SetStatusText(msg, 1)
            return
        res = sEsi.postFitting(activeChar, data)

        try:
            res.raise_for_status()
            self.statusbar.SetStatusText("", 0)
            self.statusbar.SetStatusText(res.reason, 1)
        except requests.exceptions.ConnectionError:
            msg = "Connection error, please check your internet connection"
            pyfalog.error(msg)
            self.statusbar.SetStatusText("ERROR", 0)
            self.statusbar.SetStatusText(msg, 1)
        except ESIExportException as ex:
            pyfalog.error(ex)
            self.statusbar.SetStatusText("ERROR", 0)
            self.statusbar.SetStatusText(
                "{} - {}".format(res.status_code, res.reason), 1)
        except APIException as ex:
            try:
                ESIExceptionHandler(self, ex)
            except (KeyboardInterrupt, SystemExit):
                raise
            except Exception as ex:
                self.statusbar.SetStatusText("ERROR", 0)
                self.statusbar.SetStatusText(
                    "{} - {}".format(res.status_code, res.reason), 1)
                pyfalog.error(ex)
예제 #7
0
    def exportFitting(self, event):
        sPort = Port.getInstance()
        fitID = self.mainFrame.getActiveFit()

        self.statusbar.SetStatusText("", 0)

        if fitID is None:
            self.statusbar.SetStatusText(
                _t("Please select an active fitting in the main window"), 1)
            return

        self.statusbar.SetStatusText(
            _t("Sending request and awaiting response"), 1)
        sEsi = Esi.getInstance()

        sFit = Fit.getInstance()
        exportCharges = self.exportChargesCb.GetValue()
        try:
            data = sPort.exportESI(sFit.getFit(fitID), exportCharges)
        except ESIExportException as e:
            msg = str(e)
            if not msg:
                msg = _t("Failed to generate export data")
            pyfalog.warning(msg)
            self.statusbar.SetStatusText(msg, 1)
            return
        activeChar = self.getActiveCharacter()
        if activeChar is None:
            msg = _t("Need at least one ESI character to export")
            pyfalog.warning(msg)
            self.statusbar.SetStatusText(msg, 1)
            return

        try:
            res = sEsi.postFitting(activeChar, data)
            res.raise_for_status()
            self.statusbar.SetStatusText("", 0)
            self.statusbar.SetStatusText(res.reason, 1)
        except requests.exceptions.ConnectionError:
            msg = _t("Connection error, please check your internet connection")
            pyfalog.error(msg)
            self.statusbar.SetStatusText(_t("ERROR"), 0)
            self.statusbar.SetStatusText(msg, 1)
        except APIException as ex:
            pyfalog.error(ex)
            self.statusbar.SetStatusText(_t("ERROR"), 0)
            self.statusbar.SetStatusText(
                "HTTP {} - {}".format(ex.status_code, ex.response["error"]), 1)
            try:
                ESIExceptionHandler(ex)
            except:
                # don't need to do anything - we should already get the error in ex.response
                pass
        except Exception as ex:
            self.statusbar.SetStatusText(_t("ERROR"), 0)
            self.statusbar.SetStatusText("Unknown error", 1)
            pyfalog.error(ex)
예제 #8
0
파일: esiFittings.py 프로젝트: thauser/Pyfa
    def exportFitting(self, event):
        sPort = Port.getInstance()
        fitID = self.mainFrame.getActiveFit()

        self.statusbar.SetStatusText("", 0)

        if fitID is None:
            self.statusbar.SetStatusText(
                "Please select an active fitting in the main window", 1)
            return

        self.statusbar.SetStatusText("Sending request and awaiting response",
                                     1)
        sEsi = Esi.getInstance()

        sFit = Fit.getInstance()
        data = sPort.exportESI(sFit.getFit(fitID))
        res = sEsi.postFitting(self.getActiveCharacter(), data)

        try:
            res.raise_for_status()
            self.statusbar.SetStatusText("", 0)
            self.statusbar.SetStatusText(res.reason, 1)
        except requests.exceptions.ConnectionError:
            msg = "Connection error, please check your internet connection"
            pyfalog.error(msg)
            self.statusbar.SetStatusText("ERROR", 0)
            self.statusbar.SetStatusText(msg, 1)
        except ESIExportException as ex:
            pyfalog.error(ex)
            self.statusbar.SetStatusText("ERROR", 0)
            self.statusbar.SetStatusText(
                "{} - {}".format(res.status_code, res.reason), 1)
        except APIException as ex:
            try:
                ESIExceptionHandler(self, ex)
            except Exception as ex:
                self.statusbar.SetStatusText("ERROR", 0)
                self.statusbar.SetStatusText(
                    "{} - {}".format(res.status_code, res.reason), 1)
                pyfalog.error(ex)
예제 #9
0
    def showExportDialog(self, event):
        """ Export active fit """
        sFit = Fit.getInstance()
        fit = sFit.getFit(self.getActiveFit())
        defaultFile = "%s - %s.xml" % (fit.ship.item.name,
                                       fit.name) if fit else None

        dlg = wx.FileDialog(self,
                            "Save Fitting As...",
                            wildcard="EVE XML fitting files (*.xml)|*.xml",
                            style=wx.FD_SAVE,
                            defaultFile=defaultFile)
        if dlg.ShowModal() == wx.ID_OK:
            format_ = dlg.GetFilterIndex()
            path = dlg.GetPath()
            if format_ == 0:
                sPort = Port.getInstance()
                output = sPort.exportXml(None, fit)
                if '.' not in os.path.basename(path):
                    path += ".xml"
            else:
                print("oops, invalid fit format %d" % format_)
                try:
                    dlg.Destroy()
                except PyDeadObjectError:
                    pyfalog.error(
                        "Tried to destroy an object that doesn't exist in <showExportDialog>."
                    )
                return

            with open(path, "w", encoding="utf-8") as openfile:
                openfile.write(output)
                openfile.close()

        try:
            dlg.Destroy()
        except PyDeadObjectError:
            pyfalog.error(
                "Tried to destroy an object that doesn't exist in <showExportDialog>."
            )
예제 #10
0
    def exportFitting(self, event):
        sPort = Port.getInstance()
        fitID = self.mainFrame.getActiveFit()

        self.statusbar.SetStatusText("", 0)

        if fitID is None:
            self.statusbar.SetStatusText(
                "Please select an active fitting in the main window", 1)
            return

        self.statusbar.SetStatusText("Sending request and awaiting response",
                                     1)
        sEsi = Esi.getInstance()

        try:
            sFit = Fit.getInstance()
            data = sPort.exportESI(sFit.getFit(fitID))
            res = sEsi.postFitting(self.getActiveCharacter(), data)

            self.statusbar.SetStatusText("", 0)
            self.statusbar.SetStatusText("", 1)
            # try:
            #     text = json.loads(res.text)
            #     self.statusbar.SetStatusText(text['message'], 1)
            # except ValueError:
            #     pyfalog.warning("Value error on loading JSON.")
            #     self.statusbar.SetStatusText("", 1)
        except requests.exceptions.ConnectionError:
            msg = "Connection error, please check your internet connection"
            pyfalog.error(msg)
            self.statusbar.SetStatusText(msg)
        except ESIExportException as ex:
            pyfalog.error(ex)
            self.statusbar.SetStatusText("ERROR", 0)
            self.statusbar.SetStatusText(ex.args[0], 1)
        except APIException as ex:
            ESIExceptionHandler(self, ex)
예제 #11
0
    def exportFitting(self, event):
        sPort = Port.getInstance()
        fitID = self.mainFrame.getActiveFit()

        self.statusbar.SetStatusText("", 0)

        if fitID is None:
            self.statusbar.SetStatusText("Please select an active fitting in the main window", 1)
            return

        self.statusbar.SetStatusText("Sending request and awaiting response", 1)
        sEsi = Esi.getInstance()

        sFit = Fit.getInstance()
        data = sPort.exportESI(sFit.getFit(fitID))
        res = sEsi.postFitting(self.getActiveCharacter(), data)

        try:
            res.raise_for_status()
            self.statusbar.SetStatusText("", 0)
            self.statusbar.SetStatusText(res.reason, 1)
        except requests.exceptions.ConnectionError:
            msg = "Connection error, please check your internet connection"
            pyfalog.error(msg)
            self.statusbar.SetStatusText("ERROR", 0)
            self.statusbar.SetStatusText(msg, 1)
        except ESIExportException as ex:
            pyfalog.error(ex)
            self.statusbar.SetStatusText("ERROR", 0)
            self.statusbar.SetStatusText("{} - {}".format(res.status_code, res.reason), 1)
        except APIException as ex:
            try:
                ESIExceptionHandler(self, ex)
            except Exception as ex:
                self.statusbar.SetStatusText("ERROR", 0)
                self.statusbar.SetStatusText("{} - {}".format(res.status_code, res.reason), 1)
                pyfalog.error(ex)