Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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