def __updateArticleTree(self): strListHeader = QStringList() strListHeader.append(u'分类/型号') self.ui.treeWidget.setHeaderLabels(strListHeader) self.ui.treeWidget.clear() listTypes1 = dbArticleType().getType1() #'''插入类别1''' for t1 in listTypes1: item = QTreeWidgetItem() #print t1 item.setText(0, t1.text) item.setData(0, Qt.UserRole, t1.id) item.setData(0, Qt.UserRole+1, 1) listType2 = dbArticleType().getType2(t1.id) self.ui.treeWidget.addTopLevelItem(item) #'''插入类别2 ''' for t2 in listType2: #print '-',t2.text item2 = QTreeWidgetItem() item2.setText(0, t2.text) item2.setData(0, Qt.UserRole+0, t2.id)#id item2.setData(0, Qt.UserRole+1, 2)#深度 item.addChild(item2) #插入一个显示所有的项 item = QTreeWidgetItem() item.setText(0, u'--[显示所有]--') item.setData(0, Qt.UserRole, -1) item.setData(0, Qt.UserRole+1, 1) self.ui.treeWidget.insertTopLevelItem(0, item)
def __initType1list(self): self.ui.comboBox_type1.clear() listTypes = dbArticleType().getType1() for atype in listTypes: str = u'%s'%atype.text self.ui.comboBox_type1.addItem(str,atype.id) self.__initType2list()
def slotDelType(self): user = ims.model.dbSysUser.g_current_user if user==None or not user.is_enable_write_all():return item = self.ui.treeWidget.currentItem() if item is None: return #需先删除所有子类别 itemdata = self.__getItemIdDepth__(item) if itemdata is None: return type_id = itemdata[0] depth = itemdata[1] print depth if depth != 2 and depth != 1: return if depth == 2: #检查2级类别下对应的是否有相关的物品信息 article_list = dbArticle().getArticlesByTypeId(type_id) if article_list != None and len(article_list) > 0: QMessageBox.critical(self, u'error', u'需先删除该类别下所有物品!') return else: #1级类别检查下面是否有子类别 if item.childCount() > 0: QMessageBox.critical(self, u'error', u'需先删除所有子类别') return #删除警告 if QMessageBox.Yes != QMessageBox.warning(self, u'warning', u'确定删除此项吗', QMessageBox.Yes|QMessageBox.No, QMessageBox.No): return #删除类别 if dbArticleType().delete(type_id): self.__updateArticleTree() else: QMessageBox.critical(self, u'出错了', u'删除出错,请重试')
def slotAddType(self): #权限检查 #if not ims.model.dbSysUser.g_current_user.is_enable_write_all():return item = self.ui.treeWidget.currentItem() if item == None:return itemData = self.__getItemIdDepth__(item) if itemData == None : return if itemData[1] == 1: #如果深度为1,则父类别id为0 parentid = 0 else: #否则求父节点的类别id item_parent = item.parent() data_parent = self.__getItemIdDepth__(item_parent) if itemData == None: return parentid = data_parent[0] #获取类别名称 text = QInputDialog.getText(self, u'新增类别',u'请输入一个新的类别名称') if not text[1]: return if text[0]=="": return newtype = ArticleType() newtype.text = u'%s'%text[0] newtype.parentid = parentid #执行数据库操作 if not dbArticleType().insert(newtype): QMessageBox.critical(self, u'出错了',u'添加类别失败,请重试') else: self.__updateArticleTree()
def slotAddType1(self): if not ims.model.dbSysUser.g_current_user.is_enable_write_all():return #msg = QMessageBox.information(self, u'input', u'input') text = QInputDialog.getText(self, QString(u"新增类别名" ), QString(u"请输入一个类别名称") , QLineEdit.Normal); if text[0] == '': return newtype = ArticleType() newtype.text = unicode(text[0]) #print newtype.text newtype.parentid = 0 if not dbArticleType().insert(newtype): QMessageBox.warning(self, u'error', u'添加类别1失败') self.__initType1list()
def __initType2list(self): self.ui.pushButton_add.setEnabled(False) self.ui.comboBox_type2.clear() vtype1_id = self.ui.comboBox_type1.itemData(self.ui.comboBox_type1.currentIndex()) res = vtype1_id.toInt() #print res if not res[1]: #print 'return' return listTypes = dbArticleType().getType2(res[0]) for atype in listTypes: str = u'%s'%atype.text #print str self.ui.comboBox_type2.addItem(str,atype.id) self.ui.pushButton_add.setEnabled(self.ui.comboBox_type2.count() > 0)
def ImportArticleType(filepath): if filepath==None or len(filepath)==0: return False book = xlrd.open_workbook(filepath) sheet = book.sheet_by_index(0) if sheet is None: return False headers = ['类别'] if sheet.ncols!=0 or sheet.cell_value(0, 0)!='类别': raise Exception("cols must be 1count and contain type'文件列数要求为1,并且只有一列<类别>") return type1set = set() typeslist2 = [] for row in range(1, sheet.nrows): for col in range(sheet.ncols): print sheet.cell_value(row,col) types = sheet.cell_value(row,col) t1t2 = types.split('-') if len(t1t2)!= 2: raise Exception("invadate type") return if(t1t2[0]==''): raise Exception("invadate type1") return type1set.add(t1t2[0]) db = dbArticleType() for text in type1set: typeinfo = ArticleType() typeinfo.parentid = 0 typeinfo.text=text db.insert(typeinfo) for row in range(1,sheet.nrows): for col in range(sheet.ncols): print sheet.cell_value(row,col) types = sheet.cell_value(row,col) t1t2 = types.split('-') if len(t1t2)!= 2: break parent_type = db.getArticleTypeInfoByTypeName(t1t2[0]) if parent_type is None: raise Exception("invadate parent type") return type = ArticleType() type.parentid= parent_type.id type.text=t1t2[1] typeslist2.append(type) for item in typeslist2: db.insert(item)
def slotRenameType(self): user = ims.model.dbSysUser.g_current_user if None==user or not user.is_enable_write_all():return item = self.ui.treeWidget.currentItem() if not item : return res = self.__getItemIdDepth__(item) if not res : return id , depth = res if depth == 3: return text = QInputDialog.getText(self, QString(u"新增类别名" ), QString(u"请输入一个类别名称") , QLineEdit.Normal, QString(item.text(0))); if not text[1]: return if not dbArticleType().rename(id, text[0]): QMessageBox.critical(self, u'error', u'重命名失败') return item.setText(0, text[0])
def slotAddType2(self): if not ims.model.dbSysUser.g_current_user.is_enable_write_all():return '''先获取父类别id''' res = self.ui.comboBox_type1.itemData(self.ui.comboBox_type1.currentIndex()).toInt() if not res[1]: print 'invadate combobox item data' return parentid = int(res[0]) #msg = QMessageBox.information(self, u'input', u'input') text = QInputDialog.getText(self, QString(u"新增类别名" ), QString(u"请输入一个类别名称") , QLineEdit.Normal); if text[0] == '':return newtype = ArticleType() newtype.text = unicode(text[0]) newtype.parentid = parentid if not dbArticleType().insert(newtype): QMessageBox.warning(self, u'doo', u'添加类别失败') self.__initType2list()