示例#1
0
    def updateMetaData(self):
        self._checkState()
        metadata = MetaData()
        metadata.sync_timestamp = datetime.datetime.now()

        self.cursor.execute("SELECT count(id) from artists")
        metadata.artist_count = int(self.cursor.fetchone()[0])

        self.cursor.execute("SELECT count(id) from albums")
        metadata.album_count = int(self.cursor.fetchone()[0])

        self.cursor.execute("SELECT count(id) from tracks")
        metadata.track_count = int(self.cursor.fetchone()[0])

        self.cursor.execute("SELECT sum(time) from tracks")
        metadata.total_time = int(self.cursor.fetchone()[0])
        sz = long(0)
        self.cursor.execute("SELECT file_size from tracks")
        for row in self.cursor.fetchall():
            sz += long(row[0])
        metadata.archive_size = "%s" % utils.formatSize(sz)

        self.cursor.execute("INSERT INTO meta_data "\
                            "(sync_timestamp, archive_size, "\
                            "artist_count, album_count, "\
                            "track_count, total_time) "\
                            "VALUES (%s, %s, %d, %d, %d, %d)",
                            (str(metadata.sync_timestamp),
                             metadata.archive_size,
                             metadata.artist_count, metadata.album_count,
                             metadata.track_count, metadata.total_time))
        return metadata
示例#2
0
 def updatePackToTable(self, update):
     data = []
     for pack in update:
         row = [
             pack["version"],
             utils.formatSize(pack["size"]), pack["sysver"]
         ]
         data.append(row)
     return data
 def _download_file(self, url, local_filename, size, window, num):
     text = window["window_main_progress_label"]
     bar = window["window_main_progress_bar"]
     size = int(size)
     chunk_size = 8192
     count = 0
     already_loaded = 0
     total, used, free = shutil.disk_usage(os.path.dirname(local_filename))
     if used / total * 100 <= self.config["storageThreshold"]:
         if free > int(size):
             with requests.get(url, stream=True, proxies=self.proxies) as r:
                 r.raise_for_status()
                 start = time.perf_counter()
                 with open(local_filename, 'wb') as f:
                     for chunk in r.iter_content(chunk_size=chunk_size):
                         if chunk:
                             f.write(chunk)
                             count += 1
                             already_loaded = count * chunk_size
                             if already_loaded / size > 1:
                                 already_loaded = size
                             percentage = already_loaded / size * 100
                             text.Update(
                                 self.loc.getKey(
                                     "window_main_progress_label", [
                                         num,
                                         utils.formatSize(already_loaded),
                                         utils.formatSize(size),
                                         format(float(percentage), '.1f'),
                                         utils.formatSize(
                                             already_loaded //
                                             (time.perf_counter() - start))
                                         + "s"
                                     ]))
                             bar.UpdateBar(percentage)
                             window.Refresh()
         else:
             self.logger.log(self.loc.getKey("msg_notEnoughDiskSpace"), "e")
     else:
         self.logger.log(
             self.loc.getKey("msg_spaceBelowThreshold",
                             [100 - self.storageThreshold]), "w")
示例#4
0
 def queueToTable(self, queue, ps3):
     i = 1
     data = []
     if len(queue) > 0:
         for pack in queue:
             row = [
                 i,
                 ps3.getTitleNameFromId(pack["gameid"]), pack["gameid"],
                 pack["version"],
                 utils.formatSize(pack["size"])
             ]
             i += 1
             data.append(row)
     else:
         data.append(["", "", "", "", ""])
     return data
 def _download_file(self, url, local_filename, size, window, num):
     text = window["window_main_progress_label"]
     bar = window["window_main_progress_bar"]
     size = int(size)
     chunk_size=8192
     count = 0
     already_loaded = 0
     with requests.get(url, stream=True, proxies=self.proxies) as r:
         r.raise_for_status()
         start = time.perf_counter()
         with open(local_filename, 'wb') as f:
             for chunk in r.iter_content(chunk_size=chunk_size): 
                 if chunk:
                     f.write(chunk)
                     count += 1
                     already_loaded = count * chunk_size
                     if already_loaded / size > 1:
                         already_loaded = size
                     percentage = already_loaded / size * 100
                     text.Update(self.loc.getKey("window_main_progress_label", [num, utils.formatSize(already_loaded), utils.formatSize(size), format(float(percentage), '.1f'), utils.formatSize(already_loaded//(time.perf_counter() - start))+"/s"]))
                     bar.UpdateBar(percentage)
                     window.Refresh()
示例#6
0
 def queueWin(self):
     self.mainWindow.hide()
     queueData = self.queueToTable(self.ps3.DlList.queue, self.ps3)
     layQueue = [
         [
             sg.Table(values=queueData,
                      headings=[
                          self.loc.getKey("window_queue_table_num"),
                          self.loc.getKey("window_queue_table_game"),
                          self.loc.getKey("window_queue_table_titleid"),
                          self.loc.getKey("window_queue_table_ver"),
                          self.loc.getKey("window_queue_table_size")
                      ],
                      key="Table",
                      enable_events=True)
         ],
         [
             sg.Text(self.loc.getKey(
                 "window_queue_totalsize_label",
                 [utils.formatSize(self.ps3.DlList.getTotalDownloadSize())
                  ]),
                     key="TotalSize",
                     size=(20, 1))
         ],
         [
             sg.Text(self.loc.getKey("window_queue_export_label")),
             sg.Input("", key="exportFile"),
             sg.FileSaveAs(target="exportFile"),
             sg.Button(self.loc.getKey("window_queue_export_btn"),
                       key="export")
         ],
         [
             sg.Button(self.loc.getKey("window_queue_moveup_btn"),
                       key="Move Up",
                       disabled=True),
             sg.Button(self.loc.getKey("window_queue_movedown_btn"),
                       key="Move Down",
                       disabled=True),
             sg.Button(self.loc.getKey("window_queue_remove_btn"),
                       key="Remove",
                       disabled=True)
         ],
         [
             sg.Button(self.loc.getKey("window_queue_download_btn"),
                       key="Download"),
             sg.Button(self.loc.getKey("window_queue_close_btn"),
                       key="Close")
         ]
     ]
     self.queueWindow = sg.Window(self.loc.getKey("window_queue_title"),
                                  layQueue,
                                  icon=self.iconpath)
     while True:
         evQueue, valQueue = self.queueWindow.read()
         if len(valQueue["Table"]) == 0:
             self.queueWindow["Move Up"].Update(disabled=True)
             self.queueWindow["Move Down"].Update(disabled=True)
             self.queueWindow["Remove"].Update(disabled=True)
         if len(valQueue["Table"]) == 1:
             self.queueWindow["Move Up"].Update(disabled=False)
             self.queueWindow["Move Down"].Update(disabled=False)
             self.queueWindow["Remove"].Update(disabled=False)
         if len(valQueue["Table"]) > 1:
             self.queueWindow["Move Up"].Update(disabled=True)
             self.queueWindow["Move Down"].Update(disabled=True)
             self.queueWindow["Remove"].Update(disabled=False)
         if evQueue == "Move Up":
             if len(valQueue["Table"]) == 1:
                 if len(self.ps3.DlList.queue) > 1:
                     self.ps3.DlList.moveUp(
                         self.getCodeFromQueueData(queueData,
                                                   valQueue["Table"][0]))
                     queueData = self.queueToTable(self.ps3.DlList.queue,
                                                   self.ps3)
                     self.queueWindow["Table"].Update(values=queueData)
         if evQueue == "Move Down":
             if len(valQueue["Table"]) == 1:
                 if len(self.ps3.DlList.queue) > 1:
                     self.ps3.DlList.moveDown(
                         self.getCodeFromQueueData(queueData,
                                                   valQueue["Table"][0]))
                     queueData = self.queueToTable(ps3.DlList.queue, ps3)
                     self.queueWindow["Table"].Update(values=queueData)
         if evQueue == "Remove":
             for row in valQueue["Table"]:
                 code = self.getCodeFromQueueData(queueData, row)
                 self.ps3.DlList.removeEntry(code)
             queueData = self.queueToTable(self.ps3.DlList.queue, self.ps3)
             self.queueWindow["Table"].Update(values=queueData)
             self.queueWindow["TotalSize"].Update(
                 self.loc.getKey("window_queue_totalsize_label", [
                     utils.formatSize(
                         self.ps3.DlList.getTotalDownloadSize())
                 ]))
         if evQueue == "Download":
             self.tryDl = True
             self.queueWindow.Close()
             self.mainWindow.UnHide()
             break
         if evQueue == "export" and valQueue["exportFile"] != "":
             self.ps3.DlList.exportQueue(valQueue["exportFile"])
             self.msgBox(
                 self.loc.getKey("window_msgBox_queueExported_label",
                                 [valQueue["exportFile"]]),
                 self.loc.getKey("window_msgBox_queueExported_title"),
                 self.queueWindow)
         if evQueue in (None, "Exit"):
             self.queueWindow.Close()
             self.mainWindow.UnHide()
             break
         if evQueue == "Close":
             self.queueWindow.Close()
             self.mainWindow.UnHide()
             break
示例#7
0
def upload_project_file(request):
    """
    上传项目文件
    :param request:
    :return:
    """
    # 获取所有用户
    user_info = get_all_users(request)

    file = request.FILES.get('file', '')
    pid = request.POST.get('pid', '')

    name = file.name
    user = request.session['id']
    import os
    try:
        # 根据时间戳存储文件
        now = int(time.time())
        ext = file.name.split('.')[-1]
        file_first_name = '.'.join(file.name.split('.')[:-1])
        file_name = file_first_name + str(now)
        file_full_name = file_name + '.' + ext
        file_path = os.path.join(os.path.dirname(__file__), 'static/appfile/',
                                 file_full_name)
        with open(file_path, 'wb') as f:
            for item in file.chunks():
                f.write(item)
    except Exception as e:
        logger.error(u'文件写入失败', e)
        return render_json({'result': False, 'message': u'文件写入失败'})

    # 获取文件大小

    try:
        size = os.path.getsize(file_path)
        new_size = formatSize(size)
    except Exception as e:
        logger.error(u"获取文件大小失败", e)
        return render_json({'result': False, 'message': u"获取文件大小失败"})
    try:
        file = ProjectFile.objects.create(project_id=pid,
                                          name=name,
                                          user=user,
                                          size=new_size,
                                          path='static/appfile/' +
                                          file_full_name)
    except Exception as e:
        logger.error(u"上传文件失败", e)
        return render_json({'result': False, 'message': u"上传文件失败"})

    file_list = []
    user = user_info[int(file.user)]
    name = user['name']
    ext = file.path.split('.')[-1]
    file_list.append({
        'fid': file.pk,
        'name': file.name,
        'size': file.size,
        'user': name,
        'path': file.path,
        'ext': ext,
        'create_time': file.create_time.strftime('%Y-%m-%d')
    })
    return render_json({'result': True, 'data': file_list})