def createMolluschiCharts(self, param, REQUEST=None, RESPONSE=None): """ Generate charts for Molluschi. """ station, region, year, campaign, monit = param.split(',') mysql_tool = self.getMySQLTool() charts = drawCharts() temp_folder = self.get_temp_folder() #open connection dbconn = mysql_tool.createDbManager() #get data data, err = mysql_tool.get_molluschi_data(region, year, campaign, monit, dbconn) if err: self.setSessionErrors(['Database error']) #get station description stat_descr, err = mysql_tool.get_station_descr(station, region, dbconn) if err: self.setSessionErrors(['Database error']) #get region description reg_descr, err = mysql_tool.get_region_descr(region, dbconn) if err: self.setSessionErrors(['Database error']) #get data monitored description data_descr, err = mysql_tool.get_data_monitored_descr(monit, dbconn) if err: self.setSessionErrors(['Database error']) #close connection and return the results mysql_tool.destroyDbManager(dbconn) buf = {} for x in data: if not buf.has_key(x['codparam']): buf[x['codparam']] = [] buf[x['codparam']].append(x) #generate metal charts result, others = [], [] policlorobifenili = {} idrocarburi = {} compostiorganoclorurati = {} for k, v in buf.items(): if k in MOLLUSCHI_METAL_CODES: imgid = 'chart-image-%s-met%%s-%s-%s-%s.png' % (monit, region, year, campaign) imgtitle = '%%s-%s-%s-%s' % (region, year, campaign) result.append(self.gen_image_simple_chart(temp_folder, charts, imgid, imgtitle, k, v)) elif k == MOLLUSCHI_TRIBUTILSTAGNO_CODE: imgid = 'chart-image-%s-%%s-%s-%s-%s.png' % (monit, region, year, campaign) imgtitle = '%%s-%s-%s-%s' % (region, year, campaign) others.insert(0, self.gen_image_simple_chart(temp_folder, charts, imgid, imgtitle, k, v)) elif k in MOLLUSCHI_COMPOSTIORGANOCLORURATI: compostiorganoclorurati[k] = (v[0]['descr'], []) for x in v: compostiorganoclorurati[k][1].append((x['staz'], x['station'], x['valore'])) compostiorganoclorurati[k][1].sort() elif k in MOLLUSCHI_POLICLOROBIFENILI_CODE: policlorobifenili[k] = (v[0]['descr'], []) for x in v: policlorobifenili[k][1].append((x['staz'], x['station'], x['valore'])) policlorobifenili[k][1].sort() elif k in MOLLUSCHI_IDROCARBURI_CODE: idrocarburi[k] = (v[0]['descr'], []) for x in v: idrocarburi[k][1].append((x['staz'], x['station'], x['valore'])) idrocarburi[k][1].sort() result = [(x.title_or_id(), x) for x in result] result.sort() result = [x[1] for x in result] #generate 'Composti Organoclorurati' chart compostiorganoclorurati_ob, compostiorganoclorurati_legend = self.gen_image_multiple_chart( temp_folder, charts, 'chart-image-%s-idroclor-%s-%s-%s.png' % (monit, region, year, campaign), 'Composti Organoclorurati', compostiorganoclorurati) #generate 'Policlorobifenili' chart policlorobifenili_ob, policlorobifenili_legend = self.gen_image_multiple_chart( temp_folder, charts, 'chart-image-%s-pcb-%s-%s-%s.png' % (monit, region, year, campaign), 'Policlorobifenili', policlorobifenili) #generate 'Idrocarburi Policiclici Aromatici' chart idrocarburi_ob, idrocarburi_legend = self.gen_image_multiple_chart( temp_folder, charts, 'chart-image-%s-ipa-%s-%s-%s.png' % (monit, region, year, campaign), 'Idrocarburi Policiclici Aromatici', idrocarburi) return stat_descr, reg_descr, data_descr, station, self.split_seq(result, 2), \ compostiorganoclorurati_ob, compostiorganoclorurati_legend, \ policlorobifenili_ob, policlorobifenili_legend, \ idrocarburi_ob, idrocarburi_legend, \ others
def getPlanctonData(self, param='', REQUEST=None, RESPONSE=None): """ get the plancton data """ station, region, year, campaign, monit = param.split(',') mysql_tool = self.getMySQLTool() charts = drawCharts() temp_folder = self.get_temp_folder() #open connection dbconn = mysql_tool.createDbManager() #get water information data, err = mysql_tool.get_plancton_data(region, year, campaign, monit, station, dbconn) if err: self.setSessionErrors(['Database error']) #get station description stat_descr, err = mysql_tool.get_station_descr(station, region, dbconn) if err: self.setSessionErrors(['Database error']) #get region description reg_descr, err = mysql_tool.get_region_descr(region, dbconn) if err: self.setSessionErrors(['Database error']) #get data monitored description data_descr, err = mysql_tool.get_data_monitored_descr(monit, dbconn) if err: self.setSessionErrors(['Database error']) #close connection and return the results mysql_tool.destroyDbManager(dbconn) fitoplancton = {} zooplancton = {} for x in list(data): if x['codparam'] in FITOPLANCTON_CODES: if fitoplancton.has_key(x['descr']): fitoplancton[x['descr']].append(x) else: fitoplancton[x['descr']] = [x] elif x['codparam'] in ZOOPLANCTON_CODES: if zooplancton.has_key(x['descr']): zooplancton[x['descr']].append(x) else: zooplancton[x['descr']] = [x] #generate 'Fitoplancton' pie chart fitoplancton_ob, fitoplancton_legend = self.gen_image_pie_chart( temp_folder, charts, 'chart-image-%s-fito-%s-%s-%s.png' % (monit, region, year, campaign), 'Fitoplancton', 'Fitoplancton', fitoplancton.values()) # #generate 'Zooplancton' pie chart zooplancton_ob, zooplancton_legend = self.gen_image_pie_chart( temp_folder, charts, 'chart-image-%s-zoo-%s-%s-%s.png' % (monit, region, year, campaign), 'Zooplancton', 'Zooplancton', zooplancton.values()) fito = {} sum = 0 for record in fitoplancton.keys(): buf = [] for rec in fitoplancton[record]: buf.append((rec['valore'], rec['nome_specie'])) buf.sort() buf.reverse() fito[record] = buf zoo = {} sum = 0 for record in zooplancton.keys(): buf = [] for rec in zooplancton[record]: buf.append((rec['valore'], rec['nome_specie'])) buf.sort() buf.reverse() zoo[record] = buf return fito, zoo, stat_descr, reg_descr, data_descr, station, year, \ fitoplancton_ob, fitoplancton_legend, zooplancton_ob, zooplancton_legend