class AllDrugsWindow(QFrame): def __init__(self): QFrame.__init__(self) self.ui = Ui_all_drugs_form() self.ui.setupUi(self) QObject.connect(self.ui.new_drug_btn, SIGNAL("clicked()"), self.showNewDrugForm) QObject.connect(self.ui.del_drug_btn, SIGNAL("clicked()"), self.delDrug) QObject.connect(self.ui.tableWidget, SIGNAL("cellDoubleClicked(int, int)"), self.showDetails) QObject.connect(self.ui.close_btn, SIGNAL("clicked()"), self.closeme) self.drugs = self.getDrugs(0) self.drawTable() self.setWindowTitle(QString.fromUtf8("Склад")) def getDrugs(self, name_filter): if name_filter: return query_session.query(Drug).filter_by(name=name_filter) # Session.close() else: return query_session.query(Drug) # Session.close() def drawTable(self): self.drugs = query_session.query(GeneralDrug).all() self.ui.tableWidget.clear() self.ui.tableWidget.setRowCount(0) self.ui.tableWidget.setColumnCount(4) self.ui.tableWidget.setHorizontalHeaderLabels( [ QString.fromUtf8("ИД"), QString.fromUtf8("Название препарата"), QString.fromUtf8("Количество"), QString.fromUtf8("Сумма"), ] ) self.summ = 0 for drug in self.drugs: self.ui.tableWidget.setRowCount(self.ui.tableWidget.rowCount() + 1) data = [] data.append(str(drug.id)) data.append(drug.name) data.append(str(drug.count())) data.append(str(drug.summ())) self.summ = self.summ + drug.summ() for i in range(0, 4): tableitem = QTableWidgetItem() tableitem.setText(data[i]) tableitem.font = QFont("Arial", 10) tableitem.font.setBold(True) tableitem.textcolor = QColor("black") tableitem.setBackgroundColor(QColor("White")) self.ui.tableWidget.setItem(self.ui.tableWidget.rowCount() - 1, i, tableitem) self.ui.tableWidget.resizeColumnsToContents() self.ui.label_3.setText(QString.fromUtf8("Всего лс на сумму " + str(self.summ) + "р.")) def showNewDrugForm(self): self.new_drug_form = NewDrugForm() self.new_drug_form.setWindowModality(2) # QObject.connect(self.new_drug_form, SIGNAL("drugCreated()"), self.drawTable) self.new_drug_form.show() def delDrug(self): row = self.ui.tableWidget.currentRow() id_for_delete = int(self.ui.tableWidget.item(row, 0).text()) drug_for_delete = query_session.query(Drug).filter_by(id=id_for_delete).one() s = Session() s.delete(drug_for_delete) s.commit() s.close self.drawTable() def showDetails(self, i, j): self.t = QTableWidget(self) self.t.setRowCount(4) self.t.setColumnCount(4) self.ui.tableWidget.setCellWidget(i, j, self.t) def closeme(self): self.parent().close()
class AddDrugForm(QFrame): def __init__(self, parent): QFrame.__init__(self) self.ui = Ui_add_drug_form() self.ui.setupUi(self) QObject.connect(self.ui.filter_text, SIGNAL("textEdited(QString)"), self.drawTable) if hasattr(parent, 'deliver'): QObject.connect(self.ui.drugsTable, SIGNAL("cellDoubleClicked(int, int)"), self.setDrugForDeliver) self.fordeliver = True else: QObject.connect(self.ui.drugsTable, SIGNAL("cellDoubleClicked(int, int)"), self.setDrugForSale) self.fordeliver = False QObject.connect(self.ui.newDrugBtn, SIGNAL("clicked()"), self.showNewDrugForm) self.parent = parent self.count_form = CountForm(self) self.drawTable() def getDrugs(self, filter): if filter: drugs = query_session.query(Drug).filter(Drug.name.like('%'+str(filter.toUtf8())+'%')) else: drugs = query_session.query(Drug).all() result = [] def drawTable(self): self.drugs = self.getDrugs(self.ui.filter_text.text()) self.ui.drugsTable.clear() self.ui.drugsTable.setRowCount(0) self.ui.drugsTable.setColumnCount(7) self.ui.drugsTable.setHorizontalHeaderLabels([QString.fromUtf8('ИД'), QString.fromUtf8('Название препарата'), QString.fromUtf8('Производитель'), QString.fromUtf8('Серийный номер'), QString.fromUtf8('Годен до'), QString.fromUtf8('Цена'),QString.fromUtf8('Количество')]) for drug in self.drugs: if drug.count() > 0 or self.fordeliver: self.ui.drugsTable.setRowCount(self.ui.drugsTable.rowCount()+1) data = [] data.append(str(drug.id)) data.append(QString.fromUtf8(drug.name())) data.append(QString.fromUtf8(drug.manufacter.name)) data.append(str(drug.serial)) data.append(str(drug.best_before)) data.append(str(drug.price)) data.append(str(drug.count())) for i in range(0,7): tableitem = QTableWidgetItem() tableitem.setText(data[i]) tableitem.font = QFont("Arial", 10) tableitem.font.setBold(True) tableitem.textcolor = QColor("black") tableitem.setBackgroundColor(QColor('White')) self.ui.drugsTable.setItem(self.ui.drugsTable.rowCount() - 1,i,tableitem) self.ui.drugsTable.resizeColumnsToContents() def setDrugForDeliver(self,i,j): #self.parent.drug_deliver_map = DrugDeliverMap(self.parent.deliver) selected_drug = query_session.query(Drug).filter_by(id=int(self.ui.drugsTable.item(i,0).text())).one() # self.parent.drug_deliver_map.drug = selected_drug self.m = DrugDeliverMap() self.m.drug = selected_drug self.count_form.setWindowModality(2) self.count_form.show() def setDrugForSale(self,i,j): #self.parent.drug_deliver_map = DrugDeliverMap(self.parent.deliver) selected_drug = query_session.query(Drug).filter_by(id=int(self.ui.drugsTable.item(i,0).text())).one() # self.parent.drug_deliver_map.drug = selected_drug self.m = DrugSaleMap() self.m.drug = selected_drug self.count_form.setWindowModality(2) self.count_form.show() def showNewDrugForm(self): self.new_drug_form = NewDrugForm() self.new_drug_form.setWindowModality(2) QObject.connect(self.new_drug_form, SIGNAL("drugCreated()"), self.drawTable) self.new_drug_form.show()