示例#1
0
 def createRequest(self, op, req, outgoingData = 0):
     url = req.url().toString()
     host = req.url().host()
     if (req.url().isRelative() or req.url().scheme() == "file" or host in self.allowedHosts or url in self.allowedUrls):
         print "Requesting file: " + url
         return QNetworkAccessManager.createRequest(self, op, req, outgoingData)
     else:
         print "Dropping non-local URI request: " + url
         return QNetworkAccessManager.createRequest(self, QNetworkAccessManager.GetOperation, QNetworkRequest(QUrl()))
示例#2
0
 def __init__(self):
     self.last_reply = None
     self.replys_cache = []
     self.replys_cache_index = 0
     self.last_method = None       
     self.initialized = False
     Logger.getLoggerFor(self.__class__)
     QNetworkAccessManager.__init__(self)
     self.finished.connect(self.processFinishedRequest)
     self.sslErrors.connect(self.processSslErrors)
示例#3
0
    def __init__(self, logger):
        QNetworkAccessManager.__init__(self)
        self.logger = logger
        self.errors = []

        # connect signals
        self.sslErrors.connect(self._ssl_errors)
        self.finished.connect(self._finished)

        # bind a custom virtual function to createRequest
        self.createRequest = self._create_request
示例#4
0
 def get(self, url, local_path):
     print "url", url
     print "local_path", local_path
     self.url = url
     self.local_path = local_path
     self.mb = DownloadMessageBox(self.parent())
     self.mb.buttonClicked.connect(self.handleCancel)
     self.mb.rejected.connect(self.handleReject)
     mgr = QNetworkAccessManager(self)
     mgr.finished.connect(self.handleFinished)
     self.reply = mgr.get(QNetworkRequest(QUrl(url)))
     self.reply.downloadProgress.connect(self.mb.updateProgress)
     self.mb.exec_()
示例#5
0
 def get(self, url, local_path):
     print "url", url
     print "local_path", local_path
     self.url = url
     self.local_path = local_path
     self.mb = DownloadMessageBox(self.parent())
     self.mb.buttonClicked.connect(self.handleCancel)
     self.mb.rejected.connect(self.handleReject)
     mgr = QNetworkAccessManager(self)
     mgr.finished.connect(self.handleFinished)
     self.reply = mgr.get(QNetworkRequest(QUrl(url)))
     self.reply.downloadProgress.connect(self.mb.updateProgress)
     self.mb.exec_()
示例#6
0
 def _create_request(self, operation, request, data):
     self.log_post_data(data)
     reply = QNetworkAccessManager.createRequest(self,
                                                 operation,
                                                 request,
                                                 data)
     return reply
示例#7
0
 def __init__(self, parent = None):
     QAbstractListModel.__init__(self, parent)
     self.manager = QNetworkAccessManager(self)
     self.manager.finished[QNetworkReply].connect(self.replyFinished)
     self._timeStamp = ""
     self._statistics = {
         'P1' : 0,
         'P2' : 0,
         'P3' : 0,
         'P4' : 0,
         'P5' : 0,
         'FIXED' : 0,
         'UNCONFIRMED' : 0,
         '---' : 0
     }
     self._bugs = []
     self._maxValue = 0
     self.setRoleNames({self.ID       : 'BUG_ID',
                        self.STATUS   : 'BUG_STATUS',
                        self.PRIORITY : 'BUG_PRIORITY',
                        self.ASSIGNEE : 'BUG_ASSIGNEE',
                        self.SUMARY   : 'BUG_SUMMARY',
                        self.COMPONENT: 'BUG_COMPONENT',
                        self.COMMENTS : 'BUG_COMMENTS'})
     self.update()
示例#8
0
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)

        self.invoice_form = InvoiceForm(self)

        self.action_Account.triggered.connect(self.show_account_editor)
        self.action_Update.triggered.connect(self.update_usage)
        self.action_About.triggered.connect(self.about)
        self.actionInvoice.triggered.connect(self.invoice_form.show)

        self.network_access_manager = QNetworkAccessManager()
        self.network_access_manager.finished.connect(self.fetched_usages)
        self.network_access_manager.sslErrors.connect(self.allow_connection)

        self.settings = QSettings('Nasim', 'BLUsage')
        self.file_name = os.path.expanduser('~/.BLUsage.dat')

        self.usage_model = BLUsage()
        self.read_usage()
        self.tree_model = TreeModel(self.usage_model.usage)

        self.treeView.setModel(self.tree_model)
        self.treeView.resizeColumnToContents(0)

        if not self.usage_model.username:
            self.show_account_editor()

        self.treeView.header().setResizeMode(QHeaderView.Stretch)
        self.treeView.header().setResizeMode(0, QHeaderView.ResizeToContents)
        self.treeView.setAlternatingRowColors(True)
        self.accountName.setText(self.usage_model.name)
        self.progressBar.setHidden(True)
        self.show_lastupdate()
示例#9
0
    def test():
        global session

        #s = u"オープニングやエンディングのアニメーションは単純に主人公を入れ替えた程度の物ではなく、タイトルロゴはもちろん金時や定春の行動や表情、登場する道具(万事屋の面々が乗る車のデザインなど)やクレジット文字など、細部に渡って変更がなされた。更に、坂田金時が『銀魂'』を最終回に追い込み新しいアニメ『まんたま』を始めようとした時にはエンディングや提供表示の煽りコメントが最終回を思わせる演出となり、『まんたま』でも専用のタイトルロゴとオープニングアニメーション(スタッフクレジット付き)が新造され、偽物の提供クレジットまで表示されるなど随所に至るまで徹底的な演出が行われた。また、テレビ欄では金魂篇終了回は『金魂'』最終回として、その翌週は新番組「銀魂'」として案内された。"
        s = "test"
        fr = "ja"
        to = "zhs"

        #s = u"What are you doing?"
        #fr = "en"

        from sakurakit.skprof import SkProfiler

        from qtrequests import qtrequests
        from PySide.QtNetwork import QNetworkAccessManager
        session = qtrequests.Session(QNetworkAccessManager())
        with SkProfiler():
            for i in range(1):
                t = translate(s, to=to, fr=fr)
        print t

        session = requests.Session()
        with SkProfiler():
            for i in range(1):
                t = translate(s, to=to, fr=fr)
        print t
        print type(t)

        #session = requests
        #with SkProfiler():
        #  for i in range(10):
        #    t = translate(s, to=to, fr=fr)
        #print t

        app.quit()
示例#10
0
    def _create_request(self, operation, request, data):
        self.log_post_data(data)
        # store the request object with the upload data
        try:
            raw_data = data.readAll()
        except AttributeError:
            original_data = backup_data = None
        else:
            original_data = self._new_buffer(raw_data)
            backup_data = self._new_buffer(raw_data)

        reply = QNetworkAccessManager.createRequest(self,
                                                    operation,
                                                    request,
                                                    original_data)
        self.logger.info('Request {0} started.'.format(id(reply)))

        if original_data is not None:
            original_data.setParent(reply)
            backup_data.setParent(reply)

        self._requests[id(reply)] = {'reply': reply,
                                     'outgoing_data': backup_data,
                                     'finished': False,
                                     'retry_count': 0}
        # in case the request object is destroyed, remove it from the dict
        # of request objects
        reply.destroyed.connect(partial(self._reply_destroyed, id(reply)))
        return reply
示例#11
0
 def _create_request(self, operation, request, data):
     reply = QNetworkAccessManager.createRequest(self.network_manager,
                                                 operation, request, data)
     url = request.url().toString()
     print(url)
     # self.resultList.append(url)
     return reply
示例#12
0
 def createRequest(self, operation, request, device=None):
     if self.headers:
         request = QNetworkRequest(request)
         if operation != QNetworkAccessManager.PostOperation and operation != QNetworkAccessManager.PutOperation :
             request.setHeader(QNetworkRequest.ContentTypeHeader, None)
         for item in self.headers.iteritems():
             request.setRawHeader(*item)
     return QNetworkAccessManager.createRequest(self,operation, request, device)
示例#13
0
 def __init__(self, q, nam):
     self.nam = nam or QNetworkAccessManager(q)
     self.request = None  # QNetworkRequest or None
     self.reply = None  # QNetworkReply or None
     self.path = ''  # unicode
     self.file = None  # python file object
     self._progressTime = 0  # long
     self._progressBytes = 0  # long
示例#14
0
  def __init__(self, abortSignal):
    self.abortSignal = abortSignal # signal

    self.online = False
    self.language = 'en' # str, user language

    self.convertsAlphabet = False
    self.yueEnabled = False # translate zh to yue

    self.allTranslators = [] # all created translators
    self.marked = False
    self.rubyEnabled = False

    self.romajiEnabled = \
    self.infoseekEnabled = \
    self.exciteEnabled = \
    self.niftyEnabled = \
    self.systranEnabled = \
    self.babylonEnabled = \
    self.bingEnabled = \
    self.googleEnabled = \
    self.naverEnabled = \
    self.vtransEnabled = \
    self.baiduEnabled = \
    self.youdaoEnabled = \
    self.lecOnlineEnabled = \
    self.transruEnabled = \
    self.hanVietEnabled = \
    self.jbeijingEnabled = \
    self.fastaitEnabled = \
    self.dreyeEnabled = \
    self.ezTransEnabled = \
    self.transcatEnabled = \
    self.atlasEnabled = \
    self.lecEnabled = \
    False # bool

    self.ehndEnabled = True

    self.romajiType = 'romaji'

    self.alignEnabled = {} # {str key:bool t}
    self.scriptEnabled = {} # {str key:bool t}

    self.retrans = {} # {str key:_trman.Retranslator}

    # {str key:{'yes':bool,'key':str,'lang':str}}
    self.retransSettings = settings.global_().retranslatorSettings() or {}
    # Example:
    #self.retransSettings = {
    #  'jbeijing': {'yes':True, 'key': 'hanviet', 'lang':'zhs'},
    #}

    from PySide.QtNetwork import QNetworkAccessManager
    nam = QNetworkAccessManager() # parent is not assigned
    from qtrequests import qtrequests
    self.session = qtrequests.Session(nam, abortSignal=self.abortSignal, requestTimeout=config.APP_ONLINE_TRANSLATION_TIMEOUT)
示例#15
0
 def __init__(self, app):
     self.network_manager = QNetworkAccessManager()
     self.network_manager.createRequest = self._create_request
     self.web_page = QWebPage()
     self.web_page.setNetworkAccessManager(self.network_manager)
     self.web_view = QWebView()
     self.web_view.setPage(self.web_page)
     self.html_data = None
     self.app = app
     self.finished = threading.Event()
示例#16
0
文件: t1.py 项目: zjx4041739/dlp
    def __init__(self):
        self.network_manager = QNetworkAccessManager()
        self.network_manager.createRequest = self._create_request
        self.network_manager.finished.connect(self._request_finished)

        self.web_page = QWebPage()
        self.web_page.setNetworkAccessManager(self.network_manager)

        self.web_view = QWebView()
        self.web_view.setPage(self.web_page)
示例#17
0
 def createRequest(self, operation, request, data):
     # data contains all the post data that is being added to the request
     # so you can look into it here
     #print "replay:====>",request.url().toString(),operation     
     #url = request.url().toString()   
     reply = QNetworkAccessManager.createRequest(self, operation,request,data)      
     #if "js" in url or "gif" in url:
         #reply = QNetworkAccessManager.createRequest(self,QNetworkAccessManager.GetOperation,QNetworkRequest(QtCore.QUrl("")))  
         #reply = QNetworkAccessManager.createRequest(self, operation,request,data)        
     #else:                                           
     return reply
示例#18
0
    def run(self, q):
        from pywmp import WindowsMediaPlayer
        self.wmp = WindowsMediaPlayer()

        from qtrequests import qtrequests
        from PySide.QtNetwork import QNetworkAccessManager
        nam = QNetworkAccessManager()
        self.session = qtrequests.Session(nam, abortSignal=q.abortSignal)

        q.abortSignalRequested.connect(q.abortSignal, Qt.QueuedConnection)

        q.playRequested.connect(self.play, Qt.QueuedConnection)
        q.stopRequested.connect(self.stop, Qt.QueuedConnection)
示例#19
0
    def __init__(self, logger, max_request_retries):
        QNetworkAccessManager.__init__(self)

        self._http_methods = {
            QNetworkAccessManager.HeadOperation: lambda r, d: self.head(r),
            QNetworkAccessManager.GetOperation: lambda r, d: self.get(r),
            QNetworkAccessManager.PutOperation: lambda r, d: self.put(r, d),
            QNetworkAccessManager.PostOperation: lambda r, d: self.post(r, d),
            QNetworkAccessManager.DeleteOperation:
            lambda r, d: self.deleteResource(r)
        }

        self.logger = logger
        self._max_request_retries = max_request_retries

        self._requests = dict()
        self.errors = []

        self.sslErrors.connect(self._ssl_errors)
        self.finished.connect(self._finished)

        # bind a custom virtual function to createRequest
        self.createRequest = self._create_request
示例#20
0
    def _create_request(self, operation, request, data):
        try:
            raw_data = smart_str(data.peek(8192))
        except AttributeError:
            # data is None, nothing will be sent in this request
            pass
        else:
            parsed_data = '\n'.join(raw_data.split('&'))
            print parsed_data

        reply = QNetworkAccessManager.createRequest(self._network_manager,
                                                    operation,
                                                    request,
                                                    data)
        return reply
示例#21
0
 def __init__(self):
     super(MainWindow, self).__init__()
     self.nam = QNetworkAccessManager()
     self.setWindowIcon(QIcon(os.path.join('icons', 'Logo_rendered_edited.png')))
     layout = QBoxLayout(QBoxLayout.TopToBottom)
     layout.setContentsMargins(0, 0, 0, 0)
     self.preference_manager = PreferenceManager()
     self.kgk_manager = KgkManager()
     self.kgk_manager.set_preference_manager(self.preference_manager)
     self.settings_manager = PasswordSettingsManager(self.preference_manager)
     self.setting_dirty = True
     # Header bar
     header_bar = QFrame()
     header_bar.setStyleSheet(
         "QWidget { background: rgb(40, 40, 40); } " +
         "QToolButton { background: rgb(40, 40, 40); }" +
         "QToolTip { color: rgb(255, 255, 255); background-color: rgb(20, 20, 20); " +
         "border: 1px solid white; }")
     header_bar.setAutoFillBackground(True)
     header_bar.setFixedHeight(45)
     header_bar_layout = QBoxLayout(QBoxLayout.LeftToRight)
     header_bar_layout.addStretch()
     header_bar.setLayout(header_bar_layout)
     layout.addWidget(header_bar)
     self.create_header_bar(header_bar_layout)
     # Widget area
     main_area = QFrame()
     main_layout = QBoxLayout(QBoxLayout.TopToBottom)
     main_area.setLayout(main_layout)
     layout.addWidget(main_area)
     self.create_main_area(main_layout)
     # Window layout
     layout.addStretch()
     main_layout.addStretch()
     self.setLayout(layout)
     settings = QSettings()
     size = settings.value("MainWindow/size")
     if not size:
         size = QSize(350, 450)
     self.resize(size)
     position = settings.value("MainWindow/pos")
     if not position:
         position = QPoint(0, 24)
     self.move(position)
     self.setWindowTitle("c't SESAM")
     self.master_password_edit.setFocus()
     self.show()
示例#22
0
    def __init__(self):
        self.user_agent = 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2) Gecko/20100124 Firefox/3.6 (Swiftfox)'

        self.application = QApplication([])
        self.webpage = QWebPage()
        self.network_manager = QNetworkAccessManager()
        self.network_manager.createRequest = self._create_request
        self.webpage.setNetworkAccessManager(self.network_manager)
        self.webpage.userAgentForUrl = lambda url: self.user_agent
        self.webframe = self.webpage.currentFrame()

        self.webpage.javaScriptAlert = self._alert
        self.webpage.javaScriptConfirm = self._alert
        self.url = ''
        self._load_status = 'init'
        self.web_view = QWebView()
        self.web_view.setPage(self.webpage)
        self.web_view.loadFinished.connect(self.onLoadFinished)
示例#23
0
    def __init__(self, callback):
        self._network_manager = QNetworkAccessManager()
        # connect signals
        self._network_manager.sslErrors.connect(self._ssl_errors)
        self._network_manager.finished.connect(self._finished)

        # bind a custom virtual function to createRequest
        self._network_manager.createRequest = self._create_request

        # a dict of available request methods
        self._request_methods = {
            'delete': lambda r, d: self._network_manager.deleteResource(r),
            'get': lambda r, d: self._network_manager.get(r),
            'head': lambda r, d: self._network_manager.head(r),
            'post': lambda r, d: self._network_manager.post(r, d),
            'put': lambda r, d: self._network_manager.put(r, d),
        }
        # store the callback function which will be called when a request is
        # finished
        self._result_callback = callback
示例#24
0
    def __init__(self, parent=None):
        super(InvoiceForm, self).__init__(parent)
        self.setupUi(self)
        self.progressBar.setHidden(True)

        self.invoice = Invoice(self)
        self.tableView.setModel(self.invoice)
        self.tableView.horizontalHeader().setResizeMode(QHeaderView.Stretch)
        self.tableView.setAlternatingRowColors(True)
        self.tableView.setSelectionBehavior(QAbstractItemView.SelectRows)

        self.updateButton.clicked.connect(self.update_invoices)
        self.tableView.selectionModel().selectionChanged.connect(self.invoice_selected)

        self.webpage = QWebPage()
        self.webpage.loadFinished.connect(self.save_invoice)
        self.webpage.networkAccessManager().sslErrors.connect(self.allow_connection)

        self.network_access_manager = QNetworkAccessManager()
        self.network_access_manager.finished.connect(self.fetched_invoices)
        self.network_access_manager.sslErrors.connect(self.allow_connection)
示例#25
0
 def createRequest(self, operation, request, outgoingData):
     url = request.url().toString()
     for h in request.rawHeaderList():
         pass
         #self._debug(DEBUG, "  %s: %s" % (h, request.rawHeader(h)))
     if self._url_filter:
         if url in self._url_filter:
             #self._debug(INFO, "URL filtered: %s" % url)
             request.setUrl(QUrl("about:blank"))
         else:
             pass
             #self._debug(DEBUG, "URL not filtered: %s" % url)
     #print url
     #if url == "http://v5.ele.me/":
      #request.setRawHeader("Accept-Encoding","")
     
     reply = QNetworkAccessManager.createRequest(self, operation, request, outgoingData)
     #self.emit(SIGNAL('networkRequestCreated(QNetworkReply*)'), reply)
             
     #if html[:6]=='\x1f\x8b\x08\x00\x00\x00':
     #    html=gzip.GzipFile(fileobj=StringIO(html)).read()
     return reply
示例#26
0
    def __init__(self, parent=None):
        QNetworkAccessManager.__init__(self, parent=parent)
        self._ignore_ssl_errors = False

        self.sslErrors.connect(self.handleSslErrors)
示例#27
0
 def __init__(self, parent):
     QNetworkAccessManager.__init__(self, parent)
     self.finished.connect(self._request_ended)
示例#28
0
class MainWindow(QMainWindow, Ui_MainWindow):

    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)

        self.invoice_form = InvoiceForm(self)

        self.action_Account.triggered.connect(self.show_account_editor)
        self.action_Update.triggered.connect(self.update_usage)
        self.action_About.triggered.connect(self.about)
        self.actionInvoice.triggered.connect(self.invoice_form.show)

        self.network_access_manager = QNetworkAccessManager()
        self.network_access_manager.finished.connect(self.fetched_usages)
        self.network_access_manager.sslErrors.connect(self.allow_connection)

        self.settings = QSettings('Nasim', 'BLUsage')
        self.file_name = os.path.expanduser('~/.BLUsage.dat')

        self.usage_model = BLUsage()
        self.read_usage()
        self.tree_model = TreeModel(self.usage_model.usage)

        self.treeView.setModel(self.tree_model)
        self.treeView.resizeColumnToContents(0)

        if not self.usage_model.username:
            self.show_account_editor()

        self.treeView.header().setResizeMode(QHeaderView.Stretch)
        self.treeView.header().setResizeMode(0, QHeaderView.ResizeToContents)
        self.treeView.setAlternatingRowColors(True)
        self.accountName.setText(self.usage_model.name)
        self.progressBar.setHidden(True)
        self.show_lastupdate()

    def show_account_editor(self):
        AccountDialog(self.usage_model, self).exec_()
        self.accountName.setText(self.usage_model.name)
        self.show_lastupdate()
        self.write_usage()

    def about(self):
        QMessageBox.about(self, "BLUsage",
"""Bangla Lion bandwidth usage viewer.

    Version 2.0
    Author: M. Nasimul Haque
    email: [email protected]
    Web: http://www.nasim.me.uk""")

    def update_usage(self):
        if not all([self.usage_model.username, self.usage_model.password]):
            QMessageBox.critical(self, 'No account',
                                 'Please enter your account details first.')
            return

        request = QNetworkRequest(QUrl(self.usage_model.user_endpoint))
        self.network_access_manager.post(request, self.usage_model.post_data)

        self.updateButton.setEnabled(False)
        self.progressBar.setHidden(False)
        self.progressBar.setValue(0)
        self.statusBar.showMessage("Please wait...")

    def fetched_usages(self, reply):
        self.updateButton.setEnabled(True)
        self.progressBar.setHidden(True)

        if reply.error() == QNetworkReply.NoError:
            if not self.usage_model.parse(str(reply.readAll())):
                title = "Parsing error"
                message = self.usage_model.error
            else:
                title = None
                self.tree_model.deleteLater()
                self.tree_model = TreeModel(self.usage_model.usage)
                self.treeView.setModel(self.tree_model)
                self.show_lastupdate()
                self.write_usage()
        elif reply.error() in [QNetworkReply.AuthenticationRequiredError,
                               QNetworkReply.ContentAccessDenied]:
            title = "Authentication error"
            message = "Please check your account credentials."
        else:
            title = "An error occured"
            message = reply.errorString() \
                    + ".\nPlease check your internet connection."

        if title:
            QMessageBox.critical(self, title, message)
        reply.deleteLater()

    def allow_connection(self, reply):
        reply.ignoreSslErrors()

    def read_usage(self):
        self.usage_model.name = self.settings.value('name')
        self.usage_model.username = self.settings.value('username')
        self.usage_model.password = self.settings.value('password')
        self.usage_model.last_update = self.settings.value('last_update')
        self.usage_model.capKB = int(self.settings.value('cap') or 0)
        self.usage_model.totalKB = int(self.settings.value('total') or 0)

        start = self.settings.value('start')
        if not start:
            today = QDate.currentDate()
            start = QDate(today.year(), today.month(), 1)
        self.usage_model.start = start
        end = self.settings.value('end')
        if not end:
            end = start.addDays(29)
        self.usage_model.end = end

    def write_usage(self):
        self.settings.setValue('name', self.usage_model.name)
        self.settings.setValue('username', self.usage_model.username)
        self.settings.setValue('password', self.usage_model.password)
        self.settings.setValue('start', self.usage_model.start)
        self.settings.setValue('end', self.usage_model.end)
        self.settings.setValue('last_update', self.usage_model.last_update)
        self.settings.setValue('cap', self.usage_model.capKB)
        self.settings.setValue('total', self.usage_model.totalKB)

    def show_lastupdate(self):
        self.totalLabel.setText("Totals usage: <b>%s</b>" %
                (self.usage_model.smart_bytes(self.usage_model.totalKB),))
        remaining = self.usage_model.remaining()
        if isinstance(remaining, int):
            self.remainingLabel.setText("Remaining: <b>%s</b>" %
                    (self.usage_model.smart_bytes(remaining),))
        else:
            self.remainingLabel.setText("Remaining: <b>Unlimited</b>")

        try:
            if not self.usage_model.last_update:
                self.statusBar.showMessage("Ready")
            else:
                self.statusBar.showMessage("Last updated on: " +
                    self.usage_model.last_update.toString())
        except:
            pass
示例#29
0
 def __init__(self, *args, **kwargs):
     QNetworkAccessManager.__init__(self, *args, **kwargs)
     self.headers = {}
示例#30
0
class Bugzilla (QAbstractListModel):

    # Role names
    ID = 0
    STATUS = 1
    PRIORITY = 2
    ASSIGNEE = 3
    SUMARY = 4
    COMPONENT = 5
    COMMENTS = 6

    def __init__(self, parent = None):
        QAbstractListModel.__init__(self, parent)
        self.manager = QNetworkAccessManager(self)
        self.manager.finished[QNetworkReply].connect(self.replyFinished)
        self._timeStamp = ""
        self._statistics = {
            'P1' : 0,
            'P2' : 0,
            'P3' : 0,
            'P4' : 0,
            'P5' : 0,
            'FIXED' : 0,
            'UNCONFIRMED' : 0,
            '---' : 0
        }
        self._bugs = []
        self._maxValue = 0
        self.setRoleNames({self.ID       : 'BUG_ID',
                           self.STATUS   : 'BUG_STATUS',
                           self.PRIORITY : 'BUG_PRIORITY',
                           self.ASSIGNEE : 'BUG_ASSIGNEE',
                           self.SUMARY   : 'BUG_SUMMARY',
                           self.COMPONENT: 'BUG_COMPONENT',
                           self.COMMENTS : 'BUG_COMMENTS'})
        self.update()

    # WORKAROUND
    @Slot(str, result=str)
    def parseISODate(self, isoDate):
        return QDateTime.fromString(isoDate, Qt.ISODate).toString('dd/MM/yyyy hh:mm')


    @Slot()
    def update(self):
        url = "http://bugs.pyside.org/buglist.cgi?bug_status=UNCONFIRMED&bug_status=NEW&bug_status=WAITING&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=RESOLVED&bug_status=VERIFIED&product=PySide&query_format=advanced&resolution=---&resolution=FIXED&ctype=csv"
        self._timeStamp = QDateTime.currentDateTime().toString("h:mm ap")
        self.manager.get(QNetworkRequest(QUrl(url)))

    @Slot(QNetworkReply)
    def replyFinished(self, reply):
        for k in self._statistics:
            self._statistics[k] = 0

        self._bugs = []
        while not reply.atEnd():
            line = str(reply.readLine())
            if line.startswith('bug_id'):
                continue
            fields = line.split(',', 7)

            fields = map(lambda (x) : x.strip()[1:-1] if x.startswith('"') else x, fields)
            fields = map(lambda (x) : x.replace('""', '"'), fields)
            self._bugs.append(fields)

            statisticsFields = (2, 5, 6)
            if fields[6] != '---': # just open bugs
                statisticsFields = (5, 6)
            for i in statisticsFields:
                key = fields[i]
                if key in self._statistics:
                    self._statistics[key] += 1


        self._maxValue = max(self._statistics['P1'], self._statistics['P2'], self._statistics['P3'], self._statistics['P4'], self._statistics['P5'])
        reply.deleteLater()
        #self.dataChanged.emit(self.index(0, 0), self.index(4, 0))
        self.reset()
        self.modelUpdated.emit()

    def getMaxValue(self):
        return self._maxValue

    def getTimeStamp(self):
        return self._timeStamp

    modelUpdated = Signal()
    maxValue = Property(int, getMaxValue, notify = modelUpdated)
    lastUpdate = Property(str, getTimeStamp, notify = modelUpdated)

    unconfirmedBugs = Property(int, lambda(self) : self._statistics['UNCONFIRMED'], notify = modelUpdated)
    fixedBugs = Property(int, lambda(self) : self._statistics['FIXED'], notify = modelUpdated)
    openedBugs = Property(int, lambda(self) : self._statistics['---'], notify = modelUpdated)
    p1 = Property(int, lambda(self) : self._statistics['P1'], notify = modelUpdated)
    p2 = Property(int, lambda(self) : self._statistics['P2'], notify = modelUpdated)
    p3 = Property(int, lambda(self) : self._statistics['P3'], notify = modelUpdated)
    p4 = Property(int, lambda(self) : self._statistics['P4'], notify = modelUpdated)
    p5 = Property(int, lambda(self) : self._statistics['P5'], notify = modelUpdated)


    def rowCount(self, index):
        return len(self._bugs)

    def data(self, index, role):
        row = index.row()
        if role == self.ID:
            return self._bugs[row][0]
        elif role == self.STATUS:
            return self._bugs[row][5]
        elif role == self.PRIORITY:
            return self._bugs[row][2]
        elif role == self.ASSIGNEE:
            if self._bugs[row][5] == 'ASSIGNED':
                return self._bugs[row][4]
            return 'nobody'
        elif role == self.SUMARY or Qt.DisplayRole:
            return self._bugs[row][7]
        elif role == self.COMPONENT:
            return 'PySide'
        elif role == self.COMMENTS:
            return "Comments ..."
        return None
示例#31
0
    def __init__(self):
        QObject.__init__(self)
        self.manager = QNetworkAccessManager()
        self.current_downloads = {}

        self.manager.finished.connect(self.download_finished)
示例#32
0
class DownloadManager(QObject):
    dl_finished = Signal(str, str)

    def __init__(self):
        QObject.__init__(self)
        self.manager = QNetworkAccessManager()
        self.current_downloads = {}

        self.manager.finished.connect(self.download_finished)

    def do_download(self, dl_url):
        url = QUrl(dl_url)
        req = QNetworkRequest(url)
        reply = self.manager.get(req)
        self.current_downloads[reply] = dl_url

    def get_file_name(self, url):
        path = url.path()
        basename = QFileInfo(path).fileName()
        if not basename:
            basename = "download"
        if QFile.exists(basename):
            print "aaaaaaaaaaaaaaaah"
            return
        return basename

    def save_to_disk(self, filename, data):
        f = QFile(filename)
        if not f.open(QIODevice.WriteOnly):
            print "could not open %s for writing" % filename
            return False
        f.write(data.readAll())
        f.close()
        return True

    def execute(self):
        print "downloader on the run"
        dls = ["http://www.pyside.org/docs/pyside/_static/pysidelogo.png",
                "https://www.google.com/intl/en_com/images/srpr/logo3w.png"]
        for dl in dls:
            self.do_download(dl)

    def download_finished(self, reply):
        url = reply.url()
        if reply.error():
            print "Dowload of %s failed" % url.toEncoded()
            return
        else:
            #filename = self.save_file_name(url)
            f = QTemporaryFile()
            if f.open():
                filename = f.fileName()
            else:
                print "Creation of tempfile for %s failed" % url.toEncoded()
                return

        if self.save_to_disk(filename, reply):
            print "Download of %s succeded (saved to %s)\n" % (
                    url.toEncoded(), filename)
            url = self.current_downloads.pop(reply)
            reply.deleteLater()
            self.dl_finished.emit(url, filename)

    def lastlog(self, url, filename):
        print url, "to", filename, "ok"
        if len(self.current_downloads) == 0:
            print "bye"
            QCoreApplication.instance().quit()
示例#33
0
 def createRequest(self, op, request, outgoingData=None):
     conf = QSslConfiguration()
     conf.setProtocol(QSsl.TlsV1)
     request.setSslConfiguration(conf)
     return QNetworkAccessManager.createRequest(self, op, request, outgoingData)
示例#34
0
class InvoiceForm(QDialog, Ui_InvoiceDialog):

    def __init__(self, parent=None):
        super(InvoiceForm, self).__init__(parent)
        self.setupUi(self)
        self.progressBar.setHidden(True)

        self.invoice = Invoice(self)
        self.tableView.setModel(self.invoice)
        self.tableView.horizontalHeader().setResizeMode(QHeaderView.Stretch)
        self.tableView.setAlternatingRowColors(True)
        self.tableView.setSelectionBehavior(QAbstractItemView.SelectRows)

        self.updateButton.clicked.connect(self.update_invoices)
        self.tableView.selectionModel().selectionChanged.connect(self.invoice_selected)

        self.webpage = QWebPage()
        self.webpage.loadFinished.connect(self.save_invoice)
        self.webpage.networkAccessManager().sslErrors.connect(self.allow_connection)

        self.network_access_manager = QNetworkAccessManager()
        self.network_access_manager.finished.connect(self.fetched_invoices)
        self.network_access_manager.sslErrors.connect(self.allow_connection)

    def invoice_selected(self, new, old):
        try:
            row = self.invoice.invoices[new.indexes()[0].row()]
        except IndexError:
            return
        if row[1].startswith('Invoice'):
            self.invoice_filename = os.path.expanduser('~/.blusage/%s.png' % row[1].lower())
            if os.path.exists(self.invoice_filename):
                self.load_invoice()
            else:
                usage = self.parentWidget().usage_model
                url = '%s%s' % (usage.user_endpoint[:-5], self.invoice.invoices[new.indexes()[0].row()][0])
                self.webpage.mainFrame().load(QUrl(url))
                self.webpage.mainFrame().setScrollBarPolicy(Qt.Vertical, Qt.ScrollBarAlwaysOff)
                self.webpage.mainFrame().setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff)
                self.webpage.setViewportSize(QSize(800, 600))
                self.enable_ui(False)
        else:
            self.invoiceLabel.setText("""
<center>
    <table>
        <tr>
            <th>Payment #</th>
            <td>{number}</td>
        </tr>
        <tr>
            <th>Date</th>
            <td>{date}</td>
        </tr>
        <tr>
            <th>Credit</th>
            <td>{credit}</td>
        </tr>
        <tr>
            <th>Balance</th>
            <td>{balance}</td>
        </tr>
    </table>
</center>
            """.format(number=row[1][8:], date=row[2], credit=row[3], balance=row[5]))

    def load_invoice(self):
        pixmap = QPixmap(self.invoice_filename)
        self.invoiceLabel.setPixmap(pixmap)

    def update_invoices(self):
        usage = self.parentWidget().usage_model
        url = '%s?%s' % (usage.user_endpoint, self.invoice.post_data)
        request = QNetworkRequest(QUrl(url))
        self.network_access_manager.get(request)
        self.enable_ui(False)

    def enable_ui(self, value=True):
        self.updateButton.setEnabled(value)
        self.progressBar.setHidden(value)
        self.tableView.setEnabled(value)

    def save_invoice(self, ok):
        self.enable_ui()
        if ok:
            frame = self.webpage.mainFrame()
            image = QImage(frame.contentsSize(), QImage.Format_ARGB32_Premultiplied)
            image.fill(Qt.transparent);

            painter = QPainter(image)
            painter.setRenderHint(QPainter.Antialiasing, True);
            painter.setRenderHint(QPainter.TextAntialiasing, True);
            painter.setRenderHint(QPainter.SmoothPixmapTransform, True);
            frame.documentElement().render(painter);
            painter.end();

            image.save(self.invoice_filename)
            self.load_invoice()
        else:
            title = "An error occured"
            message = "Could not load invoice." \
                    + "\nPlease check your internet connection."

            QMessageBox.critical(self, title, message)

    def fetched_invoices(self, reply):
        self.enable_ui()
        if reply.error() == QNetworkReply.NoError:
            html = unicode(reply.readAll())
            self.invoice.parse(html)
            self.invoice.reset()
        else:
            title = "An error occured"
            message = reply.errorString() \
                    + ".\nPlease check your internet connection."

            QMessageBox.critical(self, title, message)
        reply.deleteLater()

    def allow_connection(self, reply):
        reply.ignoreSslErrors()
示例#35
0
文件: t1.py 项目: zjx4041739/dlp
 def _create_request(self, operation, request, data):
     print(data.readAll())
     reply = QNetworkAccessManager.createRequest(self.network_manager,
                                                 operation, request, data)
     return reply
示例#36
0
        """Processes replies and dispatches results to requesters.

        This method will be invoked on each finished request, submitted by
        :py:meth:`.fetch_banner`. It then converts the loaded data into a
        banner and passes the result on to the model of the request's origin.

        :param reply: The network reply from a banner load request.
        :type reply: :class:`.QNetworkReply`

        """
        pixmap = QPixmap()
        if reply.error() == QNetworkReply.NoError:
            image_bytes = reply.readAll()
            pixmap.loadFromData(image_bytes)
        else:
            pixmap.load(":/icons/image-missing.png")

        index = self._ready_signal.pop(reply.request().url().toString())

        index.model().setData(index, pixmap, Qt.DecorationRole)

banner_loader = BannerLoader()

disk_cache = QNetworkDiskCache()
disk_cache.setCacheDirectory(dirs.user_cache_dir)
disk_cache.setMaximumCacheSize(100 * 1024 * 1024)  # 100MB Cache

access_manager = QNetworkAccessManager()
access_manager.setCache(disk_cache)
access_manager.finished.connect(banner_loader.finished_request)
示例#37
0
 def testSetNetworkAccessManager(self):
     page = QWebPage()
     manager = QNetworkAccessManager()
     page.setNetworkAccessManager(manager)
示例#38
0
 def createRequest(self,op,request,outgoing=None): 
     self.configureSsl(request)
     reply =  QNetworkAccessManager.createRequest(self,op,request,outgoing)
     self.attachCallbacks(reply)
     self.cacheReply(reply)
     return reply
示例#39
0
class NetManager(object):

    def __init__(self, callback):
        self._network_manager = QNetworkAccessManager()
        # connect signals
        self._network_manager.sslErrors.connect(self._ssl_errors)
        self._network_manager.finished.connect(self._finished)

        # bind a custom virtual function to createRequest
        self._network_manager.createRequest = self._create_request

        # a dict of available request methods
        self._request_methods = {
            'delete': lambda r, d: self._network_manager.deleteResource(r),
            'get': lambda r, d: self._network_manager.get(r),
            'head': lambda r, d: self._network_manager.head(r),
            'post': lambda r, d: self._network_manager.post(r, d),
            'put': lambda r, d: self._network_manager.put(r, d),
        }
        # store the callback function which will be called when a request is
        # finished
        self._result_callback = callback

    def _ssl_errors(self, reply, errors):
        # currently we ignore all ssl related errors
        reply.ignoreSslErrors()

    def _finished(self, reply):
        # Called when a request is finished, whether it was successful or not.
        # Obtain some basic information about the request

        reply_url = reply.url().toString()
        # Request headers
        request_headers = dict((str(hdr), str(reply.request().rawHeader(hdr)))
                               for hdr in reply.request().rawHeaderList())
        # Reply headers
        reply_headers = dict((str(hdr), str(reply.rawHeader(hdr)))
                             for hdr in reply.rawHeaderList())
        status_code = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute)
        reason = reply.attribute(QNetworkRequest.HttpReasonPhraseAttribute)
        redirect = reply.attribute(QNetworkRequest.RedirectionTargetAttribute)
        result = {'reply_url': smart_str(reply_url),
                  'status_code': status_code,
                  'reason': reason,
                  'redirect_to': smart_str(redirect.toString()),
                  'request_headers': request_headers,
                  'reply_headers': reply_headers}

        if reply.error() == QNetworkReply.NoError:
            # request was successful
            result['successful'] = True
            result['reply_data'] = reply.readAll()
        else:
            # request was not successful
            result['successful'] = False
            result['error'] = reply.error()
            result['error_msg'] = reply.errorString()

        # schedule the reply object for deletion
        reply.deleteLater()

        # calling the callback function which we passed upon instantiation to
        # report the results there
        self._result_callback(result)

    def _create_request(self, operation, request, data):
        try:
            raw_data = smart_str(data.peek(8192))
        except AttributeError:
            # data is None, nothing will be sent in this request
            pass
        else:
            parsed_data = '\n'.join(raw_data.split('&'))
            print parsed_data

        reply = QNetworkAccessManager.createRequest(self._network_manager,
                                                    operation,
                                                    request,
                                                    data)
        return reply

    def _prepare_request(self, url, headers):
        # create an empty request
        request = QNetworkRequest()
        # assign a url to it
        request.setUrl(QUrl(url))

        # add some custom headers to the request
        for (header_name, header_value) in headers.items():
            request.setRawHeader(header_name, QByteArray(header_value))

        return request

    def _urlencode_request_data(self, raw_data):
        # the data which we want to send to the server must be urlencoded
        request_data = QUrl()
        for (name, value) in raw_data.items():
            request_data.addQueryItem(name, unicode(value))

        return request_data.encodedQuery()

    def perform(self, method, url, headers, raw_data=None):
        # create the request object
        request = self._prepare_request(url, headers)
        # urlencode the request data
        request_data = self._urlencode_request_data(raw_data or dict())
        # locate the request function for the choosen request method
        request_func = self._request_methods[method.lower()]
        # initiate request
        request_func(request, request_data)
示例#40
0
class DownloadManager(QObject):
    dl_finished = Signal(str, str)

    def __init__(self):
        QObject.__init__(self)
        self.manager = QNetworkAccessManager()
        self.current_downloads = {}

        self.manager.finished.connect(self.download_finished)

    def do_download(self, dl_url):
        url = QUrl(dl_url)
        req = QNetworkRequest(url)
        reply = self.manager.get(req)
        self.current_downloads[reply] = dl_url

    def get_file_name(self, url):
        path = url.path()
        basename = QFileInfo(path).fileName()
        if not basename:
            basename = "download"
        if QFile.exists(basename):
            print "aaaaaaaaaaaaaaaah"
            return
        return basename

    def save_to_disk(self, filename, data):
        f = QFile(filename)
        if not f.open(QIODevice.WriteOnly):
            print "could not open %s for writing" % filename
            return False
        f.write(data.readAll())
        f.close()
        return True

    def execute(self):
        print "downloader on the run"
        dls = [
            "http://www.pyside.org/docs/pyside/_static/pysidelogo.png",
            "https://www.google.com/intl/en_com/images/srpr/logo3w.png"
        ]
        for dl in dls:
            self.do_download(dl)

    def download_finished(self, reply):
        url = reply.url()
        if reply.error():
            print "Dowload of %s failed" % url.toEncoded()
            return
        else:
            #filename = self.save_file_name(url)
            f = QTemporaryFile()
            if f.open():
                filename = f.fileName()
            else:
                print "Creation of tempfile for %s failed" % url.toEncoded()
                return

        if self.save_to_disk(filename, reply):
            print "Download of %s succeded (saved to %s)\n" % (url.toEncoded(),
                                                               filename)
            url = self.current_downloads.pop(reply)
            reply.deleteLater()
            self.dl_finished.emit(url, filename)

    def lastlog(self, url, filename):
        print url, "to", filename, "ok"
        if len(self.current_downloads) == 0:
            print "bye"
            QCoreApplication.instance().quit()
示例#41
0
    def __init__(self):
        QObject.__init__(self)
        self.manager = QNetworkAccessManager()
        self.current_downloads = {}

        self.manager.finished.connect(self.download_finished)