Esempio n. 1
0
    def actTbInputCsvClicked(self):
        dlg = QMessageBox.question(None, "操作提示", "您“确定”从CSV导入数据吗?",
                                   QMessageBox.Yes | QMessageBox.No)
        if (dlg == QMessageBox.Yes):
            file, ok1 = QFileDialog.getOpenFileName(None, "请选择CSV文件打开", "",
                                                    "Csv File (*.csv)")
            if (file.__len__() > 0):
                # 读取文件总行数
                try:
                    tempfile = open(file, "r")
                    importLines = len(tempfile.readlines()) - 1
                    tempfile.close()

                    nowTime = datetime.datetime.now()
                    self.mainWin.progressBarShow(importLines)
                    self.mainWin.statusMsg('开始导入 {0}...'.format(
                        nowTime.strftime('%H:%M:%S')))

                    # 读取csv文件方式
                    csvFile = open(file, "r")
                    reader = csv.reader(csvFile)  # 返回的是迭代类型
                    nowTime = datetime.datetime.now()
                    cur_time = getTime()
                    cur_user = self.mainWin.app.user.id

                    i = 0
                    for row in reader:
                        if (i > 0):
                            Pub_Sku_Keyword.insert(
                                title=row[2],
                                platform='amazon',
                                platform_id=1,
                                sort=0,
                                status=1,
                                creator_id=cur_user,
                                created_at=cur_time,
                                updated_at=cur_time,
                            ).on_conflict_ignore(
                                conflict_target=(Pub_Sku_Keyword.title, ),
                                preserve=(Pub_Sku_Keyword.title),
                                update={
                                    'updator': cur_user,
                                    'update_at': cur_time,
                                }).execute()
                        i = i + 1
                        self.mainWin.progressBarContinue()

                    csvFile.close()

                    endTime = datetime.datetime.now()
                    self.mainWin.statusMsg('完成导出 {0}条数据,用时{1}'.format(
                        importLines, (endTime - nowTime)))
                    self.mainWin.progressBarHide()
                    self.actTbRefreshClicked()

                except Exception as e:
                    import traceback
                    traceback.print_exc()
                    logger.info(e)
        pass
    def actTbInputCsvClicked(self):
        dlg = QMessageBox.question(None, "操作提示", "您“确定”从CSV导入数据吗?", QMessageBox.Yes | QMessageBox.No)
        if (dlg == QMessageBox.Yes):
            file, ok1 = QFileDialog.getOpenFileName(None, "请选择CSV文件打开", "", "Csv File (*.csv)")
            if (file.__len__() > 0):
                # 读取文件总行数
                try:
                    tempfile = open(file, "r", encoding='utf-8')
                    importLines = len(tempfile.readlines()) - 1
                    tempfile.close()

                    nowTime = datetime.datetime.now()
                    self.mainWin.progressBarShow(importLines)
                    self.mainWin.statusMsg('开始导入 {0}...'.format(nowTime.strftime('%H:%M:%S')))

                    # 读取csv文件方式
                    csvFile = open(file, "r", encoding='utf-8')
                    reader = csv.reader(csvFile)  # 返回的是迭代类型
                    cur_time = getTime()
                    i = 0
                    for row in reader:
                        if (i > 0):
                            # 根据NodeID查询对应分类表ID
                            keyword = row[2]
                            sku = row[0]

                            try:
                                keywordRow = Pub_Sku_Keyword.select().where(Pub_Sku_Keyword.title == keyword).get()
                                keywordId = keywordRow.id
                            except Pub_Sku_Keyword.DoesNotExist:
                                keywordId = 0
                            try:
                                skuRow = Amazon_Product_Category.select().where(Amazon_Product_Category.sku == sku).get()
                                skuId = skuRow.id
                            except Amazon_Product_Category.DoesNotExist:
                                skuId = 0

                            print(keywordId)
                            print(skuId)
                            # return
                            try:
                                if int(keywordId) > 0 and int(skuId) > 0:
                                    # 掺入到NA PRODUCT ASIN CATEGORY表中
                                    Amazon_Product_Category_Keyword_Relation.insert(
                                        amazon_category_id=skuId,
                                        amazon_keyword_id=keywordId,
                                        update_at=cur_time
                                    ).execute()
                            except Exception as e:
                                import traceback
                                traceback.print_exc()
                                logger.info(e)
                        i = i + 1
                        self.mainWin.progressBarContinue()
                except Exception as e:
                    import traceback
                    traceback.print_exc()
                    logger.info(e)

        self.actTbRefreshClicked()
Esempio n. 3
0
 def actTbSve(self, row):
     nowTime = datetime.datetime.now()
     cur_time = getTime()
     print(row[0])
     selectResult = Na_Product_Asin.select().where(
         Na_Product_Asin.sku == row[0]).execute()
     if len(selectResult) > 0:
         result = Na_Product_Asin.update({
             Na_Product_Asin.updated_at:
             cur_time
         }).where(Na_Product_Asin.sku == row[0]).execute()
     else:
         try:
             result = (Na_Product_Asin.insert(
                 sku=row[0],
                 asin=row[1],
                 platform='amazon',
                 platform_id=1,
                 sort=0,
             ).execute())
         except Exception as e:
             import traceback
             traceback.print_exc()
             print(e)
Esempio n. 4
0
    def actTbSve(self, row, index):

        nowTime = datetime.datetime.now()
        cur_time = getTime()
        cur_user = self.mainWin.app.user.id

        newItem = QTableWidgetItem(str(row[3]))
        self.twNewaimProductCategoryList.setItem(index - 1, 1, newItem)
        newItem = QTableWidgetItem(str(row[0]))
        self.twNewaimProductCategoryList.setItem(index - 1, 2, newItem)
        newItem = QTableWidgetItem(str(nowTime))
        self.twNewaimProductCategoryList.setItem(index - 1, 3, newItem)
        newItem = QTableWidgetItem(str(nowTime))
        self.twNewaimProductCategoryList.setItem(index - 1, 4, newItem)
        newItem = QTableWidgetItem(str(row[5]))
        self.twNewaimProductCategoryList.setItem(index - 1, 5, newItem)
        newItem = QTableWidgetItem(str(row[2]))
        self.twNewaimProductCategoryList.setItem(index - 1, 6, newItem)

        try:

            # 非空而且已修改的记录
            try:
                row_before_edit = Pub_Product_Category.get(
                    Pub_Product_Category.code == str(row[0]))
                is_added = False
            except Exception as e:
                # 新增操作
                is_added = True

            result = Pub_Product_Category.insert(
                code=row[0],
                title=row[3],
                creator_id=cur_user,
                status=1,
                sort=0,
                level=row[5],
                #parent_id=int(row[2])
            ).on_conflict(conflict_target=(Pub_Product_Category.code, ),
                          preserve=(Pub_Product_Category.code),
                          update={
                              'title': row[3],
                              'updated_at': cur_time
                          }).execute()

            row_after_edit = Pub_Product_Category.get_by_id(result)

            print(row[3])
            if not is_added:
                if str(row_after_edit.__data__['name']) != str(
                        row_before_edit.__data__['name']):
                    print(row_before_edit.__data__['name'])
                    print(is_added)
                    result = DlgCateHistoryLog.insert(
                        category=str(row[0]),
                        old_val=row_before_edit.__data__['name'],
                        new_val=str(row[3]),
                        modify_fields='name',
                        status=1,
                        sort=0,
                        creator_id=cur_user,
                        updated_at=cur_time,
                        created_at=cur_time,
                    ).execute()
                else:
                    DlgCateHistoryLog.insert({
                        'category':
                        str(row[0]),
                        'modify_fields':
                        'Add New Category',
                        'new_val':
                        str(row_after_edit.__data__),
                        'create_at':
                        cur_time,
                        'creator_id':
                        cur_user
                    }).execute()

        except Exception as e:
            import traceback
            traceback.print_exc()
            print(e)
        pass
Esempio n. 5
0
    def actTbSave(self):
        rowCount = self.twAmazonKeyword.rowCount()
        if (not rowCount):
            QMessageBox.information(None, "操作提示", "没有数据,不用保存", QMessageBox.Yes)
            return

        nowTime = datetime.datetime.now()
        # self.mainWin.progressBar.setRange(0, rowCount + 10)
        # self.mainWin.progressBar.show()
        # self.mainWin.progressText.setText('开始保存 {0}...'.format(nowTime.strftime('%H:%M:%S')))
        # self.mainWin.progressText.show()
        rows = []
        try:
            #   远端
            cur_time = getTime()
            cur_user = self.mainWin.app.user.id

            self.is_ready = True
            # 保存验证
            valid_flag = True
            for i in range(rowCount):
                try:
                    # 检查导入数据类型
                    if (self.twAmazonKeyword.item(i, 1) is None
                            or self.twAmazonKeyword.item(i, 2) is None
                            or self.twAmazonKeyword.item(i, 3) is None
                            or self.twAmazonKeyword.item(i, 4) is None):
                        raise Exception('第 %s 行的数据填写不全' % i)

                    # 检查Title是否为空
                    if len(self.twAmazonKeyword.item(i, 2).text().strip()) < 1:
                        raise Exception('第 %s 行的Title不能为空' % (i + 1))

                except Exception as e:
                    QMessageBox.information(None, '错误', str(e),
                                            QMessageBox.Yes)
                    valid_flag = False
                    break

            if valid_flag is False:
                return

            self.mainWin.progressBarShow(rowCount)
            with pbConn.atomic() as transaction:
                for i in range(rowCount):

                    if (self.twAmazonKeyword.item(i, 1) is not None
                            and self.twAmazonKeyword.item(i, 2) is not None
                            and self.twAmazonKeyword.item(i, 3) is not None
                            and self.twAmazonKeyword.item(
                                i, len(self.table_fields)).text() == '1'):
                        #   非空而且已修改的记录
                        try:
                            row_before_edit = Pub_Sku_Keyword().get(
                                Pub_Sku_Keyword.title ==
                                self.twAmazonKeyword.item(i, 1).text())
                            is_added = False
                        except Exception as e:
                            # 新增操作
                            is_added = True

                        if is_added:

                            result = (Pub_Sku_Keyword.insert(
                                title=self.twAmazonKeyword.item(i, 1).text(),
                                created_at=cur_time,
                                creator_id=cur_user,
                                updated_at=cur_time,
                                status=1,
                                sort=0,
                                platform='amazon',
                                platform_id=1,
                                keyword_type=1,
                            ).execute())
                            # self.fwin.fwin.send_msg('lock')
                            row_after_edit = Pub_Sku_Keyword.get_by_id(result)
                        '''TODO'''
                        # if is_added:
                        #     Pub_Sku_Keyword.insert({
                        #         'sku': self.twData.item(i, 2).text(),
                        #         'modify_fields': 'Add New SKU',
                        #         'new_val': str(row_after_edit.__data__),
                        #         'create_at': cur_time,
                        #         'creator_id': cur_user.id
                        #     }).execute()
                        # else:
                        #     edit_logs = []
                        #
                        #     fields_need_log = list_filter(self.table_fields.keys(),
                        #                                   ['last_ver', 'creator', 'creator_id', 'create_at',
                        #                                    'updator',
                        #                                    'updator_id', 'update_at'])
                        #
                        #     fields_need_log.append('is_delete')
                        #     # 轮询被修改的字段
                        #     for field in fields_need_log:
                        #         if field and str(row_after_edit.__data__[field]) != str(
                        #                 row_before_edit.__data__[field]):
                        #             edit_logs.append({
                        #                 'sku': self.twData.item(i, 2).text(),
                        #                 'modify_fields': field,
                        #                 'old_val': row_before_edit.__data__[field],
                        #                 'new_val': row_after_edit.__data__[field],
                        #                 'create_at': cur_time,
                        #                 'creator_id': cur_user.id
                        #             })
                        #     if len(edit_logs) > 0:
                        #         for x in range(0, len(edit_logs), 100):
                        #             AppProductImageLogModel.insert_many(edit_logs[x:x + 100]).execute()
                        #         # 清内存
                        #         edit_logs = []

                    self.mainWin.progressBarContinue()
            #     self.progressBar.setValue(self.progressBar.value() + 1)
            # self.progressBar.setValue(self.progressBar.value() + 10)
            self.mainWin.progressBarShow(rowCount)
            endTime = datetime.datetime.now()
            self.mainWin.statusMsg('完成保存,用时{0}'.format((endTime - nowTime)))
            self.mainWin.progressBarHide()
            # self.fwin.fwin.send_msg('lock')
            # self.is_after_edit = False
            req = QMessageBox.information(None, '系统提示', '关键词保存成功',
                                          QMessageBox.Yes)
            if req == QMessageBox.Yes:
                self.actTbRefresh()

                #self.initData()

        except Exception as e:
            import traceback
            traceback.print_exc()
            req = QMessageBox.information(None, '保存失败', '保存操作失败,请检查数据或联系系统管理员',
                                          QMessageBox.Yes)
    def actTbSve(self, row, index, skipRecords):

        nowTime = datetime.datetime.now()
        cur_time = getTime()
        cur_user = self.mainWin.app.user.id
        title_list = row[1].split('/')

        if len(title_list) > 1:
            parentTitle = title_list[-2]
            parentId = Amazon_Product_Category.getIdByTitle(self, parentTitle)
        else:
            parentId = 1

        #print(skipRecords[str(int(row[0]))])

        if len(skipRecords) > 0 and str(int(row[0])) in skipRecords:
            print('test')
        else:

            try:
                # 非空而且已修改的记录
                try:
                    row_before_edit = Amazon_Product_Category.get(
                        Amazon_Product_Category.code == str(int(row[0])))
                    is_added = False
                except Amazon_Product_Category.DoesNotExist:
                    # 新增操作
                    is_added = True

                result = Amazon_Product_Category.insert(
                    code=str(int(row[0])),
                    title=title_list[-1],
                    creator_id=cur_user,
                    status=1,
                    platform='amazon',
                    platform_id=1,
                    sort=0,
                    level=len(title_list) - 1,
                    #parent_id=parentId
                ).on_conflict(conflict_target=(Amazon_Product_Category.code, ),
                              preserve=(Amazon_Product_Category.code),
                              update={
                                  'title': title_list[-1],
                                  'updated_at': cur_time
                              }).execute()
                row_after_edit = Amazon_Product_Category.get_by_id(result)
                if not is_added:
                    if str(row_after_edit.__data__['title']) != str(
                            row_before_edit.__data__['title']):
                        print(row_before_edit.__data__['title'])
                        print(is_added)
                        result = Amazon_Product_Category_Mod_Log.insert(
                            category=str(int(row[0])),
                            old_val=row_before_edit.__data__['title'],
                            new_val=title_list[-1],
                            modify_fields='title',
                            status=1,
                            sort=1,
                            creator_id=cur_user,
                            updated_at=cur_time,
                            created_at=cur_time,
                        ).execute()

            except Exception as e:
                import traceback
                traceback.print_exc()
                print(e)
        pass