def getProjectEmploymentIncomeSources(self): projectid = self.getProjectID() settingsmgr = ReportsSettingsManager() recordset = settingsmgr.getSimulationEmploymentIncomeSources(projectid) model = QStandardItemModel(1,2) #set headers model.setHorizontalHeaderItem(0,QStandardItem('Income Source')) model.setHorizontalHeaderItem(1,QStandardItem('% Ref Income')) # add data rows num = 0 for row in recordset: qtItem = QStandardItem( "%s" % row[0]) qtItem.setTextAlignment( Qt.AlignCenter ) qtRefIncome = QStandardItem( "%d" % row[1] ) qtRefIncome.setTextAlignment( Qt.AlignRight | Qt.AlignVCenter ) model.setItem( num, 0, qtItem ) model.setItem( num, 1, qtRefIncome ) num = num + 1 self.tblIncome.setModel(model) #self.tableView.verticalHeader().hide() self.tblIncome.horizontalHeader().setResizeMode(0, QHeaderView.ResizeToContents) self.tblIncome.horizontalHeader().setResizeMode(1, QHeaderView.ResizeToContents) self.tblIncome.horizontalHeader().setResizeMode(2, QHeaderView.ResizeToContents) self.tblIncome.show()
def buildReportHouseholdIDsQuery(self,projectid,selectedhouseholds,pcharselected,hcharselected): ''' generate report household ids''' selectedpchars =[] selectedhchars = [] selectedpchars = pcharselected selectedhchars = hcharselected hcharssetting = ReportsSettingsManager() hcharsTable= hcharssetting.setHCharacteristicsTableName(projectid) pcharssetting = ReportsSettingsManager() pharsTable = pcharssetting.setPCharacteristicsTableName(projectid) householdsquery = self.buildHouseholdsQuery(selectedhouseholds,projectid) query = '' if len(selectedhouseholds)!=0: if len(selectedpchars) ==0 and len(selectedhchars) ==0: query = householdsquery householdids = self.getReportHouseholdIDs(query) elif len(selectedpchars) !=0 and len(selectedhchars) !=0: pcharsQuery =self.buildPCharacteristicsQuery(pcharselected, projectid) hcharsQuery = self.buildHCharacteristicsQuery(hcharselected, projectid) query = '''SELECT * FROM (%s UNION ALL %s UNION ALL %s) AS tbl GROUP BY tbl.hhid HAVING COUNT(*) = 3 ''' % (householdsquery,pcharsQuery,hcharsQuery) elif len(selectedhchars) !=0: hcharsQuery = self.buildHCharacteristicsQuery(hcharselected, projectid) query = '''SELECT * FROM (%s UNION ALL %s) AS tbl GROUP BY tbl.hhid HAVING COUNT(*) = 2 ''' % (householdsquery,hcharsQuery) elif len(selectedpchars) !=0: pcharsQuery =self.buildPCharacteristicsQuery(pcharselected, projectid) query = '''SELECT * FROM (%s UNION ALL %s) AS tbl GROUP BY tbl.hhid HAVING COUNT(*) = 2 ''' % (householdsquery,pcharsQuery) return query
def getProjectStandardOfLiving(self): projectid = self.getProjectID() settingsmgr = ReportsSettingsManager() recordset = settingsmgr.getProjectStandardofLiving(projectid) model = QStandardItemModel(1,3) #set headers model.setHorizontalHeaderItem(0,QStandardItem('Expense Type')) model.setHorizontalHeaderItem(1,QStandardItem('Price')) model.setHorizontalHeaderItem(2,QStandardItem('Model Price')) # add data rows num = 0 for row in recordset: qtItem = QStandardItem( "%s" % row[0]) qtItem.setTextAlignment( Qt.AlignCenter ) qtPrice = QStandardItem( "%d" % row[1] ) qtPrice.setTextAlignment( Qt.AlignRight | Qt.AlignVCenter ) qtModelPrice = QStandardItem( "%d" % row[2] ) qtModelPrice.setTextAlignment( Qt.AlignRight | Qt.AlignVCenter ) model.setItem( num, 0, qtItem ) model.setItem( num, 1, qtPrice ) model.setItem( num, 2, qtModelPrice ) num = num + 1 self.tblStandardofLiving.setModel(model) #self.tableView.verticalHeader().hide() self.tblStandardofLiving.horizontalHeader().setResizeMode(0, QHeaderView.ResizeToContents) self.tblStandardofLiving.horizontalHeader().setResizeMode(1, QHeaderView.ResizeToContents) self.tblStandardofLiving.horizontalHeader().setResizeMode(2, QHeaderView.ResizeToContents) self.tblStandardofLiving.show()
def getReportHouseholdIDs(self): householdnumbers = [] projectid = self.getProjectID() connector = ReportsSettingsManager() recordset = connector.getHouseholdIDs(projectid) for row in recordset: householdnumbers.append(str(row[0])) return householdnumbers
def getProjectID(self): ''' get ID for the selected project''' selectedproject = self.cmbProjectNames.currentText() if selectedproject !="": settingsmgr = ReportsSettingsManager() selectedprojectid = settingsmgr.getSelectedProjectID(selectedproject) return selectedprojectid else: return 0
def getPorjects(self): ''' populate projects combobox with available projects''' settingsmgr = ReportsSettingsManager() rows = settingsmgr.getProjectNames() for row in rows: project = row[0] self.cmbProjects.addItem(project) self.cmbProjects.setCurrentIndex(-1)
def getHouseholdCharacteristicsQuery(self): ''' build query for selecting household that match the selected household characteristics''' selectedHChars = [] selectedHChars = self.getSelectedHouseholdCharacteristics() projectid = self.getProjectID() hchars = ReportsSettingsManager () tablename = hchars.setHCharacteristicsTableName(projectid) connector = HouseholdsByCharacteristics() hquery = connector.buildHCharacteristicsQuery(selectedHChars,tablename,projectid) return hquery
def getPersonalCharacteristicsQuery(self): ''' build query for selecting household that match the selected personal characteristics''' selectedRows = [] selectedRows = self.getSelectedPersonalCharacteristics() projectid = self.getProjectID() pchars = ReportsSettingsManager () tablename = pchars.setPCharacteristicsTableName(projectid) connector = HouseholdsByCharacteristics() pquery = connector.buildPCharacteristicsQuery(selectedRows,tablename,projectid) return pquery
def putEmploymentIncomeSources(self): '''Insert Employment Income Sources into the Household Income Dialog's TreeView''' projectid = self.getProjectID() settingsmgr = ReportsSettingsManager() rows = settingsmgr.getEmploymentIncomeSources(projectid) numrows = len(rows) parent = self.getEmploymentIndex() self.treeView.model().insertColumn(0, parent ) self.treeView.model().insertRows( 0, numrows, parent ) num =0 for row in rows: child = self.treeView.model().index( num, 0, parent ) self.treeView.model().setData(child, row[0]) num = num + 1
def getPersonalCharacteristics(self): ''' get personal characteristics relevant to the selected project''' projectid = self.getProjectID() settingsmgr = ReportsSettingsManager() rows = settingsmgr.getPersonalCharacteristics(projectid) model = QStandardItemModel() num = 0 for row in rows: qtPCharacteristic = QStandardItem( "%s" % row[0]) qtPCharacteristic.setTextAlignment( Qt.AlignLeft ) if ((qtPCharacteristic.text() != 'hhid')and(qtPCharacteristic.text() != 'personid') and (qtPCharacteristic.text() != 'pid')): model.setItem( num, 0, qtPCharacteristic ) num = num + 1 self.listViewPersonalCharacteristics.setModel(model) self.listViewPersonalCharacteristics.show()
def getHouseholdCharacteristics(self): ''' get household characteristics relevant to selected project''' projectid = self.getProjectID() settingsmgr = ReportsSettingsManager() rows = settingsmgr.getHouseholdCharacteristics(projectid) model = QStandardItemModel() num = 0 #x=0 #if rows.count(x) != 0: for row in rows: qtHCharacteristic = QStandardItem( "%s" % row[0]) qtHCharacteristic.setTextAlignment( Qt.AlignLeft ) if ((qtHCharacteristic.text() != 'hhid')and(qtHCharacteristic.text() != 'pid') ): model.setItem( num, 0, qtHCharacteristic ) num = num + 1 self.listViewHCharacteristics.setModel(model) self.listViewHCharacteristics.show()
def getProjectDiet(self): projectid = self.getProjectID() settingsmgr = ReportsSettingsManager() recordset = settingsmgr.getProjectDiet(projectid) model = QStandardItemModel(1,4) #set headers model.setHorizontalHeaderItem(0,QStandardItem('Food Type')) model.setHorizontalHeaderItem(1,QStandardItem('% in Diet')) model.setHorizontalHeaderItem(2,QStandardItem('Price')) model.setHorizontalHeaderItem(3,QStandardItem('Model Price')) # add data rows num = 0 for row in recordset: qtFood = QStandardItem( "%s" % row[0]) qtFood.setTextAlignment( Qt.AlignCenter ) qtPercentage = QStandardItem( "%i" % row[1] ) qtPercentage.setTextAlignment( Qt.AlignRight | Qt.AlignVCenter ) qtPricePerUnit = QStandardItem( "%i" % row[2] ) qtPricePerUnit.setTextAlignment( Qt.AlignRight | Qt.AlignVCenter ) qtModelPrice = QStandardItem( "%i" % row[3] ) qtModelPrice.setTextAlignment( Qt.AlignRight | Qt.AlignVCenter ) model.setItem( num, 0, qtFood ) model.setItem( num, 1, qtPercentage ) model.setItem( num, 2, qtPricePerUnit ) model.setItem( num, 3, qtModelPrice ) num = num + 1 self.tblDiets.setModel(model) #self.tableView.verticalHeader().hide() self.tblDiets.horizontalHeader().setResizeMode(0, QHeaderView.ResizeToContents) self.tblDiets.horizontalHeader().setResizeMode(1, QHeaderView.ResizeToContents) self.tblDiets.horizontalHeader().setResizeMode(2, QHeaderView.ResizeToContents) self.tblDiets.horizontalHeader().setResizeMode(3, QHeaderView.ResizeToContents) self.tblDiets.show()
def getHouseholds(self): ''' get households (numbers and names) for selected project & populate dialog lists''' projectid = self.getProjectID() settingsmgr = ReportsSettingsManager() rows = settingsmgr.getHouseholds(projectid) model = QStandardItemModel() model1 = QStandardItemModel() num = 0 for row in rows: qtHNumber = QStandardItem( "%s" % row[0]) qtHNumber.setTextAlignment( Qt.AlignLeft ) qtHName = QStandardItem( "%s" % row[1]) qtHName.setTextAlignment( Qt.AlignLeft ) model.setItem( num, 0, qtHNumber ) model1.setItem( num, 0, qtHName ) num = num + 1 self.listViewHNumbers.setModel(model) self.listViewHNames.setModel(model1) self.listViewHNumbers.show() self.listViewHNames.show()
def getProjectIncomeSources(self): projectid = self.getProjectID() settingsmgr = ReportsSettingsManager() currentincomecategory = self.getActiveIcomeSourceCategory() if currentincomecategory =='Crops': recordset = settingsmgr.getSimulationCropIncomeSources(projectid) elif currentincomecategory =='Official Transfers': recordset = settingsmgr.getSimulationFormalTransferIncomeSources(projectid) elif currentincomecategory =='Unofficial Tansfers': recordset = settingsmgr.getSimulationInformalTransferIncomeSources(projectid) elif currentincomecategory =='Livestock': recordset = settingsmgr.getSimulationLivestockIncomeSources(projectid) elif currentincomecategory =='WildFoods': recordset = settingsmgr.getSimulationWildfoodsIncomeSources(projectid) model = QStandardItemModel(1,3) #set headers model.setHorizontalHeaderItem(0,QStandardItem('Income Source')) model.setHorizontalHeaderItem(1,QStandardItem('% Ref Price')) model.setHorizontalHeaderItem(2,QStandardItem('% Ref Production')) # add data rows num = 0 for row in recordset: qtItem = QStandardItem( "%s" % row[0]) qtItem.setTextAlignment( Qt.AlignCenter ) qtRefPrice = QStandardItem( "%d" % row[1] ) qtRefPrice.setTextAlignment( Qt.AlignRight | Qt.AlignVCenter ) qtRefProduction = QStandardItem( "%d" % row[2] ) qtRefProduction.setTextAlignment( Qt.AlignRight | Qt.AlignVCenter ) model.setItem( num, 0, qtItem ) model.setItem( num, 1, qtRefPrice ) model.setItem( num, 2, qtRefProduction ) num = num + 1 self.tblIncome.setModel(model) #self.tableView.verticalHeader().hide() self.tblIncome.horizontalHeader().setResizeMode(0, QHeaderView.ResizeToContents) self.tblIncome.horizontalHeader().setResizeMode(1, QHeaderView.ResizeToContents) self.tblIncome.horizontalHeader().setResizeMode(2, QHeaderView.ResizeToContents) self.tblIncome.show()
def getHouseholdNames(self): '''Get Names of Households selected by the User on the Interface''' projectid = self.getProjectID() settingsmgr = ReportsSettingsManager() rows = settingsmgr.getProjectHouseholds(projectid) return rows