示例#1
0
    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)
示例#2
0
 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()
示例#3
0
 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'删除出错,请重试')
示例#4
0
 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()
示例#5
0
 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()
示例#6
0
 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)
示例#7
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)
示例#8
0
    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])
示例#9
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()